Survey
5.0.1
OTRS AG
http://otrs.org/
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
Build for Survey 5.
Build for Survey 5 beta1.
A customer survey tool.
Ein Kundenumfragen Werkzeug.
Una herramienta de encuestas a clientes.
5.0.x
<br>
<strong>WELCOME</strong>
<br>
<br>
You are about to install the OTRS package Survey.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WILLKOMMEN</strong>
<br>
<br>
Sie sind im Begriff das OTRS-Paket Survey zu installieren.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>BIENVENIDO</strong>
<br>
<br>
Está apunto de instalar el módulo de encuestas de OTRS.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ATTENTION</strong>
<br>
<br>
If you uninstall this package, all database tables that were created during installation will be deleted.
All data from these tables will be irrevocably lost!
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ACHTUNG</strong>
<br>
<br>
Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
Alle darin enthaltenen Daten gehen unwiderruflich verloren!
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ATENCIÓN</strong>
<br>
<br>
Si usted desinstala este paquete, todas las tablas de la base de datos creadas durante la instalación serán borradas.
¡Todos los datos de esas tablas serán irrevocablemente perdidos!.
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WELCOME</strong>
<br>
<br>
You are about to upgrade the OTRS package Survey.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WILLKOMMEN</strong>
<br>
<br>
Sie sind im Begriff das OTRS-Paket Survey zu aktualisieren.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>BIENVENIDO</strong>
<br>
<br>
Esta apunto de actualizar el módulo de encuestas de OTRS.<br>
<br>
<br>
((enjoy))<br>
<br>
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_2_1_5();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_2_0_92();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_1();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_91();
2015-10-15 05:20:20
opms.otrs.com
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ra2tPXv2bHNzM5vNTk5Onj17NpQJoh2+79u2PTc3t7GxEXYWdDYKB4C2VCoVTdMsy+rr6wtuZriuq+v65ubmyspKIpEISoamaePj47VabWtra2xsTNf13cNM0xwZGSkWi48ePZJSJhKJsCeH/6VpWqFQuHnzZm9vb9hZ0NnYNAqgLevr69Vq1bKswcHBtbW1WCxWKpUMw/jQKoKVkaGhoUQi8fz5cynlxYsXh4eHbduOxWKfDpNS5nK5yclJTdNc13379m3Yk8PeLMu6fPlyX19f2EFwEmgf7pfu6cGDB2PjXx9ZGgBH5vff5j7jaPNoNOp5XrBWEohEIoZh1Ov1/S/cPUzX9Ugk0mw2D5sBSj1+/Hh+fj6VSl25cmVwcPDA8ZVK5erMT0cQDMff4ouH+7xbhzscAA6h0Wjs+ERKeWDb2HNYq9UKdoTgWDEMY2pqqlAocLAbviwKBwDgo0KhEHYEnEwUWAAAoByFAwAAKEfhAAAAylE4AACAcmwaBbpXpVIJOwKAbkHhALqUJ32nd6yl8U8An0/3vezGYtgp0BlYUgG6VLPpGfLg8zOAfRiy3uDoNrSHwgF0KynjzfWwQ6CzxZurkf1OqwY+onAAXerqzA2jvtYjd54cCrTJkI2e+vr31zjXHG2hcABdKh5P9Og9/VtLEZ/zxXFoEb+V2fr7lBGLRqNhZ0FnoHAA3Wtm5kZjeyvrvorKWthZ0Emisp5zXzW2t7797nrYWdAxKBxAV5udvSU8L+3ame3lU56r+54QrMljT77ue6c8N7NdTLt/ab6cnf0l7EjoJDwRB3S7H378eXW18ucfvyYiVcPo6YloYSfCMeVJv9lsCul/9c21VCoTdhx0GAoHAJFKZa7P3go7BYCTjCUVAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAACjXc+CIxRcPjyAHAAA4wTTf98POAAAATjiWVAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADK/QOGSjSEcpJaCwAAAABJRU5ErkJggg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleU92ZXJ2aWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkFsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QSBTdXJ2ZXkgTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+U3VydmV5PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QSBTdXJ2ZXkgTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+TWVudTwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+SXRlbUFyZWE8L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3PC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+U3VydmV5PC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT51PC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+ODAwMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5PdmVydmlldzwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5PdmVydmlldzwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldzwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5TdXJ2ZXk8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjEwMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5QWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBBZGQgTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+U3VydmV5PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPk5ldzwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRTdXJ2ZXlBZGQ8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+U3VydmV5PC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT48L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz4yMDA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleUVkaXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBFZGl0IE1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+U3VydmV5PC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5U3RhdHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXkgU3RhdHMgTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5Wm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IFpvb20gTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+U3VydmV5LkFnZW50LlN1cnZleVpvb20uanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNTdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgU3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+U3VydmV5PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5TdXJ2ZXkuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6U2hvd1ZvdGVEYXRhIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdXJ2ZXk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OlNlbmRQZXJpb2QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+MzAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+cXVhbGl0eUBleGFtcGxlLmNvbTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uUmVjaXBpZW50QmxhY2tsaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uU3ViamVjdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6U3VydmV5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5IZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayE8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6Ok5vdGlmaWNhdGlvbkJvZHkiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxUZXh0QXJlYT5EZWFyIEN1c3RvbWVyLAoKVGhhbmtzIGZvciB1c2luZyBvdXIgc2VydmljZS4gSGVscCB1cyB0byBpbXByb3ZlIHVzIGFuZCBvdXIgc2VydmljZXMuCgpQbGVhc2UgZ2l2ZSB1cyBmZWVkYmFjayBvbiBob3cgdG8gaW1wcm92ZSBvdXIgc2VydmljZXM6CgombHQ7T1RSU19DT05GSUdfSHR0cFR5cGUmZ3Q7Oi8vJmx0O09UUlNfQ09ORklHX0ZRRE4mZ3Q7LyZsdDtPVFJTX0NPTkZJR19TY3JpcHRBbGlhcyZndDtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY1N1cnZleTtQdWJsaWNTdXJ2ZXlLZXk9Jmx0O09UUlNfUHVibGljU3VydmV5S2V5Jmd0OwoKVGhhbmtzIGZvciB5b3VyIGhlbHAhCgpZb3VyIE9UUlMtVGVhbQogICAgICAgICAgICA8L1RleHRBcmVhPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6U2VuZE5vU3VydmV5UmVnRXhwIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPklmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdXJ2ZXk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPihNQUlMRVItREFFTU9OfHBvc3RtYXN0ZXJ8YWJ1c2UpQC4rP1wuLis/PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5OS1TdXJ2ZXlTZW5kUmVxdWVzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdXJ2ZXk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6U3VydmV5U2VuZFJlcXVlc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij4oQXJ0aWNsZUNyZWF0ZXxUaWNrZXRTdGF0ZVVwZGF0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleU92ZXJ2aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU92ZXJ2aWV3OjpTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFnZVNob3duIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW1hZ2UiPm92ZXJ2aWV3c21hbGwucG5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbWFnZVNlbGVjdGVkIj5vdmVydmlld3NtYWxsLXNlbGVjdGVkLnBuZzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6OkFnZW50U3VydmV5T3ZlcnZpZXcjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6Vmlld1N1cnZleU92ZXJ2aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkludHJvZHVjdGlvbiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmaWNhdGlvblNlbmRlciI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTm90aWZpY2F0aW9uU3ViamVjdCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTm90aWZpY2F0aW9uQm9keSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdHVzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVCeSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlVGltZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlQnkiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHREZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleVpvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw0fSQiPjgwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6SFRNTFJpY2hUZXh0SGVpZ2h0TWF4IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleVpvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw0fSQiPjI1MDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDV9JCI+MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6QW1vdW50T2ZTdXJ2ZXlzUGVyMzBEYXlzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6U3VydmV5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsNH0kIj4wPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6U3VydmV5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5TdXJ2ZXkjPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6UHJlZmVyZW5jZXM8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbHVtbiI+T3RoZXIgU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+ODAwMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXk6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+QmFjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+QmFjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPlslIEVudigiTGFzdFNjcmVlbk92ZXJ2aWV3IikgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDEwLUVkaXRHZW5lcmFsSW5mbyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXk6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+RWRpdCBHZW5lcmFsIEluZm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQgU3VydmV5IEdlbmVyYWwgSW5mb3JtYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRTdXJ2ZXlFZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlFZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAyMC1FZGl0UXVlc3Rpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6U3VydmV5OjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkVkaXQgUXVlc3Rpb25zPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IFN1cnZleSBRdWVzdGlvbnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAzMC1TdGF0c0RldGFpbHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXk6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U3RhdHMgRGV0YWlsczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbSBJbnRvIFN0YXRpc3RpY3MgRGV0YWlsczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudFN1cnZleVN0YXRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlTdGF0cztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+U3VydmV5UmVxdWVzdHNTZW5kPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPiA8IS0tIGRlZmF1bHQ6IGV2ZXJ5IDIwIG1pbiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OlN1cnZleTo6UmVxdWVzdHNTZW5kPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+LS1mb3JjZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGFfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ0thbiBpa2tlIHPDpnR0ZSBueSBzdGF0dXMhIERlciBlciBpa2tlIGRlZmluZXJldCBub2dlbiBzcMO4cmdzbcOlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnU3RhdHVzIMOmbmRyZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdUYWsgZm9yIGRpbiBiZXN2YXJlbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnSmFOZWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdiZXN2YXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdpa2tlIGJlc3ZhcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ1VuZGVyc8O4Z2Vsc2UjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHdpbmRvdy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dvIGJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIFN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1VuZGVyc8O4Z2Vsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ0V0IHVuZGVyc8O4Z2Vsc2VzbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGVfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gU3RhdHVzIMOEbmRlcm4gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ05ldWUgVW1mcmFnZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VtZnJhZ2UgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdGcmFnZW4gZGVyIFVtZnJhZ2UgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRnJhZ2UgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0FudHdvcnQgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1N0YXR1cyBrb25udGUgbmljaHQgZ2VzZXR6dCB3ZXJkZW4hIEtlaW5lIEZyYWdlbiBkZWZpbmllcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1N0YXR1cyBnZcOkbmRlcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdEYW5rZSBmw7xyIElociBGZWVkYmFjay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdEaWUgVW1mcmFnZSBpc3QgYmVlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdWb2xsc3TDpG5kaWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ1Vudm9sbHN0w6RuZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0tvbnRyb2xsa8Okc3RjaGVuIChMaXN0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICdPcHRpb25zc2NoYWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnT3B0aW9uc3NjaGFsdGVyIChMaXN0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdTdGF0aXN0aWvDvGJlcnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ1VtZnJhZ2UgQmVzY2hyZWlidW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVbWZyYWdlIEVpbmxlaXR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnSmEvTmVpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXNObyd9ID0gJ0phTmVpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ2JlYW50d29ydGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pY2h0IGJlYW50d29ydGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N0YXRpc3Rpa2RldGFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnU3RhdGlzdGlrZGV0YWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdTaWUgaGFiZW4gZGllIFVtZnJhZ2Ugc2Nob24gYmVhbnR3b3J0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICdVbWZyYWdlIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIEtlaW5lIFF1ZXVlIGF1c2dld8OkaGx0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOZXVlciBTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0ZyYWdldHlwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdOZXVlIFVtZnJhZ2UgZXJzdGVsbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0VpbmxlaXR1bmdzdGV4dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0ludGVybmUgQmVzY2hyZWlidW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnQWxsZ2VtZWluZSBBbmdhYmVuIGJlYXJiZWl0ZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdGcmFnZW4gYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnVW1mcmFnZS1GcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnRnJhZ2UgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdGcmFnZSBlaW5nZWJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdBbnR3b3J0IGVyZm9yZGVybGljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0bDvHIgZGllc2UgVW1mcmFnZSBzaW5kIGtlaW5lIEZyYWdlbiBnZXNwZWljaGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdGcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdBbnR3b3J0IGVyZm9yZGVybGljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdXb2xsZW4gU2llIGRpZXNlIEZyYWdlIHdpcmtsaWNoIGzDtnNjaGVuPyBBbGxlIGRhcmluIGVudGhhbHRlbmVuIERhdGVuIHdlcmRlbiBHRUzDllNDSFQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdGcmFnZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAnWnVyw7xjayB6dSBkZW4gRnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ03DtmdsaWNoZSBBbnR3b3J0ZW4gZsO8cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQW50d29ydCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ0bDvHIgZGllc2UgRnJhZ2Ugc2luZCBrZWluZSBBbnR3b3J0ZW4gZ2VzcGVpY2hlcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBGcmFnZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0RpZXNlIEZyYWdlIGhhdCBuaWNodCBtZWhyZXJlIEFudHdvcnRlbiwgZWluIFRleHRlaW5nYWJlZmVsZCB3aXJkIGhpbnp1Z2Vmw7xndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdBbnR3b3J0IGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnWnVyw7xjayB6dW0gQmVhcmJlaXRlbiBkZXIgRnJhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdCZW5hY2hyaWNodGlndW5nIEFic2VuZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQmVuYWNocmljaHRpZ3VuZyBCZXRyZWZmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnQmVuYWNocmljaHRpZ3VuZyBUZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdHZcOkbmRlcnQgdm9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1N0YXRpc3Rpa8O8YmVyc2ljaHQgdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnQW5mcmFnZW50YWJlbGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1NlbmRlemVpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdBYnN0aW1tdW5nc3plaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdTaWVoZSBEZXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdVbWZyYWdlc3RhdGlzdGlrZGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnWnVyw7xjayB6dXIgw5xiZXJzaWNodCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdVbWZyYWdlaW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnR2VzZW5kZXRlIEFuZnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdFcmhhbHRlbmUgVW1mcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdVbWZyYWdlZGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdUaWNrZXQtRGllbnN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZpayBVbWZyYWdlZXJnZWJuaXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnS2VpbmUgU3RhdGlzdGlrZXJnZWJuaXNzZS4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnVW1mcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ0JpdHRlIGJlYW50d29ydGVuIFNpZSBkaWVzZSBGcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnWmVpZ2UgbWVpbmUgQW50d29ydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdEaWVzIHNpbmQgSWhyZSBBbnR3b3J0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVW1mcmFnZXRpdGVsJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ0VpbiBVbWZyYWdlbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFaW4gTW9kdWwsIHVtIFVtZnJhZ2VuIHp1IGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbGxlIFBhcmFtZXRlciBmw7xyIGRhcyBVbWZyYWdlbW9kdWwgaW4gZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0FuemFobCBhbiBUYWdlbiBuYWNoIGRlbSBWZXJzYW5kIGVpbmVyIFVtZnJhZ2UtRS1NYWlsIGluIGRlbmVuIGtlaW5lIG5ldWUgVW1mcmFnZS1FLU1haWwgYW4gZGVuIGdsZWljaGVuIEt1bmRlbiB2ZXJzZW5kZXQgd2lyZC4gV8OkaGxlbiBzaWUgMCwgdW0gaW1tZXIgVW1mcmFnZS1FLU1haWxzIHp1IHZlcnNlbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnVm9yZWluZ2VzdGVsbHRlciBUZXh0IGbDvHIgQmVuYWNocmljaHRpZ3VuZ3MtRS1NYWlscyBhbiBkZW4gS3VuZGVuIMO8YmVyIG5ldWUgVW1mcmFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnVm9yZWluZ2VzdGVsbHRlciBBYnNlbmRlciBmw7xyIEJlbmFjaHJpY2h0aWd1bmdzLUUtTWFpbHMgYW4gZGVuIEt1bmRlbiDDvGJlciBuZXVlIFVtZnJhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdWb3JlaW5nZXN0ZWxsdGVyIEJldHJlZmYgZsO8ciBCZW5hY2hyaWNodGlndW5ncy1FLU1haWxzIGFuIGRlbiBLdW5kZW4gw7xiZXIgbmV1ZSBVbWZyYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGVpbiDDnGJlcnNpY2h0c21vZHVsLCBkYXNzIGVpbmUgTGlzdGUgYWxsZXIgVW1mcmFnZW4gYW56ZWlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgbWF4aW1hbGUgQW56YWhsIHZvbiBVbWZyYWdlbiBkaWUgZWluIEt1bmRlIGlubmVyaGFsYiB2b24gMzAgVGFnZW4genVnZXNhbmR0IGJla29tbXQuICggMCBzdGVodCBmw7xyIGtlaW4gTWF4aW11bSwgYWxsZSBVbWZyYWdlLUUtTWFpbHMgd2VyZGVuIHZlcnNhbmR0LiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgQW56YWhsIGFuIFN0dW5kZW4gZsO8ciBkaWUgZWluIFRpY2tldCBnZXNjaGxvc3NlbiBzZWluIG11c3MgdW0gZGVuIFZlcnNhbmQgZWluZXIgVW1mcmFnZSBhdXN6dWzDtnNlbiAoIDAgYmVkZXV0ZXQsIHNvZm9ydCBuYWNoIFNjaGxpZcOfZW4gZWluZXMgVGlja2V0cyBzZW5kZW4gKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZGjDtmhlIGVpbmVzIFdZU0lXWUctQmVyZWljaHMgZsO8ciBkaWUgVW1mcmFnZWRldGFpbGFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gZGVyIFVtZnJhZ2Ugw5xiZXJzaWNodC4gRGllc2UgT3B0aW9uIGhhdCBrZWluZSBBdXN3aXJrdW5nIGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IEdlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdBbGxnZW1laW5lIEluZm9ybWF0aW9uZW4gYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBRdWVzdGlvbnMnfSA9ICdGcmFnZW4gYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmllcmVuIG9kZXIgZGVha3RpdmllcmVuIGRpZSBTaG93Vm90ZURhdGEgQW56ZWlnZW4gaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUsIHVtIEFic3RpbW11bmdzZGF0ZW4gYW56dXplaWdlbiwgd2VuIGVpbiBLdW5kZSB2ZXJzdWNodCwgZWluIHp3ZWl0ZXMgbWFsIGFienVzdGltbWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW4gZGVyIFZlcnNhbmRiZWRpbmd1bmdzcHLDvGZ1bmcgZsO8ciBkZW4gRGllbnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW4gZGVyIFZlcnNhbmRiZWRpbmd1bmdzcHLDvGZ1bmcgZsO8ciBkZW4gVGlja2V0dHlwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGFzIEhpbnp1ZsO8Z2VuIGVpbmVyIFVtZnJhZ2UgaW4gZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGllIFVtZnJhZ2ViZWFyYmVpdHVuZyBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGllIFVtZnJhZ2VkZXRhaWxhbnNpY2h0IGluIGRlciBBZ2VudGVuLU9iZXJmbMOkY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRpZSBVbWZyYWdlZGV0YWlsYW5zaWNodCBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kLU1vZHVsLVJlZ2lzdHJpZXJ1bmcgZsO8ciBkaWUgw7ZmZmVudGxpY2hlIFVtZnJhZ2XDvGJlcnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnV2VubiBkaWVzZXIgcmVndWzDpHJlIEF1c2RydWNrIHp1dHJpZmZ0LCB3aXJkIGtlaW5lIFVtZnJhZ2UgYW4gZGVuIEt1bmRlbiBnZXNlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU2VpdGVuIGRlciBVbWZyYWdlw7xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfDlmZmZW50bGljaGUgVW1mcmFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbSBNZW7DvCBkZXIgWm9vbS1BbnNpY2h0IGRlciBBZ2VudGVuLU9iZXJmbMOkY2hlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZSBVbWZyYWdlIHp1IGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbSBNZW7DvCBpbiBab29tLUFuc2ljaHQgZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBkaWUgRnJhZ2VuIGVpbmVyIFVtZnJhZ2UgenUgYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgaW4gWm9vbS1BbnNpY2h0IGRlciBBZ2VudGVuLU9iZXJmbMOkY2hlIGFuLCBtaXQgZGVtIHp1bSBVbWZyYWdlLVpvb20genVyw7xja2dlZ2FuZ2VuIHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgaW4gWm9vbS1BbnNpY2h0IGRlciBBZ2VudGVuLU9iZXJmbMOkY2hlIGFuLCBtaXQgZGVtIGRpZSBEZXRhaWxzIGVpbmVyIFVtZnJhZ2UgYW5nZXplaWd0IHdlcmRlbiBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ1VtZnJhZ2UgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ1VtZnJhZ2XDvGJlcnNpY2h0ICJLbGVpbmVzIiBMaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ1VtZnJhZ2VzdGF0aXN0aWttb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ1VtZnJhZ2VkZXRhaWxhbnNpY2h0bW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdVbWZyYWdlbGltaXQgcHJvIFNlaXRlIGluIGRlciAia2xlaW5lbiIgVW1mcmFnZcO8YmVyc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdVbWZyYWdlbiB3ZXJkZW4gbmljaHQgYW4gZGllIGtvbmZpZ3VyaWVydGVuIEUtTWFpbC1BZHJlc3NlbiBnZXNlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0RpZSBlaW5kZXV0aWdlIEJlemVpY2hudW5nIGbDvHIgZWluZSBVbWZyYWdlLCB6LiBCLiBTdXJ2ZXkjIG9kZXIgTXlTdXJ2ZXkjLiBTdGFuZGFyZCBpc3QgU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdUaWNrZXQtRXZlbnQtTW9kdWwsIHVtIGF1dG9tYXRpc2NoIFVtZnJhZ2UtRS1NYWlscyBhbiBLdW5kZW4genUgc2VuZGVuLCB3ZW5uIGVpbiBUaWNrZXQgZ2VzY2hsb3NzZW4gd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnU3RhdGlzdGlrZGV0YWlscyBhbnplaWdlbic7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQ2FtYmlhciBFc3RhZG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0HDsWFkaXIgTnVldmEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdFZGl0YXIgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyBkZSBFc3RhZMOtc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0VkaXRhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdObyBzZSBwdWVkZSBlc3RhYmxlY2VyIG51ZXZvIGVzdGFkbyEgTm8gaGF5IHByZWd1bnRhcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBjYW1iaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0dyYWNpYXMgcG9yIHN1IHJldHJvYWxpbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xhIGVuY3Vlc3RhIGhhIHRlcm1pbmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDYXNpbGxhIGRlIHZlcmlmaWNhY2nDs24gKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJ09wY2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdPcGNpw7NuIChsaXN0YSkgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnUmVzdW1lbiBkZSBFc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcGNpw7NuIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y2Npw7NuIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1NpL05vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnU2lObyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ3Jlc3BvbmRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbm8gcmVzcG9uZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGxlIGRlIEVzdGFkw61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0RldGFsbGUgZGUgRXN0YWTDrXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVXN0ZWQgeWEgaGEgY29udGVzdGFkbyBlc3RhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkjJ30gPSAnRW5jdWVzdGEjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gTm8gc2UgaGEgc2VsZWNjaW9uYWRvIG5pbmd1bmEgY29sYSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01hZXN0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ051ZXZvIEVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwbyBkZSBQcmVndW50YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JlYXIgTnVldmEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBJbnRlcm5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdGFyIGluZm9ybWFjacOzbiBHZW5lcmFsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUHJlZ3VudGFzIGRlIEVzdGFkaXN0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0FncmVnYXIgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdFc2NyaWJhIGxhIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1Jlc3B1ZXN0YSByZXF1ZXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdObyBoYXkgcHJlZ3VudGFzIGFsbWFjZW5hZGFzIHBhcmEgZXN0YSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdSZXNwdWVzdGEgUmVxdWVyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ8K/UmVhbG1lbnRlIGRlc2VhIGVsaW1pbmFyIGVzdGEgcHJlZ3VudGE/IFRPRE9TIGxvcyBkYXRvcyBhc29jaWFkb3MgZGUgUEVSREVSw4FOISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAncmVncmVzYXIgYSBwcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnUG9zaWJsZXMgcmVzcHVlc3RhcyBwYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBZ3JlZ2FyIFJlc3B1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ05vIGhheSByZXNwdWVzdGFzIGFsbWFjZW5hZGFzIHBhcmEgZXN0YSBwcmVndW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICfCv1JlYWxtZW50ZSBkZXNlYSBlbGltaW5hciBlc3RhIHJlc3B1ZXN0YT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0VzdGEgcHJlZ3VudGEgbm8gdGllbmUgdmFyaWFzIHJlc3B1ZXN0YXMsIHVuIGFyZWEgZGUgdGV4dG8gc2Vyw6EgbW9zdHJhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZGl0YXIgUmVzcHVlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3ZvbHZlciBhIGVkaXRhciBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWl0ZW50ZSBkZSBOb3RpZmljYWNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdBc3VudG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0N1ZXJwbyBkZSBOb3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWNvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdSZXN1bWVuIGRlIEVzdGFkw61zdGljYXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJsYSBkZSBTb2xpY2l0dWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdUaWVtcG8gZGUgRW52w61vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1RpZW1wbyBkZSBWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVyIERldGFsbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdEZXRhbGxlcyBkZSBFc3RhZGlzdGljYXMgZGUgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ3JlZ3Jlc2FyIGEgcmVzw7ptZW4gZGUgZXN0YWRpc3RpY2FzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnU29saWNpdHVkZXMgZW52aWFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1NvbGljaXR1ZGVzIHJlY2liaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1NlcnZpY2lvcyBkZSBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmljYSBkZSBSZXN1bHRhZG9zIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyBoYXkgZ3JhZmljYXMgZGUgcmVzdWx0YWRvcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IgY29udGVzdGUgZXN0YXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgbWlzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHNvbiBzdXMgcmVzcHVlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRlIGxhIEVuY3Vlc3RhICc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBNw7NkdWxvIGRlIEVuY3Vlc3Rhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG3Ds2R1bG8gcGFyYSBlZGl0YXIgbGFzIHByZWd1bnRhcyBkZSB1bmEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9kb3MgbG9zIHBhcmFtZXRyb3MgcGFyYSBlbCBvYmpldG8gRW5jdWVzdGEgZW4gbGEgaW50ZXJmYXNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnQ2FudGlkYWQgZGUgZMOtYXMgZGVzcHXDqXMgZGUgaGFiZXIgbWFuZGFuZG8gdW4gY29ycmVvIGVsZWN0csOzbmljbyBkZSBlbmN1ZXN0YSBlbiBsb3MgcXVlIG5vIHNlIG1hbmRhcsOhbiBudWV2YXMgZW5jdWVzdGFzIGhhY2lhIGVsIG1pc21vIGNsaWVudGUuIFNlbGVjY2lvbmFyIDAgbWFuZGFyw6EgbnVldm9zIGNvcnJlb3MgZWxlY3Ryw7NuaWNvcyBkZSBlbmN1ZXN0YSBzaWVtcHJlLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ3VlcnBvIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1JlbWl0ZW50ZSBkZWZhdWx0IHBhcmEgZWwgZW1haWwgZGUgbm90aWZpY2FjacOzbiBhIGxvcyBjbGllbnRlcyBzb2JyZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXN1bnRvIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW5hIG3Ds2R1bG8gcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgbGEgbGlzdGEgZGUgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIG3DoXhpbWEgZGUgZW5jdWVzdGFzIHF1ZSBzZSBtYW5kYXLDoW4gYSB1biBjbGllbnRlIGNhZGEgMzAgZMOtYXMuICggMCBzaWduaWZpY2EgcXVlIG5vIGhheSB1biBtw6F4aW1vLCB0b2RhcyBsYXMgZW5jdWVzdGFzIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgY2FudGlkYWQgZGUgaG9yYXMgcXVlIHNlIG5lY2VzaXRhbiBwYXJhIHF1ZSBlbCBjaWVycmUgZGUgdW4gdGlja2V0IGFjdGl2ZSBlbCBlbnbDrW8gZGUgdW5hIGVuY3Vlc3RhLCAoIDAgc2lnbmlmaWNhIG1hbmRhciBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcyBkZSBjZXJyYWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBwcmVkZWZpbmlkYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsIGRlIGRldGFsbGUgZGUgZXN0YWRpc3RpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bWVuIGRlIGVuY3Vlc3Rhcy4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lbiBuaW5nw7puIGVmZWN0byBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnRWRpdGFyIEluZm9ybWFjacOzbiBHZW5lcmFsIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMgZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnQWN0aXZhIG8gZGVzYWN0aXZhIGxhIHBhbnRhbGxhIGRlICJNb3N0cmFyIERhdG9zIGRlIFZvdG9zIiBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EgcGFyYSBtb3N0cmFyIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBlbmN1ZXN0YSBlc3BlY8OtZmljYSBjdWFuZG8gdW4gY2xpZW50ZSBxdWllcmUgcmVzcG9uZGVyIHVuYSBlbmN1ZXN0YSBwb3Igc2VndW5kYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWN0aXZhIG8gZGVzYWN0aXZhIGxhIGNvbXByb2JhY2nDs24gZGUgbGEgY29uZGljacOzbiBkZSBlbnbDrW8gcGFyYSBlbCBzZXJ2aWNpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgY29tcHJvYmFjacOzbiBkZSBsYSBjb25kaWNpw7NuIGRlIGVudsOtbyBwYXJhIGVsIHRpcG8gZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleUFkZCBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5RWRpdCBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleVN0YXRzIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlab29tIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBQdWJsaWNTdXJ2ZXkgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2kgZXN0YSBleHByZXNpw7NuIHJlZ3VsYXIgY29uY3VlcmRhLCBsYSBlbmN1ZXN0YSBubyBzZXLDoSBlbnZpYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGVuIHF1ZSBsYXMgZW5jdWVzdGFzIHNvbiBtb3N0cmFkYXMpIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5jdWVzdGEgUMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogZGUgZWRpY2nDs24gZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBkZSBlZGljacOzbiBwcmVndW50YXMgZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IHBhcmEgaXIgaGFjaWEgYXRyw6FzIGVuIHZpc3RhIGRlIGRldGFsbGUgZGUgdW5hIGVuY3Vlc3RhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBkZXRhbGxlIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHVuYSBlbmN1ZXN0YSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRWRpY2nDs24gZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBTdGFkw61zdGljYXMgZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGUgRGV0YWxsZSBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgZW5jaWVudGFzIHBvciBww6FnaW5hIHBhcmEgZWwgUmVzdW1lbiBkZSBFbmN1ZXN0YSAiUGVxdWXDsW8iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnTGFzIGVuY3Vlc3RhcyBubyBkZSBtYW5kYXLDoW4gYSBsYXMgZGlyZWNjaW9uZXMgZGUgY29ycmVvIGVsZWN0csOzbmljbyBhcXXDrSBjb25maWd1cmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIHBhcmEgdW5hIGVuY3Vlc3RhLCBlamVtcGxvIFN1cnZleSMsIE15U3VydmV5Iy4gUG9yIGRlZmVjdG8gZXMgU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSB0aWNrZXQgcXVlIG1hbmRhIGNvcnJlb3MgZWxlY3Ryw7NuaWNvcyBkZSBlbmN1ZXN0YXMgaGFjaWEgbG9zIGNsaWVudGVzIHNpIHVuIHRpY2tldCBlcyBjZXJyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW50byBTdGF0aXN0aWNzIERldGFpbHMnfSA9ICdJciBhIGxvcyBkZXRhbGxlcyBkZSBsYSBFc3RhZMOtc3RpY2EnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfTVhfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQ2FtYmlhciBFc3RhZG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0HDsWFkaXIgTnVldmEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdFZGl0YXIgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyBkZSBFc3RhZMOtc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0VkaXRhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdObyBzZSBwdWVkZSBlc3RhYmxlY2VyIG51ZXZvIGVzdGFkbyEgTm8gaGF5IHByZWd1bnRhcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBjYW1iaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0dyYWNpYXMgcG9yIHN1IHJldHJvYWxpbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xhIGVuY3Vlc3RhIGhhIHRlcm1pbmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDYXNpbGxhIGRlIHZlcmlmaWNhY2nDs24gKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJ09wY2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdPcGNpw7NuIChsaXN0YSkgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnUmVzdW1lbiBkZSBFc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcGNpw7NuIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y2Npw7NuIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1NpL05vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnU2lObyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ3Jlc3BvbmRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbm8gcmVzcG9uZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGxlIGRlIEVzdGFkw61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0RldGFsbGUgZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1VzdGVkIHlhIGhhIGNvbnRlc3RhZG8gZXN0YSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ0VuY3Vlc3RhIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIGNvbGEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOdWV2byBFc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgUHJlZ3VudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIE51ZXZhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gSW50ZXJuYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gR2VuZXJhbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkZSBFc3RhZGlzdGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZ3JlZ2FyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmliYSBsYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwdWVzdGEgcmVxdWVyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm8gaGF5IHByZWd1bnRhcyBhbG1hY2VuYWRhcyBwYXJhIGVzdGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnUmVzcHVlc3RhIFJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfCv1JlYWxtZW50ZSBkZXNlYSBlbGltaW5hciBlc3RhIHByZWd1bnRhPyBUT0RPUyBsb3MgZGF0b3MgYXNvY2lhZG9zIGRlIFBFUkRFUsOBTiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3JlZ3Jlc2FyIGEgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Bvc2libGVzIHJlc3B1ZXN0YXMgcGFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWdyZWdhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdObyBoYXkgcmVzcHVlc3RhcyBhbG1hY2VuYWRhcyBwYXJhIGVzdGEgcHJlZ3VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSByZXNwdWVzdGE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdFc3RhIHByZWd1bnRhIG5vIHRpZW5lIHZhcmlhcyByZXNwdWVzdGFzLCB1biBhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3B1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2b2x2ZXIgYSBlZGl0YXIgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdSZW1pdGVudGUgZGUgTm90aWZpY2FjaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXN1bnRvIGRlIE5vdGlmaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDdWVycG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTW9kaWZpY2FjbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUmVzdW1lbiBkZSBFc3RhZMOtc3RpY2FzIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFibGEgZGUgU29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVGllbXBvIGRlIEVudsOtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdUaWVtcG8gZGUgVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZlciBEZXRhbGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgZGUgRXN0YWRpc3RpY2FzIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdyZWdyZXNhciBhIHJlc8O6bWVuIGRlIGVzdGFkaXN0aWNhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbGljaXR1ZGVzIGVudmlhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb2xpY2l0dWRlcyByZWNpYmlkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGxlcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2aWNpb3MgZGUgVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZpY2EgZGUgUmVzdWx0YWRvcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTm8gaGF5IGdyYWZpY2FzIGRlIHJlc3VsdGFkb3MuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0VuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUG9yIGZhdm9yIGNvbnRlc3RlIGVzdGFzIHByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdNb3N0cmFyIG1pcyByZXNwdWVzdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdFc3RhcyBzb24gc3VzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVMOtdHVsbyBkZSBsYSBFbmN1ZXN0YSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBNw7NkdWxvIGRlIEVuY3Vlc3Rhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG3Ds2R1bG8gcGFyYSBlZGl0YXIgbGFzIHByZWd1bnRhcyBkZSB1bmEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9kb3MgbG9zIHBhcmFtZXRyb3MgcGFyYSBlbCBvYmpldG8gRW5jdWVzdGEgZW4gbGEgaW50ZXJmYXNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnQ2FudGlkYWQgZGUgZMOtYXMgZGVzcHXDqXMgZGUgaGFiZXIgbWFuZGFuZG8gdW4gY29ycmVvIGVsZWN0csOzbmljbyBkZSBlbmN1ZXN0YSBlbiBsb3MgcXVlIG5vIHNlIG1hbmRhcsOhbiBudWV2YXMgZW5jdWVzdGFzIGhhY2lhIGVsIG1pc21vIGNsaWVudGUuIFNlbGVjY2lvbmFyIDAgbWFuZGFyw6EgbnVldm9zIGNvcnJlb3MgZWxlY3Ryw7NuaWNvcyBkZSBlbmN1ZXN0YSBzaWVtcHJlLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ3VlcnBvIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1JlbWl0ZW50ZSBkZWZhdWx0IHBhcmEgZWwgZW1haWwgZGUgbm90aWZpY2FjacOzbiBhIGxvcyBjbGllbnRlcyBzb2JyZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXN1bnRvIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW5hIG3Ds2R1bG8gcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgbGEgbGlzdGEgZGUgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIG3DoXhpbWEgZGUgZW5jdWVzdGFzIHF1ZSBzZSBtYW5kYXLDoW4gYSB1biBjbGllbnRlIGNhZGEgMzAgZMOtYXMuICggMCBzaWduaWZpY2EgcXVlIG5vIGhheSB1biBtw6F4aW1vLCB0b2RhcyBsYXMgZW5jdWVzdGFzIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgY2FudGlkYWQgZGUgaG9yYXMgcXVlIHNlIG5lY2VzaXRhbiBwYXJhIHF1ZSBlbCBjaWVycmUgZGUgdW4gdGlja2V0IGFjdGl2ZSBlbCBlbnbDrW8gZGUgdW5hIGVuY3Vlc3RhLCAoIDAgc2lnbmlmaWNhIG1hbmRhciBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcyBkZSBjZXJyYWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBwcmVkZWZpbmlkYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsIGRlIGRldGFsbGUgZGUgZXN0YWRpc3RpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bWVuIGRlIGVuY3Vlc3Rhcy4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lbiBuaW5nw7puIGVmZWN0byBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnRWRpdGFyIEluZm9ybWFjacOzbiBHZW5lcmFsIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMgZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnQWN0aXZhIG8gZGVzYWN0aXZhIGxhIHBhbnRhbGxhIGRlICJNb3N0cmFyIERhdG9zIGRlIFZvdG9zIiBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EgcGFyYSBtb3N0cmFyIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBlbmN1ZXN0YSBlc3BlY8OtZmljYSBjdWFuZG8gdW4gY2xpZW50ZSBxdWllcmUgcmVzcG9uZGVyIHVuYSBlbmN1ZXN0YSBwb3Igc2VndW5kYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWN0aXZhIG8gZGVzYWN0aXZhIGxhIGNvbXByb2JhY2nDs24gZGUgbGEgY29uZGljacOzbiBkZSBlbnbDrW8gcGFyYSBlbCBzZXJ2aWNpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgY29tcHJvYmFjacOzbiBkZSBsYSBjb25kaWNpw7NuIGRlIGVudsOtbyBwYXJhIGVsIHRpcG8gZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleUFkZCBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5RWRpdCBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleVN0YXRzIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlab29tIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBQdWJsaWNTdXJ2ZXkgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2kgZXN0YSBleHByZXNpw7NuIHJlZ3VsYXIgY29uY3VlcmRhLCBsYSBlbmN1ZXN0YSBubyBzZXLDoSBlbnZpYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGVuIHF1ZSBsYXMgZW5jdWVzdGFzIHNvbiBtb3N0cmFkYXMpIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5jdWVzdGEgUMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogZGUgZWRpY2nDs24gZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBkZSBlZGljacOzbiBwcmVndW50YXMgZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IHBhcmEgaXIgaGFjaWEgYXRyw6FzIGVuIHZpc3RhIGRlIGRldGFsbGUgZGUgdW5hIGVuY3Vlc3RhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBkZXRhbGxlIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHVuYSBlbmN1ZXN0YSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRWRpY2nDs24gZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBTdGFkw61zdGljYXMgZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGUgRGV0YWxsZSBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgZW5jaWVudGFzIHBvciBww6FnaW5hIHBhcmEgZWwgUmVzdW1lbiBkZSBFbmN1ZXN0YSAiUGVxdWXDsW8iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnTGFzIGVuY3Vlc3RhcyBubyBkZSBtYW5kYXLDoW4gYSBsYXMgZGlyZWNjaW9uZXMgZGUgY29ycmVvIGVsZWN0csOzbmljbyBhcXXDrSBjb25maWd1cmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIHBhcmEgdW5hIGVuY3Vlc3RhLCBlamVtcGxvIFN1cnZleSMsIE15U3VydmV5Iy4gUG9yIGRlZmVjdG8gZXMgU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSB0aWNrZXQgcXVlIG1hbmRhIGNvcnJlb3MgZWxlY3Ryw7NuaWNvcyBkZSBlbmN1ZXN0YXMgaGFjaWEgbG9zIGNsaWVudGVzIHNpIHVuIHRpY2tldCBlcyBjZXJyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW50byBTdGF0aXN0aWNzIERldGFpbHMnfSA9ICdJciBhIGxvcyBkZXRhbGxlcyBkZSBsYSBFc3RhZMOtc3RpY2EnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZmlfRklfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gTXV1dGEgdGlsYWEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0xpc8Okw6QgdXVzaSBreXNlbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdNdW9ra2FhIGt5c2VsecOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ011b2trYWEga3lzeW15a3Npw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0t5c3lteXN0ZW4gbXVva2thdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdWYXN0YXVzdGVuIG11b2trYXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnVXVkZW4gdGlsYW4gYXNldHRhbWluZW4gZWkgb25uaXN0dSEgRXQgb2xlIG3DpMOkcml0dMOkbnl0IGt5c3lteWtzacOkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdUaWxhIG11dXRldHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnS2lpdG9zIHBhbGF1dHRlZXN0YXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0t5c2VseSBvbiB2YWxtaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVmFsbWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdLZXNrZW5lcsOkaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdWYWxpdHNlIHlrc2kgdGFpIHVzZWFtcGlhIChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICdWYWxpdHNlIHlrc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnVmFsaXRzZSB5a3NpIG1vbmVzdGEgKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1R1bG9zdGVuIHlodGVlbnZldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnS3lzZWx5biBrdXZhdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0t5c2VseW4gZXNpdHRlbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnS3lsbMOkIC8gRWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICdLeWxsw6QgLyBFaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ1Zhc3Rhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnRWkgdmFzdGFubnV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1lrc2l0eWlza29odGFpc2V0IHR1bG9rc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdPbGV0IGpvIHZhc3Rhbm51dCB0w6Row6RuIGt5c2VseXluLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnTHVvIHV1c2kga3lzZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0VzaXR0ZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnU2lzw6RpbmVuIGt1dmF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ011b2trYWEgdGlldG9qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm8nfSA9ICdZbGVpc2V0IHRpZWRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1R1bG9zdGVuIHlodGVlbnZldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnTMOkaGV0eXNhaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ8OEw6RuZXN0eXNhaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdLeXNlbHluIHR1bG9zdGVuIHlrc2l0eWlza29oZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdtZW5lIHRha2Fpc2luIHlodGVlbnZldG9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHbyBiYWNrJ30gPSAnVGFrYWlzaW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdNdW9ra2FhIGt5c3lteWtzacOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0xpc8Okw6Qga3lzeW15cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1N5w7Z0w6Qga3lzeW15cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnS3lzZWx5biBreXN5bXlrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnS3lzeW15cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0t5c2VseXluIGVpIG9sZSB0YWxsZW5uZXR0dSBreXN5bXlrc2nDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ011b2trYWEga3lzeW15c3TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ21lbmUgdGFrYWlzaW4ga3lzeW15a3NpaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdWYXN0YXVzdmFpaHRvZWhkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0xpc8Okw6QgdmFzdGF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ1TDpHNzw6QgZWkgb2xlIHVzZWl0YSB2YXN0YXVrc2lhLCBuw6R5dGV0w6TDpG4gdGVrc3RpYWx1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdNdW9ra2FhIHZhc3RhdXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdtZW5lIHRha2Fpc2luIG11b2trYWFtYWFuIGt5c3lteXN0w6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBTdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdNdWlzdHV0dWtzZW4gbMOkaGV0dMOkasOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnTXVpc3R1dHVrc2VuIG90c2lra28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdNdWlzdHV0dWtzZW4gdmllc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNdW9ra2FhamEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnS3lzZWx5biB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0zDpGhldGV0dHlqw6Qga3lzZWx5aXTDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnVmFzdGF1c3RlbiBtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnVHVsb3N0ZW4geWtzaXR5aXNrb2hkYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdLeXNlbHluIHlrc2l0eWlza29oZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnVHVsb3N0ZW4gZ3JhYWZpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnRWkgdHVsb2tzaWEuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0t5c2VseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1Zhc3RhYSBzZXVyYWF2aWluIGt5c3lteWtzaWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ07DpHl0w6QgdmFzdGF1a3NlbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ07DpG3DpCBvdmF0IHZhc3RhdWtzZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ0t5c2VseW4gb3RzaWtrbyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdLeXNlbHlvbWluYWlzdXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdNb2R1dWxpIGt5c2VseWlkZW4gbHVvbnRpaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIEJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZSBuZXh0IHF1ZXN0aW9ucyd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZnJfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJ0NoYW5nZW1lbnQgZHUgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnQWpvdXRlciB1biBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnTW9kaWZpZXIgU29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdNb2RpZmllciBxdWVzdGlvbm5haXJlIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ01vZGlmaWVyIFF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ01vZGlmaWVyIFLDqXBvbnNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ0ltcG9zc2libGUgZGUgbWV0dHJlIMOgIGpvdXIgISBhdWN1bmUgcXVlc3Rpb24gZGUgZMOpZmluaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnTGUgc3RhdHVzIGEgw6l0w6kgY2hhbmfDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ01lcmNpIHBvdXIgdm90cmUgcmV0b3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xlIHNvbmRhZ2UgZXN0IHRlcm1pbsOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1Rlcm1pbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJbmNvbXBsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnQ2FzZSDDoCBjb2NoZXIgKExpc3RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJ0JvdXRvbiBSYWRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdCb3V0b24gUmFkaW8gKExpc3RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ0FwZXLDp3UgZGVzIHN0YXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1Byw6lzZW50YXRpb24gZHUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdPdWkvTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnT3VpTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnUsOpcG9uZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnTm9uIHLDqXBvbmR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0TDqXRhaWwgU3RhdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0TDqXRhaWxzIFN0YXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdWb3VzIGF2ZXogZMOpasOgIHLDqXBvbmR1IMOgIGNldHRlIEVucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICdFbnF1w6p0ZSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBBdWN1bmUgZmlsZSBzw6lsZWN0aW9ubsOpZSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ1ByaW5jaXBhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vdXZlYXUgU3RhdHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUeXBlIGRlIFF1ZXN0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdDcsOpZXIgbm91dmVhdSBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ1Byw6lzZW50YXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBJbnRlcm5lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnTW9kaWZpZXIgSW5mbyBnw6luw6lyYWxlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnTW9kaWZpZXIgUXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdRdWVzdGlvbnMgRW5xdcOqdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0Fqb3V0ZXIgUXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRW50cmVyIGxhIHF1ZXN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1LDqXBvbnNlIHJlcXVpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdBdWN1bmUgcXVlc3Rpb24gc2F1dmVnYXJkw6llIHBvdXIgY2V0dGUgRW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdRdWVzdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdSw6lwb25zZSByZXF1aXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0V0ZXMgdm91cyBzdXIgZGUgdm91bG9pciBzdXBwcmltZXIgY2V0dGUgcXVlc3Rpb24gPyBUb3V0ZXMgbGVzIGRvbm7DqWVzIGFzc29jacOpZXMgc2Vyb250IHBlcmR1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdNb2RpZmllciBRdWVzdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ1JldG91ciBhdXggUXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Bvc3NpYmxlIHLDqXBvbnNlcyBwb3VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBam91dGVyIFLDqXBvbnNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ1BhcyBkZSByw6lwb25zZSB0cm91dsOpIHBvdXIgY2V0dGUgcXVlc3Rpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnRXRlcyB2b3VzIHN1ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZXR0ZSBxdWVzdGlvbiA/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdpbCBuXCd5IGEgcGFzIGRlIHLDqXBvbnNlcyBwb3NzaWJsZSwgdW5lIHpvbmUgZGUgdGV4dGUgc2VyYSBhZmZpY2jDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdNb2RpZmllciBSw6lwb25zZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdSZXRvdXIgw6AgbGEgbW9kaWZpY2F0aW9uIGRlcyBxdWVzdGlvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnRXhww6lkaXRldXIgZGUgbGEgbm90aWZpY2F0aW9uICAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdTdWpldCBkZSBsYSBub3RpZmljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDb3JwcyBkZSBsYSBub3RpZmljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0NoYW5nw6kgcGFycyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdTdGF0aXN0aXF1ZXMgdnVlIGRcJ2Vuc2VtYmxlICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmxlYXUgZGVzIGRlbWFuZGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1RlbXBzIGRlIGxcJ2Vudm9pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1RlbXBzIGRlIHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdWb2lyIGxlcyBkw6l0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRMOpdGFpbCBzdGF0aXN0aXF1ZSBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSZXRvdXIgdnVlIGRcJ2Vuc2VtYmxlIHN0YXRpc3RpcXVlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9uIHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0Vudm95w6kgZGVtYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnU29uZGFnZSByZcOndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0TDqXRhaWxzIHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2VydmljZSBUaWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFwaGlxdWUgcsOpc3VsdGF0IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ1BhcyBkZSBzdGF0aXN0aXF1ZSBzb25kYWdlLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdFbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ01lcmNpIGRlIHLDqXBvbmRyZSDDoCBjZXMgcXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1ZvaXIgbWVzIHLDqXBvbnNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnVm9pY2kgdm9zIHLDqXBvbnNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUaXRyZSBFbnF1w6p0ZSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtb2R1bGUgZFwnRW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG1vZHVsZSBwb3VyIG1vZGlmaWVyIGxlcyBxdWVzdGlvbnMgZFwndW4gc29uZGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb3VzIGxlcyBwYXJhbcOodHJlcyBwb3VyIGxlIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ05vbWJyZSBkZSBqb3VycyBhcHLDqHMgYXZvaXIgZW52b3nDqSB1biBtYWlsIGRlIHNvbmRhZ2UsIHBlbmRhbnQgbGVxdWVsIGF1Y3VuIG5vdXZlYXUgc29uZGFnZSBuZSBzZXJhIHJlbnZvecOpIGF1IG3Dqm1lIHV0aWxpc2F0ZXVyLiBFbiBjaG9pc2lzc2FudCAwIHVuIG1haWwgZGUgc29uZGFnZSBzZXJhIGVudm95w6kgw6AgY2hhcXVlIGZvaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBzIHBhciBkw6lmYXV0IGRlIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdFeHDDqWRpdGV1ciBwYXIgZMOpZmF1dCBwb3VyIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnU3VqZXQgcGFyIGTDqWZhdXQgcG91ciBsYSBub3RpZmljYXRpb24gQ2xpZW50IHBhciBtYWlsIMOgIHByb3BvcyBkXCd1bmUgbm91dmVsbGUgZW5xdcOqdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRMOpZmluaSBsZSBub21icmUgbWF4aW11bSBkXCdlbnF1w6p0ZXMgcXVpIHNlcm9udCBlbnZvecOpZXMgYSB1biBDbGllbnQgcGFyIHDDqXJpb2RlIGRlIDMwIGpvdXJzLiAoMCBzaWduaWZpZSBwYXMgZGUgbWF4aW11bSwgdG91dGVzIGxlcyBlbnF1w6p0ZXMgc2Vyb250IGV4cMOpZGnDqWVzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJ0TDqWZpbmkgbGUgbm9tYnJlIGRcJ2hldXJlIHBvdXIgZMOpY2xlbmNoZXIgbFwnZW52b2kgZFwndW5lIGVucXXDqnRlIGFwcsOocyBsYSBjbMO0dHVyZSBkXCd1biB0aWNrZXQgKDAgc2lnbmlmaWUgdW4gZW52b2kgaW1tw6lkaWF0IGFwcsOocyBjbMO0dHVyZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IEdlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdFZGl0ZXIgbGVzIGluZm9ybWF0aW9ucyBnw6luw6lyYWxlcyBkZSBsXCdlbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBRdWVzdGlvbnMnfSA9ICdFZGl0ZXIgbGVzIFF1ZXN0aW9ucyBkXCdFbnF1w6p0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2kgY2V0dGUgZXhwcmVzc2lvbiByw6lndWxpw6hyZSBlc3QgdsOpcmlmacOpZSwgYXVjdW5lIGVucXXDqnRlIENsaWVudCBuZSBzZXJhIGVudm95w6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0VucXXDqnRlIHB1YmxpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTW9kdWxlIGRcJ8OpZGl0aW9uIGRcJ2VucXXDqnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ01vZHVsZSBzdGF0aXN0aXF1ZSBkXCdlbnF1w6p0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bGUgZGUgbGEgdnVlIGTDqXRhaWxsw6llIGRcJ2VucXXDqnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0xlcyBlbnF1w6p0ZSBuZSBzZXJvbnQgcGFzIGVudm95w6llcyBhdXggYWRyZXNzZXMgZW1haWwgY29uZmlndXLDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmlhbnQgcG91ciB1bmUgZW5xdcOqdGUuIHBhciBleC4gU3VydmV5IywgTXlTdXJ2ZXkjLiBwYXIgZMOpZmF1dCA6IFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbnRvIFN0YXRpc3RpY3MgRGV0YWlscyd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6Z2xfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQ2FtYmlhciBvIGVzdGFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnRW5nYWRpciB1bmhhIGVucXVpc2Egbm92YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBlbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMgZGEgRW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdGFyIFJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnTm9uIHNlIHBvZGUgZXN0YWJsZWNlciBvIG5vdm8gc3RhdHVzIU5vbiBoYWkgcHJlZ3VudGFzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnRXN0YWRvIGNhbWJpYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnR3JhemFzIHBvbGEgc8O6YSBvcGluacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdBIGVucXVpc2EgZXN0w6EgcmVtYXRhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnQ29tcGxldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnT3BjacOzbiBub24gZXhjbHXDrW50ZSAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvJ30gPSAnT3BjacOzbiBleGNsdcOtbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ09wY2nDs24gZXhjbHXDrW50ZSAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnVmlzdGEgeGVyYWwgZGFzIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpY2nDs24gZGEgZW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNpw7NuIMOhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2kvTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnU2lOb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdyZXNwb25kaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25vbiByZXNwb25kaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0RldGFsbGUgZGFzIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRhcyBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdYYSByZXNwb25kZXUgYSBlc3RhIGVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICdFbnF1aXNhTsK6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gTm9uIGhhaSBuaW5ndW5oYSBmaWxhIHNlbGVjY2lvbmFkYSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ1ByaW5jaXBhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnTm92byBlc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgcHJlZ3VudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIHVuaGEgZW5xdWlzYSBub3ZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaWNpw7NuIGludGVybmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZGl0YXIgYSBpbmZvcm1hY2nDs24geGVyYWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgYXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQcmVndW50YXMgZGEgZW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdFbmdhZGlyIHVuaGEgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdFc2NyaWJhIGEgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnUmVxdcOtcmVzZSB1bmhhIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm9uIGhhaSBwcmVndW50YXMgZ2FyZGFkYXMgcGFyYSBlc3RhIGVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnUmVxdcOtcmVzZSB1bmhhIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0NvbmZpcm1hIHF1ZSBkZXNleGEgZWxpbWluYXIgZXN0YSBwcmVndW50YS4gSGFuc2UgUEVSREVSIFRPRE9TIG9zIGRhdG9zIGFzb2NpYWRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkaXRhciBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3JldG9ybmFyIMOhcyBwcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnUmVzcG9zdGFzIHBvc8OtYmVpcyBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdFbmdhZGlyIHVuaGEgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOb24gaGFpIHJlc3Bvc3RhcyBnYXJkYWRhcyBwYXJhIGVzdGEgcHJlZ3VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQ29uZmlybWEgcXVlIGRlc2V4YSBlbGltaW5hciBlc3RhIHByZWd1bnRhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnSXN0byBub24gdGVuIHZhcmlhcyByZXNwb3N0YXM7IG3Ds3N0cmFzZSB1biBjYWRybyBwYXJhIGVzY3JpYmlyIHRleHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciBhIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3JldG9ybmFyIMOhIGVkaWNpw7NuIGRhIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnUmVtaXRlbnRlIGRhIG5vdGlmaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdBc3VudG8gZGEgbm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ1RleHRvIGRhIG5vdGlmaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0NhbWJpYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdWaXN0YSB4ZXJhbCBkYXMgZXN0YXTDrXN0aWNhcyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1TDoWJvYSBkZSBzb2xpY2l0dWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdIb3JhIGRlIGVudsOtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdIb3JhIGRlIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZlciBvcyBkZXRhbGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgRXN0YXTDrXN0aWNvcyBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2b2x0ZSBhIHZpc3RhIHhlcmFsIGRhcyBlc3RhdMOtc3RpY2FzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkYSBlbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdFbnZpYXIgc29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ0VucXVpc2FzIHJlY2liaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2Vydml6b3MgVGlja2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY28gUmVzdWx0YWRvcyBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyByZXN1bHRhZG9zIGVzdGF0w61zdGljYSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUmVzcG9uZGEgYSBlc3RhcyBwcmVndW50YXMsIHNlIGZhaSBvIGZhdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgYXMgbWnDsWFzIHJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRXN0YXMgc29uIGFzIHPDumFzIHJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRhIGVucXVpc2EnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnVW4gbcOzZHVsbyBkZSBlbnF1aXNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG3Ds2R1bG8gcGFyYSBlZGl0YXIgcHJlZ3VudGFzIGRlIGVucXVpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1TDs2RvbG9zIHBhcmFtZXRyb3MgcGFyYSDDsyBvYnhldG8gRW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdDYW50aWRhZGUgZGUgZMOtYXMgZGVzcG9pcyBkZSBlbnZpYXIgdW5oYSBlbnF1aXNhIGRlIGNvcnJlbyBubyBxdWUgbm9uIHNlIGVudsOtYW4gbm92YXMgcGV0aWNpw7NucyBkZSBlbnF1aXNhIGFvIG1lc21vIGNsaWVudGUuIFNlbGVjY2lvbmFuZG8gMCBlbnZpYXLDoSBzZW1wcmUgbyBjb3JyZW8gZGUgZW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ29ycG8gcG9yIGRlZmVjdG8gcGFyYSBvIGNvcnJlbyBlbGVjdHLDs25pY28gZGUgbm90aWZpY2FjacOzbiBhIGNsaWVudGVzIHNvYnJlIG5vdmEgZW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdSZW1pdGVudGUgcG9yIGRlZmVjdG8gcGFyYSBvIGNvcnJlbyBlbGVjdHLDs25pY28gZGUgbm90aWZpY2FjacOzbiBhIGNsaWVudGVzIHNvYnJlIG5vdmEgZW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnVGVtYSBwb3IgZGVmZWN0byBwYXJhIG8gY29ycmVvIGVsZWN0csOzbmljbyBkZSBub3RpZmljYWNpw7NuIGEgY2xpZW50ZXMgc29icmUgbm92YSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSB4ZXJhbCBwYXJhIG1vc3RyYXIgYSB2aXN0YSBwZXF1ZW5hIGR1bmhhIGxpc3RhIGRlIGVucXVpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGEgY2FudGlkYWRlIG3DoXhpbWEgZGUgZW5xdWlzYXMgcXVlIGVudsOtYW5zZSBhb3MgY2xpZW50ZXMgcG9yIDMwIGTDrWFzLiAoMCBzaWduaWZpY2Egbm8gbcOheGltbywgdMOzZGFsYXMgcGV0aWNpw7NucyBkZSBlbnF1aXNhIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPQogICAgICAgICdEZWZpbmUgYSBjYW50aWRhZGUgZW4gaG9yYXMgcXVlIHVuIHRpY2tldCBkZWJlIGVzdGFyIHBlY2hhZG8gcGFyYSBkaXNwYXJhciBvIGVudsOtbyBkdW5oYSBlbnF1aXNhLCAoMCBzaWduaWZpY2EgZW52aWFkbyBpbm1lZGlhdGFtZW50ZSBkZXNwb2lzIGRvIHBlY2hlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIHBvciBkZWZlY3RvIHBhcmEgdmlzdGFzIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgZWxlbWVudG9zIGRlIFpvb21FbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBuYSB2aXNpw7NuIHhlcmFsIGRlIGVucXVpc2EuIEVzdGEgb3BjacOzbiBub24gdGVuIG5pbmfDum4gZWZlY3RvIHNvYnJlIGEgcG9zaWNpw7NuIGRhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0VkaXRlIEluZm9ybWFjacOzbiBYZXJhbCBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0VkaXRlIFByZWd1bnRhcyBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBwYW50YWxsYSBNb3N0cmFyRGF0b3NWb3RvIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIG1vc3RyYXIgZGF0b3MgZHVuIHJlc3VsdGFkbyBkZSBlbnF1aXNhIGVzcGVjaWZpY2EgY2FuZG8gbyBjbGllbnRlIGludGVudGEgcmVzcG9uZGVyIGEgZW5xdWlzYSBwb3Igc2VndW5kYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWN0aXZlIG91IGRlc2FjdGl2ZSBhIGNvbmRpY2lvbiBkZSBjb21wcm9iYWNpb24gZW52aWFyIHBhcmEgbyBzZXJ2aXpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBjb21wcm9iYWNpw7NuIGVudmlhciBjb25kaWNpw7NuIHBhcmEgbyB0aXBvIGRlIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVuZ2FkaXIgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVkaXRhciBlbnF1aXNhIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVzdGF0w61zdGljYXMgZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIHpvb20gZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIG9ieGVjdG8gRW5xdWlzYVB1YmxpY2EgbmEgw6FyZWEgRW5xdWlzYSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIGEgZXhwcmVzacOzbiByZWd1bGFyIGNvaW5jaWRlLCBub24gZW52aWFyw6FzZSBlbnF1aXNhIGFvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBhcyBww6F4aW5hcyAobmFzIGNhbGVzIGFzIGVucXVpc2FzIHNvbiBtb3N0cmFkYXMpIGRhIHZpc3RhIHhlcmFsIHBlcXVlbmEgZGEgZW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdFbnF1aXNhIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciBwcmVndW50YXMgZGUgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIHZvbHRhciBhdHLDoXMgbmEgdmlzdGEgem9vbSBkZSBlbnF1aXNhIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZmFjZXIgem9vbSBub3MgZGV0YWxsZXMgZGFzIGVzdGF0w61zdGljYXMgZGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNw7NkdWxvIEVkaXRhciBFbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgIlBlcXVlbm8iIFZpc3RhIFhlcmFsIEVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIEVzdGF0w61zdGljYXMgRW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03Ds2R1bG8gWm9vbSBFbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnTMOtbWl0ZSBlbnF1aXNhIHBvciBww6F4aW5hIHBhcmEgVmlzdGEgWGVyYWwgIlBlcXVlbmEiIGRlIEVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdFbnF1aXNhcyBub24gc2Vyw6FuIGVudmlhZGFzIGFvcyBlbmRlcmV6b3MgZGUgY29ycmVvIGVsZWN0csOzbmljbyBjb25maWd1cmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgcGFyYSB1bmhhIGVucXVpc2EsIGV4LiBFbnF1aXNhIywgTWnDsWFFbnF1aXNhIywgUG9yIGRlZmVjdG8gw6kgRW5xdWlzYSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBldmVudG8gdGlja2V0IHBhcmEgZW52aWFyIGF1dG9tYXRpY2FtZW50ZSBwZXRpY2nDs25zIGRlIGVucXVpc2EgZGUgY29ycmVvIGVsZWN0csOzbmljbyBzZSB1biB0aWNrZXQgw6kgcGVjaGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnWm9vbSBOb3MgRGV0YWxsZXMgRXN0YXTDrXN0aWNvcyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aHVfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gw4FsbGFwb3QgbcOzZG9zw610w6FzYSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnw5pqIGvDqXJkxZHDrXYgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnS8OpcmTFkcOtdiBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdLw6lyZMOpcyBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVsOhbGFzeiBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnTmVtIMOhbGzDrXRoYXTDsyBiZSBheiDDumogw6FsbGFwb3QhIE5pbmNzZW5layBrw6lyZMOpc2VrIG1lZ2hhdMOhcm96dmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ8OBbGxhcG90IG3Ds2Rvc8OtdHZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnS8O2c3rDtm5qw7xrIGEgdmlzc3phamVsesOpc8OpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdBIGvDqXJkxZHDrXYgYmVmZWplesWRZMO2dHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnS8Opc3onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0JlZmVqZXpldGxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdKZWzDtmzFkW7DqWd5emV0IChsaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICdSw6FkacOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1LDoWRpw7MgKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1N0YXRpc3p0aWvDoWsgw6F0dGVraW50w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdLw6lyZMWRw612IGxlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnS8OpcmTFkcOtdiBiZXZlemV0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdJZ2VuL05lbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXNObyd9ID0gJ0lnZW5OZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdtZWd2w6FsYXN6b2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25lbSBtZWd2w6FsYXN6b2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N0YXRpc3p0aWvDoWsgcsOpc3psZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdTdGF0aXN6dGlrw6FrIHLDqXN6bGV0ZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ03DoXIga2l0w7ZsdMO2dHRlIGEga8OpcmTFkcOtdmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkjJ30gPSAnS8OpcmTFkcOtdiMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBOaW5jcyB2w6Fyw7NsaXN0YSBraWplbMO2bHZlIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWVzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfDmmogw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0vDqXJkw6lzIHTDrXB1c2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ8OaaiBrw6lyZMWRw612IGzDqXRyZWhvesOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnQmV2ZXpldMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0JlbHPFkSBsZcOtcsOhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ8OBbHRhbMOhbm9zIGluZm9ybcOhY2nDs2sgc3plcmtlc3p0w6lzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkw6lzZWsgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnS8OpcmTFkcOtdiBrw6lyZMOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0vDqXJkw6lzIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0fDqXBlbGplIGJlIGEga8OpcmTDqXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1bDoWxhc3oga8O2dGVsZXrFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05pbmNzZW5layBrw6lyZMOpc2VrIGVsbWVudHZlIGVoaGV6IGEga8OpcmTFkcOtdmhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdLw6lyZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdWw6FsYXN6IGvDtnRlbGV6xZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBrw6lyZMOpc3Q/IE1JTkRFTiBrYXBjc29sw7Nkw7MgYWRhdCBlbCBmb2cgVkVTWk5JISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnS8OpcmTDqXMgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3Zpc3N6YSBhIGvDqXJkw6lzZWtoZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTGVoZXRzw6lnZXMgdsOhbGFzem9rIGEga8O2dmV0a2V6xZFow7Z6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdWw6FsYXN6IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ05pbmNzZW5layB2w6FsYXN6b2sgZWxtZW50dmUgZWhoZXogYSBrw6lyZMOpc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIHbDoWxhc3p0Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRW5uZWsgbmluY3MgdMO2YmIgdsOhbGFzemEsIGVneSBzesO2dmVnZG9ib3ogbGVzeiBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ1bDoWxhc3ogc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2aXNzemEgYSBrw6lyZMOpcyBzemVya2VzenTDqXPDqWhleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ8OJcnRlc8OtdMOpcyBrw7xsZMWRamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfDiXJ0ZXPDrXTDqXMgdMOhcmd5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ8OJcnRlc8OtdMOpcyB0w7ZyenNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNw7Nkb3PDrXRvdHRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ0Ega8O2dmV0a2V6xZEgc3RhdGlzenRpa8OhaW5hayDDoXR0ZWtpbnTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnS8OpcsOpc2VrIHTDoWJsw6F6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnS8O8bGTDqXMgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnU3phdmF6w6FzIGlkZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnUsOpc3psZXRlayBtZWd0ZWtpbnTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdLw6lyZMWRw612IHN0YXRpc3p0aWthIHLDqXN6bGV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ3Zpc3N6YSBhIHN0YXRpc3p0aWvDoWsgw6F0dGVraW50xZFqw6loZXonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnS8OpcmTFkcOtdiBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdFbGvDvGxkw7Z0dCBrw6lyw6lzZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ0Jlw6lya2V6ZXR0IGvDqXJkxZHDrXZlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0vDqXJkxZHDrXYgcsOpc3psZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdKZWd5c3pvbGfDoWx0YXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0vDqXJkxZHDrXYgZXJlZG3DqW55ZWsgZ3JhZmlrb25qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTmluY3NlbmVrIHN0YXRpc3p0aWthIGVyZWRtw6lueWVrLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdLw6lyZMWRw612JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnVsOhbGFzem9sam9uIGV6ZWtyZSBhIGvDqXJkw6lzZWtyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdTYWrDoXQgdsOhbGFzemFpbSBtZWdqZWxlbsOtdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0V6ZWsgYXogw5ZuIHbDoWxhc3phaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdLw6lyZMWRw612IGPDrW1lJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ0VneSBrw6lyZMWRw612IG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnRWd5IG1vZHVsIGEga8OpcmTFkcOtdiBrw6lyZMOpc2VpbmVrIHN6ZXJrZXN6dMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO2c3N6ZXMgcGFyYW3DqXRlciBhIGvDqXJkxZHDrXYgb2JqZWt0dW1ob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdBIG5hcG9rIHN6w6FtYSBlZ3kgb2x5YW4ga8OpcmTFkcOtdiBsZXbDqWwga2lrw7xsZMOpc2UgdXTDoW4sIGFtZWx5YmVuIG5pbmNzZW5layDDumoga8OpcmTFkcOtdiBrw6lyw6lzZWsgZWxrw7xsZHZlIHVneWFuYW5uYWsgYXogw7xneWbDqWxuZWsuIEEgMCB2w6FsYXN6dMOhc2EgbWluZGlnIGVsIGZvZ2phIGvDvGxkZW5pIGEga8OpcmTFkcOtdiBsZXZlbGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBeiDDvGd5ZmVsZWtuZWsgYXogw7pqIGvDqXJkxZHDrXZ2ZWwga2FwY3NvbGF0YmFuIGVsa8O8bGTDtnR0IMOpcnRlc8OtdMWRIGUtbWFpbCBhbGFww6lydGVsbWV6ZXR0IHTDtnJ6c2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXogw7xneWZlbGVrbmVrIGF6IMO6aiBrw6lyZMWRw612dmVsIGthcGNzb2xhdGJhbiBlbGvDvGxkw7Z0dCDDqXJ0ZXPDrXTFkSBlLW1haWwgYWxhcMOpcnRlbG1lemV0dCBrw7xsZMWRamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmZWxla25layBheiDDumoga8OpcmTFkcOtdnZlbCBrYXBjc29sYXRiYW4gZWxrw7xsZMO2dHQgw6lydGVzw610xZEgZS1tYWlsIGFsYXDDqXJ0ZWxtZXpldHQgdMOhcmd5YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRWd5IMOhdHRla2ludMWRIG1vZHVsdCBoYXTDoXJveiBtZWcgZWd5IGvDqXJkxZHDrXZsaXN0YSBraXMgbsOpemV0w6luZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrw6lyZMWRw612ZWsgbGVnbmFneW9iYiBtZW5ueWlzw6lnw6l0LCBhbWVseWV0IDMwIG5hcG9udGEgZWxrw7xsZGhldG5layBlZ3kgw7xneWbDqWxuZWsgKGEgMCBhenQgamVsZW50aSwgaG9neSBuaW5jcyBtYXhpbXVtLCBtaW5kZW4ga8OpcmTFkcOtdiBrw6lyw6lzIGVsa8O8bGTDqXNyZSBrZXLDvGwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLid9ID0KICAgICAgICAnQXp0IGEgbWVubnlpc8OpZ2V0IGhhdMOhcm96emEgbWVnIMOzcsOhYmFuLCBhbWVseWJlbiBlZ3kgamVneWV0IGxlIGtlbGwgesOhcm5pIGVneSBrw6lyZMWRw612IGvDvGxkw6lzw6luZWsgYWt0aXbDoWzDoXPDoWhveiAoYSAwIGF6dCBqZWxlbnRpLCBob2d5IGEgbGV6w6Fyw6FzIHV0w6FuIGF6b25uYWwga8O8bGRlbmkga2VsbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBSaWNodGV4dCBuw6l6ZXRlayBhbGFww6lydGVsbWV6ZXR0IG1hZ2Fzc8OhZ8OhdCBhIFN1cnZleVpvb20gZWxlbWVrbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBtZWdqZWxlbsOtdGV0dCBvc3psb3Bva2F0IGEga8OpcmTFkcOtdiDDoXR0ZWtpbnTFkWJlbi4gRW5uZWsgYSBiZcOhbGzDrXTDoXNuYWsgbmluY3MgaGF0w6FzYSBheiBvc3psb3BvayBoZWx5emV0w6lyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0vDqXJkxZHDrXYgw6FsdGFsw6Fub3MgaW5mb3Jtw6FjacOzaW5hayBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0EgU2hvd1ZvdGVEYXRhIGvDqXBlcm55xZEgZW5nZWTDqWx5ZXrDqXNlIHZhZ3kgbGV0aWx0w6FzYSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbiBlZ3kgYWRvdHQga8OpcmTFkcOtdmVyZWRtw6lueSBhZGF0YWluYWsgbWVnamVsZW7DrXTDqXPDqWhleiwgYW1pa29yIGF6IMO8Z3lmw6lsIG3DoXNvZHN6b3IgcHLDs2LDoWwgbWVnIHbDoWxhc3pvbG5pIGEga8OpcmTFkcOtdnJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0Ega8O8bGTDqXNpIGZlbHTDqXRlbCBlbGxlbsWRcnrDqXPDqW5layBlbmdlZMOpbHllesOpc2UgdmFneSBsZXRpbHTDoXNhIGEgc3pvbGfDoWx0YXTDoXNuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0Ega8O8bGTDqXNpIGZlbHTDqXRlbCBlbGxlbsWRcnrDqXPDqW5layBlbmdlZMOpbHllesOpc2UgdmFneSBsZXRpbHTDoXNhIGEgamVneXTDrXB1c27DoWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgaG96esOhYWTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgc3plcmtlc3p0w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWzFkXTDqXRwcm9ncmFtIG1vZHVsIHJlZ2lzenRyw6FjacOzIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBsw6l2xZEga8OpcmTFkcOtdiBzdGF0aXN6dGlrw6FraG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWzFkXTDqXRwcm9ncmFtIG1vZHVsIHJlZ2lzenRyw6FjacOzIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBsw6l2xZEga8OpcmTFkcOtdiBuYWd5w610w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdFbMWRdMOpdHByb2dyYW0gbW9kdWwgcmVnaXN6dHLDoWNpw7MgYSBQdWJsaWNTdXJ2ZXkgb2JqZWt0dW1ob3ogYSBueWlsdsOhbm9zIGvDqXJkxZHDrXYgdGVyw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0hhIGV6IGEgcmVndWzDoXJpcyBraWZlamV6w6lzIGlsbGVzemtlZGlrLCBha2tvciBheiDDvGd5ZsOpbGvDqXJkxZHDrXYgbmVtIGtlcsO8bCBraWvDvGxkw6lzcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga2lzIGvDqXJkxZHDrXYgw6F0dGVraW50xZEgb2xkYWxhaWhveiAoYW1lbHlla2JlbiBhIGvDqXJkxZHDrXZlayBtZWdqZWxlbm5laykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnTnlpbHbDoW5vcyBrw6lyZMWRw612Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrw6lyZMWRw612IHN6ZXJrZXN6dMOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYSBrw6lyZMWRw612IGvDqXJkw6lzZWluZWsgc3plcmtlc3p0w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga8OpcmTFkcOtdiBuYWd5w610w6FzaSBuw6l6ZXTDqWJlIHZhbMOzIHZpc3N6YXTDqXLDqXNoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga8OpcmTFkcOtdiBzdGF0aXN6dGlrYSByw6lzemxldGVpYmUgdmFsw7MgbmFnecOtdMOhc2hveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdLw6lyZMWRw612IHN6ZXJrZXN6dMOpcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdLw6lyZMWRw612IMOhdHRla2ludMWRIOKAnmtpc+KAnSBrb3Jsw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBzdGF0aXN6dGlrw6FrIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBuYWd5w610w6FzIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnT2xkYWxhbmvDqW50aSBrw6lyZMWRw612IGtvcmzDoXQgYSDigJ5raXPigJ0ga8OpcmTFkcOtdiDDoXR0ZWtpbnTFkW7DqWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdBIGvDqXJkxZHDrXZlayBuZW0ga2Vyw7xsbmVrIGVsa8O8bGTDqXNyZSBhIGJlw6FsbMOtdG90dCBlLW1haWwgY8OtbWVrcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdFZ3kga8OpcmTFkcOtdiBhem9ub3PDrXTDs2phLCBww6lsZMOhdWwgU3VydmV5IywgTXlTdXJ2ZXkjLiBBeiBhbGFww6lydGVsbWV6ZXR0OiBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ0plZ3kgZXNlbcOpbnkgbW9kdWwgYXV0b21hdGlrdXMga8OpcmTFkcOtdiBlLW1haWwga8OpcsOpc2VrIGvDvGxkw6lzw6loZXogYXogw7xneWZlbGVrbmVrLCBoYSBlZ3kgamVneSBsZSB2YW4gesOhcnZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW50byBTdGF0aXN0aWNzIERldGFpbHMnfSA9ICdOYWd5w610w6FzIGEgc3RhdGlzenRpa8OhayByw6lzemxldGVpYmUnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aXRfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ01vZGlmaWNhIFNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdNb2RpZmljYSBsZSBkb21hbmRlIGRlbCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1NvbmRhZ2dpIGNvbXBsZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdTb25kYWdnaSBpbmNvbXBsZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdSaXN1bHRhdGkgc3RhdGlzdGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcml6aW9uZSBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1emlvbmUgZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ1NvbmRhZ2dpbyMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWF6aW9uZSBudW92byBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpemlvbmUgYWQgdXNvIGludGVybm8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdNb2RpZmljYSBsZSBpbmZvcm1hemlvbmkgZ2VuZXJhbGknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdNb2RpZmljYSBsZSBkb21hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdWb2NpIGRlbCBTb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWdnaXVuZ2kgZG9tYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0luc2VyaXNjaSBsYSBkb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05vbiBjaSBzb25vIHZvY2kgcGVyIHF1ZXN0byBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdEb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ01vZGlmaWNhIGRvbWFuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdSaXRvcm5hIGFsbGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdQb3NzaWJpbGkgcmlzcG9zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0FnZ2l1bmdpIHJpc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdOb24gc29ubyBwcmV2aXN0ZSByaXNwb3N0ZSBtdWx0aXBsZSwgaWwgZGVzdGluYXRhcmlvIGluc2VyaXNjZSBkZWwgdGVzdG8gbGliZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnTW9kaWZpY2EgcmlzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnUml0b3JuYSBhIG1vZGlmaWNhcmUgbGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ01pdHRlbnRlIGRlbCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdPZ2dldHRvIGRlbCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDb3JwbyBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYXRvIGRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsbGEgZGVsbGUgcmljaGllc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0RhdGEgZSBPcmEgZGkgaW52aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnRGF0YSBlIE9yYSBkaSBjb21waWxhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldHRhZ2xpIHN0YXRpc3RpY2kgc3VsIFNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnUml0b3JuYSBhbGxlIHN0YXRpc3RpY2hlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBzdWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdTb25kYWdnaSBpbnZpYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb25kYWdnaSByaWNldnV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldHRhZ2xpIHN1bCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmljaSBzdWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdOb24gY2kgc29ubyByaXN1bHRhdGkgZGEgbW9zdHJhcmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnU29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtb2R1bG8gcGVyIGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdVbiBtb2R1bG8gcGVyIG1vZGlmaWNhcmUgbGUgZG9tYW5kZSBkZWkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHV0dGkgaSBwYXJhbWV0cmkgZGVsIHNvbmRhZ2dpbyBuZWxsXCdpbnRlcmZhY2NpYSBBZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDb3JwbyBkZWwgdGVzdG8gZGkgZGVmYXVsdCBwZXIgbGEgbm90aWZpY2EgdmlhIGVtYWlsIGFsIGNsaWVudGUgcmlndWFyZG8gdW4gbnVvdm8gc29uZGFnZ2lvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ01pdHRlbnRlIGRpIGRlZmF1bHQgcGVyIGxhIG5vdGlmaWNhIHZpYSBlbWFpbCBhbCBjbGllbnRlIHJpZ3VhcmRvIHVuIG51b3ZvIHNvbmRhZ2dpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnT2dnZXR0byBkaSBkZWZhdWx0IHBlciBsYSBub3RpZmljYSB2aWEgZW1haWwgYWwgY2xpZW50ZSByaWd1YXJkbyB1biBudW92byBzb25kYWdnaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBtb2R1bG8gcGVyIG1vc3RyYXJlIGxhIHZpc3VhbGl6emF6aW9uZSBjb21wYXR0YSBkaSB1bmEgbGlzdGEgZGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYWx0ZXp6YSBkaSBkZWZhdWx0IHBlciBsYSB2aXN0YSBjb21wbGV0YSBwZXIgZ2xpIGVsZW1lbnRpIFN1cnZleVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBRdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bG8gZGkgcmVnaXN0cmF6aW9uZSBwZXIgaWwgc29uZGFnZ2lvIG5lbGxcJ2FyZWEgQWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdWxvIGRpIHJlZ2lzdHJhemlvbmUgcGVyIGlsIHNvbmRhZ2dpbyBuZWxsXCdhcmVhIGRpIFNvbmRhZ2dpIFB1YmJsaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2UgcXVlc3RhIHNvdHRvc3RyaW5nYSB2aWVuZSByaWNvbm9zY2l1dGEsIGlsIHNvbmRhZ2dpbyBub24gdmllbmUgaW52aWF0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSAiY29tcGF0dGEiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ1NvbmRhZ2dpbyBwdWJibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgcGVyIHZpc3VhbGl6emF6aW9uZSAiY29tcGF0dGEiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWxvIGRpIHpvb20gcGVyIGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0lkZW50aWZpY2F0aXZvIHBlciBpbCBzb25kYWdnaW8sIHBlciBlc2VtcGlvIFNvbmRhZ2dpbyMsIEluY2hpZXN0YSMuIElsIGRlZmF1bHQgU29uZGFnZ2lvIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6amFfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g44K544OG44O844K/44K55aSJ5pu0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICfmlrDopo/oqr/mn7vjga7ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfoqr/mn7vjga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn6Kq/5p+76LOq5ZWP44Gu57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfos6rllY/jga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICflm57nrZTjga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfmlrDjgZfjgYTnirbmhYvjgpLoqK3lrprjgafjgY3jgb7jgZvjgpMhIOizquWVj+OBjOWumue+qeOBleOCjOOBpuOBhOOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICfnirbmhYvjgYzlpInmm7TjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ+ODleOCo+ODvOODieODkOODg+OCr+OBhOOBn+OBoOOBjeOBguOCiuOBjOOBqOOBhuOBlOOBluOBhOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ+iqv+afu+OBjOWujOS6huOBl+OBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ+WujOaIkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn5pyq5a6M5oiQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ+ODgeOCp+ODg+OCr+ODnOODg+OCr+OCuSAo5LiA6KanKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJ+ODqeOCuOOCquODnOOCv+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfjg6njgrjjgqrjg5zjgr/jg7MgKOS4gOimpyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfntbHoqIjkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn6Kq/5p+744Gu6Kqs5piOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICfoqr/mn7vjga7ntLnku4vmlocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAn44Gv44GEL+OBhOOBhOOBiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXNObyd9ID0gJ+OBr+OBhC/jgYTjgYTjgYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICflm57nrZTjgYLjgoonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn5Zue562U44Gq44GXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ+e1seioiOOBruips+e0sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn57Wx6KiI44Gu6Kmz57SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfoqr/mn7vjgavlm57nrZTmuIjjgb/jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ+e1seioiCMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAn44Kt44Ol44O844GM6YG45oqe44GV44KM44Gm44GE44G+44Gb44KTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ+ODnuOCueOCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn5paw44GX44GE54q25rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfos6rllY/jgr/jgqTjg5cnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+aWsOimj+iqv+afu+OBruS9nOaIkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfntLnku4vmlocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jlkJHjgZHoqqzmmI4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfkuIDoiKzmg4XloLHjga7nt6jpm4YnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfos6rllY/jga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+iqv+afu+izquWVjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfos6rllY/jga7ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfos6rllY/jga7lhaXlipsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn5Zue562U5b+F6aCI44Gn44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn44GT44Gu6Kq/5p+744Gr5a++44GZ44KL6LOq5ZWP44GM5L+d5a2Y44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn6LOq5ZWPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+WbnuetlOOBjOW/hemgiOOBrumgheebruOBp+OBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfjgZPjga7os6rllY/jgpLmnKzlvZPjgavliYrpmaTjgZfjgabjgoLjgYTjgYTjgafjgZnjgYvvvJ/jgIDplqLpgKPjgZfjgabjgYTjgovjgZnjgbnjgabjga7jg4fjg7zjgr/jg7zjgYzlpLHjgo/jgozjgb7jgZkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfos6rllY/nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfos6rllY/jgbjmiLvjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn6YG45oqe6IKiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICflm57nrZTjga7ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfjgZPjga7os6rllY/jgbjjga7lm57nrZTjga/jgb7jgaDjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICfmnKzlvZPjgavjgZPjga7nrZTjgYjjgpLliYrpmaTjgZfjgabjgoLjgYTjgYTjgafjgZnjgYvvvJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ+OBk+OBruizquWVj+OBq+OBr+mBuOaKnuiCouOBjOOBguOCiuOBvuOBm+OCk+OAguODhuOCreOCueODiOOCqOODquOCouOBjOihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ+WbnuetlOOBrue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfos6rllY/jga7nt6jpm4bjgavmiLvjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfpgJrnn6Xjga7pgIHkv6HogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfpgJrnn6Xjga7ku7blkI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICfpgJrnn6Xjga7mnKzmlocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ+abtOaWsOiAhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfntbHoqIjkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICflm57nrZTkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn6YCB5L+h5pel5pmCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ+i/lOS/oeaXpeaZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ+ips+e0sOOCkueiuuiqjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn6Kq/5p+757Wx6KiI44Gu6Kmz57SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfntbHoqIjkuIDopqfjgavmiLvjgosnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn6Kq/5p+744Gu5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICfpgIHkv6HmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ+i/lOS/oeaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ+iqv+afu+OBruips+e0sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICfjg4HjgrHjg4Pjg4jjg7vjgrXjg7zjg5PjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfoqr/mn7vntZDmnpzjga7jgrDjg6njg5UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ+e1seioiOe1kOaenOOBjOOBguOCiuOBvuOBm+OCk+OAgic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfoqr/mn7snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfjgZPjgozjgonjga7os6rllY/jgavlm57nrZTjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn6YGO5Y6744Gu5Zue562U44KS6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICfjgZPjgozjgonjga/pgY7ljrvjgavlm57nrZTjgZXjgozjgZ/jgoLjga7jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn6Kq/5p+744Gu44K/44Kk44OI44OrJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+iqv+afu+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn6Kq/5p+76LOq5ZWP44KS57eo6ZuG44GZ44KL44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gr44GK44GR44KL6Kq/5p+744Kq44OW44K444Kn44Kv44OI44Gr5a++44GZ44KL5YWo44Gm44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ+iqv+afu+ODoeODvOODq+OCkumAgeS/oeOBl+OBn+W+jOOAgeWQjOOBmOmhp+WuouOBq+aWsOOBl+OBhOiqv+afu+imgeaxguOBjOmAgeS/oeOBleOCjOOBquOBhOaXpeaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfmlrDjgZfjgYToqr/mn7vjgavjgaTjgYTjgabpoaflrqLjgavpgJrnn6XjgZnjgovjg6Hjg7zjg6vjga7mnKzmlofjga7jg4fjg5Xjgqnjg6vjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfmlrDjgZfjgYToqr/mn7vjgpLjgavjgaTjgYTjgabpoaflrqLjgavpgJrnn6XjgZnjgovjg6Hjg7zjg6vjga7pgIHkv6HogIXjga7jg4fjg5Xjgqnjg6vjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5paw44GX44GE6Kq/5p+744KS44Gr44Gk44GE44Gm6aGn5a6i44Gr6YCa55+l44GZ44KL44Oh44O844Or44Gu5Lu25ZCN44Gu44OH44OV44Kp44Or44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ+iqv+afu+S4gOimpyhTKeOCkuihqOekuuOBmeOCi+OBn+OCgeOBruS4gOimp+ODouOCuOODpeODvOODq+OBruWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnMzDml6Xjga7plpPjgavpoaflrqLjgavpgIHkv6HjgZnjgovoqr/mn7vjga7mnIDlpKfmlbDjgpLlrprnvqnjgZfjgb7jgZnjgIIoMOOBr+eEoeWItumZkOOCkuaEj+WRs+OBl+OAgeWFqOOBpuOBruiqv+afu+imgeaxguOBjOmAgeS/oeOBleOCjOOBvuOBmSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJ+WujOS6huW+jOiqv+afu+OCkumAgeS/oeOBmeOCi+ODiOODquOCrOODvOOBjOaZgumWk+aVsOOCkuWumue+qeOBl+OBvuOBmeOAgigw44Gv5a6M5LqG5b6M55u044Gh44Gr6YCB5L+h44GZ44KL44GT44Go44KS5oSP5ZGz44GX44G+44GZKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICfoqr/mn7vmi6HlpKfnlLvpnaLjga7opoHntKDjgavlr77jgZfjgabjg6rjg4Pjg4Hjg4bjgq3jgrnjg4jjgavlr77jgZnjgovjg4fjg5Xjgqnjg6vjg4jjga7pq5jjgZXjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+iqv+afu+S4gOimp+OBp+ihqOekuuOBleOCjOOCi+WIl+aVsOOCkuWumue+qeOBl+OBvuOBmeOAguOBk+OBruOCquODl+OCt+ODp+ODs+OBr+WIl+OBruS9jee9ruOBq+OBr+S9nOeUqOOBl+OBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn57Wx6KiI5LiA6Iis5oOF5aCx44Gu57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+e1seioiOOBruioreWVj+OCkue3qOmbhuOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgavjgYrjgYTjgabjgIHpoaflrqLjgYwy5bqm5Zue562U44GX44KI44GG44Go44GX44Gf6Zqb44Gr44CB44GT44KM44G+44Gn44Gu5Zue562U44OH44O844K/44KS6KGo56S644GZ44KLU2hvd1ZvdGVEYXRh55S76Z2i44KS5pyJ5Yq544Gr44GZ44KL44GL5ZCm44GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAn44K144O844OT44K544Gu6YCB5L+h5p2h5Lu244KS5pyJ5Yq544G+44Gf44Gv54Sh5Yq544Gr44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn44OG44Kj44Kx44OD44OI44K/44Kk44OX44Gu6YCB5L+h5p2h5Lu244KS5pyJ5Yq544G+44Gf44Gv54Sh5Yq544Gr44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBrue1seioiOODleODreODs+ODiOOCqOODs+ODieODu+ODouOCuOODpeODvOODq+OBrueZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu57Wx6KiI44Gu5aSJ5pu055S76Z2i44OV44Ot44Oz44OI44Ko44Oz44OJ44O744Oi44K444Ol44O844Or44Gu55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu57Wx6KiI54q25rOB44OV44Ot44Oz44OI44Ko44Oz44OJ44O744Oi44K444Ol44O844Or44Gu55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga7oqr/mn7vmi6HlpKfjgavlr77jgZnjgovjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg7vjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLLjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOBrlB1YmxpY1N1cnZleeOCquODluOCuOOCp+OCr+ODiOOBq+WvvuOBmeOCi+ODleODreODs+ODiOOCqOODs+ODieODu+ODouOCuOODpeODvOODq+OBrueZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn44GT44Gu5q2j6KaP6KGo54++44Gr44Oe44OD44OB44GZ44KL5aC05ZCI44CB6Kq/5p+744Gv6aGn5a6i44Gr6YCB5L+h44GV44KM44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAn6Kq/5p+75LiA6KanIChTbWFsbCkg44GuICjoqr/mn7vjgYzooajnpLrjgZXjgozjgospIOODmuODvOOCuOOBq+WvvuOBmeOCi+ODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOBrlB1YmxpY1N1cnZleeOCquODluOCuOOCp+OCr+ODiOOBq+WvvuOBmeOCi+ODleODreODs+ODiOOCqOODs+ODieODouOCuOODpeODvOODq+eZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjjgrrjg7zjg6Djg5Pjg6Xjg7zjgafnt6jpm4bjg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgpLooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjos6rllY/jgrrjg7zjg6Djg5Pjg6Xjg7zjgafjga7nt6jpm4bjg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+ihqOekuuOBl+OBpuOBhOOCi+e1seioiOOBrue3qOmbhuODquODs+OCr+OCkuODoeODi+ODpeODvOOCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+ihqOekuuOBl+OBpuOBhOOCi+e1seioiOOBrue3qOmbhuODquODs+OCr+OCkuODoeODi+ODpeODvOOCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ+e1seioiOe3qOmbhuODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ+iqv+afu+S4gOimpyhTKeOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ+e1seioiOiqv+afu+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAn6Kq/5p+744Gu5ouh5aSn44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICfoqr/mn7vkuIDopqcoUynjgafjga4x44Oa44O844K45q+O44Gu6Kq/5p+75pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAn6Kq/5p+744Gv6Kit5a6a44GV44KM44Gf6Zu75a2Q44Oh44O844Or44Ki44OJ44Os44K544Gr44Gv6YCB5L+h44GV44KM44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfkvovjgYjjgbBTdXJ2ZXkjLCBNeVN1cnZleSPjgarjganjga7jg4HjgrHjg4Pjg4jjga7orZjliKXlrZDjgafjgZnjgILjg4fjg5Xjgqnjg6vjg4jjga9TdXJ2ZXkj44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn44OB44Kx44OD44OI44GM5a6M5LqG44GX44Gf6Zqb44Gr44CB6aGn5a6i44Gr6Ieq5YuV55qE44Gr6Kq/5p+744Oh44O844Or44KS6YCB5L+h44GZ44KL44OB44Kx44OD44OI44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbnRvIFN0YXRpc3RpY3MgRGV0YWlscyd9ID0gJ+e1seioiOiqv+afu+OBruips+e0sOOBq+OCuuODvOODoOOBmeOCiyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bXNfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gVWJhaCBTdGF0dXMgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1RhbWJhaCBVa3VyIEJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdVa3VyIEVkaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUGVueWlhc2F0YW4gRWRpdCBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXQgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdCBKYXdhcGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnVGlkYWsgYm9sZWggbWVuZXRhcGthbiBzdGF0dXMgYmFydSEgVGlhZGEgc29hbGFuIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ3N0YXR1cyBiZXJ1YmFoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnVGVyaW1hIGthc2loIGF0YXMgbWFrbHVtIGJhbGFzIGFuZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnS2FqaSBzZWxpZGlrIGl0dSBzZWxlc2FpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ2xlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ3RpZGFrIGxlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnQ2hlY2tib3ggKFNlbmFyYWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvJ30gPSAnUmFkaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKFNlbmFyYWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnU3RhdGlzdGlrIFRpbmphdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0h1cmFpYW4gcGVueWlhc2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1BlbnlpYXNhdGFuIFBlbmdlbmFsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnWWEvVGlkYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICdZYVRpZGFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnRGlqYXdhYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdUaWRhayBkaWphd2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N0YXRpc3RpayBUZXJwZXJpbmNoaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnTWFrbHVtYXQgc3RhdGlzdGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdBbmRhIHRlbGFoIG1lbmphd2FiIGthamkgc2VsaWRpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ1BlbnlpYXNhdGFuIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctVGlhZGEgZ2lsaXJhbiBkaXBpbGloLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdJbmR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnU3RhdHVzIGJhaGFydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnSmVuaXMgc29hbGFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdCdWF0IFN1cnZleSBCYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ1BlbmdlbmFsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBkYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdCBNYWtsdW1hdCBVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdCBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1BlbnlpYXNhdGFuIFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdUYW1iYWggU29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnVGFpcCBzb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnSmF3YXBhbiBkaXBlcmx1a2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnVGlhZGEgc29hbGFuIHlhbmcgZGlzaW1wYW4gdW50dWsga2FqaWFuIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnSmF3YXBhbiBkaXBlcmx1a2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdBcGFiaWxhIGFuZGEgc3VkYWggc2VsZXNhaSBtZW5ndWJhaCBzb2FsYW4ga2FqaSBzZWxpZGlrIGhhbnlhIHR1dHVwIHNrcmluIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0FkYWthaCBhbmRhIGJlbmFyLWJlbmFyIGluZ2luIG1lbWFkYW0gc29hbGFuIGluaT8gU0VNVUEgZGF0YSBiZXJrYWl0YW4gYWthbiBISUxBTkchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0IFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ2tlbWJhbGkga2VwYWRhIHNvYWxhbi1zb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnU29hbGFuOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ0phd2FwYW4gS2VtdW5na2luYW4gVW50dWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ1RhbWJhaCBKYXdhYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ1RpYWRhIGphd2FwYW4geWFuZyBkaXNpbXBhbiB1bnR1ayBzb2FsYW4gaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0FkYWthaCBhbmRhIGJlbmFyLWJlbmFyIGluZ2luIG1lbWFkYW0gamF3YXBhbiBpbmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdJbmkgdGlkYWsgbWVtcHVueWFpIGJlYmVyYXBhIGphd2FwYW4sIHRleHRhcmVhIGFrYW4gZGlwYXBhcmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZGl0IEphd2FwYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAna2VtYmFsaSB1bnR1ayBtZW5nZWRpdCBzb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ0phd2FwYW46JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdNYWtzaW11bSBzb2FsIHNlbGlkaWsgZGl0dW5qdWtrYW4gc2V0aWFwIGhhbGFtYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1BlbWJlcml0YWh1YW4gUGVuZ2lyaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdUZXJ0YWtsdWsgUGVtYmVyaXRhaHVhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0JhZGFuIFBlbWJlcml0YWh1YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0RpdHVrYXIgZGVuZ2FuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ0dhbWJhcmFuIEtlc2VsdXJ1aGFuIFN0YXRpc3RpayBkYXJpcGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ0phZHVhbCBwZXJtaW50YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ01hc2EgSGFudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ01hc2EgVW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ0xpaGF0IG1ha2x1bWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdQZW55aWFzYXRhbiBEZXRhaWxzIFN0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ2tlbWJhbGkga2UgU3RhdGlzdGlrIGdhbWJhcmFuIGtlc2VsdXJ1aGFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ01ha2x1bWF0IFVrdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ21lbmdoYW50YXIgcGVybWludGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnZGl0ZXJpbWEga2FqaSBzZWxpZGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnUGVueWlhc2F0YW4gdGVycGVyaW5jaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnUGVya2hpZG1hdGFuIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnVWt1ciBLZXB1dHVzYW4gR3JhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnVGlhZGEgc3RhdCBrZXB1dHVzYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1BlbnlpYXNhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnU2lsYSBqYXdhYiBzb2FsYW4tc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1R1bmp1a2thbiBqYXdhcGFuIHNheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0luaSBhZGFsYWggamF3YXBhbiBhbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RhanVrIFVrdXInOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnU2F0dSBNb2R1bCBQZW55aWFzYXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnU2F0dSBtb2R1bCB1bnR1ayBtZW5nZWRpdCBzb2FsYW4gdGluamF1YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZW11YSBwYXJhbWV0ZXIgYmFnaSBvYmplayBVa3VyIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0p1bWxhaCBoYXJpIHNlbGVwYXMgbWVuZ2hhbnRhciBtZWwga2FqaSBzZWxpZGlrIGRpIG1hbmEgdGlhZGEgcGVybWludGFhbiBrYWppIHNlbGlkaWsgYmFydSBkaWhhbnRhciBrZXBhZGEgcGVsYW5nZ2FuIHlhbmcgc2FtYS4gTWVtaWxpaCAwIGFrYW4gc2VudGlhc2EgbWVuZ2hhbnRhciBtZWwga2FqaSBzZWxpZGlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdEZWZhdWx0IGJhZGFuIHVudHVrIHBlbWJlcml0YWh1YW4gZS1tZWwga2VwYWRhIHBlbGFuZ2dhbiB0ZW50YW5nIGthamkgc2VsaWRpayBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1BlbmdoYW50YXIgbGFsYWkgdW50dWsgcGVtYmVyaXRhaHVhbiBlLW1lbCBrZXBhZGEgcGVsYW5nZ2FuIHRlbnRhbmcga2FqaSBzZWxpZGlrIGJhcnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1RlcnRha2x1ayBsYWxhaSB1bnR1ayBwZW1iZXJpdGFodWFuIGUtbWVsIGtlcGFkYSBwZWxhbmdnYW4gdGVudGFuZyBrYWppIHNlbGlkaWsgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIG1vZHVsIGdhbWJhcmFuIHVudHVrIG1lbnVuanVra2FuIHBhbmRhbmdhbiB5YW5nIGtlY2lsIHNlbmFyYWkga2FqaSBzZWxpZGlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGp1bWxhaCBtYWtzaW11bSBrYWppIHNlbGlkaWsgeWFuZyBtZW5kYXBhdCBkaWhhbnRhciBrZXBhZGEgcGVsYW5nZ2FuIHNldGlhcCAzMCBoYXJpLiAoMCBiZXJtYWtuYSB0aWRhayBtYWtzaW11bSwgc2VtdWEgcGVybWludGFhbiBrYWppIHNlbGlkaWsgYWthbiBkaWhhbnRhcikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ganVtbGFoIGphbSB0aWtldCBha2FuIGRpdHV0dXAgdW50dWsgbWVuY2V0dXNrYW4gcGVuZ2hhbnRhcmFuIGthamkgc2VsaWRpaywgKDAgY2FyYSBtZW5naGFudGFyIHNlZ2VyYSBzZWxlcGFzIHBlbnV0dXBhbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZXRpbmdnaWFuIGxhbGFpIHVudHVrIHBlbm9udG9uIFRla3MgS2F5YSB1bnR1ayBlbGVtZW4gWm9vbSBVa3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4gbWVudW5qdWtrYW4gZGFsYW0gZ2FtYmFyYW4ga2FqaWFuLlBpbGloYW4gaW5pIHRpZGFrIG1lbXB1bnlhaSBrZXNhbiBrZSBhdGFzIGtlZHVkdWthbiB0aWFuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1ViYWggbWFrbHVtYXQgdW11bSBrYWppIHNlbGlkaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnVWJhaCBzb2FsYW4ga2FqaSBzZWxpZGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0RheWFrYW4gYXRhdSBueWFoZGF5YWthbiBVbmRpIFBhcGFyIERhdGEgc2tyaW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbSB1bnR1ayBtZW51bmp1a2thbiBkYXRhIGhhc2lsIGthamlhbiB0ZXJ0ZW50dSBhcGFiaWxhIHBlbGFuZ2dhbiBjdWJhIHVudHVrIG1lbmphd2FiIGthamkgc2VsaWRpayBrYWxpIGtlZHVhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ01lbWJvbGVoa2FuIGF0YXUgbWVsdW1wdWhrYW4gbWVuZ2hhbnRhciBzZW1ha2FuIGtlYWRhYW4gdW50dWsgcGVya2hpZG1hdGFuIGl0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdNZW1ib2xlaGthbiBhdGF1IG1lbHVtcHVoa2FuIG1lbmdoYW50YXIgc2VtYWthbiBrZWFkYWFuIHVudHVrIGplbmlzIHRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCYWhhZ2lhbiBkZXBhbiBwZW5kYWZ0YXJhbiBtb2R1bCB1bnR1ayBtZW5hbWJhaCBrYWppIHNlbGlkaWsgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JhaGFnaWFuIGRlcGFuIHBlbmRhZnRhcmFuIG1vZHVsIHVudHVrIG1lbnl1bnRpbmcga2FqaSBzZWxpZGlrIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmFoYWdpYW4gRGVwYW4gcGVuZGFmdGFyYW4gbW9kdWwgc3RhdGlzdGlrIGthamlhbiBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQgcGVuZGFmdGFyYW4gbW9kdWwgdW50dWsgem9vbSBrYWppIHNlbGlkaWsgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIHBlbmRhZnRhcmFuIG1vZHVsIGJhZ2kgb2JqZWsgVWt1ciBBd2FtIGRpIGthd2FzYW4gVWt1ciBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnSmlrYSBwZXJsYXdhbmFuIHJlZ2V4IGluaSwgdGlhZGEga2FqaWFuIHBlbGFuZ2dhbiBha2FuIGRpaGFudGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaSBtYW5hIGthamkgc2VsaWRpayBkaXR1bmp1a2thbikgZ2FtYmFyYW4ga2FqaWFuIGtlY2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ1BlbnlpYXNhdGFuIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnl1bnRpbmcga2FqaSBzZWxpZGlrIGRhbGFtIHBhcGFyYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVueXVudGluZyBzb2FsYW4ga2FqaSBzZWxpZGlrIGRhbGFtIHBhcGFyYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBrZW1iYWxpIGtlIHBhcGFyYW4genVtIGthamkgc2VsaWRpayBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIHp1bSBtYWtsdW1hdCBzdGF0aXN0aWsga2FqaSBzZWxpZGlrIGRhbGFtIHBhcGFyYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ01vZHVsIFRhbWJhaCBTb2FsIFNlbGlkaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ0thamkgc2VsaWRpayBzdW50aW5nYW4gbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdVa3VyIFRpbmphdWFuIEhhZCAiS2VjaWwiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnS2FqaSBzZWxpZGlrIE1vZHVsIFN0YXRpc3Rpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnUGVueWlhc2F0YW4gWm9vbSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnSGFkIFBlbnlpYXNhdGFuIHNldGlhcCBoYWxhbWFuIHVudHVrIFRpbmphdWFuIFN1cnZleSAiS2VjaWwiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnVWt1ciB0aWRhayBha2FuIGRpaGFudGFyIGtlIGFsYW1hdCBlLW1lbCB5YW5nIGRpa29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBrYWppIHNlbGlkaWssIG1pc2FsbnlhIFBlbnlpYXNhdGFuICMgTXlTdXJ2ZXkgIy4gTGFsYWkgYWRhbGFoIFBlbnlpYXNhdGFuIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdUaWtldCBtb2R1bCBhY2FyYSB1bnR1ayBtZW5naGFudGFyIHBlcm1pbnRhYW4gZS1tZWwgc2VjYXJhIGF1dG9tYXRpayBrYWppIHNlbGlkaWsga2VwYWRhIHBlbGFuZ2dhbiBqaWthIHRpa2V0IGRpdHV0dXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdQZW5jZXR1cyBtZW5naGFudGFyIHBlcm1vaG9uYW4gc29hbCBzZWxpZGlrIGRpdGFuZ2d1aGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnWnVtIHBhZGEgbWFrbHVtYXQgc3RhdGlzdGlrJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bmJfTk9fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1JlZGlnZXIgc3DDuHJyZXVuZGVyc8O4a2Vsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUmVkaWdlciBzcMO4cnNtw6VsIHRpbCBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdTdGF0aXN0aWtrb3ZlcnNpa3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0xhZyBueSBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1a3Nqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdJbnRlcm4gYmVza3JpdmVsc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdSZWRpZ2VyIGdlbmVyZWxsIGluZm9ybWFzam9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnUmVkaWdlciBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdTcMO4cnNtw6VsIHRpbCBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnTGVnZyB0aWwgc3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1Nrcml2IGlubiBzcMO4cnNtw6VsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnSW5nZW4gc3DDuHJzbcOlbCBsYWdyZXQgZm9yIGRlbm5lIHNww7hycmV1bmRlcnPDuGtlbHNlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdTcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ1JlZGlnZXIgc3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3RpbGJha2UgdGlsIHNww7hyc23DpWxlbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTXVsaWdlIHN2YXJhbHRlcm5hdGl2ZXIgZm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdMZWdnIHRpbCBzdmFyYWx0ZXJuYXRpdmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdEZXR0ZSBzcMO4cnNtw6VsZXQgaGFyIGlra2UgbXVsaWdoZXQgZm9yIHN2YXJhbHRlcm5hdGl2ZXIuIEhlciB2aWwgZGV0IGt1biBibGkgdmlzdCBlbiB0ZWtzdGJva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnUmVkaWdlciBzdmFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ2fDpSB0aWxiYWtlIGZvciDDpSByZWRpZ2VyZSBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnQXZzZW5kZXIgYXYgdmFyc2VsLWUtcG9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1RpdHRlbCBpIHZhcnNlbC1lLXBvc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdNZWxkaW5nIGkgdmFyc2VsLWUtcG9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnRW5kcmV0IGF2JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsbGZvcmVzcMO4cnNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdUaWQgc2VuZHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnVGlkIHN2YXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdEZXRhbGpzdGF0aXN0aWtrIGZvciBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnZ8OlIHRpbGJha2UgdGlsIHN0YXRpc3Rpa2tvdmVyc2lrdGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzam9uIG9tIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnU2VuZHRlIGZvcmVzcMO4cnNsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ01vdHRhdHRlIHNww7hycmV1bmRlcnPDuGtlbHNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsamVyIG9tIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFmaXNrIGZyZW1zdGlsbGluZyBhdiBzdmFyZW5lIGkgc3DDuHJyZXVuZGVyc8O4a2Vsc2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdJbmdlbiByZXN1bHRhdGVyJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1Nww7hycmV1bmRlcnPDuGtlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdFbiBtb2R1bCBmb3Igc3DDuHJyZXVuZGVyc8O4a2Vsc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFbiBtb2R1bCBmb3Igw6UgcmVkaWdlcmUgc3DDuHJyZXVuZGVyc8O4a2Vsc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdTdGFuZGFyZCBtZWxkaW5nIGkgdmFyc2VsLWUtcG9zdCB0aWwga3VuZGVyIG9tIGVuIG55IHNww7hycmV1bmRlcnPDuGtlbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkIGF2c2VuZGVyIGkgdmFyc2VsLWUtcG9zdCB0aWwga3VuZGVyIG9tIGVuIG55IHNww7hycmV1bmRlcnPDuGtlbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdTdGFuZGFyZCBvdmVyc2tyaWZ0IGkgdmFyc2VsLWUtcG9zdCB0aWwga3VuZGVyIG9tIGVuIG55IHNww7hycmV1bmRlcnPDuGtlbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IEdlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0h2aXMgZGVubmUgcmVnZXhlbiBzdGVtbWVyLCB2aWwgZGV0IGlra2UgYmxpIHNlbmR0IHV0IGVuIHNww7hycmV1bmRlcnPDuGtlbHNlIHRpbCBrdW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnU3RhbmRhcmQgaWRlbnRpZmlrYXRvciBmb3IgZW4gdW5kZXJzw7hrbHNlLCBmLmVrcy4gU3DDuHJyZXVuZGVyc8O4a2Vsc2UjLCBNaW5TcMO4cnJldW5kZXJzw7hrZWxzZSMuIFN0YW5kYXJkIGVyIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbnRvIFN0YXRpc3RpY3MgRGV0YWlscyd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bmxfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gU3RhdHVzIHdpanppZ2VuIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdOaWV1d2UgZW5xdcOqdGUgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnQmV3ZXJrIGVucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0Jld2VyayB2cmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0Jld2VyayB2cmFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0Jld2VyayBhbnR3b29yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ0thbiBzdGF0dXMgbmlldCB3aWp6aWdlbiwgdm9lZyBlZXJzdCB2cmFnZW4gdG9lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdTdGF0dXMgYmlqZ2V3ZXJrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0JlZGFua3Qgdm9vciB1dyBmZWVkYmFjay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdEZSBlbnF1w6p0ZSBpcyBpbmdlc3R1dXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1ZvbGxlZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdPbnZvbGxlZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ1NlbGVjdGlldmFrIChsaWpzdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICdLZXV6ZXJvbmRqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdLZXV6ZXJvbmRqZSAobGlqc3QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnU3RhdGlzdGlla2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ09tc2NocmlqdmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWN0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnSmEvTmVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnSmFOZWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdiZWFudHdvb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pZXQgYmVhbnR3b29yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVSBoZWVmdCBkZXplIGVucXXDqnRlIGFsIGJlYW50d29vcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ05pZXV3ZSBlbnF1w6p0ZSBhYW5tYWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y3RpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0ludGVybmUgb21zY2hyaWp2aW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnQmV3ZXJrIGFsZ2VtZW5lIGluZm9ybWF0aWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdCZXdlcmsgdnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdWcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnVnJhYWcgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnVnJhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnRXIgemlqbiBnZWVuIHZyYWdlbiBvcGdlc2xhZ2VuIHZvb3IgZGV6ZSBlbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ZyYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0Jld2VyayB2cmFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ2dhIHRlcnVnIG5hYXIgZGUgdnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01vZ2VsaWprZSBhbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBbnR3b29yZCB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0RlemUgaGVlZnQgbmlldCBtZWVyZGVyZSBhbnR3b29yZGVuLiBFciB6YWwgZWVuIHRla3N0dmFrIGdldG9vbmQgd29yZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0FudHdvb3JkIGJld2Vya2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ2dhIHRlcnVnIG5hYXIgZGUgdnJhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdBZnplbmRlciBub3RpZmljYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ09uZGVyd2VycCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0JvZHkgdGV4dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnR2V3aWp6aWdkIGRvb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnRGV0YWlsb3ZlcnppY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVmVyem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1ZlcnN0dXVyZCBvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdJbmdldnVsZCBvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWlsb3ZlcnppY2h0IHN0YXRpc3RpZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnZ2EgdGVydWcgbmFhciBoZXQgb3ZlcnppY2h0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0RldGFpbHMgZW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1ZlcnN0dXVyZGUgdmVyem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdPbnR2YW5nZW4gZW5xdcOqdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWlscyBlbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdSZXN1bHRhdGVuIChncmFmaWVrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnR2VlbiByZXN1bHRhdGVuLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdFbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ0JlYW50d29vcmR0IHUgZGUgdm9sZ2VuZGUgdnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1Rvb24gbWlqbiBhbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdEaXQgemlqbiB1dyBhbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ0VucXXDqnRldGl0ZWwnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWVuIG1vZHVsZSBvbSBlbnF1w6p0ZXMgdGUgb25kZXJob3VkZW4gZW4gdGUgdmVyc3R1cmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFZW4gbW9kdWxlIG9tIGVucXXDqnRlcyB0ZSBvbmRlcmhvdWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cGxfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gWm1pZcWEIHN0YXR1cyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnRG9kYWogbm93xIUgYW5raWV0xJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdFZHljamEgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdFZHljamEgcHl0YcWEIGFua2lldHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkeWNqYSBweXRhxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdFZHljamEgb2Rwb3dpZWR6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ05pZSBtb8W8bmEgem1pZW5pxIcgc3RhdHVzdSEgQnJhayB6ZGVmaW5pb3dhbnljaCBweXRhxYQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1N0YXR1cyB6bWllbmlvbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdEemnEmWt1asSZbXkgemEgd3lwZcWCbmllbmllIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQW5raWV0YSB6YWtvxYRjem9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdLb21wbGV0bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ05pZWtvbXBsZXRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnU3RhdHlzdHlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdPcGlzIGFua2lldHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1dzdMSZcCBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1Rhay9OaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICdUYWtOaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdvZHBvd2llZHppYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pZSBvZHBvd2llZHppYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N6Y3plZ8OzxYJ5IHN0YXR1c3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnSnXFvCBvZHBvd2llZHppYcWCZcWbIG5hIHTEmSBhbmtpZXTEmS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ0Fua2lldGEjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdVdHfDs3J6IG5vd8SFIGFua2lldMSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ1dwcm93YWR6ZW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ1dld27EmXRyem55IG9waXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZHl0dWogaW5mb3JtYWNqZSBvZ8OzbG5lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWR5dHVqIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1B5dGFuaWEgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdEb2RhaiBweXRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnV3Byb3dhZMW6IHB5dGFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnQnJhayBweXRhxYQgemFwaXNhbnljaCB3IHRlaiBhbmtpZWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQeXRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkeXR1aiBweXRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAncG93csOzdCBkbyBweXRhxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTW/FvGxpd2Ugb2Rwb3dpZWR6aSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnRG9kYWogb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnTmllIHBvc2lhZGEgd2llbHUgb2Rwb3dpZWR6aSwgYsSZZHppZSB3ecWbd2lldGxhbmUgcG9sZSB0ZWtzdG93ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZHl0dWogb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdwb3dyw7N0IGRvIGVkeWNqaSBweXRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTmFkYXdjYSBwb3dpYWRvbWllbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnVGVtYXQgcG93aWFkb21pZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ1RyZcWbxIcgcG93aWFkb21pZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnWm1pZW5pb25lIHByemV6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1ByemVnbMSFZCBzdGF0eXN0eWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFiZWxhIMW8xIVkYcWEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0N6YXMgd3lzxYJhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0N6YXMgZ8WCb3Nvd2FuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ1N6Y3plZ8OzxYJ5IHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ1dzdGVjeiBkbyBwcnplZ2zEhWR1IHN0YXR5c3R5a2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBvIGFua2llY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdXeXPFgmFuZSDFvMSFZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ090cnp5bWFuZSBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnU3pjemVnw7PFgnkgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdXeWtyZXMgd3luaWvDs3cgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnQnJhayB3eW5pa8OzdyBhbmtpZXR5Lic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdBbmtpZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUHJvc3rEmSBvZHBvd2llZHppZcSHIG5hIHRlIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnUG9rYcW8IG1vamUgb2Rwb3dpZWR6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnT3RvIFR3b2plIG9kcG93aWVkemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVHl0dcWCIGFua2lldHknOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTW9kdcWCIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHXFgiBkbyBlZHljamkgcHl0YcWEIGFua2lldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1dzenlzdGtpZSBwYXJhbWV0cnkgZGxhIGFua2lldCB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnTGljemJhIGRuaSBwbyBrdMOzcnljaCBuYXN0xIVwaSB3eXPFgmFuaWUgxbzEhWRhbmlhIHd5cGXFgm5pZW5pYSBhbmtpZXR5LiBXcHJvd2FkemVuaWUgIjAiIHNwb3dvZHVqZSB3eXPFgmFuaWUgZS1tYWlsYSB6YXdzemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0RvbXnFm2xuYSBidWRvd2EgaW5mb3JtYWNqaSBkbCB1xbx5dGtvd25pa2Egb2Rub8WbbmllIG5vd2VqIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnRG9tecWbbG55IG5hZGF3Y2EgaW5mb3JtYWNqaSBvIG5vd2VqIGFua2llY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdEb215xZtsbnkgdGVtYXQgaW5mb3JtYWNqaSBvIG5vd2VqIGFua2lldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZm5pdWplIG1vZHXFgiBwcnplZ2zEhWR1IHd5xZt3aWV0bGFuaWEgbGlzdCBhbmtpZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEZWZpbml1amUgbWFrc3ltYWxuxIUgbGljemLEmSBhbmtpZXQgd3lzecWCYW5pdSBkbyBLbGllbnRhIHcgY2nEhWd1IDMwIGRuaS4gKDAgb3puYWN6YSBicmFrIG9ncmFuaWN6ZW5pYSwgd3N6eXN0a2llIMW8xIVkYW5pYSBixJlkxIUgd3lzecWCYW5lKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJ1VzdGFsYSBsaWN6YsSZIGdvZHppbiBrdMOzcmUgbXVzesSFIG1pbsSFxIcgb2QgemFta25pxJljaWEgemfFgm9zemVuaWEgZG8gd3lzxYJhbmlhIGFua2lldHkgKDAgb3puYWN6YSBiZXp6d8WCb2N6bsSFIHd5c3nFgmvEmSBwcnp5IHphbXlrYW5pdSB6Z8WCb3N6ZW5pYSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbsSFIHd5c29rb8WbxIcgd2lkb2vDs3cgUmljaHRleHQgZGxhIGVsZW1lbnTDs3cgU3VydmV5Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3aWRvY3puZSBrb2x1bW55IHcgcHJ6ZWdsxIVkemllIGFua2lldC4gVGEgb3BjamEgbmllIHdwxYJ5d2EgbmEgcG96eWNqxJkga29sdW1uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdXxYLEhWN6IGx1YiB3ecWCxIVjeiBla3JhbiBTaG93Vm90ZURhdGEgdyBpbnRlcmZlanNpZSBwdWJsaWN6bnltIGFieSBwb2themHEhyB3eW5pa2kgYW5raWV0eSBnZHkga2xpZW50IHByw7NidWplIG9kcG93aWVkemllxIcgbmEgYWtpZXTEmSBkcnVnaSByYXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1xYIgZnJvbnRlbmQgcmVqZXN0cnVqxIVjeSBwb2RnbMSFZCBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdcWCIGZyb250ZW5kIHJlamVzdHJ1asSFY3kgb2JpZWt0IFB1YmxpY1N1cnZleSB3IG9ic3phcnplIHB1YmxpY3pueW0gYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0dkeSB0byB3eXJhxbxlbmllIHJlZ3VsYXJuZSBqZXN0IHNwZcWCbmlvbmUsIG5pZSB6b3N0YW5pZSB3eXPFgmFuYSDFvGFkbmEgYW5raWV0YSBkbyBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgc3Ryb24gKG5hIGt0w7NyeWNoIHBva2F6eXdhbmUgc8SFIGFua2lldHkpIGRsYSBtYcWCZWdvIHByemVnbMSFZHUgYW5raWV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0Fua2lldGEgcHVibGljem5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ICJtYcWCZWdvIiBwcnplZ2zEhWR1IGFua2lldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnUG9kZ2zEhWQgYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0IGlsb8WbY2kgYW5raWV0IHcgIm1hxYJ5bSIgcHJ6ZWdsxIVkemllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdJZGVudHlmaWthY2phIGRsYSBhbmtpZXR5LCBucC4gU3VydmV5IywgTXlTdXJ2ZXkjLiBEb215xZtsbmllOiBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ1pkYXJ6ZW5pZSB6Z8WCb3N6ZW5pYSB3eXN5xYJhIGF1dG9tYXR5Y3puaWUgZS1tYWlsYSB6IHByb8WbYsSFIG8gd3lwZcWCbmllbmllIGFua2lldHkgcG8gemFta25pxJljaXUgemfFgm9zemVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbnRvIFN0YXRpc3RpY3MgRGV0YWlscyd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cHRfQlJfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQWx0ZXJhciBFc3RhZG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0FkaWNpb25hciBOb3ZhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnRWRpdGFyIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkacOnw6NvIGRlIFBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpw6fDo28gZGUgUmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdOw6NvIMOpIHBvc3PDrXZlbCBjb25maWd1cmFyIG8gbm92byBlc3RhZG8uIE5lbmh1bWEgcXVlc3TDo28gZGVmaW5pZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBhbHRlcmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ09icmlnYWRvIHBlbGEgc3VhIHBhcnRpY2lwYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0EgcGVzcXVpc2EgZXN0w6EgZmluYWxpemFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDaGVja2JveCAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvJ30gPSAnUsOhZGlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1JhZGlvIChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdSZXN1bW8gZGUgRXN0YXTDrXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdcOnw6NvIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1NpbS9Ow6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnU2ltTsOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ1Jlc3BvbmRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnTsOjbyByZXNwb25kaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0RldGFsaGUgZGEgZXN0YXTDrXN0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGhlcyBkYSBlc3RhdMOtc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1ZvY8OqIGrDoSByZXNwb25kZXUgYSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ1Blc3F1aXNhIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICdOZW5odW1hIGZpbGEgc2VsZWNpb25hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWVzdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOb3ZvIGVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwbyBkZSBxdWVzdMOjbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JpYXIgTm92YSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1w6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBJbnRlcm5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdGFyIEluZm9ybWHDp8O1ZXMgR2VyYWlzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUGVyZ3VudGFzIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0FkaWNpb25hciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0VzY3JldmEgYSBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwb3N0YSByZXF1ZXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdOZW5odW1hIHF1ZXN0w6NvIHNhbHZhIHBhcmEgZXN0YSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdSZXNwb3N0YSBSZXF1ZXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnVm9jw6ogcmVhbG1lbnRlIGRlc2VqYSBleGNsdWlyIGVzc2EgcXVlc3TDo28/IFRPRE9TIG9zIGRhZG9zIGFzc29jaWFkb3Mgc2Vyw6NvIFBFUkRJRE9TISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAndm9sdGFyIMOgcyBwcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnUG9zc8OtdmVpcyBSZXNwb3N0YXMgUGFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWRpY2lvbmFyIFJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTsOjbyBow6EgcmVzcG9zdGFzIHNhbHZhcyBwYXJhIGVzdGEgcXVlc3TDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICdWb2PDqiByZWFsbWVudGUgcXVlciBleGNsdWlyIGVzc2EgcmVzcG9zdGEgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRXN0YSBwZXJndW50YSBuw6NvIHBvc3N1aSB2w6FyaWFzIHJlc3Bvc3RhcywgdW1hIMOhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3ZvbHRhciBwYXJhIGVkaXRhciBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWV0ZW50ZSBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXNzdW50byBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnQ29ycG8gZGEgTm90aWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTW9kaWZpY2FkbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUmVzdW1vIGRlIEVzdGF0w61zdGljYXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGEgZGUgUmVxdWlzacOnw7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdIb3JhIGRlIEVudmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0hvcmEgZG8gVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZlciBkZXRhbGhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxoZXMgZGUgRXN0YXTDrXN0aWNhcyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAndm9sdGFyIGFvIHJlc3VtbyBkZSBlc3RhdMOtc3RpY2FzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8OjbyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnU29saWNpdGHDp8O1ZXMgZW52aWFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1NvbGljaXRhw6fDtWVzIHJlY2ViaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsaGVzIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1NlcnZpw6dvIGRvIGNoYW1hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcsOhZmljb3MgZGUgUmVzdWx0YWRvcyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnU2VtIHJlc3VsdGFkb3MgZGUgZXN0YXTDrXN0aWNhcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IsIHJlc3BvbmRhIGVzdGFzIHF1ZXN0w7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdNb3N0cmFyIG1pbmhhcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHPDo28gc3VhcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVMOtdHVsbyBkYSBQZXNxdWlzYSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbSBNw7NkdWxvIGRlIFBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW0gbcOzZHVsbyBwYXJhIGVkaXRhciBwZXJndW50YXMgZGUgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9kb3Mgb3MgcGFyw6JtZXRyb3MgcGFyYSBhIFBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0ludGVydmFsbyBkZSBkaWFzIGFww7NzIGVudmlhciB1bSBlLW1haWwgZGUgcGVzcXVpc2EgZGVudHJvIGRvIHF1YWwgbm92YXMgcmVxdWlzacOnw7VlcyBkZSBwZXNxdWlzYSBuw6NvIHNlcsOjbyBlbnZpYWRhcyBwYXJhIG8gbWVzbW8gY2xpZW50ZS4gU2VsZWNpb25hciAwIGlyw6Egc2VtcHJlIGVudmlhciBvIGUtbWFpbCBkZSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ29ycG8gcGFkcsOjbyBwYXJhIG8gZS1tYWlsIGRlIG5vdGlmaWNhw6fDo28gZGUgY2xpZW50ZXMgc29icmUgbm92YSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdSZW1ldGVudGUgcGFkcsOjbyBwYXJhIG8gZS1tYWlsIGRlIG5vdGlmaWNhw6fDo28gZGUgY2xpZW50ZXMgc29icmUgbm92YSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXNzdW50byBwYWRyw6NvIHBhcmEgbyBlLW1haWwgZGUgbm90aWZpY2HDp8OjbyBkZSBjbGllbnRlcyBzb2JyZSBub3ZhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgbyBtw7NkdWxvIGRlIHZpc8OjbyBnZXJhbCBwYXJhIGV4aWJpciBhIHZpc8OjbyBwZXF1ZW5hIGRlIHVtYSBsaXN0YSBkZSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG3DoXhpbWEgcXVhbnRpZGFkZSBkZSBwZXNxdWlzYXMgcXVlIHPDo28gZW52aWFkYXMgcGFyYSB1bSBjbGllbnRlIGEgY2FkYSAzMCBkaWFzICgwIHNpZ25pZmljYSBxdWUgbsOjbyBow6EgbcOheGltbzsgdG9kYXMgYXMgcmVxdWlzacOnw7VlcyBkZSBwZXNxdWlzYSBzZXLDo28gZW52aWFkYXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLid9ID0KICAgICAgICAnRGVmaW5lIGEgcXVhbnRpZGFkZSBkZSBob3JhcyBxdWUgdW0gY2hhbWFkbyBkZXZlIGVzdGFyIGZlY2hhZG8gcGFyYSBlbnZpbyBkZSB1bWEgcGVzcXVpc2EgKDAgc2lnbmlmaWNhIGVudmlhciBpbWVkaWF0YW1lbnRlIGFww7NzIGZlY2hhbWVudG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgcGFkcsOjbyBwYXJhIFJpY2h0ZXh0IG5vcyBlbGVtZW50b3MgZGEgU3VydmV5Wm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZXhpYmlkYXMgbmEgdmlzw6NvIGdlcmFsIGRlIHBlc3F1aXNhLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhcyBjb2x1bmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnRWRpdGFyIEluZm9ybWHDp8O1ZXMgR2VyYWlzIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQZXJndW50YXMgZGUgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBhIHRlbGEgU2hvd1ZvdGVEYXRhIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIGV4aWJpciBkYWRvcyBkbyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIGVzcGVjw61maWNhIHF1YW5kbyBvIGNsaWVudGUgdGVudGEgcmVzcG9uZGVyIHVtYSBwZXNxdWlzYSBwZWxhIHNlZ3VuZGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0F0aXZhIG91IGRlc2F0aXZhIHZlcmlmaWNhw6fDo28gZGUgY29uZGnDp8O1ZXMgZGUgc2VydmnDp29zIHBhcmEgZW52aW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQXRpdmEgb3UgZGVzYXRpdmEgdmVyaWZpY2HDp8OjbyBkZSBjb25kacOnw7VlcyBkZSB0aXBvcyBwYXJhIGVudmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGFkacOnw6NvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGVkacOnw6NvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBkZSBpbnRlcmZhY2UgcGFyYSBlc3RhdMOtc3RpY2EgZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgZGV0YWxoZXMgZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgbyBvYmpldG8gUHVibGljU3VydmV5IG5hIMOhcmVhIGRlIHBlc3F1aXNhIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2UgZXN0YSByZWdleCBmb3IgZW5jb250cmFkYSwgbmVuaHVtYSBwZXNxdWlzYSBzZXLDoSBlbnZpYWRvIHBhcmEgbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhcyBww6FnaW5hcyAobmFzIHF1YWlzIGFzIHBlc3F1aXNhcyBzw6NvIG1vc3RyYWRhcykgZGEgdmlzw6NvIGdlcmFsIGRlIHBlc3F1aXNhIHBlcXVlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnUGVzcXVpc2EgUMO6YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtYSBwZXNxdWlzYSBlbSBzdWEgdmlzw6NvIGRlIGRldGFsaGVzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHF1ZXN0w7VlcyBkZSBwZXNxdWlzYSBlbSBzdWEgdmlzw6NvIGRlIGRldGFsaGVzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bSBsaW5rIG5vIG1lbnUgcGFyYSB2b2x0YXIgZGEgdmlzw6NvIGRlIGRldGFsaGVzIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIGRldGFsaGFyIGFzIGVzdGF0w61zdGljYXMgZGEgcGVzcXVpc2EgZW0gc3VhIHZpc8OjbyBkZSBkZXRhbGhlcyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ0VkaXRhciBNw7NkdWxvIGRlIHBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRhIFZpc8OjbyBHZXJhbCBkZSBQZXNxdWlzYSAiUGVxdWVuYSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdFc3RhdMOtc3RpY2FzIGRvIE3Ds2R1bG8gZGUgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRGV0YWxoZSBkZSBQZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0ZSBwb3IgcMOhZ2luYSBuYSB2aXPDo28gZ2VyYWwgZGUgcGVzcXVpc2EgIlBlcXVlbmEiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnQXMgcGVzcXVpc2FzIG7Do28gc2Vyw6EgZW52aWFkYXMgcGFyYSBvcyBlbmRlcmXDp29zIGRlIGUtbWFpbCBjb25maWd1cmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgZGUgdW1hIHBlc3F1aXNhLCBleC4gUGVzcXVpc2EjLCBNaW5oYVBlc3F1aXNhIy4gTyBwYWRyw6NvIMOpIFBlc3F1aXNhIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjaGFtYWRvIHBhcmEgZW52aWFyIHJlcXVpc2nDp8O1ZXMgZGUgcGVzcXVpc2EgdmlhIGUtbWFpbCBhdXRvbWF0aWNhbWVudGUgcGFyYSBjbGllbnRlcyBzZSB1bSBjaGFtYWRvIGZvciBmZWNoYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW50byBTdGF0aXN0aWNzIERldGFpbHMnfSA9ICdEZXRhbGhhciBhcyBFc3RhdMOtc3RpY2FzJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTIgRkNDTiAtIFJ1aSBGcmFuY2lzY28gPHJ1aS5mcmFuY2lzY29AZmNjbi5wdD4KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cHRfUFRfU3VydmV5OwoKdXNlIHV0Zjg7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdDcmlhciBub3ZvIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gaW50ZXJuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mbyd9ID0gJ0luZm9ybWHDp8OjbyBnZW7DqXJpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdWaXN0YSBkZSBlc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGEgZGUgcGVkaWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdIb3JhIGRlIGVudmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0hvcmEgZGUgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ0RldGFsaGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTsOjbyBleGlzdGVtIHBlcmd1bnRhcyBubyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdFc3RhdMOtc3RpY2EgZGV0YWxoYSBkbyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2b2x0YXIgw6AgdmlzdGEgZGUgZXN0YXTDrXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHbyBiYWNrJ30gPSAndm9sdGFyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBwZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWRpY2lvbmFyIHBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmV2ZXIgYSBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUGVyZ3VudGFzIGRvIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWRpdGFyIHBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAndm9sdGFyIMOgcyBwZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdSZXNwb3N0YXMgcG9zc8OtdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWRpY2lvbmFyIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnTsOjbyBleGlzdGVtIHbDoXJpYXMgcmVzcG9zdGFzLCB2YWkgc2VyIG1vc3RyYWRhIHVtYSDDoXJlYSBkZSB0ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2b2x0YXIgw6AgZWRpw6fDo28gZGEgcGVyZ3VudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdEZWZpbmnDp8O1ZXMgZGUgY29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBTdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTsO6bWVybyBkZSBpbnF1w6lyaXRvcyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnUmVtZXRlbnRlIGRhIG5vdGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdBc3N1bnRvIGRhIG5vdGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdUZXh0byBkYSBub3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgVGltZSd9ID0gJ0NyaWFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIEJ5J30gPSAnQ3JpYWRvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIFRpbWUnfSA9ICdNb2RpZmljYWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZGUgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnUGVkaWRvcyBlbnZpYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnSW5xdcOpcml0b3MgcmVzcG9uZGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZGl0YXIgaW5mb3JtYcOnw6NvIGdlbsOpcmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBwZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0RldGFsaGVzIGRlIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGhlcyBkbyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY28gZGUgcmVzdWx0YWRvcyBkbyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdOw7ptZXJvIGRlIHJlc3Bvc3Rhcyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdJbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlIG5leHQgcXVlc3Rpb25zJ30gPSAnUHJvIGZhdm9yLCByZXNwb25kYSDDoHMgc2VndWludGVzIHBlcmd1bnRhcyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGlucXXDqXJpdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdNw7NkdWxvIHBhcmEgZWRpdGFyIGFzIHBlcmd1bnRhcyBkb3MgaW5xdcOpcml0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF5cyBzdGFydGluZyBmcm9tIHRoZSBsYXRlc3QgY3VzdG9tZXIgc3VydmV5IGVtYWlsIGJldHdlZW4gbm8gY3VzdG9tZXIgc3VydmV5IGVtYWlsIGlzIHNlbnQsICggMCBtZWFucyBBbHdheXMgc2VuZCBpdCApIC4nfSA9ICdOw7ptZXJvIGRlIGRpYXMgZW50cmUgZW52aW8gbm90aWZpY2HDp8O1ZXMgcG9yIGNsaWVudGUsICgwIHNpZ25pZmljYSBlbnZpYXIgc2VtcHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPSAnQ29ycG8gcG9yIG9taXNzw6NvIGRvIGVtYWlsIGRhIG5vdGlmaWNhw6fDo28gZGUgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICdSZW1ldGVudGUgcG9yIG9taXNzw6NvIGRvIGVtYWlsIGRhIG5vdGlmaWNhw6fDo28gZGUgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICdBc3N1bnRvIHBvciBvbWlzc8OjbyBkbyBlbWFpbCBkYSBub3RpZmljYcOnw6NvIGRlIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0gJ0RlZmluZSBhIHZpc3RhIHBlcXVlbmEgY29tIGEgbGlzdGEgZGUgaW5xdcOpcml0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZSBhcyBjb2x1bmFzIGEgbW9zdHJhciBuYSB2aXN0YSBkZSBpbnF1w6lyaXRvcy4gTsOjbyBpbnRlcmZlcmUgY29tIGEgcG9zacOnw6NvIGRhcyBjb2x1bmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTcOzZHVsbyBkZSBhdXRvIHJlZ2lzdG8gZGUgaW5xdcOpcml0b3MgZGUgY2xpZW50ZSBubyBpbnRlcmZhY2UgZGUgYWdlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPSAnTcOzZHVsbyBkZSBhdXRvIHJlZ2lzdG8gZGUgaW5xdcOpcml0b3MgZGUgY2xpZW50ZSBubyBpbnRlcmZhY2UgcMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIGEgZXhwcmVzc8OjbyByZWd1bGFyIGNvaW5jaWRpciwgbsOjbyBzZXLDoSBlbnZpYWRvIHVtIGlucXXDqXJpdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0gJ1BhcmFtZXRyaXphw6fDo28gZGFzIHDDoWdpbmFzIGRhIHZpc3RhIGdlcmFsIGRlIGlucXXDqXJpdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnSW5xdcOpcml0byBww7pibGljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBwZXF1ZW5vIG5hIHZpc3RhIGRlIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgZGV0YWxoZSBkZSBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdOw7ptZXJvIGRlIGlucXXDqXJpdG9zIHBvciBww6FnaW5hIG5hIHZpc3RhIHBlcXVlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9ICdJZGVudGlmaWNhZG9yIHBhcmEgb3MgaW5xdcOpcml0b3MuIGV4LiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFBvciBvbWlzc8OjbyDDqSBTdXJ2ZXkjICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGdldHMgY2xvc2VkLid9ID0gJ03Ds2R1bG8gZGUgZW52aW8gZGUgbm90aWZpY2HDp8O1ZXMgYXV0b23DoXRpY2FzIHBhcmEgY2xpZW50ZXMgcXVhbmRvIHVtIHRpY2tldCDDqSBmZWNoYWRvJzsKCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyacOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnfSA9ICdDYW1wbyBvYnJpZ2F0w7NyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHXDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0NvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJbmNvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSd9ID0gJ1ZhbG9yIHBvciBvbWlzc8Ojbyc7CgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gb24gcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYW4gc3BlY2lmaWMgdm90YXRpb24gd2hlbiBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgYnkgc2Vjb25kIHRpbWUuJ30gPSAnQXRpdmEgb3UgaW5hdGl2YSBvIGVjcsOjIFNob3dWb3RlRGF0YSBubyBpbnRlcmZhY2UgcMO6YmxpY28sIHF1YW5kbyBvIGNsaWVudGUgdGVudGEgcmVzcG9uZGVyIGFvIGlucXXDqXJpdG8gcGVsYSBzZWd1bmRhIHZleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdUb2RvcyBvcyBwYXLDom1ldHJvcyBwYXJhIG8gb2JqZXRvIElucXXDqXJpdG8gbm8gaW50ZXJmYWNlIGRlIGFnZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPSAnRGVmaW5lIGEgYWx0dXJhIHBvciBvbWlzc8OjbyBwYXJhIG8gZWRpdG9yIHJ0ZiBwYXJhIG9zIGVsZW1lbnRvcyBkbyBpbnF1w6lyaXRvJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cnVfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g0JjQt9C80LXQvdC40YLRjCDRgdC+0YHRgtC+0Y/QvdC40LUgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0L3QvtCy0YvQuSDQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YEg0LIg0L7Qv9GA0L7RgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvtGC0LLQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn0J3QtdC70YzQt9GPINC30LDQtNCw0YLRjCDQvdC+0LLQvtC1INGB0L7RgdGC0L7Rj9C90LjQtSEg0J3QuNC60LDQutC40LUg0LLQvtC/0YDQvtGB0Ysg0L3QtSDQstGL0LTQtdC70LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICfQmNC30LzQtdC90LjRgtGMINGB0L7RgdGC0L7Rj9C90LjQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ9Ch0L/QsNGB0LjQsdC+INC30LAg0JLQsNGI0Lgg0L7RgtCy0LXRgtGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ9Ce0L/RgNC+0YEg0LfQsNCy0LXRgNGI0LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICfQl9Cw0LLQtdGA0YjQtdC90L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfQndC10LfQsNCy0LXRgNGI0LXQvdC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICfQk9Cw0LvQvtGH0LrQuCAo0KHQv9C40YHQvtC6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJ9Ci0L7Rh9C60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn0KLQvtGH0LrQuCAo0KHQv9C40YHQvtC6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ9Ce0LHQt9C+0YAg0YHRgtCw0YLQuNGB0YLQuNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ9CX0L3QsNC60L7QvNGB0YLQstC+INGBINC+0L/RgNC+0YHQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ9CU0LAv0J3QtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAn0JTQsCDQuNC70Lgg0J3QtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAn0L7RgtCy0LXRgtC40LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICfQvdC1INC+0YLQstC10YLQuNC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAn0J/QvtC00YDQvtCx0L3Ri9C5INC+0YLRh9C10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ9Cf0L7QtNGA0L7QsdC90L7RgdGC0Lgg0L7RgtGH0LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfQktGLINGD0LbQtSDQvtGC0LLQtdGC0LjQu9C4INC90LAg0L7Qv9GA0L7RgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ9Ce0L/RgNC+0YEg4oSWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0g0J3QuCDQvtC00L3QvtC5INC+0YfQtdGA0LXQtNC4INC90LUg0LLRi9Cx0YDQsNC90L4gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICfQk9C70LDQstC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn0J3QvtCy0L7QtSDRgdC+0YHRgtC+0Y/QvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ9Ci0LjQvyDQstC+0L/RgNC+0YHQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn0KHQvtC30LTQsNGC0Ywg0L3QvtCy0YvQuSDQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ9Ce0L/QuNGB0LDQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICfQktC90YPRgtGA0LXQvdC90LXQtSDQvtC/0LjRgdCw0L3QuNC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L7QsdGJ0YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0L7Qv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQktC+0L/RgNC+0YHRiyDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtCx0LDQstGC0Ywg0LLQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAn0JLQvtC/0YDQvtGBINC4INGC0LjQvyDQstC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICfQotGA0LXQsdGD0Y7RgtGB0Y8g0L7RgtCy0LXRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn0KHQvtGF0YDQsNC90LXQvdGL0YUg0LLQvtC/0YDQvtGB0L7QsiDQvdC10YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn0JLQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ9Ci0YDQtdCx0YPRjtGC0YHRjyDQntGC0LLQtdGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Cf0L4g0L7QutC+0L3Rh9Cw0L3QuNC4INGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0LLQvtC/0YDQvtGB0L7QsiDQvtC/0YDQvtGB0LAg0L/RgNC+0YHRgtC+INC30LDQutGA0L7QudGC0LUg0Y3RgtC+0YIg0Y3QutGA0LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ9GLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0L7RgiDQstC+0L/RgNC+0YE/ICDQktCh0JUg0YHQstGP0LfQsNC90L3Ri9C1INC00LDQvdC90YvQtSDQsdGD0LTRg9GCINCf0J7QotCV0KDQr9Cd0KshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfQvdCw0LfQsNC0INC6INCy0L7Qv9GA0L7RgdCw0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0JLQvtC/0YDQvtGBOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ9CS0L7Qt9C80L7QttC90YvQtSDQvtGC0LLQtdGC0Ysg0LTQu9GPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LHQsNCy0LjRgtGMINC+0YLQstC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfQndC1INC30LDQtNCw0L3RiyDQstCw0YDQuNCw0L3RgtGLINC+0YLQstC10YLQvtCyINC00LvRjyDRjdGC0L7Qs9C+INCy0L7Qv9GA0L7RgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0LbQtdC70LDQtdGC0LUg0YPQtNCw0LvQuNGC0YwgINGN0YLQvtGCINC+0YLQstC10YI/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfQrdGC0L7RgiDQstC+0L/RgNC+0YEg0L3QtSDQv9GA0LXQtNGD0YHQvNCw0YLRgNC40LLQsNC10YIg0L3QtdGB0LrQvtC70YzQutC+INC+0YLQstC10YLQvtCyLCDQsdGD0LTQtdGCINC/0L7QutCw0LfQsNC90L4g0YLQtdC60YHRgtC+0LLQvtC1L3RleHRhcmVhINC/0L7Qu9C1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC+0YLQstC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAn0L3QsNC30LDQtCDQuiDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGOINCy0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICfQntGC0LLQtdGCOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAn0JzQsNC60YEuINC60L7Quy3QstC+INC+0L/RgNC+0YHQvtCyINC90LAg0YHRgtGA0LDQvdC40YbRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAn0J7RgtC/0YDQsNCy0LjRgtC10LvRjCDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn0KLQtdC80LAg0YPQstC10LTQvtC80LvQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ9Ci0LXQu9C+INGD0LLQtdC00L7QvNC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9CY0LfQvNC10L3QuNCy0YjQuNC5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ9Cf0L7QtNGA0L7QsdC90L7RgdGC0Lgg0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn0KLQsNCx0LvQuNGG0LAg0L7RgtCy0LXRgtC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0JLRgNC10LzRjyDQvtGC0L/RgNCw0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ9CS0YDQtdC80Y8g0L7RgtCy0LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAn0KHQvC4g0L/QvtC00YDQvtCx0L3QvtGB0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn0J/QvtC00YDQvtCx0L3QvtGB0YLQuCDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ9C90LDQt9Cw0LQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0L/QviDQvtC/0YDQvtGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9Ce0YLQv9GA0LDQstC70LXQvdC90YvQtSDQt9Cw0L/RgNC+0YHRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn0J/QvtC70YPRh9C10L3QvdGL0LUg0L7Qv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn0JjQvdGE0L7RgNC80LDQuNGPINC/0L4g0L7Qv9GA0L7RgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ9Ch0LXRgNCy0LjRgdGLINC30LDRj9Cy0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9Cg0LXQt9GD0LvRjNGC0LDRgtGLINC+0L/RgNC+0YHQsCDQsiDQs9GA0LDRhNC40LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0KHRgtCw0YLQuNGB0YLQuNC60Lgg0L3QtdGCLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfQntC/0YDQvtGB0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfQntGC0LLQtdGC0YzRgtC1INC90LAg0Y3RgtC4INCy0L7Qv9GA0L7RgdGLOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfQn9C+0LrQsNC30LDRgtGMINC80L7QuCDQvtGC0LLQtdGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9CS0LDRiNC4INC+0YLQstC10YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfQndCw0LfQstCw0L3QuNC1INC+0L/RgNC+0YHQsCc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C70Ywg0J7Qv9GA0L7RgdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINCy0L7Qv9GA0L7RgdC+0LIg0LTQu9GPINC+0L/RgNC+0YHQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0YHQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC+0LHRitC10LrRgtCwINCe0L/RgNC+0YHRiyDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC00L3QtdC5LCDQv9C+0YHQu9C1INC+0YLRgdGL0LvQutC4INC/0LjRgdC10Lwg0YEg0L7Qv9GA0L7RgdC+0LwsINCyINGC0LXRh9C10L3QuNC1INC60L7RgtC+0YDRi9GFINC90LjQutCw0LrQuNC1INC90L7QstGL0LUg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQvtCxINC+0L/RgNC+0YHQtSDQvdC1INC/0L7RgdGL0LvQsNGO0YLRgdGPLCDQvtC00L3QvtC80YMg0Lgg0YLQvtC80YMg0LbQtSDQutC70LjQtdC90YLRgy4g0JLRi9Cx0L7RgCDQt9C90LDRh9C10L3QuNGPIDAg0YPQutCw0LfRi9Cy0LDQtdGCINCy0YHQtdCz0LTQsCDQv9C+0YHRi9C70LDRgtGMINC/0LjRgdGM0LzQviDRgSDQvtC/0YDQvtGB0L7QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0LXQutGB0YIg0L/QuNGB0YzQvNCwINCyINC/0L7Rh9GC0L7QstC+0Lwg0YPQstC10LTQvtC80LvQtdC90LjQuCwg0L/QvtGB0YvQu9Cw0LXQvNC+0Lwg0LrQu9C40LXQvdGC0LDQvCwg0L4g0L3QvtCy0L7QvCDQvtC/0YDQvtGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0J7RgtC/0YDQsNCy0LjRgtC10LvRjCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINCyINC90L7QstC+0Lwg0L7Qv9GA0L7RgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQotC10LzQsCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINCyINC90L7QstC+0Lwg0L7Qv9GA0L7RgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQvtC00YPQu9GMINC/0YDQvtGB0LzQvtGC0YDQsCDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRgdC/0LjRgdC60LAg0L7Qv9GA0L7RgdC+0LIg0LIgc21hbGwg0YTQvtGA0LzQsNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INC+0L/RgNC+0YHQvtCyINC+0YLRgdGL0LvQsNC10LzRi9GFINC60LvQuNC10L3RgtGDINC30LAg0LrQsNC20LTRi9C1IDMwINC00L3QtdC5LiAoIjAiINC+0LfQvdCw0YfQsNC10YIsINGH0YLQviDQstGB0LUg0LfQsNC/0YDQvtGB0Ysg0L7Qv9GA0L7RgdC+0LIg0LHRg9C00YPRgiDQvtGC0YHRi9C70LDRgtGM0YHRjykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YfQuNGB0LvQviDRh9Cw0YHQvtCyLCDQv9C+0YHQu9C1INC30LDQutGA0YvRgtC40Y8g0LfQsNGP0LLQutC4LCDQv9C+INC40YHRgtC10YfQtdC90LjQuCDQutC+0YLQvtGA0YvRhSDQsdGD0LTQtdGCINC+0YLQv9GA0LDQstC70LXQvdC+INGB0L7QvtCx0YnQtdC90LjQtSDRgSDQvtC/0YDQvtGB0L7QvCwgKCIwIiDQvtC30L3QsNGH0LDQtdGCINC90LXQvNC10LTQu9C10L3QvdGD0Y4g0L7RgtC/0YDQsNCy0LrRgyDQv9C+0YHQu9C1INC30LDQutGA0YvRgtC40Y8pLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCy0YvRgdC+0YLRgyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQvtCx0LvQsNGB0YLQuCDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdC+0LPQviDRgtC10LrRgdGC0LAg0LTQu9GPINGN0LvQtdC80LXQvdGC0L7QsiDQvtC/0YDQvtGB0LAg0L/RgNC4INC/0L7QtNGA0L7QsdC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0L/QtdGA0LXRh9C10L3RjCDQutC+0LvQvtC90L7Quiwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCyINC+0LHQt9C+0YDQtSDQntC/0YDQvtGB0L7Qsi4g0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQvdC1INCy0LvQuNGP0LXRgiDQvdCwINC/0L7RgNGP0LTQvtC6INC60L7Qu9C+0L3QvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0J7QsdGJ0LXQtSDQvtC/0LjRgdCw0L3QuNC1INC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YHRiyDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9C40YLQtSDQuNC70Lgg0L7RgtC60LvRjtGH0LjRgtGMINC60L3QvtC/0LrRgyAi0J/QvtC60LDQt9Cw0YLRjCDQvNC+0Lgg0L7RgtCy0LXRgtGLIiwg0YfRgtC+0LHRiyDQv9C+0LrQsNC30LDRgtGMINC00LDQvdC90YvQtSDQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQviDRgNC10LfRg9C70YzRgtCw0YLQsCDQvtC/0YDQvtGB0LAsINC60L7Qs9C00LAg0LrQu9C40LXQvdGCINC/0L7Qv9GL0YLQsNC10YLRgdGPINC+0YLQstC10YLQuNGC0Ywg0L3QsCDQvtC/0YDQvtGBINCy0L4g0LLRgtC+0YDQvtC5INGA0LDQty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfQktC60LvRjtGH0LjRgtGMINC40LvQuCDQvtGC0LrQu9GO0YfQuNGC0Ywg0L/RgNC+0LLQtdGA0LrRgyDRg9GB0LvQvtCy0LjRjyDQvtGC0L/RgNCw0LLQutC4INC00LvRjyDRgdC10YDQstC40YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LjRgtGMINC40LvQuCDQvtGC0LrQu9GO0YfQuNGC0Ywg0L/RgNC+0LLQtdGA0LrRgyDRg9GB0LvQvtCy0LjRjyDQvtGC0L/RgNCw0LLQutC4INC00LvRjyDRgtC40L/QsCDQt9Cw0Y/QstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINC+0L/RgNC+0YHQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uINC00LvRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0L/RgNC+0YHQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0LzQvtC00YPQu9GPINC+0YLRh9C10YLQvdC+0YHRgtC4INC+0LEg0L7Qv9GA0L7RgdC1INCyINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQvtC/0YDQvtGB0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0L7QsdGK0LXQutGC0LAg0J/Rg9Cx0LvQuNGH0L3QvtCz0L4g0L7Qv9GA0L7RgdCwINCyINGA0LDQt9C00LXQu9C1INC/0YPQsdC70LjRh9C90YvRhSDQvtC/0YDQvtGB0L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ9CV0YHQu9C4INGN0YLQviDRgNC10LPRg9C70Y/RgNC90L7QtSDQstGL0YDQsNC20LXQvdC40LUg0LLQtdGA0L3Qviwg0L7Qv9GA0L7RgSDQutC70LjQtdC90YLRgyDQvdC1INC/0L7RgdGL0LvQsNC10YLRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDRgdGC0YDQsNC90LjRhtGLICjQvdCwINC60L7RgtC+0YDQvtC5INC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDQvtC/0YDQvtGB0YspINC/0YDQuCDQvtCx0LfQvtGA0LUg0L7Qv9GA0L7RgdC+0LIg0LIgc21hbGwg0YTQvtGA0LzQsNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0Lkg0L7Qv9GA0L7RgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvtC/0YDQvtGBINC/0YDQuCDQtdCz0L4g0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YHRiyDQvtC/0YDQvtGB0LAg0L/RgNC4INC10LPQviDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0LLQtdGA0L3Rg9GC0YzRgdGPINC90LDQt9Cw0LQg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQvtC/0YDQvtGB0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0YPQstC40LTQtdGC0Ywg0L/QvtC00YDQvtCx0L3QvtGB0YLQuCDQvtGC0YfQtdGC0LAg0L7QsSDQvtC/0YDQvtGB0LUg0L/RgNC4INC10LPQviDQtNC10YLQsNC70YzQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINCU0L7QsdCw0LLQu9C10L3QuNGPINC+0L/RgNC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0L/RgNC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/QuNGB0LXQuSwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0L7Qv9GA0L7RgdC+0LIg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDQv9C+0YHRgtGA0L7QtdC90LjRjyDQvtGC0YfQtdGC0L7QsiDQvtCxINC+0L/RgNC+0YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQvtC/0YDQvtGB0L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC30LDQv9C40YHQtdC5LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L3QsCDRgdGC0YDQsNC90LjRhtC1INC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0L7Qv9GA0L7RgdC+0LIg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9Ce0L/RgNC+0YHRiyDQvdC1INCx0YPQtNGD0YIg0L7RgtC/0YDQsNCy0LvRj9GC0YzRgdGPINC90LAg0YPQutCw0LfQsNC90L3Ri9C1INC/0L7Rh9GC0L7QstGL0LUg0LDQtNGA0LXRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAn0J7QsdC+0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LjQtNC10L3RgtC40YTQuNC60LDRhtC40Lgg0L7Qv9GA0L7RgdCwLCDQvdCw0L/RgNC40LzQtdGALCDQntC/0YDQvtGB4oSWLCBTdXJ2ZXkjLCBNeVN1cnZleSMuINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINGD0L/RgNCw0LLQu9C10L3QuNGPINGB0L7QsdGL0YLQuNC10Lwg0LTQu9GPINC30LDRj9Cy0LrQuCwg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lgg0L7RgtC/0YDQsNCy0LvRj9GO0YnQuNC5INC/0LjRgdGM0LzQviDQutC70LjQtdC90YLRgyDRgSDQvtC/0YDQvtGB0L7QvCwg0L/RgNC4INC30LDQutGA0YvRgtC40Lgg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAn0KLRgNC40LPQs9C10YAg0L7RgtC/0YDQsNCy0LrQuCDQt9Cw0LTQtdGA0LbQsNC90L3Ri9GFINC30LDQv9GA0L7RgdC+0LIg0L3QsCDQvtC/0YDQvtGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAn0J/QvtC00YDQvtCx0L3QsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC/0L4g0YHRgtCw0YLQuNGB0YLQuNC60LUnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3JfQ3lybF9TdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBQUFTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSDQn9GA0L7QvNC10L3QuCDRgdGC0LDRgtGD0YEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ9CU0L7QtNCw0Zgg0L3QvtCy0YMg0LDQvdC60LXRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAn0KPRgNC10LTQuCDQsNC90LrQtdGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn0KPRgNC10LTQuCDQv9C40YLQsNGa0LAg0LDQvdC60LXRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfQo9GA0LXQtNC4INC/0LjRgtCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ9Cj0YDQtdC00Lgg0L7QtNCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfQndC1INC80L7QttC1INGB0LUg0L/QvtGB0YLQsNCy0LjRgtC4INC90L7QstC4INGB0YLQsNGC0YPRgSEg0J3QtdC80LAg0LTQtdGE0LjQvdC40YHQsNC90LjRhSDQv9C40YLQsNGa0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9Ch0YLQsNGC0YPRgSDQv9GA0L7QvNC10ZrQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn0KXQstCw0LvQsCDQvdCwINCy0LDRiNC40Lwg0L7QtNCz0L7QstC+0YDQuNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn0JDQsNC90LrQtdGC0LAg0ZjQtSDQt9Cw0LLRgNGI0LXQvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ9Ca0L7QvNC/0LvQtdGC0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn0J3QtdC60L7QvNC/0LvQtdGC0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICfQn9C+0ZnQtSDQt9CwINC/0L7RgtCy0YDQtNGDICjQm9C40YHRgtCwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJ9CU0YPQs9C80LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn0JTRg9Cz0LzQtSAo0JvQuNGB0YLQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfQn9GA0LXQs9C70LXQtCDRgdGC0LDRgtC40YHRgtC40LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgSDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ9Cj0LLQvtC0INGDINCw0L3QutC10YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfQlNCwL9Cd0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICfQlNCw0J3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ9C+0LTQs9C+0LLQvtGA0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ9C90LjRmNC1INC+0LTQs9C+0LLQvtGA0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ9CU0LXRgtCw0Zkg0YHRgtCw0YLQuNGB0YLQuNC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0ZnQuCDRgdGC0LDRgtC40YHRgtC40LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAn0JLQtdGbINGB0YLQtSDQvtC00LPQvtCy0L7RgNC40LvQuCDQvdCwINCw0L3QutC10YLRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ9CQ0L3QutC10YLQsCMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSDQndC40ZjQtSDQuNC30LDQsdGA0LDQvSDRgNC10LQgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICfQk9C70LDQstC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ9Cd0L7QstC4INGB0YLQsNGC0YPRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn0KLQuNC/INC/0LjRgtCw0ZrQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn0J3QsNC/0YDQsNCy0Lgg0L3QvtCy0YMg0LDQvdC60LXRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ9Cj0LLQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JjQvdGC0LXRgNC90Lgg0L7Qv9C40YEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfQo9GA0LXQtNC4INC+0L/RiNGC0LUg0LjQvdGE0L7RgNC80LDRhtC40ZjQtSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ9Cj0YDQtdC00Lgg0L/QuNGC0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQkNC90LrQtdGC0L3QsCDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtC00LDRmCDQv9C40YLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfQo9C90LXRgdC4INC/0LjRgtCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICfQntCx0LDQstC10LfQsNC9INC+0LTQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn0JfQsCDQvtCy0YMg0LDQvdC60LXRgtGDINC90LjRgdGDINGB0LDRh9GD0LLQsNC90LAg0L/QuNGC0LDRmtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ9Cf0LjRgtCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQntCx0LDQstC10LfQsNC9INC+0LTQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQmtCw0LTQsCDQt9Cw0LLRgNGI0LjRgtC1INGB0LAg0YPRgNC10ZLQuNCy0LDRmtC10Lwg0LDQvdC60LXRgtC90LjRhSDQv9C40YLQsNGa0LAg0YHQsNC80L4g0LfQsNGC0LfQstC+0YDQuNGC0LUg0L7QstCw0Zgg0L/RgNC+0LfQvtGALic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn0JTQsCDQu9C4INC30LDQuNGB0YLQsCDQttC10LvQuNGC0LUg0LTQsCDQvtCx0YDQuNGI0LXRgtC1INC+0LLQviDQv9C40YLQsNGa0LU/INCh0JLQmCDQv9C+0LLQtdC30LDQvdC4INC/0L7QtNCw0YbQuCDRm9C1INCx0LjRgtC4INCY0JfQk9Cj0JHQidCV0J3QmCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ9Cj0YDQtdC00Lgg0L/QuNGC0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAn0L3QsNC30LDQtCDQvdCwINC/0LjRgtCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfQn9C40YLQsNGa0LU6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn0JzQvtCz0YPRm9C4INC+0LTQs9C+0LLQvtGA0Lgg0LfQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAn0JTQvtC00LDRmCDQvtC00LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ9CX0LAg0L7QstC+INC/0LjRgtCw0ZrQtSDQvdC40YHRgyDRgdCw0YfRg9Cy0LDQvdC4INC+0LTQs9C+0LLQvtGA0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn0JTQsCDQu9C4INC30LDQuNGB0YLQsCDQttC10LvQuNGC0LUg0LTQsCDQuNC30LHRgNC40YjQtdGC0LUg0L7QstCw0Zgg0L7QtNCz0L7QstC+0YA/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfQntCy0L4g0L3QtdC80LAg0LLQuNGI0LUg0L7QtNCz0L7QstC+0YDQsCwg0L/RgNC+0YHRgtC+0YAg0LfQsCDRgtC10LrRgdGCINGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICfQo9GA0LXQtNC4INC+0LTQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ9C90LDQt9Cw0LQg0L3QsCDRg9GA0LXRktC40LLQsNGa0LUg0L/QuNGC0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICfQntC00LPQvtCy0L7RgDonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGB0LjQvNGD0Lwg0L/RgNC40LrQsNC30LDQvdC40YUg0LDQvdC60LXRgtCwINC/0L4g0YHRgtGA0LDQvdC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfQn9C+0YjQuNGZ0LDQvtGGINC+0LHQsNCy0LXRiNGC0LXRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn0J/RgNC10LTQvNC10YIg0L7QsdCw0LLQtdGI0YLQtdGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICfQodCw0YDQtNC20LDRmCDQvtCx0LDQstC10YjRgtC10ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn0JzQtdGa0LDQvic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfQn9GA0LXQs9C70LXQtCDRgdGC0LDRgtC40YHRgtC40LrQtSDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn0KLQsNCx0LXQu9CwINC30LDRhdGC0LXQstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ9CS0YDQtdC80LUg0YHQu9Cw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQktGA0LXQvNC1INCz0LvQsNGB0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAn0JLQuNC00Lgg0LTQtdGC0LDRmdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0Lgg0YHRgtCw0YLQuNGB0YLQuNC60LUg0LDQvdC60LXRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQuNC00Lgg0L3QsNC30LDQtCDQvdCwINC/0YDQtdCz0LvQtdC0INGB0YLQsNGC0LjRgdGC0LjQutC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGY0LUg0L4g0LDQvdC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICfQn9C+0YHQu9Cw0YLQuCDQt9Cw0YXRgtC10LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn0J/RgNC40LzRmdC10L3QtSDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0Lgg0LDQvdC60LXRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ9Cj0YHQu9GD0LPQtSDQt9CwINGC0LjQutC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfQk9GA0LDRhNC40LrQvtC9INGA0LXQt9GD0LvRgtCw0YLQsCDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ9Cd0LXQvNCwINGB0YLQsNGC0LjRgdGC0LjQutC1INGA0LXQt9GD0LvRgtCw0YLQsC4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAn0JDQsNC90LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfQnNC+0LvQuNC80L4g0LTQsCDQvtC00LPQvtCy0L7RgNC40YLQtSDQvdCwINC+0LLQsCDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn0J/QvtC60LDQttC4INC80L7RmNC1INC+0LTQs9C+0LLQvtGA0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9Ce0LLQviDRgdGDINCy0LDRiNC4INC+0LTQs9C+0LLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn0J3QsNGB0LvQvtCyINCw0L3QutC10YLQtSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQkNC90LrQtdGC0L3QuCDQvNC+0LTRg9C7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQuyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0L3QuNGFINC/0LjRgtCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodCy0Lgg0L/QsNGA0LDQvNC10YLRgNC4INCe0LHRmNC10LrRgtCwINCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINC00LDQvdCwINC/0L7RgdC70LUg0YHQu9Cw0ZrQsCDQuNC80LXRmNC70LAg0L4g0LDQvdC60LXRgtC4INGDINC60L7QvCDQuNGB0YLQvtC8INC60L7RgNC40YHQvdC40LrRgyDQvdC10ZvQtSDQsdC40YLQuCDRgdC70LDQvdC4INC90L7QstC4INC30LDRhdGC0LXQstC4LiDQkNC60L4g0LjQt9Cw0LHQtdGA0LXRgtC1IDAg0LjQvNC10ZjQuyDQviDQsNC90LrQtdGC0Lgg0YHQtSDRg9Cy0LXQuiDRiNCw0ZnQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YHQsNC00YDQttCw0Zgg0LjQvNC10ZjQu9CwINC+0LHQsNCy0LXRiNGC0LXRmtCwINC+INC90L7QstC+0Zgg0LDQvdC60LXRgtC4INC30LAg0LrQvtGA0LjRgdC90LjQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0L7RiNC40ZnQsNC+0YYg0LjQvNC10ZjQu9CwINC+0LHQsNCy0LXRiNGC0LXRmtCwINC+INC90L7QstC+0Lwg0LjRgdGC0YDQsNC20LjQstCw0ZrRgyDQt9CwINC60L7RgNC40YHQvdC40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC10LTQvNC10YIg0LjQvNC10ZjQu9CwINC+0LHQsNCy0LXRiNGC0LXRmtCwINC+INC90L7QstC+0Zgg0LDQvdC60LXRgtC4INC30LAg0LrQvtGA0LjRgdC90LjQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyDQu9C40YHRgtC1INCw0L3QutC10YLQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYINCw0L3QutC10YLQsCDQutC+0ZjQsCDRm9C1INCx0LjRgtC4INC/0L7RgdC70LDRgtCwINC60L7RgNC40YHQvdC40LrRgyDRgtC+0LrQvtC8IDMwINC00LDQvdCwLiAoMCDQt9C90LDRh9C4INC00LAg0L3QtdC80LAg0LzQsNC60YHQuNC80YPQvNCwLCDRgdCy0Lgg0LfQsNGF0YLQtdCy0Lgg0ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YLQuCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCx0YDQvtGYINGB0LDRgtC4INC+0LQg0LfQsNGC0LLQsNGA0LDRmtCwINGC0LjQutC10YLQsCDQt9CwINC/0L7QutGA0LXRgtCw0ZrQtSDRgdC70LDRmtCwINCw0L3QutC10YLQtS4gKDAg0LfQvdCw0YfQuCDQtNCwINGB0LUg0YjQsNGZ0LUg0L7QtNC80LDRhSDQv9C+INC30LDRgtCy0LDRgNCw0ZrRgykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90YMg0LLQuNGB0LjQvdGDINC+0LrQstC40YDQsCDQt9CwINC/0YDQuNC60LDQtyDRgtC10LrRgdGC0LAgINC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC10LvQtdC80LXQvdCw0YLQsCDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0YMg0L/RgNC10LPQu9C10LTRgyDQsNC90LrQtdGC0LUuINCe0LLQsCDQvtC/0YbQuNGY0LUg0L3QtdC80LAg0YPRgtC40YbQsNGYINC90LAg0L/QvtC30LjRhtC40ZjQtSDQutC+0LvQvtC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IEdlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfQo9GA0LXQtNC4INC+0L/RiNGC0LUg0LjQvdGE0L7RgNC80LDRhtC40ZjQtSDQviDQuNGB0YLRgNCw0LbQuNCy0LDRmtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ9Cj0YDQtdC00Lgg0LDQvdC60LXRgtC90LAg0L/QuNGC0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ9Cj0LrRmdGD0YfQuCDQuNC70Lgg0LjRgdC60ZnRg9GH0Lgg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsCDQt9CwINCz0LvQsNGB0LDRmtC1INC90LAg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDINGA0LDQtNC4INC/0YDQuNC60LDQt9CwINGA0LXQt9GD0LvRgtCw0YLQsCDQv9C+0ZjQtdC00LjQvdC1INCw0L3QutC10YLQtSDQutCw0LTQsCDQutC+0YDQuNGB0L3QuNC6INC/0L7QutGD0YjQsCDQtNCwINC+0LTQs9C+0LLQvtGA0Lgg0L3QsCDRg9C/0LjRgtC90LjQuiDQv9C+INC00YDRg9Cz0Lgg0L/Rg9GCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ9Cj0LrRmdGD0YfQuCDQuNC70Lgg0LjRgdC60ZnRg9GH0Lgg0L/RgNC+0LLQtdGA0YMg0YHRgtCw0YLRg9GB0LAg0YHQu9Cw0ZrQsCDQt9CwINGD0YHQu9GD0LPRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfQo9C60ZnRg9GH0Lgg0LjQu9C4INC40YHQutGZ0YPRh9C4INC/0YDQvtCy0LXRgNGDINGB0YLQsNGC0YPRgdCwINGB0LvQsNGa0LAg0LfQsCDRgtC40L8g0YLQuNC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDQtNC+0LTQsNCy0LDRmtC1INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDQuNC30LzQtdC90LUg0LDQvdC60LXRgtC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDRgdGC0LDRgtC40YHRgtC40LrRgyDQsNC90LrQtdGC0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwICJGcm9udGVuZCIg0LzQvtC00YPQu9CwINC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDRmNCw0LLQvdC1INCw0L3QutC10YLQvdC1INC+0LHRmNC10LrRgtC1INCw0L3QutC10YLQtSDRgyDQv9GA0L7RgdGC0L7RgNGDINGY0LDQstC90LjRhSDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICfQkNC60L4g0YHQtSDQvtCy0LDRmCDQuNC30YDQsNC3INC/0L7QutC70LDQv9CwLCDQsNC90LrQtdGC0LAg0L3QtdGb0LUg0LHQuNGC0Lgg0L/QvtGB0LvQsNGC0LAg0LrQvtGA0LjRgdC90LjQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDRgdGC0YDQsNC90LjRhtCwICjQvdCwINC60L7RmNC40LzQsCDRgdGDINCw0L3QutC10YLQtSDQstC40LTRmdC40LLQtSkg0L3QsCDQvNCw0LvQvtC8INC/0YDQuNC60LDQt9GDINC/0YDQtdCz0LvQtdC00LAg0LDQvdC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ9CI0LDQstC90LAg0LDQvdC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0YPRgNC10ZLQuNCy0LDRmtC1INCw0L3QutC10YLQtSDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC40L3RgtC10YDRhNC10ZjRgdCwINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0YPRgNC10ZLQuNCy0LDRmtC1INCw0L3QutC10YLQvdC40YUg0L/QuNGC0LDRmtCwINGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC/0L7QstGA0LDRgtCw0Log0YMg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDRgdGC0LDRgtC40YHRgtC40LrQtSDQsNC90LrQtdGC0LUg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDQvdCwINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQt9CwINC00L7QtNCw0LLQsNGa0LUg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0L/RgNC10LPQu9C10LTQsCDQsNC90LrQtdGC0LUgLSDigJ7QvNCw0LvQvuKAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGC0LDRgtC40YHRgtC40LrRgyDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INCx0YDQvtGY0LAg0LDQvdC60LXRgtCwINC/0L4g0YHRgtGA0LDQvdC4INC30LAg0L/RgNC10LPQu9C10LQgLSDigJ7QvNCw0LvQvuKAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9CQ0L3QutC10YLQsCDQvdC10ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YLQsCDQvdCwINC/0L7QtNC10YjQtdC90YMg0LjQvNC10ZjQuyDQsNC00YDQtdGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINCw0L3QutC10YLRgywg0L3Qv9GAIFN1cnZleSMsIE15U3VydmV5Iy4g0J/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0ZjQtSBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LTQvtCz0LDRktCw0ZjQsCDQvdCwINGC0LjQutC10YLRgyDQt9CwINCw0YPRgtC+0LzQsNGC0YHQutC+INGB0LvQsNGa0LUg0LjQvNC10ZjQu9CwINC+INC40YHRgtGA0LDQttC40LLQsNGa0YMg0LrQvtGA0LjRgdC90LjRhtC40LzQsCDQsNC60L4g0ZjQtSDRgtC40LrQtdGCINC30LDRgtCy0L7RgNC10L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICfQntC60LjQtNCw0Ycg0L7QtNC70L7QttC10L3QvtCzINGB0LvQsNGa0LAg0LfQsNGF0YLQtdCy0LAg0LfQsCDQsNC60L3QtdGC0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW50byBTdGF0aXN0aWNzIERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0YHRgtCw0YLQuNGB0YLQuNC60LUnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3dfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQmFkaWxpc2hhIEhhbGktJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnT25nZXphIHV0YWZpdGkgbXB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0hhcmlyaSB1dGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0hhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0hhcmlyaSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnSGFyaXJpIG1hamlidSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1Npb25pIGhhbGkgbXB5YSEgSGFrdW5hIG1hc3dhbGkgeWFsaXlvZmFmYW51bGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnSGFsaSBpbWViYWRpbGlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnQXNhbnRlIGt3YSBtYWppYnUgeWFrby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdVdGFmaXRpIHVtZW1hbGl6aWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnS2FtaWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJc2l5byBrYW1pbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnQ2hla2kgYm9rc2kgKG9yb2RoYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICdSZWRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdSZWRpbyAoT3JvZGhhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ01hcGl0aW8geWEgdGFrd2ltdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdNYWVsZXpvIHlhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnVXRhbmd1bGl6aSB3YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnTmRpby9IYXBhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICdOZGlvSGFwYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnWWFsaXlvamliaXdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ1lhc2l5b2ppYml3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdNYWVsZXpvIHlhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1VtZWt3aXNoYWppYnUgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICdUYWZpdGkjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gSGFrdW5hIGZvbGVuaSBpbGl5b2NoYWd1bGl3YS0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnRnV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnSGFsaSBtcHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdBaW5hIHlhIHN3YWxpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdUZW5nZW5lemEgdGFmaXRpIG1weWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnVXRhbmd1bGl6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ01hZWxlem8geWEgbmRhbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdIYXJpcmkgdGFhcmlmYSB6YSB1anVtbGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdIYXJpcmkgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnTWFzd2FsaSB5YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnT25nZXphIHN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnQ2hhcGEgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnSmlidSBsaW5haGl0YWppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdIYWt1bmEgbWFzd2FsaSB5YWxpeW8gaGlmYWRoaXdhIGt3YSBoaWkgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnU3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnSmlidSBsaW5haGl0YWppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnSmUgdW5hdGFrYSBrdWZ1dGEgaGlsaSBzd2FsaT8gRGF0YSB6b3RlIHppdGEgUE9URUEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdIYXJpcmkgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdydWRpIGt3ZW55ZSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01hamlidSB5YXdlemVrYW5hIGt3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnT25nZXphIGppYnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdIYWt1bmEgbWFqaWJ1IHlhbGl5b2hpZmFkaGl3YSBrd2EgaGlsaSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0plIHVuYXRha2Ega3VmdXRhIGhpbGkgamlidT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0hpbGkgaGFsaW5hIG1hamlidSBtZW5naSwgc2VoZW11IHlhIG5ha2FsYSBpdGFvbnllc2h3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdIYXJpcmkgamlidSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdSdWRpIG55dW1hIGt1aGFyaXJpIHN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTXR1bWFqaSB0YWFyaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnU29tbyBsYSB0YWFmaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnS2lpbmkgY2hhIHRhYXJpZmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0ltZWJhZGlsaXNod2EgbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnTWFwaXRpbyB5YSB0YWt3aW11IHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnSmVkd2FsaSBsYSBtYW9tYmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnTXVkYSB3YSBrdXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnTXVkYSB3YSBrdXBpZ2Ega3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ09uYSBtYWVsZXpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdNYWVsZXpvIHlhIHRha3dpbXUgemEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSdWRpIG55dW1hIGt3ZW55ZSBtYXBpdGlvIHlhIHRha3dpbXUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnVGFhcmlmYSB6YSB0YWt3aW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdNYW9tYmkgeWFsaXlvdHVtd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1RhZml0aSB6aWxpem9wb2tlbGV3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ01hZWxlem8geWEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ0h1ZHVtYSB6YSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFmdSB5YSBtYXRva2VvIHlhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnSGFrdW5hIG1hdG9rZW8geWEgdGFrd2ltdSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdUYWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdUYWZhZGhhbGkgamlidSBoYXlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnT255ZXNoYSBtYWppYnUgeWFuZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0hheWEgbmkgbWFqaWJ1IHlha28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnS2ljaHdhIGNoYSBoYWJhcmkgY2hhIHV0YWZpdGknOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHVsaSB5YSBrdWhhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0YSB6b3RlIHphIHZpdHUgdnlhIHNhdmVpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdJZGFkaSB5YSBzaWt1IGJhYWRhIHlhIGt1dHVtYSBiYXJ1YSBwZXBlIHlhIHRhZml0aSBhbWJhcG8gaGFrdW5hIG1hb21iaSBtYXB5YSB5YSB0YWZpdGkga3V0dW13YSBrd2EgbXRlamEgaHV5by4gS3VjaGFndWEgMCBkYWltYSBrdXRhdHVtYSBiYXJ1YSBwZXBlIHlhIHNhdmVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEga2lpbmkgY2hhIGJhcnVhIHBlcGUgeWEgdGFhcmlmYSBrd2Egd2F0ZWphIGt1aHVzdSBzYXZlaSBtcHlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgbXR1bWFqaSB3YSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3VodXN1IHNhdmVpIG1weWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgc29tbyBsYSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3dhIHdhdGVqYSBrdWh1c3Ugc2F2ZWkgbXB5YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtYXBpdGlvIHlhIG1vZHVsaSBrdW9ueWVzaGEgbXVvbmVrYW5vIG1kb2dvIHdhIG9yb2RoYSB5YSBzYXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lrb21vIGNoYSBqdXUgY2hhIGlkYWRpIHlhIHNhdmVpIHppbmF6b3R1bXdhIGt3YSBtdGVqYSBrd2Egc2lrdSAzMC4gKDAgaW5hbWFhbmlzaGEgaGFrdW5hIGtpa29tbywgc2F2ZWkgem90ZSB6aXRhdHVtd2EpLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgaWRhZGkgeWEgbWFzYWEgdGlrZXRpIGt1ZnVuZ3dhIGlsaSBrdXdlemVzaGEga3V0dW13YSBrd2EgdXRhZml0aSwgKCAwIGluYW1hYW5pc2hhIHR1bWEgbWFyYSB0dSBiYWFkYSB5YSBrdWZ1bmdhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBjaGFndW8tbXNpbmdpIGxhIHVyZWZ1IHdhIG11b25la2FubyB3YSBSaWNodGV4dCBrd2EgZWxlbWVudGkgemEgVXRhZml0aUt1endhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzYWZ1IGlsaXlvb255ZXNod2Ega3dlbnllIG1hcGl0aW8geWEgdXRhZml0aS4gSGlsaSBjaGFndW8gaGFsaW5hIGF0aGFyaSBrd2EgbmFmYXNpIHlhIHNhZnUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSGFyaXJpciB0YWFyaWZhIHphIHVqdW1sYSB6YSBzYXZlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBRdWVzdGlvbnMnfSA9ICdIYXJpcmkgbWFzd2FsaSB5YSBzYXZlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdXZXplc2hhIGF1IFVzaXdlemVzaGUgc2tyaW5pIHlhIE9uZXNoYUt1cmFEYXRhIGt3YSBraW9sZXN1cmEgY2hhIHVtbWEgaWxpIGt1b255ZXNoYSBkYXRhIHphIHV0YWZpdGkgZnVsYW5pIG1hYWx1bXUgcGFsZSBtdGVqYSBhbmFwb2phcmlidSBrdWppYnUgdXRhZml0aSBrd2EgbWFyYSB5YSBwaWxpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ1dlemVzaGEgYXUgVXNpd2V6ZXNoZSBrdWNoYWd1YSBoYWxpIHlhIGt1dHVtYSBrd2EgaGlpIGh1ZHVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdXZXplc2hhIGF1IFVzaXdlemVzaGUga3VjaGFndWEgaGFsaSB5YSBrdXR1bWEga3dhIGFpbmEgeWEgdGlrZXRpLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIGlsaSBrdW9uZ2V6YSAgdXRhZml0aSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bGkgeWEgRnJvbnRlbmQgeWEga3VzYWppbGkgaWxpIGt1aGFyaXJpIHV0YWZpdGkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBGcm9udGVuZCB5YSBrdXNhamlsaSB0YWt3aW11IHphIHV0YWZpdGkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIHV0YWZpdGkga3V6YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdNb2R1bGkgeWEgRnJvbnRlbmQgeWEga3VzYWppbGkga3dhIGFqaWxpIHlhIFV0YWZpdGlVbW1hIGthdGlrYSBlbmVvIGxhIHV0YWZpdGkgd2EgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0thbWEgaGlpIHJlZ2V4IGluYWZhbmFuYSwgdXRhZml0aSB3YSBtdGVqYSBoYXV0YXR1bXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRhIGt3YSBhamlsaSB5YSBrdXJhc2EgKGFtYmF6byBuZGFuaSB5YWtlIHV0YWZpdGkgdW1lb255ZXNod2EpIHphIG1hcGl0aW8geWEgdXRhZml0aSBtZG9nby4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnU2F2ZWkgeWEgdW1tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1aGFyaXJpIHV0YWZpdGkga2F0aWthIG11b25la2FubyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGlsaSBrdWhhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGkga2F0aWthIG11b25la2FubyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1cnVkaSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1a3V6YSBtYWVsZXpvIHlhIHRha3dpbXUgemEgdXRhZml0aSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNb2R1bGkgeWEga3VoYXJpcmkgc2F2ZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTWFwaXRpbyB5YSBzYXZlaSBraWtvbW8gImNoYSBjaGluaSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bGkgeWEgdGFrd2ltdSB6YSBzYXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsaSB5YSBrdWt1emEgc2F2ZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0tpa29tbyBjaGEgc2F2ZWkga3dhIGt1cmFzYSBrd2EgYWppbGkgeWEgbWFwaXRpbyB5YSBzYXZlaSAiTmRvZ28iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnU2F2ZWkgaGF6aXRhdHVtd2Ega3dhIGJhcnVhIHBlcGUgemlsaXpvd2Vrd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdLaXRhbWJ1bGlzaG8gY2hhIHV0YWZpdGksIG1mLiBVdGFmaXRpIywgVXRhZml0aSB3YW5ndSMuIENoYWd1by1tc2luZ2kgbmkgVXRhZml0aSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTW9kdWxpIHlhIHR1a2lvIGxhIHRpa2V0aSBrd2EgYWppbGkgeWEga3V0dW1hIGJhcnVhIHBlcGUgemEgbWFvbWJpIHlhIHRhZml0aSBtb2phIGt3YSBtb2phIGt3YSB3YXRlamEga2FtYSB0aWtldGkgaW1lZnVuZ3dhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW50byBTdGF0aXN0aWNzIERldGFpbHMnfSA9ICdLdXphIG1hZWxlem8geWEgdGFrd2ltdSc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dmlfVk5fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gxJDhu5VpIHRy4bqhbmcgdGjDoWkgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1Row6ptIGto4bqjbyBzw6F0IG3hu5tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnU+G7rWEgYuG6o24ga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnU+G7rWEgY8OidSBo4buPaSBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnU+G7rWEgY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ1Phu61hIMSRw6FwIMOhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ0tow7RuZyB0aOG7gyDEkeG6t3QgdHLhuqFuZyB0aMOhaSBt4bubaSEgS2jDtG5nIGPDsyBjw6J1IGjhu49pIG7DoG8gxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1Ry4bqhbmcgdGjDoWkgxJHDoyDEkeG7lWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdD4bqjbSDGoW4gYuG6oW4gxJHDoyBwaOG6o24gaOG7k2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnS2jhuqNvIHPDoXQgxJHDoyBr4bq/dCB0aMO6Yy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdIb8OgbiB04bqldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnQ2jGsGEgaG/DoG4gdOG6pXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnSOG7mXAga2nhu4NtIChkYW5oIHPDoWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyd9ID0gJ0jhu5lwIGNo4buNbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdI4buZcCBjaOG7jW4gKGRhbmggc8OhY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnVGjhu5FuZyBrw6ogdOG7lW5nIHF1w6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ03DtCB04bqjIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdHaeG7m2kgdGhp4buHdSBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdDw7MvS2jDtG5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnQ8OzS2jDtG5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnxJHDoyB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdjaMawYSB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdUaOG7kW5nIGvDqiBjaGkgdGnhur90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdUaOG7kW5nIGvDqiBjaGkgdGnhur90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdC4bqhbiDEkcOjIHRoYW0gZ2lhIHRy4bqjIGzhu51pIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkjJ30gPSAnS2jhuqNvIHPDoXQjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gQ2jGsGEgY2jhu41uIGjDoG5nIMSR4bujaSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ0Now61uaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnVHLhuqFuZyB0aMOhaSBt4bubaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnTG/huqFpIGPDonUgaOG7j2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1ThuqFvIGto4bqjbyBzw6F0IG3hu5tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0dp4bubaSB0aGnhu4d1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnTcO0IHThuqMgbuG7mWkgYuG7mSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ1Phu61hIHRow7RuZyB0aW4gY2h1bmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdT4butYSBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdDw6J1IGjhu49pIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ1Row6ptIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdOaOG6rXAgY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdZw6p1IGPhuqd1IHBo4bqjaSB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0tow7RuZyBjw7MgY8OidSBo4buPaSBuw6BvIMSRxrDhu6NjIGzGsHUgY2hvIGto4bqjbyBzw6F0IG7DoHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnQ8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdZw6p1IGPhuqd1IHBo4bqjaSB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdC4bqhbiBjw7MgdGjhuq10IHPhu7EgbXXhu5FuIHhvw6EgY8OidSBo4buPaSBuw6B5PyBU4bqkVCBD4bqiIGPDoWMgZOG7ryBsaeG7h3UgbGnDqm4gcXVhbiBz4bq9IGLhu4sgTeG6pFQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdT4butYSBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAncXVheSBs4bqhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICfEkMOhcCDDoW4gY8OzIHRo4buDIGNobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnVGjDqm0gxJHDoXAgw6FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnS2jDtG5nIGPDsyDEkcOhcCDDoW4gbsOgbyDEkcaw4bujYyBsxrB1IGNobyBjw6J1IGjhu49pIG7DoHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQuG6oW4gY8OzIHRo4bqtdCBz4buxIG114buRbiB4b8OhIMSRw6FwIMOhbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0PDonUgaOG7j2kgbsOgeSBraMO0bmcgY8OzIMSRw6FwIMOhbiwgbeG7mXQga2h1bmcgc2/huqFuIHRo4bqjbyBz4bq9IMSRxrDhu6NjIGhp4buDbiB0aOG7iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdT4butYSDEkcOhcCDDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAncXVheSB24buBIHPhu61hIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdOZ8aw4budaSBn4butaSB0aMO0bmcgYsOhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0No4bunIMSR4buBIHRow7RuZyBiw6FvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnTuG7mWkgZHVuZyB0aMO0bmcgYsOhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnVGhheSDEkeG7lWkgYuG7n2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVGjhu5FuZyBrw6ogdOG7lW5nIHF1w6F0IGPhu6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnQuG6o25nIHnDqnUgY+G6p3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVGjhu51pIGdpYW4gZ+G7rWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnVGjhu51pIGdpYW4gYsOsbmggY2jhu41uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnWGVtIGNoaSB0aeG6v3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0NoaSB0aeG6v3QgdGjhu5FuZyBrw6oga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ3F1YXkgbOG6oWkgdGjhu5FuZyBrw6ogdOG7lW5nIHF1w6F0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ1Row7RuZyB0aW4ga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0fhu61pIHnDqnUgY+G6p3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ05o4bqtbiBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0NoaSB0aeG6v3Qga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnROG7i2NoIHbhu6UgcGhp4bq/dSB5w6p1IGPhuqd1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnxJDhu5MgdGjDrCBr4bq/dCBxdeG6oyBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnS2jDtG5nIGPDsyBr4bq/dCBx4bunYSB0aOG7kW5nIGvDqi4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnS2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdYaW4gdnVpIGzDsm5nIHRy4bqjIGzhu51pIG5o4buvbmcgY8OidSBo4buPaSBuw6B5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ0NobyB0w7RpIHhlbSDEkcOhcCDDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ8SQw6J5IGzDoCDEkcOhcCDDoW4gY+G7p2EgYuG6oW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVGnDqnUgxJHhu4Ega2jhuqNvIHPDoXQnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTeG7mXQgbcO0LcSRdW4ga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ03hu5l0IG3DtC3EkXVuIMSR4buDIHPhu61hIGPDonUgaOG7j2kga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdU4bqldCBj4bqjIGPDoWMgdGhhbSBz4buRIGNobyDEkeG7kWkgdMaw4bujbmcga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnU+G7kSBuZ8OgeSBzYXUga2hpIGfhu61pIGVtYWlsIGto4bqjbyBzw6F0IG3DoCB0cm9uZyBsw7pjIMSRw7Mgc+G6vSBraMO0bmcgY8OzIHnDqnUgY+G6p3Uga2jhuqNvIHPDoXQgbsOgbyDEkcaw4bujYyBn4butaSDEkeG6v24gY8O5bmcga2jDoWNoIGjDoG5nIMSRw7MuIE5o4bqtcCAwIHPhur0gbHXDtG4gZ+G7rWkgZW1haWwga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ07hu5lpIGR1bmcgbmfhuqdtIMSR4buLbmggY2hvIGVtYWlsIHRow7RuZyBiw6FvIHThu5tpIGtow6FjaCBow6BuZyB24buBIGto4bqjbyBzw6F0IG3hu5tpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ05nxrDhu51pIGfhu61pIG5n4bqnbSDEkeG7i25oIGNobyBlbWFpbCB0aMO0bmcgYsOhbyB04bubaSBraMOhY2ggaMOgbmcgduG7gSBraOG6o28gc8OhdCBt4bubaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ2jhu6cgxJHhu4EgbmfhuqdtIMSR4buLbmggY2hvIGVtYWlsIHRow7RuZyBiw6FvIHThu5tpIGtow6FjaCBow6BuZyB24buBIGto4bqjbyBzw6F0IG3hu5tpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfEkOG7i25oIG5naMSpYSBt4buZdCBtw7QtxJF1biB04buVbmcgcXXDoXQgxJHhu4MgaGnhu4NuIHRo4buLIG3hu5l0IGRhbmggc8OhY2gga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICfEkOG7i25oIG5naMSpYSBz4buRIGto4bqjbyBzw6F0IHThu5FpIMSRYSBtw6AgxJHGsOG7o2MgZ+G7rWkgxJHhur9uIGtow6FjaCBow6BuZyBt4buXaSB0aMOhbmcuICgwIG5naMSpYSBsw6Aga2jDtG5nIGdp4bubaSBo4bqhbiwgdOG6pXQgY+G6oyB5w6p1IGPhuqd1IGto4bqjbyBzw6F0IHPhur0gxJHGsOG7o2MgZ+G7rWkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgc+G7kSBnaeG7nSBt4buZdCBwaGnhur91IHnDqnUgY+G6p3UgcGjhuqNpIMSRxrDhu6NjIMSRw7NuZyDEkeG7gyBrw61jaCBob+G6oXQgdmnhu4djIGfhu61pIGto4bqjbyBzw6F0LCAoMCBuZ2jEqWEgbMOgIGfhu61pIG5nYXkgbOG6rXAgdOG7qWMgc2F1IGtoaSDEkcOzbmcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICfEkOG7i25oIG5naMSpYSBjaGnhu4F1IGNhbyBuZ+G6p20gxJHhu4tuaCBj4bunYSBraHVuZyBSaWNodGV4dCBjaG8gxJHhu5FpIHTGsOG7o25nIHhlbSBraOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ8SQ4buLbmggbmdoxKlhIHPhu5EgY+G7mXQgaGnhu4NuIHRo4buLIHRyb25nIG3DoG4gaMOsbmggdOG7lW5nIHF1w6F0LiBUdeG7syBjaOG7jW4gbsOgeSBraMO0bmcg4bqjbmggaMaw4bufbmcgxJHhur9uIHbhu4sgdHLDrSBj4bunYSBj4buZdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1Phu61hIHRow7RuZyB0aW4ga2jhuqNvIHPDoXQgY2h1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnU+G7rWEgY8OidSBo4buPaSBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdLw61jaCBob+G6oXQgaG/hurdjIGdp4bqjaSBob+G6oXQgbcOgbiBow6xuaCBTaG93Vm90ZURhdGEgdHJvbmcgZ2lhbyBkaeG7h24gY8O0bmcgY+G7mW5nIMSR4buDIGhp4buDbiB0aOG7iyBk4buvIGxp4buHdSBj4bunYSBt4buZdCBr4bq/dCBxdeG6oyBraOG6o28gc8OhdCBraGkga2jDoWNoIGjDoG5nIGPhu5EgdGjhu60gdHLhuqMgbOG7nWkgbeG7mXQgYuG6o24ga2jhuqNvIHPDoXQgaGFpIGzhuqduLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0vDrWNoIGhv4bqhdCBob+G6t2MgZ2nhuqNpIGhv4bqhdCBn4butaSBraeG7g20gdHJhIMSRaeG7gXUga2nhu4duIGNobyBk4buLY2ggduG7pS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdLw61jaCBob+G6oXQgaG/hurdjIGdp4bqjaSBob+G6oXQgZ+G7rWkga2nhu4NtIHRyYSDEkWnhu4F1IGtp4buHbiBjaG8gbG/huqFpIHBoaeG6v3UgecOqdSBj4bqndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biB0aMOqbSBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biBz4butYSBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4gdGjhu5FuZyBrw6oga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4geGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4gY2hvIMSR4buRaSB0xrDhu6NuZyBraOG6o28gc8OhdCBjw7RuZyBj4buZbmcgdHJvbmcgZ2lhbyBkaeG7h24ga2jhuqNvIHPDoXQgY8O0bmcgY+G7mW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnTuG6v3UgxJFp4buBdSBraeG7h24gdMOsbSBwaMO5IGjhu6NwLCBraMO0bmcgY8OzIGto4bqjbyBzw6F0IGtow6FjaCBow6BuZyBuw6BvIMSRxrDhu6NjIGfhu61pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1RoYW0gc+G7kSBjaG8gdHJhbmcgKG3DoCBoaeG7g24gdGjhu4sga2jhuqNvIHPDoXQpIGPhu6dhIGRhbmggc8OhY2gga2jhuqNvIHPDoXQgdOG7lW5nIHF1w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0to4bqjbyBzw6F0IGPDtG5nIGPhu5luZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4MgcXVheSBs4bqhaSB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyB4ZW0gdGjhu5FuZyBrw6ogY2hpIHRp4bq/dCBj4bunYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTcO0LcSRdW4gc+G7rWEga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnR2nhu5tpIGjhuqFuIGRhbmggc8OhY2gga2jhuqNvIHPDoXQgdOG7lW5nIHF1w6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcO0LcSRdW4gdGjhu5FuZyBrw6oga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNw7QtxJF1biB4ZW0ga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdHaeG7m2kgaOG6oW4gc+G7kSBraOG6o28gc8OhdCB0cm9uZyBt4buZdCB0cmFuZyBjaG8gZGFuaCBzw6FjaCBraOG6o28gc8OhdCB04buVbmcgcXXDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnS2jhuqNvIHPDoXQgc+G6vSBraMO0bmcgxJHGsOG7o2MgZ+G7rWkgxJHhur9uIMSR4buLYSBjaOG7iSBlbWFpbCDEkcOjIHRoaeG6v3QgbOG6rXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfEkOG7i25oIGRhbmggY2hvIGto4bqjbyBzw6F0LCB2w60gZOG7pTogS2jhuqNvIHPDoXQjLCBLaOG6o28gc8OhdCBj4bunYSB0w7RpIy4gTmfhuqdtIMSR4buLbmggbMOgIEto4bqjbyBzw6F0Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNw7QtxJF1biBi4bqvdCBz4buxIGtp4buHbiBj4bunYSBwaGnhur91IHnDqnUgY+G6p3UgxJHhu4MgZ+G7rWkgZW1haWwgecOqdSBj4bqndSB04buxIMSR4buZbmcgxJHhur9uIGtow6FjaCBow6BuZyBu4bq/dSBwaGnhur91IHnDqnUgY+G6p3UgxJHGsOG7o2MgxJHDs25nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW50byBTdGF0aXN0aWNzIERldGFpbHMnfSA9ICdYZW0gdGjhu5FuZyBrw6ogY2hpIHRp4bq/dCc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfVFdfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g5pu05pS554uA5oWLIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICflibXlu7rmlrDnmoToqr/mn6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfnt6jovK/oqr/mn6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn57eo6Lyv6Kq/5p+l5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfnt6jovK/lm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfnhKHms5XoqK3nva7mlrDnmoTni4DmhYvvvIHpgoTmnKrlrprnvqnllY/poYzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn54uA5oWL5bey5pu05pS544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfmhJ/orJ3kvaDnmoTlj43ppYvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfoqr/mn6XntZDmnZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICflrozmlbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ+S4jeWujOaVtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICfopIfpgbjmoYbvvIjliJfooajvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICfllq7pgbgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn5Zau6YG477yI5YiX6KGo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn57Wx6KiI5qaC5rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ+iqv+afpeaPj+i/sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn6Kq/5p+l5LuL57S5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ+aYry/lkKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICfmmK/lkKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICflt7Llm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn5pyq5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ+e1seioiOips+aDhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfkvaDlt7LntpPlm57nrZTkuoboqr/mn6XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ+iqv+afpSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+WJteW7uuaWsOeahOiqv+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfku4vntLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jmj4/ov7AnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfnt6jovK/kuIDoiKzkv6Hmga8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+iqv+afpeWVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfmt7vliqDllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfllY/poYzpoZ7lnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn6ZyA6KaB5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn6YCZ5YCL6Kq/5p+l5rKh5pyJ5L+d5a2Y55qE5ZWP6aGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+W/hemgiOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ+e3qOi8r+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ+i/lOWbnuWVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICflj6/pgbjnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ+a3u+WKoOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn57eo6Lyv5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ+i/lOWbnuWIsOe3qOi8r+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ+mAmuefpeeZvOmAgeiAhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ+mAmuefpeS4u+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeato+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn5L+u5pS55Lq6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ+e1seioiOamguazgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ+iri+axguihqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICfnmbzpgIHmmYLplpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn5oqV56Wo5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfoqr/mn6XntbHoqIjoqbPmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ+i/lOWbnue1seioiOamguazgSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfoqr/mn6Xkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ+W3sueZvOmAgeeahOiri+axgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn5bey5o6l5pS255qE6Kq/5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn6Kq/5p+l6Kmz5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ+iqv+afpee1kOaenOWclic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn5rKS5pyJ57Wx6KiI57WQ5p6c44CCJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ+iqv+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ+iri+WbnuetlOmAmeS6m+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfpoa/npLrmiJHnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ+mAmeS6m+aYr+S9oOeahOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfoqr/mn6XmqJnpoYwnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsIFVtZnJhZ2UtRGV0YWlsYW5zaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfQ05fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g5pu05pS554q25oCBIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICfliJvlu7rmlrDnmoTosIPmn6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfnvJbovpHosIPmn6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn57yW6L6R6LCD5p+l6Zeu6aKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfnvJbovpHpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfnvJbovpHlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfml6Dms5Xorr7nva7mlrDnmoTnirbmgIHvvIHov5jmnKrlrprkuYnpl67popjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn54q25oCB5bey5pu05pS544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfmhJ/osKLkvaDnmoTlj43ppojjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfosIPmn6Xnu5PmnZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICflrozmlbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ+S4jeWujOaVtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICflpI3pgInmoYbvvIjliJfooajvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICfljZXpgIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn5Y2V6YCJ77yI5YiX6KGo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn57uf6K6h5qaC5Ya1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ+iwg+afpeaPj+i/sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn6LCD5p+l5LuL57uNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ+aYry/lkKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICfmmK/lkKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICflt7Llm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn5pyq5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ+e7n+iuoeivpuaDhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfkvaDlt7Lnu4/lm57nrZTkuobosIPmn6XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5Iyd9ID0gJ+iwg+afpSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+WIm+W7uuaWsOeahOiwg+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfku4vnu40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jmj4/ov7AnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfnvJbovpHkuIDoiKzkv6Hmga8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfnvJbovpHpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+iwg+afpemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfmt7vliqDpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfpl67popjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn6ZyA6KaB5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn6L+Z5Liq6LCD5p+l5rKh5pyJ5L+d5a2Y55qE6Zeu6aKY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn6Zeu6aKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ+e8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ+i/lOWbnumXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICflj6/pgInnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ+a3u+WKoOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn57yW6L6R5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ+i/lOWbnuWIsOe8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ+mAmuefpeWPkemAgeiAhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ+mAmuefpeS4u+mimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeato+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn5L+u5pS55Lq6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ+e7n+iuoeamguWGtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ+ivt+axguihqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICflj5HpgIHml7bpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn5oqV56Wo5pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfosIPmn6Xnu5/orqHor6bmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ+i/lOWbnue7n+iuoeamguWGtSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfosIPmn6Xkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ+W3seWPkemAgeeahOivt+axgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn5bey5o6l5pS255qE6LCD5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn6LCD5p+l6K+m5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ+iwg+afpee7k+aenOWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn5rKh5pyJ57uf6K6h57uT5p6c44CCJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ+iwg+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ+ivt+WbnuetlOi/meS6m+mXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfmmL7npLrmiJHnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ+i/meS6m+aYr+S9oOeahOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfosIPmn6XmoIfpopgnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFN1cnZleSBHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsIFVtZnJhZ2UtRGV0YWlsYW5zaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEludG8gU3RhdGlzdGljcyBEZXRhaWxzJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3VydmV5IGFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPl9TdXJ2ZXlBZGRNYXNrKCk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgbmV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3VydmV5TmV3JyApIHsKCiAgICAgICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICAgICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkU3VydmV5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiU3VydmV5SUQiICk7CgogICAgICAgICMgZ2V0IHJlcXVpcmVkIGZvcm0gZWxlbWVudHMgYW5kIGVycm9ycwogICAgICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgICAgICBteSAlRm9ybUVsZW1lbnRzOwogICAgICAgIGZvciBteSAkSXRlbSAoCiAgICAgICAgICAgIHF3KCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JtRWxlbWVudHN7JEl0ZW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIiRJdGVtIiApOwoKICAgICAgICAgICAgaWYgKCAhJEZvcm1FbGVtZW50c3skSXRlbX0gKSB7CiAgICAgICAgICAgICAgICAkU2VydmVyRXJyb3J7ICIkSXRlbSIgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICBmb3IgbXkgJEl0ZW0gKHF3KFF1ZXVlcyBUaWNrZXRUeXBlSURzIFNlcnZpY2VJRHMpKSB7CiAgICAgICAgICAgIEB7ICRGb3JtRWxlbWVudHN7JEl0ZW19IH0gPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkSXRlbSApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gICAgID0gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259IjsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSA9ICJcJGh0bWwvdGV4dFwkICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0iOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSAgICAgID0gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0iOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGlmIG5vIGVycm9ycwogICAgICAgIGlmICggISVTZXJ2ZXJFcnJvciApIHsKICAgICAgICAgICAgbXkgJFN1cnZleUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgICAgICAlRm9ybUVsZW1lbnRzLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVsb2FkIGZvcm0gaWYgZXJyb3IKICAgICAgICByZXR1cm4gJFNlbGYtPl9TdXJ2ZXlBZGRNYXNrKAogICAgICAgICAgICBGb3JtRWxlbWVudHMgPT4gXCVGb3JtRWxlbWVudHMsCiAgICAgICAgICAgIFNlcnZlckVycm9yICA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9Cn0KCnN1YiBfU3VydmV5QWRkTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAlU2VydmVyRXJyb3IgPSAleyAkUGFyYW17U2VydmVyRXJyb3J9IH07CiAgICB9CgogICAgbXkgJUZvcm1FbGVtZW50czsKICAgIGlmICggJFBhcmFte0Zvcm1FbGVtZW50c30gKSB7CiAgICAgICAgJUZvcm1FbGVtZW50cyA9ICV7ICRQYXJhbXtGb3JtRWxlbWVudHN9IH07CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFRpdGxlID0+ICdBZGQgTmV3IFN1cnZleScsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgIG15ICVRdWV1ZXMgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoKTsKICAgIG15ICRRdWV1ZVN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXVlcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1F1ZXVlcycsCiAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7UXVldWVzfSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgaWYgdGhlIGZvciBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCB0aWNrZXQgdHlwZSBsaXN0CiAgICAgICAgbXkgJVRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIHRpY2tldCB0eXBlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICglVGlja2V0VHlwZXMpIHsKCiAgICAgICAgICAgICMgYnVpbGQgdGlja2V0IHR5cGUgc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRUaWNrZXRUeXBlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlVGlja2V0VHlwZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpY2tldFR5cGVJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1RpY2tldFR5cGVJRHN9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRUeXBlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUaWNrZXRUeXBlU3RyZyA9PiAkVGlja2V0VHlwZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIHNlcnZpY2UgbGlzdAogICAgICAgIG15ICVTZXJ2aWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBzZXJ2aWNlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICglU2VydmljZXMpIHsKCiAgICAgICAgICAgICMgYnVpbGQgc2VydmljZSBzZWxlY3Rpb24KICAgICAgICAgICAgbXkgJFNlcnZpY2VTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVTZXJ2aWNlcywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VydmljZUlEcycsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNiwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7U2VydmljZUlEc30sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFNlcnZpY2VzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VTdHJnID0+ICRTZXJ2aWNlU3RyZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcmljaCB0ZXh0IGVsZW1lbnRzCiAgICBteSAlU3VydmV5RWxlbWVudHM7CgogICAgJFN1cnZleUVsZW1lbnRze0ludHJvZHVjdGlvbn0gPSAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gfHwKICAgICAgICAkUGFyYW17SW50cm9kdWN0aW9ufTsKCiAgICAkU3VydmV5RWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gPSAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9IHx8CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9IHx8CiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvbkJvZHknKTsKCiAgICAkU3VydmV5RWxlbWVudHN7RGVzY3JpcHRpb259ID0gJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0gfHwKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb259IHx8CiAgICAgICAgJyc7CgogICAgIyBsb2FkIHJpY2ggdGV4dCBlZGl0b3IKICAgIG15ICRSaWNoVGV4dEVkaXRvciA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0Jyk7CiAgICBpZiAoJFJpY2hUZXh0RWRpdG9yKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JpY2hUZXh0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgICMgY29udmVydCByZXF1aXJlZCBlbGVtZW50cyB0byBSVEUKICAgIEZJRUxEOgogICAgZm9yIG15ICRTdXJ2ZXlGaWVsZCAoIHNvcnQga2V5cyAlU3VydmV5RWxlbWVudHMgKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH07CgogICAgICAgICMgY2xlYW4gSFRNTAogICAgICAgIG15ICRIVE1MQ29udGVudCA9ICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICBpZiAoICEkSFRNTENvbnRlbnQgJiYgJFJpY2hUZXh0RWRpdG9yICkgewogICAgICAgICAgICAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEhUTUxDb250ZW50ICYmICEkUmljaFRleHRFZGl0b3IgKSB7CiAgICAgICAgICAgICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdJbnRyb2R1Y3Rpb24nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gPT4gJFN1cnZleUVsZW1lbnRze0ludHJvZHVjdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTm90aWZpY2F0aW9uQm9keScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgPT4gJFN1cnZleUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9LAogICAgICAgIH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ludGVybmFsRGVzY3JpcHRpb24nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAkU3VydmV5RWxlbWVudHN7RGVzY3JpcHRpb259LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2VuZXJhdGVzIGdlbmVyaWMgZXJyb3JzIGZvciBKYXZhU2NyaXB0CiAgICBmb3IgbXkgJE5lZWRlZEl0ZW0gKAogICAgICAgIHF3KCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSApCiAgICAgICAgKQogICAgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljRXJyb3InLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1OYW1lID0+ICROZWVkZWRJdGVtIC4gJ0Vycm9yJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGZvciBteSAkSXRlbSAoIHNvcnQga2V5cyAlU2VydmVyRXJyb3IgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyaWNTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbU5hbWUgPT4gJEl0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5QWRkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFF1ZXVlU3RyaW5nICAgICAgICA9PiAkUXVldWVTdHJpbmcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciA9PiAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9CiAgICAgICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyJyksCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25TdWJqZWN0fQogICAgICAgICAgICAgICAgfHwgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9CiAgICAgICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU3ViamVjdCcpLAogICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgICAgICVGb3JtRWxlbWVudHMsCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleUVkaXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRTdXJ2ZXlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlJRCIgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN1cnZleSBlZGl0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgICAgIG15ICRTdXJ2ZXlFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1N1cnZleScKICAgICAgICApOwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCApOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9TdXJ2ZXlFZGl0TWFzaygKICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICApOwoKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN1cnZleSBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3VydmV5U2F2ZScgKSB7CgogICAgICAgIGlmICggISRTdXJ2ZXlJRCApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIFN1cnZleUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW4uJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHJlcXVpcmVkIGZvcm0gZWxlbWVudHMgYW5kIGVycm9ycwogICAgICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgICAgICBteSAlRm9ybUVsZW1lbnRzOwogICAgICAgIGZvciBteSAkSXRlbSAoCiAgICAgICAgICAgIHF3KCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JtRWxlbWVudHN7JEl0ZW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIiRJdGVtIiApOwoKICAgICAgICAgICAgaWYgKCAhJEZvcm1FbGVtZW50c3skSXRlbX0gKSB7CiAgICAgICAgICAgICAgICAkU2VydmVyRXJyb3J7ICIkSXRlbSIgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICBmb3IgbXkgJEl0ZW0gKHF3KFF1ZXVlcyBUaWNrZXRUeXBlSURzIFNlcnZpY2VJRHMpKSB7CiAgICAgICAgICAgIEB7ICRGb3JtRWxlbWVudHN7JEl0ZW19IH0gPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkSXRlbSApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gPSAoIGxlbmd0aCAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gKQogICAgICAgICAgICAgICAgPyAiXCRodG1sL3RleHRcJCAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0iCiAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9ID0gKCBsZW5ndGggJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSApCiAgICAgICAgICAgICAgICA/ICJcJGh0bWwvdGV4dFwkICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0iCiAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSA9ICggbGVuZ3RoICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259ICkKICAgICAgICAgICAgICAgID8gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0iCiAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGlmIG5vIGVycm9ycwogICAgICAgIGlmICggISVTZXJ2ZXJFcnJvciApIHsKICAgICAgICAgICAgbXkgJFNhdmVSZXN1bHQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlVcGRhdGUoCiAgICAgICAgICAgICAgICAlRm9ybUVsZW1lbnRzLAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgICAgICBVUkwgPT4gIkFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEOyIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgIyByZWxvYWQgZm9ybSBpZiBlcnJvcgogICAgICAgIHJldHVybiAkU2VsZi0+X1N1cnZleUVkaXRNYXNrKAogICAgICAgICAgICBGb3JtRWxlbWVudHMgPT4gXCVGb3JtRWxlbWVudHMsCiAgICAgICAgICAgIFNlcnZlckVycm9yICA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICAgICBTdXJ2ZXlJRCAgICAgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICB9Cn0KCnN1YiBfU3VydmV5RWRpdE1hc2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VydmVyRXJyb3I7CiAgICBpZiAoICRQYXJhbXtTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgJVNlcnZlckVycm9yID0gJXsgJFBhcmFte1NlcnZlckVycm9yfSB9OwogICAgfQoKICAgIG15ICVGb3JtRWxlbWVudHM7CiAgICBpZiAoICRQYXJhbXtGb3JtRWxlbWVudHN9ICkgewogICAgICAgICVGb3JtRWxlbWVudHMgPSAleyAkUGFyYW17Rm9ybUVsZW1lbnRzfSB9OwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgICAgPT4gJ1N1cnZleSBFZGl0JywKICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICk7CgogICAgbXkgJVF1ZXVlcyAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPkdldEFsbFF1ZXVlcygpOwogICAgbXkgJFF1ZXVlU3RyaW5nID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUXVldWVzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUXVldWVzJywKICAgICAgICBTaXplICAgICAgICAgPT4gNiwKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZvcm1FbGVtZW50c3tRdWV1ZXN9IHx8ICRQYXJhbXtRdWV1ZXN9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBjaGVjayBpZiB0aGUgZm9yIHNlbmQgY29uZGl0aW9uIHRpY2tldCB0eXBlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnKSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIHRpY2tldCB0eXBlIGxpc3QKICAgICAgICBteSAlVGlja2V0VHlwZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgpOwoKICAgICAgICAjIGNoZWNrIGlmIGEgdGlja2V0IHR5cGUgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCVUaWNrZXRUeXBlcykgewoKICAgICAgICAgICAgIyBidWlsZCB0aWNrZXQgdHlwZSBzZWxlY3Rpb24KICAgICAgICAgICAgbXkgJFRpY2tldFR5cGVTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUaWNrZXRUeXBlcywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGlja2V0VHlwZUlEcycsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNiwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7VGlja2V0VHlwZUlEc30gfHwgJFBhcmFte1RpY2tldFR5cGVJRHN9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRUeXBlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUaWNrZXRUeXBlU3RyZyA9PiAkVGlja2V0VHlwZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIHNlcnZpY2UgbGlzdAogICAgICAgIG15ICVTZXJ2aWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgc2VydmljZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoJVNlcnZpY2VzKSB7CgogICAgICAgICAgICAjIGJ1aWxkIHNlcnZpY2Ugc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRTZXJ2aWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlU2VydmljZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NlcnZpY2VJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1NlcnZpY2VJRHN9IHx8ICRQYXJhbXtTZXJ2aWNlSURzfSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0U2VydmljZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgU2VydmljZVN0cmcgPT4gJFNlcnZpY2VTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyByaWNoIHRleHQgZWxlbWVudHMKICAgIG15ICVTdXJ2ZXlFbGVtZW50czsKCiAgICAkU3VydmV5RWxlbWVudHN7SW50cm9kdWN0aW9ufSA9ICRGb3JtRWxlbWVudHN7SW50cm9kdWN0aW9ufSB8fCAkUGFyYW17SW50cm9kdWN0aW9ufTsKCiAgICAkU3VydmV5RWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0KICAgICAgICA9ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gfHwgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9IHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25Cb2R5Jyk7CgogICAgJFN1cnZleUVsZW1lbnRze0Rlc2NyaXB0aW9ufSA9ICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259IHx8ICRQYXJhbXtEZXNjcmlwdGlvbn0gfHwgJyc7CgogICAgIyBsb2FkIHJpY2ggdGV4dCBlZGl0b3IKICAgIG15ICRSaWNoVGV4dEVkaXRvciA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0Jyk7CiAgICBpZiAoJFJpY2hUZXh0RWRpdG9yKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1JpY2hUZXh0JyApOwogICAgfQoKICAgICMgY29udmVydCByZXF1aXJlZCBlbGVtZW50cyB0byBSVEUKICAgIEZJRUxEOgogICAgZm9yIG15ICRTdXJ2ZXlGaWVsZCAoIHNvcnQga2V5cyAlU3VydmV5RWxlbWVudHMgKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH07CgogICAgICAgICMgY2xlYW4gSFRNTAogICAgICAgIG15ICRIVE1MQ29udGVudCA9CiAgICAgICAgICAgICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICBpZiAoICEkSFRNTENvbnRlbnQgJiYgJFJpY2hUZXh0RWRpdG9yICkgewogICAgICAgICAgICAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEhUTUxDb250ZW50ICYmICEkUmljaFRleHRFZGl0b3IgKSB7CiAgICAgICAgICAgICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdJbnRyb2R1Y3Rpb24nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gPT4gJFN1cnZleUVsZW1lbnRze0ludHJvZHVjdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTm90aWZpY2F0aW9uQm9keScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgPT4gJFN1cnZleUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9LAogICAgICAgIH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ludGVybmFsRGVzY3JpcHRpb24nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAkU3VydmV5RWxlbWVudHN7RGVzY3JpcHRpb259LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2VuZXJhdGVzIGdlbmVyaWMgZXJyb3JzIGZvciBKYXZhU2NyaXB0CiAgICBmb3IgbXkgJE5lZWRlZEl0ZW0gKAogICAgICAgIHF3KCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSApCiAgICAgICAgKQogICAgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljRXJyb3InLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1OYW1lID0+ICROZWVkZWRJdGVtIC4gJ0Vycm9yJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGZvciBteSAkSXRlbSAoIHNvcnQga2V5cyAlU2VydmVyRXJyb3IgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyaWNTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbU5hbWUgPT4gJEl0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBRdWV1ZVN0cmluZyAgICAgICAgPT4gJFF1ZXVlU3RyaW5nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgPT4gJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25TZW5kZXJ9CiAgICAgICAgICAgICAgICB8fCAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfQogICAgICAgICAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblNlbmRlcicpLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uU3ViamVjdH0KICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fQogICAgICAgICAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblN1YmplY3QnKSwKICAgICAgICAgICAgJVNlcnZlckVycm9yLAogICAgICAgICAgICAlRm9ybUVsZW1lbnRzLAogICAgICAgIH0sCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJEtleSAocXcoU3VydmV5SUQgUXVlc3Rpb25JRCBBbnN3ZXJJRCkpIHsKICAgICAgICAkR2V0UGFyYW17JEtleX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CiAgICB9CgogICAgbXkgJFN1cnZleUV4aXN0cyA9ICdubyc7CiAgICBpZiAoICRHZXRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJFN1cnZleUV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1N1cnZleScKICAgICAgICApOwogICAgfQoKICAgIG15ICRRdWVzdGlvbkV4aXN0cyA9ICdubyc7CiAgICBpZiAoICRHZXRQYXJhbXtRdWVzdGlvbklEfSApIHsKICAgICAgICAkUXVlc3Rpb25FeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1F1ZXN0aW9uJwogICAgICAgICk7CiAgICB9CgogICAgbXkgJEFuc3dlckV4aXN0cyA9ICdubyc7CiAgICBpZiAoICRHZXRQYXJhbXtBbnN3ZXJJRH0gKSB7CiAgICAgICAgJEFuc3dlckV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ0Fuc3dlcicKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcXVlc3Rpb24gYWRkCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUXVlc3Rpb25BZGQnICkgewoKICAgICAgICBteSAkUXVlc3Rpb24gICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiUXVlc3Rpb24iICk7CiAgICAgICAgbXkgJFR5cGUgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlR5cGUiICk7CiAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Fuc3dlclJlcXVpcmVkJyApOwoKICAgICAgICBpZiAoICRBbnN3ZXJSZXF1aXJlZCAmJiAkQW5zd2VyUmVxdWlyZWQgZXEgJ05vJyApIHsKICAgICAgICAgICAgJEFuc3dlclJlcXVpcmVkID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRBbnN3ZXJSZXF1aXJlZCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgaWYgKCRRdWVzdGlvbikgewogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAkUXVlc3Rpb24sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICRBbnN3ZXJSZXF1aXJlZCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntRdWVzdGlvbn0gPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uT3ZlcnZpZXcoCiAgICAgICAgICAgIFN1cnZleUlEICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIGRlbGV0ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1F1ZXN0aW9uRGVsZXRlJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgYW5kIHF1ZXN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uRGVsZXRlKAogICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVN1cnZleUVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfSNRdWVzdGlvbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIHVwCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUXVlc3Rpb25VcCcgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uIScsCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvblNvcnQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvblVwKAogICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVN1cnZleUVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfSNRdWVzdGlvbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIGRvd24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvbkRvd24nICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Eb3duKAogICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVN1cnZleUVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfSNRdWVzdGlvbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIGVkaXQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvbkVkaXQnICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvblNhdmUnICkgewoKICAgICAgICBteSAkUXVlc3Rpb24gICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUXVlc3Rpb24nICk7CiAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Fuc3dlclJlcXVpcmVkJyApOwoKICAgICAgICBpZiAoICRBbnN3ZXJSZXF1aXJlZCAmJiAkQW5zd2VyUmVxdWlyZWQgZXEgJ05vJyApIHsKICAgICAgICAgICAgJEFuc3dlclJlcXVpcmVkID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRBbnN3ZXJSZXF1aXJlZCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgICAgICBpZiAoJFF1ZXN0aW9uKSB7CiAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uVXBkYXRlKAogICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgU3VydmV5SUQgICAgICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgICAgIFF1ZXN0aW9uICAgICAgID0+ICRRdWVzdGlvbiwKICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICRBbnN3ZXJSZXF1aXJlZCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntRdWVzdGlvblNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFNlbGYtPl9NYXNrUXVlc3Rpb25FZGl0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEICA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFuc3dlciBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBbnN3ZXJBZGQnICkgewoKICAgICAgICBteSAkQW5zd2VyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIkFuc3dlciIgKTsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgYW5kIHF1ZXN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgaWYgKCRBbnN3ZXIpIHsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICBBbnN3ZXIgICAgID0+ICRBbnN3ZXIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntBbnN3ZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgU3VydmV5SUQgICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCAgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZGVsZXRlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQW5zd2VyRGVsZXRlJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlckRlbGV0ZSgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlclNvcnQoCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfTtRdWVzdGlvbklEPSRHZXRQYXJhbXtRdWVzdGlvbklEfSNBbnN3ZXIiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgdXAKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBbnN3ZXJVcCcgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5LCBxdWVzdGlvbiBhbmQgYW5zd2VyIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgfHwgJEFuc3dlckV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScsCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJTb3J0KAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlclVwKAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfTtRdWVzdGlvbklEPSRHZXRQYXJhbXtRdWVzdGlvbklEfSNBbnN3ZXIiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZG93bgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlckRvd24nICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJEb3duKAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfTtRdWVzdGlvbklEPSRHZXRQYXJhbXtRdWVzdGlvbklEfSNBbnN3ZXIiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlckVkaXQnICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tBbnN3ZXJFZGl0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBBbnN3ZXJJRCAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFuc3dlciBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQW5zd2VyU2F2ZScgKSB7CgogICAgICAgIG15ICRBbnN3ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiQW5zd2VyIiApOwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgICAgICBpZiAoJEFuc3dlcikgewogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcGRhdGUoCiAgICAgICAgICAgICAgICBBbnN3ZXJJRCAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgIEFuc3dlciAgICAgPT4gJEFuc3dlciwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICAgICAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH07UXVlc3Rpb25JRD0kR2V0UGFyYW17UXVlc3Rpb25JRH0jQW5zd2VyIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlcnZlckVycm9ye0Fuc3dlclNlcnZlckVycm9yfSA9ICdTZXZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tBbnN3ZXJFZGl0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEICA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIG92ZXJ2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkR2V0UGFyYW17U3VydmV5SUR9ICkgewoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIFN1cnZleUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9NYXNrUXVlc3Rpb25PdmVydmlldygKICAgICAgICBTdXJ2ZXlJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgKTsKfQoKc3ViIF9NYXNrUXVlc3Rpb25PdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAlU2VydmVyRXJyb3IgPSAleyAkUGFyYW17U2VydmVyRXJyb3J9IH07CiAgICB9CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICAgID0+ICdTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnLAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICMgZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSA9PiBcJVN1cnZleSwKICAgICk7CgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CgogICAgaWYgKCAkU3VydmV5e1N0YXR1c30gJiYgJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewoKICAgICAgICBteSAkQXJyYXlIYXNoUmVmID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICA9PiAnWWVzTm8nLAogICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1llc05vJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdSYWRpbycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnUmFkaW8gKExpc3QpJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdDaGVja2JveCAoTGlzdCknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnVGV4dGFyZWEnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ1RleHRhcmVhJywKICAgICAgICAgICAgfSwKICAgICAgICBdOwoKICAgICAgICBteSAkU2VsZWN0aW9uVHlwZSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+ICRBcnJheUhhc2hSZWYsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ1R5cGUnLAogICAgICAgICAgICBJRCAgICAgICAgICAgID0+ICdUeXBlJywKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAnWWVzL05vJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUXVlc3Rpb24gVHlwZScpLAogICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRBcnJheUhhc2hSZWYgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgID0+ICdZZXMnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnTm8nLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ05vJywKICAgICAgICAgICAgfQogICAgICAgIF07CgogICAgICAgIG15ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+ICRBcnJheUhhc2hSZWYsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0Fuc3dlclJlcXVpcmVkJywKICAgICAgICAgICAgSUQgICAgICAgICAgICA9PiAnQW5zd2VyUmVxdWlyZWQnLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICdZZXMnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFF1ZXN0aW9uRXJyb3JDbGFzcyA9ICcnOwogICAgICAgIGlmICggJFNlcnZlckVycm9ye1F1ZXN0aW9ufSApIHsKICAgICAgICAgICAgJFF1ZXN0aW9uRXJyb3JDbGFzcyA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5QWRkUXVlc3Rpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgICAgICAgICAgID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25UeXBlICAgICAgICA9PiAkU2VsZWN0aW9uVHlwZSwKICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkU2VsZWN0ID0+ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCwKICAgICAgICAgICAgICAgIFF1ZXN0aW9uRXJyb3JDbGFzcyAgID0+ICRRdWVzdGlvbkVycm9yQ2xhc3MsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBzY2FsYXIgQExpc3QgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5UXVlc3Rpb25zVGFibGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlTdGF0dXNDb2x1bW4nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5RGVsZXRlQ29sdW1uJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChATGlzdCkgewogICAgICAgICAgICAgICAgbXkgJEFuc3dlckNvdW50ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyQ291bnQoCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJENsYXNzOwogICAgICAgICAgICAgICAgbXkgJENsYXNzVXA7CiAgICAgICAgICAgICAgICBteSAkQ2xhc3NEb3duOwoKICAgICAgICAgICAgICAgIGlmICggISRDb3VudGVyICkgewogICAgICAgICAgICAgICAgICAgICRDbGFzc1VwID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyID09ICQjTGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAkQ2xhc3NEb3duID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU3RhdHVzID0gJ0NvbXBsZXRlJzsKICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyB8fCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJEFuc3dlckNvdW50IDwgMiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzICA9ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXR1cyA9ICdJbmNvbXBsZXRlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9ID8gJ1llcycgOiAnTm8nOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzICAgICAgICAgPT4gJFN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gJEFuc3dlclJlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzVXAgICAgICAgID0+ICRDbGFzc1VwLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0Rvd24gICAgICA9PiAkQ2xhc3NEb3duLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5UXVlc3Rpb25zRGVsZXRlQnV0dG9uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRRdWVzdGlvbiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleU5vUXVlc3Rpb25zU2F2ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA9PiA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1RhYmxlJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgICAgIG15ICRDb3VudGVyOwogICAgICAgIGZvciBteSAkUXVlc3Rpb24gKEBMaXN0KSB7CgogICAgICAgICAgICBteSAkQ2xhc3NVcDsKICAgICAgICAgICAgbXkgJENsYXNzRG93bjsKCiAgICAgICAgICAgIGlmICggISRDb3VudGVyICkgewogICAgICAgICAgICAgICAgJENsYXNzVXAgPSAnRGlzYWJsZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRDb3VudGVyICYmICRDb3VudGVyID09ICQjTGlzdCApIHsKICAgICAgICAgICAgICAgICRDbGFzc0Rvd24gPSAnRGlzYWJsZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0gPyAnWWVzJyA6ICdObyc7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1NhdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAkQW5zd2VyUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NVcCAgICAgICAgPT4gJENsYXNzVXAsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NEb3duICAgICAgPT4gJENsYXNzRG93biwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFza1F1ZXN0aW9uRWRpdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAlU2VydmVyRXJyb3IgPSAleyAkUGFyYW17U2VydmVyRXJyb3J9IH07CiAgICB9CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgICAgPT4gJ1F1ZXN0aW9uIEVkaXQnLAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CiAgICBteSAlUXVlc3Rpb24gPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkdldCgKICAgICAgICBRdWVzdGlvbklEID0+ICRQYXJhbXtRdWVzdGlvbklEfSwKICAgICk7CgogICAgbXkgJEFycmF5SGFzaFJlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdZZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiAnWWVzJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ05vJywKICAgICAgICAgICAgVmFsdWUgPT4gJ05vJywKICAgICAgICB9CiAgICBdOwoKICAgIGlmICggJFF1ZXN0aW9ue0Fuc3dlclJlcXVpcmVkfSApIHsKICAgICAgICAkQXJyYXlIYXNoUmVmLT5bMF17U2VsZWN0ZWR9ID0gMTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRBcnJheUhhc2hSZWYtPlsxXXtTZWxlY3RlZH0gPSAxOwogICAgfQoKICAgIG15ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gJEFycmF5SGFzaFJlZiwKICAgICAgICBOYW1lICAgICAgICAgID0+ICdBbnN3ZXJSZXF1aXJlZCcsCiAgICAgICAgSUQgICAgICAgICAgICA9PiAnQW5zd2VyUmVxdWlyZWQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJ1llcycsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgcHJpbnQgdGhlIG1haW4gYm9keQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWRTZWxlY3QgPT4gJEFuc3dlclJlcXVpcmVkU2VsZWN0LAogICAgICAgICAgICAlUXVlc3Rpb24sCiAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICRRdWVzdGlvbntUeXBlfSBlcSAnWWVzTm8nICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXRUYWJsZScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0WWVzbm8nLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRRdWVzdGlvbntUeXBlfSBlcSAnUmFkaW8nIHx8ICRRdWVzdGlvbntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewoKICAgICAgICBteSAkVHlwZSA9ICRRdWVzdGlvbntUeXBlfTsKICAgICAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCBzY2FsYXIgQExpc3QgKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdFRhYmxlJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdFRhYmxlRGVsZXRlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlcjIgKEBMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJEFuc3dlcjItPntTdXJ2ZXlJRH0gPSAkUGFyYW17U3VydmV5SUR9OwoKICAgICAgICAgICAgICAgICAgICBteSAkQ2xhc3NVcDsKICAgICAgICAgICAgICAgICAgICBteSAkQ2xhc3NEb3duOwoKICAgICAgICAgICAgICAgICAgICAjIGRpc2FibGUgdXAgYWN0aW9uIG9uIGZpcnN0IHJvdwogICAgICAgICAgICAgICAgICAgIGlmICggISRDb3VudGVyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3NVcCA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGRpc2FibGUgZG93biBhY3Rpb24gb24gbGFzdCByb3cKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyID09ICQjTGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzRG93biA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiUXVlc3Rpb25FZGl0IiAuICRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEFuc3dlcjJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NVcCAgID0+ICRDbGFzc1VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NEb3duID0+ICRDbGFzc0Rvd24sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0JyAuICRUeXBlIC4gJ0RlbGV0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJEFuc3dlcjIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdEFkZEFuc3dlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVRdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgJVNlcnZlckVycm9yLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJENvdW50ZXI7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlcjIgKEBMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJEFuc3dlcjItPntTdXJ2ZXlJRH0gPSAkUGFyYW17U3VydmV5SUR9OwoKICAgICAgICAgICAgICAgICAgICBteSAkQ2xhc3NVcDsKICAgICAgICAgICAgICAgICAgICBteSAkQ2xhc3NEb3duOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ291bnRlciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzVXAgPSAnRGlzYWJsZWQnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ291bnRlciAmJiAkQ291bnRlciA9PSAkI0xpc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzc0Rvd24gPSAnRGlzYWJsZWQnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlF1ZXN0aW9uRWRpdCIgLiAkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBbnN3ZXIyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzVXAgICA9PiAkQ2xhc3NVcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzRG93biA9PiAkQ2xhc3NEb3duLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0Fuc3dlcnNTYXZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdEFkZEFuc3dlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslUXVlc3Rpb259LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFF1ZXN0aW9ue1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdFRleHRBcmVhJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX01hc2tBbnN3ZXJFZGl0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVNlcnZlckVycm9yOwogICAgaWYgKCAkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICVTZXJ2ZXJFcnJvciA9ICV7ICRQYXJhbXtTZXJ2ZXJFcnJvcn0gfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQ7CiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFRpdGxlICAgICA9PiAnQW5zd2VyIEVkaXQnLAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgQW5zd2VySUQgPT4gJFBhcmFte0Fuc3dlcklEfSwKICAgICk7CiAgICAkQW5zd2Vye1N1cnZleUlEfSA9ICRQYXJhbXtTdXJ2ZXlJRH07CgogICAgbXkgJVF1ZXN0aW9uID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25HZXQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAkUGFyYW17UXVlc3Rpb25JRH0sCiAgICApOwogICAgJFBhcmFte1F1ZXN0aW9ufSA9ICRRdWVzdGlvbntRdWVzdGlvbn07CgogICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0Fuc3dlckVkaXQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlQW5zd2VyLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleU92ZXJ2aWV3OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzaG93IG92ZXJ2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgogICAgIyBnZXQgc2Vzc2lvbiBvYmplY3QKICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbiwgdXNlZCBmb3IgYmFjay1saW5rcwogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgc3RvcmUgbGFzdCBzY3JlZW4gb3ZlcnZpZXcKICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiU3VydmV5OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgc29ydGluZyBwYXJhbWV0ZXJzCiAgICBteSAkU29ydEJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnTnVtYmVyJzsKCiAgICAjIGdldCBvcmRlcmluZyBwYXJhbWV0ZXJzCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICMgaW52ZXN0aWdhdGUgcmVmcmVzaAogICAgbXkgJFJlZnJlc2ggPSAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gPyA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfSA6IHVuZGVmOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFRpdGxlICAgPT4gJ092ZXJ2aWV3JywKICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgZ2V0IHN1cnZleSBsaXN0CiAgICBteSBAU3VydmV5SURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5TdXJ2ZXlTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJE9yZGVyQnldLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRDb25maWctPntTaG93Q29sdW1uc30gKSB7CgogICAgICAgICMgZ2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnCiAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJENvbmZpZy0+e1Nob3dDb2x1bW5zfSB9OwoKICAgICAgICAjIGdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAkTmFtZTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGVmYXVsdCBwYXJhbWV0ZXJzCiAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgIG15ICRWaWV3ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSAgIHx8ICcnOwoKICAgICMgc2hvdyB0aGUgbGlzdAogICAgbXkgJExpbmtQYWdlID0KICAgICAgICAnRmlsdGVyPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7JzsKICAgIG15ICRMaW5rU29ydCA9CiAgICAgICAgJ0ZpbHRlcj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CiAgICBteSAkTGlua0ZpbHRlciA9CiAgICAgICAgJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJzsnOwoKICAgICMgc2hvdyBjb25maWcgaXRlbSBsaXN0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlN1cnZleUxpc3RTaG93KAogICAgICAgIFN1cnZleUlEcyAgID0+IFxAU3VydmV5SURzLAogICAgICAgIFRvdGFsICAgICAgID0+IHNjYWxhciBAU3VydmV5SURzLAogICAgICAgIFZpZXcgICAgICAgID0+ICRWaWV3LAogICAgICAgIEZpbHRlckxpbmsgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkdldCgnT3ZlcnZpZXcnKSwKICAgICAgICBUaXRsZVZhbHVlICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1N1cnZleScpLAogICAgICAgIEVudiAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgU2hvd0NvbHVtbnMgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICBTb3J0QnkgICAgICA9PiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKSwKICAgICAgICBPcmRlckJ5ICAgICA9PiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICksCiAgICAgICAgT3V0cHV0ICAgICAgPT4gMSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleVN0YXRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJTdXJ2ZXk6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3QKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU3VydmV5SUQgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlN1cnZleUlEIiApICB8fCAnJzsKICAgIG15ICRSZXF1ZXN0SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiUmVxdWVzdElEIiApIHx8ICcnOwoKICAgIG15ICRTdXJ2ZXlFeGlzdHMgPSAnbm8nOwogICAgaWYgKCRTdXJ2ZXlJRCkgewogICAgICAgICRTdXJ2ZXlFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1N1cnZleScKICAgICAgICApOwogICAgfQoKICAgIG15ICRSZXF1ZXN0RXhpc3RzID0gJ25vJzsKICAgIGlmICgkUmVxdWVzdElEKSB7CiAgICAgICAgJFJlcXVlc3RFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdSZXF1ZXN0JwogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdGF0cwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFRpdGxlICAgICA9PiAnU3RhdHMgT3ZlcnZpZXcnLAogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgICMgcHJpbnQgdGhlIG1haW4gdGFibGUuCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRzJywKICAgICAgICAgICAgRGF0YSA9PiB7JVN1cnZleX0sCiAgICAgICAgKTsKICAgICAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVMaXN0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgICAgIGZvciBteSAkVm90ZSAoQExpc3QpIHsKICAgICAgICAgICAgJFZvdGUtPntTdXJ2ZXlJRH0gPSAkU3VydmV5SUQ7CiAgICAgICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVm90ZS0+e1RpY2tldElEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFZvdGUtPntUaWNrZXROdW1iZXJ9ID0gJFRpY2tldHtUaWNrZXROdW1iZXJ9OwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRzVm90ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICRWb3RlLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleVN0YXRzJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdGF0cyBkZXRhaWxzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RhdHNEZXRhaWwnICkgewogICAgICAgIG15ICRUaWNrZXROdW1iZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiVGlja2V0TnVtYmVyIiApOwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFJlcXVlc3RFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsIScsCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSAgICAgPT4gJ1N0YXRzIERldGFpbCcsCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApOwoKICAgICAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHNEZXRhaWwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVTdXJ2ZXksCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIG15IEBRdWVzdGlvbkxpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwogICAgICAgIGZvciBteSAkUXVlc3Rpb24gKEBRdWVzdGlvbkxpc3QpIHsKCiAgICAgICAgICAgIG15ICRDbGFzcyA9ICcnOwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgPSAnVGV4dGFyZWEnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkUmVxdWlyZWRUZXh0ID0gJyc7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9ICkgewogICAgICAgICAgICAgICAgJENsYXNzIC49ICcgTWFuZGF0b3J5JzsKICAgICAgICAgICAgICAgICRSZXF1aXJlZFRleHQgPSAnKiAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRzRGV0YWlsUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBteSBAQW5zd2VyczsKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnUmFkaW8nIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdDaGVja2JveCcgKSB7CiAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdDsKICAgICAgICAgICAgICAgIEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+Vm90ZUdldCgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgID0+ICRSZXF1ZXN0SUQsCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlckxpc3QpIHsKICAgICAgICAgICAgICAgICAgICBteSAlQW5zd2VyID0gJFN1cnZleU9iamVjdC0+QW5zd2VyR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXJJRCA9PiAkUm93LT57Vm90ZVZhbHVlfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPSAkQW5zd2Vye0Fuc3dlcn07CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1llc05vJyB8fCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewogICAgICAgICAgICAgICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCAgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPSAkTGlzdFswXS0+e1ZvdGVWYWx1ZX07CgogICAgICAgICAgICAgICAgIyBjbGVhbiBIVE1MCiAgICAgICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgJiYgJERhdGF7QW5zd2VyfSApIHsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRGF0YXtBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICREYXRhe0Fuc3dlcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJzLCBcJURhdGEgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlcnMpIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRzRGV0YWlsQW5zd2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUm93fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5U3RhdHMnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleVpvb207Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJFN1cnZleUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlN1cnZleUlEIiApIHx8ICcnOwoKICAgIG15ICRTdXJ2ZXlFeGlzdHMgPSAnbm8nOwogICAgaWYgKCRTdXJ2ZXlJRCkgewogICAgICAgICRTdXJ2ZXlFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1N1cnZleScKICAgICAgICApOwogICAgfQoKICAgICMgdmlldyBhdHRhY2htZW50IGZvciBIVE1MIGVtYWlsCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkU3VydmV5RmllbGQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiU3VydmV5RmllbGQiICk7CgogICAgICAgICMgbmVlZGVkIHBhcmFtcwogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggU3VydmV5SUQgU3VydmV5RmllbGQgKSkgewogICAgICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWRlZCBQYXJhbTogJE5lZWRlZCEiLAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU3VydmV5RmllbGQgbmUgJ0ludHJvZHVjdGlvbicgJiYgJFN1cnZleUZpZWxkIG5lICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgU3VydmV5RmllbGQgUGFyYW06ICRTdXJ2ZXlGaWVsZCEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBTdXJ2ZXlJRDogJFN1cnZleUlEISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgdGhlIHN1cnZleQogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSApIHsKCiAgICAgICAgICAgICMgY2xlYW4gSFRNTCBhbmQgY29udmVydCB0aGUgRmllbGQgaW4gSFRNTCAoXG4gLS0+PGJyPikKICAgICAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwogICAgICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXskU3VydmV5RmllbGR9LAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGdldCBIVE1MIHV0aWxzIG9iamVjdAogICAgICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CgogICAgICAgICMgY29udmVydCB0ZXh0IGFyZWEgZmllbGRzIHRvIEFTQ0lJCiAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID0gJEhUTUxVdGlsc09iamVjdC0+VG9Bc2NpaSgKICAgICAgICAgICAgU3RyaW5nID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICApOwoKICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3VydmV5IHN0YXR1cwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N1cnZleVN0YXR1cycgKSB7CgogICAgICAgIG15ICROZXdTdGF0dXMgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiTmV3U3RhdHVzIiApOwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBhIG5ldyBzdGF0dXMKICAgICAgICBteSAkU3RhdHVzU2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgICAgICAgICBOZXdTdGF0dXMgPT4gJE5ld1N0YXR1cywKICAgICAgICApOwogICAgICAgIG15ICRNZXNzYWdlID0gJyc7CiAgICAgICAgaWYgKCBkZWZpbmVkKCRTdGF0dXNTZXQpICYmICRTdGF0dXNTZXQgZXEgJ05vUXVlc3Rpb24nICkgewogICAgICAgICAgICAkTWVzc2FnZSA9ICc7TWVzc2FnZT1Ob1F1ZXN0aW9uJzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBkZWZpbmVkKCRTdGF0dXNTZXQpICYmICRTdGF0dXNTZXQgZXEgJ0luY29tcGxldGVRdWVzdGlvbicgKSB7CiAgICAgICAgICAgICRNZXNzYWdlID0gJztNZXNzYWdlPUluY29tcGxldGVRdWVzdGlvbic7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggZGVmaW5lZCgkU3RhdHVzU2V0KSAmJiAkU3RhdHVzU2V0IGVxICdTdGF0dXNTZXQnICkgewogICAgICAgICAgICAkTWVzc2FnZSA9ICc7TWVzc2FnZT1TdGF0dXNTZXQnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQkTWVzc2FnZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN1cnZleSB6b29tCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkTWVzc2FnZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJNZXNzYWdlIiApOwoKICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgaWYgKCAhJFN1cnZleUlEIHx8ICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CiAgICAgICAgJE1lc3NhZ2UgPSAnO01lc3NhZ2U9Tm9TdXJ2ZXlJRCc7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3JE1lc3NhZ2UiLAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFRpdGxlID0+ICdTdXJ2ZXknLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgb3V0cHV0IG1lc3NhZ2VzIGlmIHN0YXR1cyB3YXMgY2hhbmdlZAogICAgaWYgKCBkZWZpbmVkKCRNZXNzYWdlKSAmJiAkTWVzc2FnZSBlcSAnTm9RdWVzdGlvbicgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgIEluZm8gICAgID0+ICdDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLicsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggZGVmaW5lZCgkTWVzc2FnZSkgJiYgJE1lc3NhZ2UgZXEgJ0luY29tcGxldGVRdWVzdGlvbicgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgIEluZm8gICAgID0+ICdDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLicsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggZGVmaW5lZCgkTWVzc2FnZSkgJiYgJE1lc3NhZ2UgZXEgJ1N0YXR1c1NldCcgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdOb3RpY2UnLAogICAgICAgICAgICBJbmZvICAgICA9PiAnU3RhdHVzIGNoYW5nZWQuJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCApOwogICAgbXkgJUhUTUw7CgogICAgIyBjbGVhbiBIVE1MIGFuZCBjb252ZXJ0IHRoZSB0ZXh0LWFyZWFzIGluIEhUTUwgKFxuIC0tPjxicj4pCiAgICBGSUVMRDoKICAgIGZvciBteSAkU3VydmV5RmllbGQgKHF3KCBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gKSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRTdXJ2ZXl7JFN1cnZleUZpZWxkfTsKCiAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICBpZiAoJDEpIHsKICAgICAgICAgICAgJEhUTUx7JFN1cnZleUZpZWxkfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBudW1iZXJzIG9mIHJlcXVlc3RzIGFuZCB2b3RlcwogICAgbXkgJFNlbmRSZXF1ZXN0ID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdENvdW50KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBWYWxpZElEICA9PiAnYWxsJywKICAgICk7CiAgICBteSAkUmVxdWVzdENvbXBsZXRlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdENvdW50KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBWYWxpZElEICA9PiAwLAogICAgKTsKICAgICRTdXJ2ZXl7U2VuZFJlcXVlc3R9ICAgICA9ICRTZW5kUmVxdWVzdDsKICAgICRTdXJ2ZXl7UmVxdWVzdENvbXBsZXRlfSA9ICRSZXF1ZXN0Q29tcGxldGU7CgogICAgIyBnZXQgc2VsZWN0ZWQgcXVldWVzCiAgICBteSAlUXVldWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPkdldEFsbFF1ZXVlcygpOwogICAgbXkgQFF1ZXVlTGlzdCA9IG1hcCB7ICRRdWV1ZXN7JF99IH0gQHsgJFN1cnZleXtRdWV1ZXN9IH07CiAgICBAUXVldWVMaXN0ID0gc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IEBRdWV1ZUxpc3Q7CiAgICBteSAkUXVldWVMaXN0U3RyaW5nID0gam9pbiBxeywgfSwgQFF1ZXVlTGlzdDsKCiAgICBteSAkTm9RdWV1ZU1lc3NhZ2UgPSAnJzsKICAgIGlmICggISRRdWV1ZUxpc3RTdHJpbmcgKSB7CiAgICAgICAgJFF1ZXVlTGlzdFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJyk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1cnZleVpvb20nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlU3VydmV5LAogICAgICAgICAgICBOb1F1ZXVlTWVzc2FnZSAgPT4gJE5vUXVldWVNZXNzYWdlLAogICAgICAgICAgICBRdWV1ZUxpc3RTdHJpbmcgPT4gJFF1ZXVlTGlzdFN0cmluZywKICAgICAgICAgICAgSFRNTFJpY2hUZXh0SGVpZ2h0RGVmYXVsdCA9PgogICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHREZWZhdWx0JykgfHwgODAsCiAgICAgICAgICAgIEhUTUxSaWNoVGV4dEhlaWdodE1heCA9PgogICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHRNYXgnKSB8fCAyNTAwLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgdGhlIHNlbmQgY29uZGl0aW9uIHRpY2tldCB0eXBlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnKSApIHsKCiAgICAgICAgIyBnZXQgc2VsZWN0ZWQgdGlja2V0IHR5cGVzCiAgICAgICAgbXkgJVRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKICAgICAgICBteSBAVGlja2V0VHlwZUxpc3QgPSBtYXAgeyAkVGlja2V0VHlwZXN7JF99ID8gJFRpY2tldFR5cGVzeyRffSA6ICgpIH0gQHsgJFN1cnZleXtUaWNrZXRUeXBlSURzfSB9OwogICAgICAgIEBUaWNrZXRUeXBlTGlzdCA9IHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBAVGlja2V0VHlwZUxpc3Q7CiAgICAgICAgbXkgJFRpY2tldFR5cGVMaXN0U3RyaW5nID0gam9pbiBxeywgfSwgQFRpY2tldFR5cGVMaXN0OwoKICAgICAgICBpZiAoICEkVGlja2V0VHlwZUxpc3RTdHJpbmcgKSB7CiAgICAgICAgICAgICRUaWNrZXRUeXBlTGlzdFN0cmluZyA9ICctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFR5cGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBUaWNrZXRUeXBlTGlzdFN0cmluZyA9PiAkVGlja2V0VHlwZUxpc3RTdHJpbmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBnZXQgc2VsZWN0ZWQgdGlja2V0IHR5cGVzCiAgICAgICAgbXkgJVNlcnZpY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSBAU2VydmljZUxpc3QgPSBtYXAgeyAkU2VydmljZXN7JF99ID8gJFNlcnZpY2VzeyRffSA6ICgpIH0gQHsgJFN1cnZleXtTZXJ2aWNlSURzfSB9OwogICAgICAgIEBTZXJ2aWNlTGlzdCA9IHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBAU2VydmljZUxpc3Q7CiAgICAgICAgbXkgJFNlcnZpY2VMaXN0U3RyaW5nID0gam9pbiBxeywgfSwgQFNlcnZpY2VMaXN0OwoKICAgICAgICBpZiAoICEkU2VydmljZUxpc3RTdHJpbmcgKSB7CiAgICAgICAgICAgICRTZXJ2aWNlTGlzdFN0cmluZyA9ICctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFNlcnZpY2VzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTZXJ2aWNlTGlzdFN0cmluZyA9PiAkU2VydmljZUxpc3RTdHJpbmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJ1biBzdXJ2ZXkgbWVudSBtb2R1bGVzCiAgICBteSAkTWVudU1vZHVsZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZScpOwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkTWVudU1vZHVsZUNvbmZpZykgKSB7CiAgICAgICAgbXkgJU1lbnVzICAgPSAleyRNZW51TW9kdWxlQ29uZmlnfTsKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgTUVOVToKICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgIyBtZW51IFNhdHNEZXRhaWxzIG5lZWRzIHRvIGhhdmUgYSBjb21wbGV0ZSByZXF1ZXN0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJE1lbnVzeyRNZW51fS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgICYmICRNZW51c3skTWVudX0tPntBY3Rpb259IGVxICdBZ2VudFN1cnZleVN0YXRzJwogICAgICAgICAgICAgICAgJiYgISRSZXF1ZXN0Q29tcGxldGUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBNRU5VOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGxvYWQgbW9kdWxlCiAgICAgICAgICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1lbnVzeyRNZW51fS0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgIG15ICRPYmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNsYXNzZXMKICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ1BvcFVwJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e0NsYXNzfSA9ICdBc1BvcHVwJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnQmFjaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnSGlzdG9yeUJhY2snOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBTdXJ2ZXkgID0+IHslU3VydmV5fSwKICAgICAgICAgICAgICAgICAgICBDb3VudGVyID0+ICRDb3VudGVyLAogICAgICAgICAgICAgICAgICAgIENvbmZpZyAgPT4gJE1lbnVzeyRNZW51fSwKICAgICAgICAgICAgICAgICAgICBNZW51SUQgID0+ICdNZW51JyAuICRNZW51LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IHRoZSBwb3NzaWJsZSBzdGF0dXMgbWVudQogICAgbXkgJU5ld1N0YXR1cyA9ICgKICAgICAgICBDaGFuZ2VTdGF0dXMgPT4gJy0gQ2hhbmdlIFN0YXR1cyAtJywKICAgICAgICBNYXN0ZXIgICAgICAgPT4gJ01hc3RlcicsCiAgICAgICAgVmFsaWQgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgSW52YWxpZCAgICAgID0+ICdJbnZhbGlkJywKCiAgICApOwoKICAgIGlmICggJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewogICAgICAgIGRlbGV0ZSAkTmV3U3RhdHVze0ludmFsaWR9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZGVsZXRlICROZXdTdGF0dXN7ICRTdXJ2ZXl7U3RhdHVzfSB9OwogICAgfQoKICAgIG15ICROZXdTdGF0dXNTdHIgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgID0+ICdOZXdTdGF0dXMnLAogICAgICAgIElEICAgICAgICAgPT4gJ05ld1N0YXR1cycsCiAgICAgICAgRGF0YSAgICAgICA9PiBcJU5ld1N0YXR1cywKICAgICAgICBTZWxlY3RlZElEID0+ICdDaGFuZ2VTdGF0dXMnLAogICAgICAgIFRpdGxlICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZXcgU3RhdHVzJyksCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1cnZleVN0YXR1cycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5ld1N0YXR1c1N0ciA9PiAkTmV3U3RhdHVzU3RyLAogICAgICAgICAgICBTdXJ2ZXlJRCAgICAgPT4gJFN1cnZleUlELAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IHRoZSBzdXJ2ZXkgY29tbW9uIGJsb2NrcwogICAgZm9yIG15ICRGaWVsZCAocXcoIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbikpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5QmxvY2snLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICJTdXJ2ZXkgJEZpZWxkIiwKICAgICAgICAgICAgICAgIFN1cnZleUZpZWxkID0+ICRGaWVsZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIGlmICggJEhUTUx7JEZpZWxkfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCb2R5SFRNTCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTdXJ2ZXlGaWVsZCA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICAgICAgU3VydmV5SUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQm9keVBsYWluJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFN1cnZleXskRmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBkaXNwbGF5IHN0YXRzIGlmIHN0YXR1cyBNYXN0ZXIsIFZhbGlkIG9yIEludmFsaWQKICAgIGlmICggJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb1N0YXRSZXN1bHRzJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKAogICAgICAgICRTdXJ2ZXl7U3RhdHVzfSBlcSAnTWFzdGVyJwogICAgICAgIHx8ICRTdXJ2ZXl7U3RhdHVzfSBlcSAnVmFsaWQnCiAgICAgICAgfHwgJFN1cnZleXtTdGF0dXN9IGVxICdJbnZhbGlkJwogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5RWRpdFN0YXRzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIHF1ZXN0aW9ucyBvZiB0aGUgc3VydmV5CiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRTdGF0c1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSBAQW5zd2VyczsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgdGhlIGFuc3dlcnMgb2YgdGhlIHF1ZXN0aW9uCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdDaGVja2JveCcKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3Q7CgogICAgICAgICAgICAgICAgIyBzZXQgYW5zd2VycyB0byBZZXMgYW5kIE5vIGlmIHR5cGUgd2FzIFllc05vCiAgICAgICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJURhdGE7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSAgID0gIlllcyI7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VySUR9ID0gIlllcyI7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlckxpc3QsIFwlRGF0YSApOwogICAgICAgICAgICAgICAgICAgIG15ICVEYXRhMjsKICAgICAgICAgICAgICAgICAgICAkRGF0YTJ7QW5zd2VyfSAgID0gIk5vIjsKICAgICAgICAgICAgICAgICAgICAkRGF0YTJ7QW5zd2VySUR9ID0gIk5vIjsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VyTGlzdCwgXCVEYXRhMiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGFsbCBhbnN3ZXJzIG9mIGEgcXVlc3Rpb24KICAgICAgICAgICAgICAgICAgICBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIG15ICRWb3RlQ291bnQgPSAkU3VydmV5T2JqZWN0LT5Wb3RlQ291bnQoCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZvdGVWYWx1ZSAgPT4gJFJvdy0+e0Fuc3dlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG15ICRQZXJjZW50ID0gMDsKCiAgICAgICAgICAgICAgICAgICAgIyBjYWxjdWxhdGUgdGhlIHBlcmNlbnRzCiAgICAgICAgICAgICAgICAgICAgaWYgKCRSZXF1ZXN0Q29tcGxldGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBlcmNlbnQgPSAxMDAgLyAkUmVxdWVzdENvbXBsZXRlICogJFZvdGVDb3VudDsKICAgICAgICAgICAgICAgICAgICAgICAgJFBlcmNlbnQgPSBzcHJpbnRmKCAiJS4wZiIsICRQZXJjZW50ICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gICAgICAgID0gJFJvdy0+e0Fuc3dlcn07CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyUGVyY2VudH0gPSAkUGVyY2VudDsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VycywgXCVEYXRhICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewogICAgICAgICAgICAgICAgbXkgJEFuc3dlck5vID0gJFN1cnZleU9iamVjdC0+Vm90ZUNvdW50KAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVm90ZVZhbHVlICA9PiAnJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkUGVyY2VudCA9IDA7CgogICAgICAgICAgICAgICAgIyBjYWxjdWxhdGUgdGhlIHBlcmNlbnRzCiAgICAgICAgICAgICAgICBpZiAoJFJlcXVlc3RDb21wbGV0ZSkgewogICAgICAgICAgICAgICAgICAgICRQZXJjZW50ID0gMTAwIC8gJFJlcXVlc3RDb21wbGV0ZSAqICRBbnN3ZXJObzsKICAgICAgICAgICAgICAgICAgICAkUGVyY2VudCA9IHNwcmludGYoICIlLjBmIiwgJFBlcmNlbnQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICJhbnN3ZXJlZCI7CiAgICAgICAgICAgICAgICBpZiAoICEkUmVxdWVzdENvbXBsZXRlICkgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gMTAwIC0gJFBlcmNlbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VycywgXCVEYXRhICk7CiAgICAgICAgICAgICAgICBteSAlRGF0YTI7CiAgICAgICAgICAgICAgICAkRGF0YTJ7QW5zd2VyfSAgICAgICAgPSAibm90IGFuc3dlcmVkIjsKICAgICAgICAgICAgICAgICREYXRhMntBbnN3ZXJQZXJjZW50fSA9ICRQZXJjZW50OwogICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YTIgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgYWxsIGFuc3dlcnMgb2YgdGhlIHN1cnZleQogICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlcnMpIHsKICAgICAgICAgICAgICAgICRSb3ctPntBbnN3ZXJQZXJjZW50VGFibGV9ID0gJFJvdy0+e0Fuc3dlclBlcmNlbnR9OwogICAgICAgICAgICAgICAgaWYgKCAhJFJvdy0+e0Fuc3dlclBlcmNlbnR9ICkgewogICAgICAgICAgICAgICAgICAgICRSb3ctPntBbnN3ZXJQZXJjZW50VGFibGV9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRTdGF0c0Fuc3dlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUm93LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5Wm9vbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpQdWJsaWNTdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgIG15ICVBbnN3ZXJzOwogICAgbXkgJUVycm9yczsKICAgIG15IEBRdWVzdGlvbkxpc3Q7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdAogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBwdWJsaWMgc3VydmV5IHZvdGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdQdWJsaWNTdXJ2ZXlWb3RlJyApIHsKICAgICAgICBteSAkUHVibGljU3VydmV5S2V5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1B1YmxpY1N1cnZleUtleScgKTsKCiAgICAgICAgIyBnZXQgc3VydmV5IGZyb20gcHVibGljIGtleQogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlHZXQoCiAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICk7CiAgICAgICAgaWYgKCAkU3VydmV5e1N1cnZleUlEfSApIHsKICAgICAgICAgICAgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXl7U3VydmV5SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewogICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nICkgewogICAgICAgICAgICAgICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlWb3RlMSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICJQdWJsaWNTdXJ2ZXlWb3RlMVskUXVlc3Rpb24tPntRdWVzdGlvbklEfV0iCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAhJFB1YmxpY1N1cnZleVZvdGUxIHx8ICFsZW5ndGggJFB1YmxpY1N1cnZleVZvdGUxICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfXsnQW5zd2VyIHJlcXVpcmVkJ30gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gPSAkUHVibGljU3VydmV5Vm90ZTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFB1YmxpY1N1cnZleVZvdGUyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gIlB1YmxpY1N1cnZleVZvdGUyWyRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9XSIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICEkUHVibGljU3VydmV5Vm90ZTIgfHwgIWxlbmd0aCAkUHVibGljU3VydmV5Vm90ZTIgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9eydBbnN3ZXIgcmVxdWlyZWQnfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSA9ICRQdWJsaWNTdXJ2ZXlWb3RlMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ0NoZWNrYm94JyApIHsKICAgICAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0KICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlciAoQEFuc3dlckxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFB1YmxpY1N1cnZleVZvdGUzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICJQdWJsaWNTdXJ2ZXlWb3RlM1skQW5zd2VyLT57QW5zd2VySUR9XSIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUHVibGljU3VydmV5Vm90ZTMgJiYgJFB1YmxpY1N1cnZleVZvdGUzIGVxICdZZXMnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9LCAkQW5zd2VyLT57QW5zd2VySUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZpbmVkICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IG5lICdBUlJBWScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhQHsgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH17J0Fuc3dlciByZXF1aXJlZCd9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFB1YmxpY1N1cnZleVZvdGU0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gIlB1YmxpY1N1cnZleVZvdGU0WyRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9XSIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHJpY2ggdGV4dCBpcyBlbmFibGVkCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFB1YmxpY1N1cnZleVZvdGU0ID0gKCBsZW5ndGggJFB1YmxpY1N1cnZleVZvdGU0ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIlwkaHRtbC90ZXh0XCQgJFB1YmxpY1N1cnZleVZvdGU0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgICAgICAgICAgICAgKCAhJFB1YmxpY1N1cnZleVZvdGU0IHx8ICFsZW5ndGggJFB1YmxpY1N1cnZleVZvdGU0ICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfXsnQW5zd2VyIHJlcXVpcmVkJ30gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSA9ICRQdWJsaWNTdXJ2ZXlWb3RlNDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgaGF2ZSBlcnJvcnMsIGp1c3Qgc2F2ZSB0aGUgYW5zd2VycwogICAgICAgICAgICBpZiAoICFzY2FsYXIga2V5cyAlRXJyb3JzICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1llc05vJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICAgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICAgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ0NoZWNrYm94JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmVmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICdBUlJBWScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBbnN3ZXIgKCBAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm90ZVZhbHVlICAgICAgID0+ICRBbnN3ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVm90ZVZhbHVlICAgICAgID0+ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBzdXJ2ZXkgcmVxdWVzdCBhcyBpbnZhbGlkCiAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0KAogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAnU3VydmV5JywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleU1lc3NhZ2UnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+ICdTdXJ2ZXkgSW5mb3JtYXRpb24nLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlSGVhZGVyID0+ICdUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgICAgICA9PiAnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljU3VydmV5JywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyBzdXJ2ZXkgdm90ZSBkYXRhCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2hvd1ZvdGVEYXRhJyApIHsKICAgICAgICBteSAkUHVibGljU3VydmV5S2V5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1B1YmxpY1N1cnZleUtleScgKTsKCiAgICAgICAgIyByZXR1cm4gaWYgZmVhdHVyZSBub3QgZW5hYmxlZAogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgiU3VydmV5OjpTaG93Vm90ZURhdGEiKSApIHsKICAgICAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleU1lc3NhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVR5cGUgICA9PiAnU3VydmV5IE1lc3NhZ2UhJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlSGVhZGVyID0+ICdNb2R1bGUgbm90IGVuYWJsZWQuJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0aGUgcmVxdWVzdCBkYXRhIGFuZCBzdGFydCBzaG93aW5nIHRoZSBkYXRhCiAgICAgICAgbXkgJVJlcXVlc3REYXRhID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFN1cnZleUlEICA9ICRSZXF1ZXN0RGF0YXtTdXJ2ZXlJRH07CiAgICAgICAgbXkgJFRpY2tldElEICA9ICRSZXF1ZXN0RGF0YXtUaWNrZXRJRH07CiAgICAgICAgbXkgJFJlcXVlc3RJRCA9ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9OwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBteSAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdTdXJ2ZXknCiAgICAgICAgKTsKICAgICAgICBteSAkUmVxdWVzdEV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkUmVxdWVzdElELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1JlcXVlc3QnCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFJlcXVlc3RFeGlzdHMgbmUgJ1llcycgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIldyb25nIHB1YmxpYyBzdXJ2ZXkga2V5OiAkUHVibGljU3VydmV5S2V5ISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAnU3VydmV5JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+ICdTdXJ2ZXkgRXJyb3IhJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlSGVhZGVyID0+ICdJbnZhbGlkIHN1cnZleSBrZXkuJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY1N1cnZleScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiAnU3VydmV5IFZvdGUnLAogICAgICAgICk7CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgUHVibGljICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICBpZiAoICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSApIHsKICAgICAgICAgICAgJFN1cnZleXtJbnRyb2R1Y3Rpb259ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICAgICAgbXkgJEhUTUxDb250ZW50ID0gJDE7CiAgICAgICAgICAgIGlmICggISRIVE1MQ29udGVudCApIHsKICAgICAgICAgICAgICAgICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXtJbnRyb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNTdXJ2ZXlWb3RlRGF0YScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlID0+ICdTdXJ2ZXkgVm90ZSBEYXRhJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIG15IEBRdWVzdGlvbkxpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwogICAgICAgIGZvciBteSAkUXVlc3Rpb24gKEBRdWVzdGlvbkxpc3QpIHsKCiAgICAgICAgICAgIG15ICRDbGFzcyA9ICcnOwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgPSAnVGV4dGFyZWEnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkUmVxdWlyZWRUZXh0ID0gJyc7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9ICkgewogICAgICAgICAgICAgICAgJENsYXNzIC49ICcgTWFuZGF0b3J5JzsKICAgICAgICAgICAgICAgICRSZXF1aXJlZFRleHQgPSAnKiAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleVZvdGVRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15IEBBbnN3ZXJzOwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgfHwgJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ0NoZWNrYm94JyApIHsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0OwogICAgICAgICAgICAgICAgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCAgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlcklEID0+ICRSb3ctPntWb3RlVmFsdWV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJURhdGE7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRBbnN3ZXJ7QW5zd2VyfTsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VycywgXCVEYXRhICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRMaXN0WzBdLT57Vm90ZVZhbHVlfTsKCiAgICAgICAgICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyAmJiAkRGF0YXtBbnN3ZXJ9ICkgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICREYXRhe0Fuc3dlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJERhdGF7QW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VycywgXCVEYXRhICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBBbnN3ZXJzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNTdXJ2ZXlWb3RlQW5zd2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUm93fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY1N1cnZleScsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyBzdXJ2ZXkKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHVibGljU3VydmV5S2V5JyApOwogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFRpdGxlID0+ICdTdXJ2ZXknLAogICAgKTsKCiAgICBteSAkVXNlZFN1cnZleUtleSA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUdldCgKICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICBJbnZhbGlkICAgICAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUdldCgKICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICk7CgogICAgJFN1cnZleXtQdWJsaWNTdXJ2ZXlLZXl9ID0gJFB1YmxpY1N1cnZleUtleTsKCiAgICBpZiAoJFVzZWRTdXJ2ZXlLZXkpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTWVzc2FnZVR5cGUgICA9PiAnU3VydmV5IEluZm9ybWF0aW9uJywKICAgICAgICAgICAgICAgIE1lc3NhZ2VIZWFkZXIgPT4gJ1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICAgICA9PiAnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5LicsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoIlN1cnZleTo6U2hvd1ZvdGVEYXRhIikgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2hvd0Fuc3dlcnNCdXR0b24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFN1cnZleXtTdXJ2ZXlJRH0gKSB7CgogICAgICAgICMgY2xlYW4gSFRNTCBhbmQgcHJvY2VzcyBpbnRyb2R1Y3Rpb24gdGV4dAogICAgICAgICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgICAgICBteSAkSFRNTENvbnRlbnQgPSAkMTsKICAgICAgICBpZiAoICEkSFRNTENvbnRlbnQgKSB7CiAgICAgICAgICAgICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5e0ludHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlU3VydmV5LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRpY2tldAogICAgICAgIG15ICVSZXF1ZXN0RGF0YSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RHZXQoCiAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICk7CiAgICAgICAgbXkgJVRpY2tldCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0R2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUmVxdWVzdERhdGF7VGlja2V0SUR9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNUaWNrZXQnLAogICAgICAgICAgICBEYXRhID0+IHslVGlja2V0fSwKICAgICAgICApOwoKICAgICAgICAjIElmIHdlIGhhZCBlcnJvcnMsIEBRdWVzdGlvbkxpc3QgaXMgYWxyZWFkeSBmaWxsZWQsIHNvIGxldCdzIHNhdmUgYSBTUUwgcXVlcnkKICAgICAgICBpZiAoICFAUXVlc3Rpb25MaXN0ICkgewogICAgICAgICAgICBAUXVlc3Rpb25MaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25MaXN0KSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1F1ZXN0aW9ucycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJENsYXNzICAgICAgICA9ICcnOwogICAgICAgICAgICBteSAkUmVxdWlyZWRUZXh0ID0gJyc7CiAgICAgICAgICAgIG15ICRFcnJvclRleHQ7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9ICkgewogICAgICAgICAgICAgICAgJENsYXNzIC49ICdNYW5kYXRvcnknOwogICAgICAgICAgICAgICAgJFJlcXVpcmVkVGV4dCA9ICcqICc7CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICYmIHJlZiAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICdIQVNIJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyAlRXJyb3JzIGhvbGRzIGEga2V5IGZvciBlYWNoIFF1ZXN0aW9uSUQgdGhhdCBoYWQgZXJyb3JzLgogICAgICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgYSBoYXNoIHJlZmVyZW5jZSB3aG8ncyBrZXlzIGFyZSB0aGUgRXJyb3JUeXBlCiAgICAgICAgICAgICAgICAjIFRoZSB2YWx1ZSBpcyBzZXQgdG8gMQogICAgICAgICAgICAgICAgIyBSZWFzb24gZm9yIHRoaXMgaXMsIHRoYXQgdGhlIHZhbHVlIG1heSBiZSB1c2VkIHRvIGRpc3BsYXkKICAgICAgICAgICAgICAgICMgYSBtb3JlIHNwZWNpZmljIEVycm9yIE1lc3NhZ2UgY29udGFpbmluZyB0ZXh0IHF1ZXN0aW9uIHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzCiAgICAgICAgICAgICAgICAjIG9yIHNpbWlsYXIuIFNvIGEgdHlwZSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIHRyZWF0bWVudCB3b3VsZCBiZSBwb3NzaWJsZSBoZXJlLgoKICAgICAgICAgICAgICAgICMgQXQgdGhlIHRpbWUgb2YgY3JlYXRpb24gdGhlIG9ubHkgZXJyb3IgdHlwZSB3YXMgJ0Fuc3dlciByZXF1aXJlZCcuCiAgICAgICAgICAgICAgICAjIFNvIGEgZGF0YSBzdHJ1Y3R1cmUgbG9va3MgbGlrZSB0aGlzOgogICAgICAgICAgICAgICAgIyAlRXJyb3JzID0gKAogICAgICAgICAgICAgICAgIyAgIDEgPT4gewogICAgICAgICAgICAgICAgIyAgICAgICAgJ0Fuc3dlciByZXF1aXJlZCcgPT4gMSwKICAgICAgICAgICAgICAgICMgICB9LAogICAgICAgICAgICAgICAgIyAgIDIgPT4gewogICAgICAgICAgICAgICAgIyAgICAgICAgJ0Fuc3dlciByZXF1aXJlZCcgPT4gMSwKICAgICAgICAgICAgICAgICMgICAgfSwKICAgICAgICAgICAgICAgICMgKTsKCiAgICAgICAgICAgICAgICAjIExhdGVyIG9uIGEgRGF0YSBzdHJ1Y3R1cmUgbGlrZSB0aGUgZm9sbG93aW5nIHdvdWxkIGJlIHBvc3NpYmxlOgogICAgICAgICAgICAgICAgIyAlRXJyb3JzID0gKAogICAgICAgICAgICAgICAgIyAgIDEgPT4gewogICAgICAgICAgICAgICAgIyAgICAgICAgJ0ludmFsaWQgdGV4dCcgPT4gJ1lvdXIgVGV4dCBkaWQgbm90IGNvbnRhaW4gdGhlIE9yZGVyIG51bWJlcicsCiAgICAgICAgICAgICAgICAjICAgfSwKICAgICAgICAgICAgICAgICMgICAyID0+IHsKICAgICAgICAgICAgICAgICMgICAgICAgICdBbnN3ZXIgcmVxdWlyZWQnID0+IDEsCiAgICAgICAgICAgICAgICAjICAgIH0sCiAgICAgICAgICAgICAgICAjICk7CiAgICAgICAgICAgICAgICAjIEFzIHNvb24gYXMgdGhpcyBpcyBuZWVkZWQsIHRoZSBmb2xsb3dpbmcgJEVycm9yVGV4dCBzdHJpbmcgYnVpbGRpbmcgaGFzIHRvIGJlCiAgICAgICAgICAgICAgICAjIGNoYW5nZWQuCgogICAgICAgICAgICAgICAgIyBUaGUgc3RyaW5nIGJ1aWxkaW5nIHdvcmtzIGF0IHRoZSBtb21lbnQgdGhpcyB3YXk6CiAgICAgICAgICAgICAgICAjIDEuIEdvIHRocm91Z2ggYWxsIGtleXMgb2YgdGhlICV7ICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfSBoYXNoCiAgICAgICAgICAgICAgICAjIDIuIERvIGEgdHJhbnNsYXRpb24gZm9yIGVhY2gga2V5IChpbnNpZGUgdGhlICJtYXAge30iLWNsYXVzZSkKICAgICAgICAgICAgICAgICMgMy4gam9pbiB0aGUgcmVzdWx0aW5nIEFycmF5IGJ5IHB1dHRpbmcgIjwvcD5cbjwvcD4iIGluIGJldHdlZW4gdGhlIEFycmF5IGtleXMKICAgICAgICAgICAgICAgICMgNC4gYWRkICc8cD4nIGF0IHRoZSBiZWdpbm5pbmcgYW5kICc8L3A+JyBhdCB0aGUgZW5kLgoKICAgICAgICAgICAgICAgICRFcnJvclRleHQgPSAnPHA+JwogICAgICAgICAgICAgICAgICAgIC4gKAogICAgICAgICAgICAgICAgICAgIGpvaW4gIjwvcD5cbjxwPiIsCiAgICAgICAgICAgICAgICAgICAgbWFwIHsgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCRfKSB9CiAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgJXsgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIC4gJzwvcD4nOwoKICAgICAgICAgICAgICAgICRFcnJvclRleHQgPSA8PEVORDsKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlRvb2x0aXBFcnJvciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUb29sdGlwIFRvbmd1ZUxlZnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlRvbmd1ZSIgPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiIHJvbGU9InRvb2x0aXAiIHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvclRleHQKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CkVORAogICAgICAgICAgICAgICAgJENsYXNzIC49ICcgRXJyb3InOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgKSB7CgogICAgICAgICAgICAgICAgbXkgJVNlbGVjdGVkID0gKAogICAgICAgICAgICAgICAgICAgIFllc1NlbGVjdGVkID0+ICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJ1llcycKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgID8gJ2NoZWNrZWQ9ImNoZWNrZWQiJwogICAgICAgICAgICAgICAgICAgIDogJycsCiAgICAgICAgICAgICAgICAgICAgTm9TZWxlY3RlZCA9PiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICdObycKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgID8gJ2NoZWNrZWQ9ImNoZWNrZWQiJwogICAgICAgICAgICAgICAgICAgIDogJycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlclllc05vJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICAlU2VsZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkVGV4dCA9PiAkUmVxdWlyZWRUZXh0LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlclJhZGlvJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewoKICAgICAgICAgICAgICAgICAgICBteSAkU2VsZWN0ZWQgPSAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJEFuc3dlci0+e0Fuc3dlcklEfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZWN0ZWQgPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyUmFkaW9iJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyU2VsZWN0ZWQgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyQ2hlY2tib3gnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkVGV4dCA9PiAkUmVxdWlyZWRUZXh0LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yIG15ICRBbnN3ZXIgKEBBbnN3ZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmIHJlZiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBlcSAnQVJSQVknCiAgICAgICAgICAgICAgICAgICAgICAgICYmIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2NhbGFyIGdyZXAgeyAkXyBlcSAkQW5zd2VyLT57QW5zd2VySUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgQHsgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZWN0ZWQgPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyQ2hlY2tib3hiJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyU2VsZWN0ZWQgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfHwgJyc7CiAgICAgICAgICAgICAgICAkVmFsdWUgPX4gcy9eXCRodG1sXC90ZXh0XCRccy8vOwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyVGV4dGFyZWEnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkVGV4dCA9PiAkUmVxdWlyZWRUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgcmljaCB0ZXh0IGlzIGVuYWJsZWQKICAgICAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1JpY2hUZXh0JyApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleU1lc3NhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlICAgPT4gJ1N1cnZleSBFcnJvciEnLAogICAgICAgICAgICAgICAgTWVzc2FnZUhlYWRlciA9PiAnSW52YWxpZCBzdXJ2ZXkga2V5LicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJ1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6U3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPW92ZXIgNAoKPWl0ZW0gU3VydmV5TGlzdFNob3coKQoKUmV0dXJucyBhIGxpc3Qgb2Ygc3VydmV5cyBsaXN0IHdpdGggcGFnaW5hdGlvbi4KClRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBMPEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OlRpY2tldDo6VGlja2V0TGlzdFNob3coKT4KaW4gRjxLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L1RpY2tldC5wbT4uCgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPlN1cnZleUxpc3RTaG93KAogICAgICAgIFN1cnZleUlEcyAgPT4gJFN1cnZleUlEc1JlZiwgICAgICAgICAgICAgICAgICAgICAgIyB0b3RhbCBsaXN0IG9mIHN1cnZleXMgaWRzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAeyAkU3VydmV5SURzUmVmIH0sICAgICAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGNoYW5nZXMgaW4gdGhpcyBjYXNlCiAgICAgICAgVmlldyAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAnU21hbGwnCiAgICAgICAgRmlsdGVyICAgICA9PiAnQWxsJywKICAgICAgICBGaWx0ZXJzICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICA9PiAnT3ZlcnZpZXc6IFN1cnZleScsCiAgICAgICAgVGl0bGVWYWx1ZSA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5TGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRha2Ugb2JqZWN0IHJlZiB0byBsb2NhbCwgcmVtb3ZlIGl0IGZyb20gJVBhcmFtIChwcmV2ZW50IG1lbW9yeSBsZWFrKQogICAgbXkgJEVudiA9ICRQYXJhbXtFbnZ9OwogICAgZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VyU3VydmV5T3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17Vmlld30gPSAkU2VsZi0+eyAnVXNlclN1cnZleU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259IH07CiAgICB9CgogICAgIyBzZXQgZnJvbnRlbmQKICAgIG15ICRGcm9udGVuZCA9ICRQYXJhbXtGcm9udGVuZH0gfHwgJ0FnZW50JzsKCiAgICAjIHNldCBkZWZhdWx0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnVXNlclN1cnZleU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259LAogICAgICAgIFZhbHVlICAgICA9PiAkVmlldywKICAgICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpGcm9udGVuZDo6T3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05lZWQgY29uZmlnIG9wdGlvbiBTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBoYXNoLXJlZgogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ0NvbmZpZyBvcHRpb24gU3VydmV5OjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgY29uZmlnIGtleQogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgJyRWaWV3JyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBuYXZpZ2F0aW9uIGJhcgogICAgbXkgJFN0YXJ0SGl0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSgKICAgICAgICBQYXJhbSA9PiAnU3RhcnRIaXQnLAogICAgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyU3VydmV5T3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKICAgIG15ICRQYWdlU2hvd24gICAgICAgICAgICAgICA9ICRTZWxmLT57JFBhZ2VTaG93blByZWZlcmVuY2VzS2V5fSB8fCAxMDsKICAgIG15ICRHcm91cCAgICAgICAgICAgICAgICAgICA9ICdTdXJ2ZXlPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwoKICAgICMgY2hlY2sgc3RhcnQgb3B0aW9uLCBpZiBoaWdoZXIgdGhlbiBlbGVtZW50cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCBvdmVydmlldyBwYWdlIChUaGFua3MgdG8gU3RlZmFuIFNjaG1pZHQhKQogICAgaWYgKCAkU3RhcnRIaXQgPiAkUGFyYW17VG90YWx9ICkgewogICAgICAgIG15ICRQYWdlcyA9IGludCggKCAkUGFyYW17VG90YWx9IC8gJFBhZ2VTaG93biApICsgMC45OTk5OSApOwogICAgICAgICRTdGFydEhpdCA9ICggKCAkUGFnZXMgLSAxICkgKiAkUGFnZVNob3duICkgKyAxOwogICAgfQoKICAgICMgZ2V0IGRhdGEgc2VsZWN0aW9uCiAgICBteSAlRGF0YTsKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1ByZWZlcmVuY2VzR3JvdXBzJyk7CiAgICBpZiAoICRDb25maWcgJiYgJENvbmZpZy0+eyRHcm91cH0gJiYgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSApIHsKICAgICAgICAlRGF0YSA9ICV7ICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gfTsKICAgIH0KCiAgICAjIHNldCBwYWdlIGxpbWl0IGFuZCBidWlsZCBwYWdlIG5hdmlnYXRpb24KICAgIG15ICRMaW1pdCA9ICRQYXJhbXtMaW1pdH0gfHwgMjBfMDAwOwogICAgbXkgJVBhZ2VOYXYgPSAkU2VsZi0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj0nIC4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIExpbmsgICAgICA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIHN1cnZleXMgcGVyIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iOwogICAgJFBhcmFte0dyb3VwfSAgICAgICAgICAgPSAkR3JvdXA7CiAgICAkUGFyYW17UHJlZmVyZW5jZXNLZXl9ICA9ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleTsKICAgICRQYXJhbXtQYWdlU2hvd25TdHJpbmd9ID0gJFNlbGYtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFnZVNob3duLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgKTsKCiAgICAjIG5hdmlnYXRpb24gYmFyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBvdmVydmlldwogICAgJFBhcmFte1ZpZXd9ID0gJFZpZXc7CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBmaWx0ZXJzCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJzfSApIHsKCiAgICAgICAgIyBnZXQgZ2l2ZW4gZmlsdGVycwogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAleyAkUGFyYW17RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0ZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBmaWx0ZXIgY29udGVudAogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGxvb3Agb3ZlciBmaWx0ZXJzCiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKCiAgICAgICAgICAgICMgaW5jcmVtZW50IGZpbHRlciBjb3VudCBhbmQgYnVpbGQgZmlsdGVyIGl0ZW0KICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZpbHRlciBpcyBzZWxlY3RlZAogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGxvb3Agb3ZlciBjb25maWd1cmVkIGJhY2stZW5kcwogICAgZm9yIG15ICRCYWNrZW5kICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZpZ2F0aW9uIGJhciB2aWV3IG1vZGUKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY3VycmVudCB2aWV3IGlzIGNvbmZpZ3VyZWQgaW4gYmFja2VuZAogICAgICAgIGlmICggJFZpZXcgZXEgJEJhY2tlbmQgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHBhZ2UgbmF2aWdhdGlvbiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBkb24ndCBzaG93IGNvbnRleHQgc2V0dGluZ3MgaW4gQUpBWCBjYXNlIChlLiBnLiBpbiBjdXN0b21lciB0aWNrZXQgaGlzdG9yeSksCiAgICAgICAgIyAgIGJlY2F1c2UgdGhlIHN1Ym1pdCB3aXRoIHBhZ2UgcmVsb2FkIHdpbGwgbm90IHdvcmsgdGhlcmUKICAgICAgICBpZiAoICEkUGFyYW17QUpBWH0gKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRleHRTZXR0aW5ncycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIEhUTUwgY29udGVudAogICAgbXkgJE91dHB1dE5hdkJhciA9ICRTZWxmLT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyA9ICcnOwogICAgaWYgKCAhJFBhcmFte091dHB1dH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICBPdXRwdXQgPT4gXCRPdXRwdXROYXZCYXIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXRSYXcgLj0gJE91dHB1dE5hdkJhcjsKICAgIH0KCiAgICAjIGxvYWQgbW9kdWxlCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgJXskRW52fSwKICAgICAgICBMYXlvdXRPYmplY3QgPT4gJFNlbGYsCiAgICApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgcnVuIG1vZHVsZQogICAgbXkgJE91dHB1dCA9ICRPYmplY3QtPlJ1bigKICAgICAgICAlUGFyYW0sCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgRnJvbnRlbmQgID0+ICRGcm9udGVuZCwKICAgICk7CgogICAgIyBjcmVhdGUgb3V0cHV0CiAgICBpZiAoICEkUGFyYW17T3V0cHV0fSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dCwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0OwogICAgfQoKICAgICMgY3JlYXRlIG92ZXJ2aWV3IG5hdmlnYXRpb24gYmFyCiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgcmV0dXJuIGNvbnRlbnQgaWYgYXZhaWxhYmxlCiAgICByZXR1cm4gJE91dHB1dFJhdzsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU1lbnU6OkdlbmVyaWM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdyYW50IGFjY2VzcyBieSBkZWZhdWx0CiAgICBteSAkQWNjZXNzID0gMTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBncm91cHMKICAgIG15ICRBY3Rpb24gICA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIG15ICRHcm91cHNSbyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cFJvfSB8fCBbXTsKICAgIG15ICRHcm91cHNSdyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cH0gfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRMYXlvdXRPYmplY3QtPnsiVXNlcklzR3JvdXBSb1skUm9Hcm91cF0ifTsKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICRMYXlvdXRPYmplY3QtPnsiVXNlcklzR3JvdXBSb1skUm9Hcm91cF0ifSBuZSAnWWVzJzsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBST0dST1VQOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayByZWFkIHdyaXRlIGdyb3VwcwogICAgICAgIFJXR1JPVVA6CiAgICAgICAgZm9yIG15ICRSd0dyb3VwICggQHskR3JvdXBzUnd9ICkgewoKICAgICAgICAgICAgbmV4dCBSV0dST1VQIGlmICEkTGF5b3V0T2JqZWN0LT57IlVzZXJJc0dyb3VwWyRSd0dyb3VwXSJ9OwogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgJExheW91dE9iamVjdC0+eyJVc2VySXNHcm91cFskUndHcm91cF0ifSBuZSAnWWVzJzsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtTdXJ2ZXl9IH0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWd9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgJFBhcmFte0NvdW50ZXJ9Kys7CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU92ZXJ2aWV3OjpTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBVc2VySUQgcGFyYW0KICAgICRTZWxmLT57VXNlcklEfSA9ICRQYXJhbXtVc2VySUR9IHx8IGRpZSAiR290IG5vIFVzZXJJRCEiOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbmVlZCBTdXJ2ZXlJRHMKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRHN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB0aGUgU3VydmV5SURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSB0aGUgU3VydmV5SURzIGxvY2FsbHkKICAgIG15IEBJRHMgPSBAeyAkUGFyYW17U3VydmV5SURzfSB9OwoKICAgICMgY2hlY2sgU2hvd0NvbHVtbnMgcGFyYW1ldGVyCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRQYXJhbXtTaG93Q29sdW1uc30gJiYgcmVmICRQYXJhbXtTaG93Q29sdW1uc30gZXEgJ0FSUkFZJyApIHsKICAgICAgICBAU2hvd0NvbHVtbnMgPSBAeyAkUGFyYW17U2hvd0NvbHVtbnN9IH07CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICcnOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzaG93IHN1cnZleXMgaWYgdGhlcmUgYXJlIHNvbWUKICAgIGlmIChASURzKSB7CgogICAgICAgICMgYnVpbGQgY29sdW1uIGhlYWRlciBibG9ja3MKICAgICAgICAjIGN1cnJlbnRseSBzb3J0aW5nIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBzdXJ2ZXksIGxlYXZlIHRoZSBjb2RlIGZvciBmdXR1cmUgaW1wbGVtZW50YXRpb24KICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZWVkZWQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ092ZXJ2aWV3SGVhZGVyJzsKICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb3JyZWN0IFNldCBDU1MgY2xhc3MgYW5kIG9yZGVyIGJ5IGxpbmsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgZWFjaCBoZWFkZXIKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgZ2V0IHN1cnZleSBvYmplY3QKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CiAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRQYXJhbXtTdGFydEhpdH0KICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkUGFyYW17UGFnZVNob3dufSArICRQYXJhbXtTdGFydEhpdH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBnZXQgc3VydmV5IGRhdGEKICAgICAgICAgICAgICAgIG15ICVEYXRhID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgSUQgaWYgISVEYXRhOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgcmVjb3JkIGJsb2NrCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgY29sdW1uIHJlY29yZCBibG9ja3MKICAgICAgICAgICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyBsaW5rcyBpZiBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rU3RhcnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rRW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgdGhlcmUgYXJlIG5vIHN1cnZleXMgdG8gc2hvdywgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkIGluIHRoZSB0YWJsZQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBUb3RhbENvbHVtbnMgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5T3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICAgICAgQ29sdW1uQ291bnQgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFRyYW5zbGF0ZSgiLSBDaGFuZ2UgU3RhdHVzIC0iKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJBZGQgTmV3IFN1cnZleSIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoIlN1cnZleSBFZGl0IikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiU3VydmV5IEVkaXQgUXVlc3Rpb25zIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiUXVlc3Rpb24gRWRpdCIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoIkFuc3dlciBFZGl0IikgfCBodG1sICVdCgpbJSBUcmFuc2xhdGUoIkNhbid0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4iKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJTdGF0dXMgY2hhbmdlZC4iKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4iKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJDb21wbGV0ZSIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoIkluY29tcGxldGUiKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJDaGVja2JveCIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoIkNoZWNrYm94IChMaXN0KSIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoIlJhZGlvIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiUmFkaW8gKExpc3QpIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiU3RhdHMgT3ZlcnZpZXciKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJTdXJ2ZXkgRGVzY3JpcHRpb24iKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJTdXJ2ZXkgSW50cm9kdWN0aW9uIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiVGV4dGFyZWEiKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJZZXMvTm8iKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJZZXNObyIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoImFuc3dlcmVkIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgibm90IGFuc3dlcmVkIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiU3RhdHMgRGV0YWlsIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiU3RhdHMgRGV0YWlscyIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoIllvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4iKSB8IGh0bWwgJV0KWyUgVHJhbnNsYXRlKCJTdXJ2ZXkjIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiLSBObyBxdWV1ZSBzZWxlY3RlZCAtIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiTWFzdGVyIikgfCBodG1sICVdClslIFRyYW5zbGF0ZSgiTmV3IFN0YXR1cyIpIHwgaHRtbCAlXQpbJSBUcmFuc2xhdGUoIlF1ZXN0aW9uIFR5cGUiKSB8IGh0bWwgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIEZvcm1TY3JlZW4gTm9TaWRlYmFyIj4KCiAgICA8aDE+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IFN1cnZleSIpIHwgaHRtbCAlXTwvaDE+CiAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IlN1cnZleSIgaWQ9IlN1cnZleSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN1cnZleU5ldyIgLz4KCiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpdGxlIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuVGl0bGVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSaWNoVGV4dCIpICVdClslIEluc2VydFRlbXBsYXRlKCJSaWNoVGV4dEVkaXRvci50dCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJSaWNoVGV4dCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRyb2R1Y3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkludHJvZHVjdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJJbnRyb2R1Y3Rpb24iIG5hbWU9IkludHJvZHVjdGlvbiIgbmFtZT0iSW50cm9kdWN0aW9uIiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnRyb2R1Y3Rpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJTdXJ2ZXkgSW50cm9kdWN0aW9uIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5JbnRyb2R1Y3Rpb24gJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkludHJvZHVjdGlvbiIpICVdCgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvblNlbmRlciI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJTZW5kZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iTm90aWZpY2F0aW9uU2VuZGVyIiBuYW1lPSJOb3RpZmljYXRpb25TZW5kZXIiIHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvblNlbmRlclNlcnZlckVycm9yIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuTm90aWZpY2F0aW9uU2VuZGVyIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvblN1YmplY3QiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiU3ViamVjdCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJOb3RpZmljYXRpb25TdWJqZWN0IiBuYW1lPSJOb3RpZmljYXRpb25TdWJqZWN0IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0U2VydmVyRXJyb3IgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb3RpZmljYXRpb25Cb2R5IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOb3RpZmljYXRpb25Cb2R5Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkJvZHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJOb3RpZmljYXRpb25Cb2R5IiBuYW1lPSJOb3RpZmljYXRpb25Cb2R5IiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25Cb2R5U2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iTm90aWZpY2F0aW9uIEJvZHkiIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb3RpZmljYXRpb25Cb2R5IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUXVldWVzIj5bJSBUcmFuc2xhdGUoIlF1ZXVlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZVN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFR5cGVzIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaWNrZXRUeXBlSURzIj5bJSBUcmFuc2xhdGUoIlRpY2tldCBUeXBlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaWNrZXRUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFR5cGVzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFNlcnZpY2VzIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSURzIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2VzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlcnZpY2VTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0U2VydmljZXMiKSAlXQoKClslIFJlbmRlckJsb2NrU3RhcnQoIkludGVybmFsRGVzY3JpcHRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlc2NyaXB0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkludGVybmFsIERlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iRGVzY3JpcHRpb24iIG5hbWU9IkRlc2NyaXB0aW9uIiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5EZXNjcmlwdGlvblNlcnZlckVycm9yIHwgaHRtbCAlXSIgdGl0bGU9IkludGVybmFsIERlc2NyaXB0aW9uIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkludGVybmFsRGVzY3JpcHRpb24iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJpY0Vycm9yIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkl0ZW1OYW1lIHwgaHRtbCAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJpY0Vycm9yIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyaWNTZXJ2ZXJFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyaWNTZXJ2ZXJFcnJvciIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiQ3JlYXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDwvZm9ybT4KCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXkiIGlkPSJTdXJ2ZXkiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdXJ2ZXlTYXZlIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgR2VuZXJhbCBJbmZvIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVGl0bGUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdHlwZT0idGV4dCIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuVGl0bGVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHQiKSAlXQpbJSBJbnNlcnRUZW1wbGF0ZSgiUmljaFRleHRFZGl0b3IudHQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmljaFRleHQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW50cm9kdWN0aW9uIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkludHJvZHVjdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iSW50cm9kdWN0aW9uIiBuYW1lPSJJbnRyb2R1Y3Rpb24iIG5hbWU9IkludHJvZHVjdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuSW50cm9kdWN0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iU3VydmV5IEludHJvZHVjdGlvbiIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuSW50cm9kdWN0aW9uICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50cm9kdWN0aW9uIikgJV0KCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOb3RpZmljYXRpb25TZW5kZXIiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiU2VuZGVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJOb3RpZmljYXRpb25TZW5kZXIiIG5hbWU9Ik5vdGlmaWNhdGlvblNlbmRlciIgdHlwZT0idGV4dCIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTm90aWZpY2F0aW9uU2VuZGVyU2VydmVyRXJyb3IgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uU3ViamVjdCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJOb3RpZmljYXRpb25TdWJqZWN0IiBuYW1lPSJOb3RpZmljYXRpb25TdWJqZWN0IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzc1cGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0U2VydmVyRXJyb3IgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm90aWZpY2F0aW9uQm9keSIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOb3RpZmljYXRpb25Cb2R5Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkJvZHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iTm90aWZpY2F0aW9uQm9keSIgbmFtZT0iTm90aWZpY2F0aW9uQm9keSIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTm90aWZpY2F0aW9uQm9keVNlcnZlckVycm9yIHwgaHRtbCAlXSIgdGl0bGU9Ik5vdGlmaWNhdGlvbiBCb2R5IiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5Ob3RpZmljYXRpb25Cb2R5IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vdGlmaWNhdGlvbkJvZHkiKSAlXQoKICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlF1ZXVlcyI+WyUgVHJhbnNsYXRlKCJRdWV1ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlF1ZXVlU3RyaW5nICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFR5cGVzIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpY2tldFR5cGVJRHMiPlslIFRyYW5zbGF0ZSgiVGlja2V0IFR5cGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaWNrZXRUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRUeXBlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRTZXJ2aWNlcyIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSURzIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2VzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRTZXJ2aWNlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRlcm5hbERlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlc2NyaXB0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkludGVybmFsIERlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IkRlc2NyaXB0aW9uIiBuYW1lPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuRGVzY3JpcHRpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJJbnRlcm5hbCBEZXNjcmlwdGlvbiIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50ZXJuYWxEZXNjcmlwdGlvbiIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljRXJyb3IiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmVyRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2ZXJFcnJvciIpICVdCgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvcm0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFF1ZXN0aW9ucyIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgUXVlc3Rpb25zIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJZb3UgYXJlIGhlcmUiKSB8IGh0bWwgJV06PC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTdXJ2ZXkgUXVlc3Rpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlBZGRRdWVzdGlvbiIpICVdCgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b21NZWRpdW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIFF1ZXN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXlRdWVzdGlvbnMiIGlkPSJTdXJ2ZXlRdWVzdGlvbnMiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlF1ZXN0aW9uQWRkIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlF1ZXN0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlR5cGUgdGhlIHF1ZXN0aW9uIikgfCBodG1sICVdOiZuYnNwOzwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iUXVlc3Rpb24iIG5hbWU9IlF1ZXN0aW9uIiBjbGFzcz0iVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5RdWVzdGlvbkVycm9yQ2xhc3MgfCBodG1sICVdICIgc2l6ZT0iNjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlbGVjdGlvblR5cGUgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJRdWVzdGlvbkVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlF1ZXN0aW9uU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQW5zd2VyUmVxdWlyZWQiPiBbJSBUcmFuc2xhdGUoIkFuc3dlciByZXF1aXJlZCIpIHwgaHRtbCAlXTombmJzcDs8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFuc3dlclJlcXVpcmVkU2VsZWN0ICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFBsdXMiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT4gWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5QWRkUXVlc3Rpb24iKSAlXQoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleU5vUXVlc3Rpb25zU2F2ZWQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iU3VydmV5RW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5Tm9RdWVzdGlvbnNTYXZlZCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlRdWVzdGlvbnNUYWJsZSIpICVdCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJRdWVzdGlvbiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVN0YXR1c0NvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTdGF0dXMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlTdGF0dXNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQW5zd2VyIFJlcXVpcmVkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlEZWxldGVDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5RGVsZXRlQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVF1ZXN0aW9uc1NhdmVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iID5bJSBEYXRhLlF1ZXN0aW9uIHwgdHJ1bmNhdGUoOTApIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuVHlwZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkFuc3dlclJlcXVpcmVkKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcFslIERhdGEuQ2xhc3NVcCB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvblVwO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25Eb3duO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5UXVlc3Rpb25zU2F2ZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5UXVlc3Rpb25zUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuUXVlc3Rpb24gfCB0cnVuY2F0ZSg3MCkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TdGF0dXMpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5BbnN3ZXJSZXF1aXJlZCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBbJSBEYXRhLkNsYXNzVXAgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25VcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25bJSBEYXRhLkNsYXNzRG93biB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvbkRvd247U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlRdWVzdGlvbnNEZWxldGVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIFF1ZXN0aW9uRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVF1ZXN0aW9uc0RlbGV0ZUJ1dHRvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlRdWVzdGlvbnNSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5UXVlc3Rpb25zVGFibGUiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcuUXVlc3Rpb25EZWxldGUnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgIGlmICh3aW5kb3cuY29uZmlybShbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhIikgfCBKU09OICVdKSkgewogICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdbJSBFbnYoIkJhc2VsaW5rIikgJV0nICsgJCh0aGlzKS5kYXRhKCdxdWVyeS1zdHJpbmcnKTsKICAgIH0KICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgIHJldHVybiBmYWxzZTsKfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQoKICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAgUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDbG9zZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+IFslIFRyYW5zbGF0ZSgiQ2xvc2UiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlFZGl0UXVlc3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdCIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgUXVlc3Rpb24iKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLlF1ZXN0aW9uKSB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiA+WyUgVHJhbnNsYXRlKCJnbyBiYWNrIHRvIHF1ZXN0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJZb3UgYXJlIGhlcmUiKSB8IGh0bWwgJV06PC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUXVlc3Rpb246IikgfCBodG1sICVdIFslIERhdGEuUXVlc3Rpb24gfCBodG1sICVdCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJFZGl0IFF1ZXN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXlRdWVzdGlvbiIgaWQ9IlN1cnZleVF1ZXN0aW9uIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJRdWVzdGlvblNhdmUiIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUXVlc3Rpb25JRCIgdmFsdWU9IlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUXVlc3Rpb24iIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiUXVlc3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjYwIiBuYW1lPSJRdWVzdGlvbiIgaWQ9IlF1ZXN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV0iIGNsYXNzPSJWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLlF1ZXN0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiAvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlF1ZXN0aW9uRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUXVlc3Rpb25TZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFuc3dlclJlcXVpcmVkIj4gWyUgVHJhbnNsYXRlKCJBbnN3ZXIgcmVxdWlyZWQiKSB8IGh0bWwgJV06Jm5ic3A7PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BbnN3ZXJSZXF1aXJlZFNlbGVjdCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+IDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlBvc3NpYmxlIEFuc3dlcnMgRm9yIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdEFkZEFuc3dlciIpICVdCiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iQW5zd2VyQWRkIiBpZD0iQW5zd2VyQWRkIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJBbnN3ZXJBZGQiIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUXVlc3Rpb25JRCIgdmFsdWU9IlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQW5zd2VyIiBjbGFzcz0iTWFuZGF0b3J5Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkFkZCBBbnN3ZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJBbnN3ZXIiIG5hbWU9IkFuc3dlciIgc2l6ZT0iNjAiIGNsYXNzPSJWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkFuc3dlclNlcnZlckVycm9yIHwgaHRtbCAlXSAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUGx1cyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV0iPiA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT4gWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRBZGRBbnN3ZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9BbnN3ZXJzU2F2ZWQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCIgaWQ9IlN1cnZleUVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQW5zd2Vyc1NhdmVkIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRUYWJsZSIpICVdCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXSA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiBbJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IFslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXSA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRUYWJsZURlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRUYWJsZURlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRSYWRpbyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckVkaXQ7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4gWyUgRGF0YS5BbnN3ZXIgfCB0cnVuY2F0ZSg5MCkgfCBodG1sICVdIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcFslIERhdGEuQ2xhc3NVcCB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJVcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93blslIERhdGEuQ2xhc3NEb3duIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckRvd247U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFJhZGlvRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBbnN3ZXJEZWxldGUiIGhyZWY9IiMiIGRhdGEtcXVlcnktc3RyaW5nPSJBY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0UmFkaW9EZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0UmFkaW8iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0Q2hlY2tib3giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJFZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+WyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwWyUgRGF0YS5DbGFzc1VwIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlclVwO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRG93bjtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0Q2hlY2tib3hEZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFuc3dlckRlbGV0ZSIgaHJlZj0iIyIgZGF0YS1xdWVyeS1zdHJpbmc9IkFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJEZWxldGU7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRDaGVja2JveERlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRDaGVja2JveCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRZZXNubyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gWyUgVHJhbnNsYXRlKCJZZXMiKSB8IGh0bWwgJV0gPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwRGlzYWJsZWQiIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93bkRpc2FibGVkIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gWyUgVHJhbnNsYXRlKCJObyIpIHwgaHRtbCAlXSA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBEaXNhYmxlZCIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duRGlzYWJsZWQiIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdFllc25vIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRUYWJsZSIpICVdCgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcuQW5zd2VyRGVsZXRlJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICBpZiAod2luZG93LmNvbmZpcm0oWyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyIpIHwgSlNPTiAlXSkpIHsKICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAnWyUgRW52KCJCYXNlbGluayIpICVdJyArICQodGhpcykuZGF0YSgncXVlcnktc3RyaW5nJyk7CiAgICB9CiAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFRleHRBcmVhIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiIGlkPSJTdXJ2ZXlFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGRvZXNuJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdFRleHRBcmVhIikgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiR28gYmFjayIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT4gWyUgVHJhbnNsYXRlKCJHbyBiYWNrIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBbnN3ZXJFZGl0IikgJV0KPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkFuc3dlckVkaXQiIGlkPSJBbnN3ZXJFZGl0IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQW5zd2VyU2F2ZSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFuc3dlcklEIiB2YWx1ZT0iWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJRdWVzdGlvbklEIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IEFuc3dlciIpIHwgaHRtbCAlXTogWyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdIDwvaDE+CiAgICAgICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoImdvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICAgICAgPGxpPlslIFRyYW5zbGF0ZSgiWW91IGFyZSBoZXJlIikgfCBodG1sICVdOjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJRdWVzdGlvbjoiKSB8IGh0bWwgJV0gWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQW5zd2VyOiIpIHwgaHRtbCAlXSBbJSBEYXRhLkFuc3dlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQW5zd2VyIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBbnN3ZXIiIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQW5zd2VyIikgfCBodG1sICVdOjwvbGFiZWw+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNjAiIGlkPSJBbnN3ZXIiIG5hbWU9IkFuc3dlciIgdmFsdWU9IlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXSIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuQW5zd2VyU2VydmVyRXJyb3IgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQW5zd2VyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQW5zd2VyU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiQW5zd2VyRWRpdCIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXIiKSAlXQo8ZGl2IGNsYXNzPSJPdmVydmlld0JveCBBUklBUm9sZU1haW4gWyUgRGF0YS5WaWV3IHwgaHRtbCAlXSI+CiAgICA8aDE+WyUgRGF0YS5UaXRsZU5hbWUgfCBodG1sICVdOiBbJSBEYXRhLlRpdGxlVmFsdWUgfCBodG1sICVdPC9oMT4KCiAgICBbJSBEYXRhLkRhdGFJblRoZU1pZGRsZSAlXQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkZpbHRlckxpbmsgJV1GaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTxzcGFuPlslIERhdGEuQ291bnQgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkZpbHRlckxpbmsgJV1GaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTxzcGFuPlslIERhdGEuQ291bnQgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdCiAgICAgICAgICAgICAgICAgICAgLQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU3BsaXQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIikgJV0KICAgICAgICAgICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUJhY2siKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJTdXJ2ZXlTZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI1N1cnZleVNlYXJjaCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZyggJ0FnZW50U3VydmV5U2VhcmNoJywgJ1slIERhdGEuUHJvZmlsZSB8IGh0bWwgJV0nICk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDb250ZXh0RnVuY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZXR0aW5ncyIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNvZyI+PC9pPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lciIgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudFByZWZlcmVuY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXAgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlZGlyZWN0VVJMIiB2YWx1ZT0iWyUgRGF0YS5SZXF1ZXN0ZWRVUkwgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIk1heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAvLyBiaW5kIHRoZSBDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIKICAgICQoJyNTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIFslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IEpTT04gJV0sICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExhYmVsOiBbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgSlNPTiAlXSwKICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICApOwogICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGV4dFNldHRpbmdzIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdBY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFjdGlvblJvdyAlXQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iT3ZlcnZpZXdab29tIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgfCB1cmkgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2hvcnQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXIiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgIENvcmUuVUkuQWN0aW9uUm93LkluaXQoKTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCgo8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBUaWNrZXRMaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgPGRpdiBpZD0iRW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9EYXRhRm91bmRNc2ciKSAlXQoKICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJtYXRyaXgiPgogICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVySGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkSW50cm9kdWN0aW9uSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkludHJvZHVjdGlvbiBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9SW50cm9kdWN0aW9uO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkludHJvZHVjdGlvbiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkSW50cm9kdWN0aW9uSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRGVzY3JpcHRpb25IZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGVzY3JpcHRpb24gWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PURlc2NyaXB0aW9uO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREZXNjcmlwdGlvbkhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvblNlbmRlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJOb3RpZmljYXRpb25TZW5kZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvblNlbmRlcjtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJOb3RpZmljYXRpb24gU2VuZGVyIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROb3RpZmljYXRpb25TZW5kZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25TdWJqZWN0SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik5vdGlmaWNhdGlvblN1YmplY3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvblN1YmplY3Q7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTm90aWZpY2F0aW9uIFN1YmplY3QiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3RIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25Cb2R5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik5vdGlmaWNhdGlvbkJvZHkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvbkJvZHk7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTm90aWZpY2F0aW9uIEJvZHkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvbkJvZHlIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0dXNIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdHVzIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1TdGF0dXM7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiU3RhdHVzIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0dXNIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDcmVhdGVUaW1lSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNyZWF0ZVRpbWUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PUNyZWF0ZVRpbWU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3JlYXRlVGltZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZUJ5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNyZWF0ZUJ5IFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1DcmVhdGVCeTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDcmVhdGVCeUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENoYW5nZVRpbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlVGltZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Q2hhbmdlVGltZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VUaW1lSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2hhbmdlQnlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlQnkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PUNoYW5nZUJ5O09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkNoYW5nZWQgQnkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZUJ5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIFslIElGIERhdGEuU3RhdHVzID09ICdJbnZhbGlkJyAlXUludmFsaWRbJSBFTkQgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRJbnRyb2R1Y3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5JbnRyb2R1Y3Rpb24gfCBodG1sICVdIj5bJSBEYXRhLkludHJvZHVjdGlvbiB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkSW50cm9kdWN0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRGVzY3JpcHRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZERlc2NyaXB0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uU2VuZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXIgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblNlbmRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgaHRtbCAlXSI+WyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROb3RpZmljYXRpb25TdWJqZWN0IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uQm9keSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCBodG1sICVdIj5bJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvbkJvZHkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0dXMiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0dXMpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0dXMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDcmVhdGVUaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3JlYXRlVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZUJ5IikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DcmVhdGVVc2VyRnVsbG5hbWUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENyZWF0ZUJ5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2hhbmdlVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZVRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VCeSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlVXNlckZ1bGxuYW1lIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VCeSIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9mb3JtPgo8L2Rpdj4KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICQoJy5NYXN0ZXJBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgaWYgKEV2ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRzIikgJV0KPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiU3RhdHMgT3ZlcnZpZXcgb2YiKSB8IGh0bWwgJV0gOiBbJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgJV0gLSBbJSBEYXRhLlRpdGxlICVdIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMj48L2gyPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b21NZWRpdW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiUmVxdWVzdHMgVGFibGUiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXRhaWxzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VuZCBUaW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVm90ZSBUaW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0c1ZvdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlNlZURldGFpbHMgQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVN0YXRzRGV0YWlsO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UmVxdWVzdElEPVslIERhdGEuUmVxdWVzdElEIHwgdXJpICVdO1RpY2tldE51bWJlcj1bJSBEYXRhLlRpY2tldE51bWJlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zZWFyY2gtcGx1cyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNlZSBEZXRhaWxzIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZW5kVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVm90ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iTGlua1pvb21WaWV3IEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9WyUgRGF0YS5UaWNrZXRJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0TnVtYmVyIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0c1ZvdGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIFByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ2xvc2UiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS10aW1lcyI+PC9pPiBbJSBUcmFuc2xhdGUoIkNsb3NlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgPC9kaXY+CjwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnYS5MaW5rWm9vbVZpZXcnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICB3aW5kb3cub3BlbmVyLkNvcmUuVUkuUG9wdXAuRmlyZVBvcHVwRXZlbnQoJ1VSTCcsIHsgVVJMOiAkKHRoaXMpLmF0dHIoJ2hyZWYnKX0pOwogICAgICAgIHdpbmRvdy5jbG9zZSgpOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRzRGV0YWlsIikgJV0KPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiU3VydmV5IFN0YXQgRGV0YWlscyIpIHwgaHRtbCAlXSA6IFslIFRyYW5zbGF0ZSgiVGlja2V0IikgfCBodG1sICVdI1slIERhdGEuVGlja2V0TnVtYmVyICVdIDogWyUgQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSAlXVslIERhdGEuU3VydmV5TnVtYmVyICVdIC0gWyUgRGF0YS5UaXRsZSAlXSA6ICA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICA8YSBjbGFzcz0iSGlzdG9yeUJhY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDI+PC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkRldGFpbHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdHNEZXRhaWxRdWVzdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJbJSBEYXRhLkNsYXNzICVdIj5bJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0c0RldGFpbEFuc3dlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgWyUgRGF0YS5DbGFzcyAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQW5zd2VyICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdHNEZXRhaWxBbnN3ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzRGV0YWlsUXVlc3Rpb24iKSAlXQogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiR28gYmFjayIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT4gWyUgVHJhbnNsYXRlKCJHbyBiYWNrIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzRGV0YWlsIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVpvb20iKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFyaWFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShDb25maWcoIlN1cnZleTo6SG9vayIpKSB8IGh0bWwgJV1bJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV0gLSBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXTwvaDE+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkgSW5mb3JtYXRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ3JlYXRlVXNlckZ1bGxuYW1lIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiID5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3A+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DaGFuZ2VVc2VyRnVsbG5hbWUgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTdGF0dXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0dXMpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlNlbnQgcmVxdWVzdHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLlNlbmRSZXF1ZXN0IHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiUmVjZWl2ZWQgc3VydmV5cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuUmVxdWVzdENvbXBsZXRlIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZW51SXRlbSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgaWQ9IlslIERhdGEuTWVudUlEIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIiBbJSBEYXRhLkxpbmtQYXJhbSAlXSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJNZW51SXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVN0YXR1cyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IkFjdGlvbkZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN1cnZleVN0YXR1cyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5ld1N0YXR1c1N0ciAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVN0YXR1cyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3VydmV5IERldGFpbHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj5bJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPlslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlF1ZXVlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgdGl0bGU9IlslIERhdGEuUXVldWVMaXN0U3RyaW5nIHwgaHRtbCAlXSI+WyUgRGF0YS5RdWV1ZUxpc3RTdHJpbmcgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdIFslIERhdGEuTm9RdWV1ZU1lc3NhZ2UgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFR5cGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGlja2V0IFR5cGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiB0aXRsZT0iWyUgRGF0YS5UaWNrZXRUeXBlTGlzdFN0cmluZyB8IGh0bWwgJV0iPlslIERhdGEuVGlja2V0VHlwZUxpc3RTdHJpbmcgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFR5cGVzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFNlcnZpY2VzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGlja2V0IFNlcnZpY2VzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiB0aXRsZT0iWyUgRGF0YS5TZXJ2aWNlTGlzdFN0cmluZyB8IGh0bWwgJV0iPlslIERhdGEuU2VydmljZUxpc3RTdHJpbmcgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFNlcnZpY2VzIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleUJsb2NrIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AiIGlkPSJbJSBEYXRhLlN1cnZleUZpZWxkICVdQmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJvZHlIVE1MIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHdpZHRoPSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgaWQ9IklmcmFtZVN1cnZleVslIERhdGEuU3VydmV5RmllbGQgfCBodG1sICVdIiBvbmxvYWQ9IlN1cnZleS5BZ2VudC5TdXJ2ZXlab29tLklmcmFtZUF1dG9IZWlnaHQoJCgnI0lmcmFtZVN1cnZleVslIERhdGEuU3VydmV5RmllbGQgfCBodG1sICVdJykpOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1YmFjdGlvbj1IVE1MVmlldztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXTtTdXJ2ZXlGaWVsZD1bJSBEYXRhLlN1cnZleUZpZWxkIHwgaHRtbCAlXTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJvZHlIVE1MIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQm9keVBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iVGV4dGFyZWEiPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgVGV4dGFyZWEiPlslIERhdGEuQ29udGVudCB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJCb2R5UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5QmxvY2siKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3VydmV5IFJlc3VsdHMgR3JhcGgiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vU3RhdFJlc3VsdHMiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gc3RhdCByZXN1bHRzLiIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiTm9TdGF0UmVzdWx0cyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlFZGl0U3RhdHMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFN0YXRzUXVlc3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iU3BhY2luZ1RvcCBTdXJ2ZXlHcmFwaHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiIgdGl0bGU9IlslIERhdGEuUXVlc3Rpb24gJV0iID5bJSBEYXRhLlF1ZXN0aW9uIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV06IDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlFZGl0U3RhdHNBbnN3ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBbnN3ZXIiPlslIFRyYW5zbGF0ZShEYXRhLkFuc3dlcikgfCBodG1sICVdPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlHcmFwaCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlHcmFwaENvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5R3JhcGhCYXIiIHN0eWxlPSJ3aWR0aDpbJSBEYXRhLkFuc3dlclBlcmNlbnRUYWJsZSB8IGh0bWwgJV0lOyI+PC9kaXYgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iU3VydmV5R3JhcGhMZXllbmQiPlslIERhdGEuQW5zd2VyUGVyY2VudCB8IGh0bWwgJV0lPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5RWRpdFN0YXRzQW5zd2VyIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5RWRpdFN0YXRzUXVlc3Rpb24iKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUVkaXRTdGF0cyIpICVdCgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwICgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwoKICAgICQoJyNOZXdTdGF0dXMnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgIH0pOwoKICAgIENvcmUuQ29uZmlnLlNldCgnU3VydmV5LkhUTUxSaWNoVGV4dEhlaWdodERlZmF1bHQnLCAiWyUgRGF0YS5IVE1MUmljaFRleHRIZWlnaHREZWZhdWx0IHwgaHRtbCAlXSIpOwogICAgQ29yZS5Db25maWcuU2V0KCdTdXJ2ZXkuSFRNTFJpY2hUZXh0SGVpZ2h0TWF4JywgIlslIERhdGEuSFRNTFJpY2hUZXh0SGVpZ2h0TWF4IHwgaHRtbCAlXSIpOwoKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlab29tIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleSIpICVdCjxkaXYgY2xhc3M9IkNvbnRlbnQgQVJJQVJvbGVNYWluIiBpZD0iTWFpbkJveCI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSIpIHwgaHRtbCAlXTogWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gyPgogICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNUaWNrZXQiKSAlXQogICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQiKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgQ29uZmlnKCJUaWNrZXQ6Okhvb2siKSB8IGh0bWwgJV1bJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDEwMCkgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1RpY2tldCIpICVdCgogICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgRGF0YS5JbnRyb2R1Y3Rpb24gJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJQdWJsaWNTdXJ2ZXlWb3RlIiAvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlB1YmxpY1N1cnZleUtleSIgdmFsdWU9IlslIERhdGEuUHVibGljU3VydmV5S2V5IHwgaHRtbCAlXSIgLz4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlN1cnZleSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMiKSB8IGh0bWwgJV06CiAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljUXVlc3Rpb25zIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb25Db250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJZZXNObyIpICVdCgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uICVdIDwvZGl2PgogICAgICAgICAgICAgICAgWyUgRGF0YS5FcnJvclRleHQgJV0KCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJQdWJsaWNTdXJ2ZXlWb3RlMVslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1ZZXMiIG5hbWU9IlB1YmxpY1N1cnZleVZvdGUxW1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiB2YWx1ZT0iWWVzIiBbJSBEYXRhLlllc1NlbGVjdGVkIHwgaHRtbCAlXSAvPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJBbnN3ZXIiIGZvcj0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWWVzIj5bJSBUcmFuc2xhdGUoIlllcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdTm8iIG5hbWU9IlB1YmxpY1N1cnZleVZvdGUxW1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiB2YWx1ZT0iTm8iICBbJSBEYXRhLk5vU2VsZWN0ZWQgfCBodG1sICVdIC8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciIgZm9yPSJQdWJsaWNTdXJ2ZXlWb3RlMVslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1ObyI+WyUgVHJhbnNsYXRlKCJObyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJZZXNObyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJSYWRpbyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gJV0gPC9kaXY+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkVycm9yVGV4dCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJSYWRpb2IiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iUHVibGljU3VydmV5Vm90ZTJbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIG5hbWU9IlB1YmxpY1N1cnZleVZvdGUyW1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiB2YWx1ZT0iWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIFslIERhdGEuQW5zd2VyU2VsZWN0ZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iQW5zd2VyIiBmb3I9IlB1YmxpY1N1cnZleVZvdGUyWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIj5bJSBEYXRhLkFuc3dlciB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyUmFkaW9iIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlclJhZGlvIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlckNoZWNrYm94IikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4gWyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiAlXSA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIERhdGEuRXJyb3JUZXh0ICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlckNoZWNrYm94YiIpICVdCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJQdWJsaWNTdXJ2ZXlWb3RlM1slIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlM1tbJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXV0iIHZhbHVlPSJZZXMiIFslIERhdGEuQW5zd2VyU2VsZWN0ZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iQW5zd2VyIiBmb3I9IlB1YmxpY1N1cnZleVZvdGUzWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iPlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJDaGVja2JveGIiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyQ2hlY2tib3giKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyVGV4dGFyZWEiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uICVdIDwvZGl2PgogICAgICAgICAgICAgICAgWyUgRGF0YS5FcnJvclRleHQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHQiKSAlXQogICAgICAgICAgICAgICAgWyUgSW5zZXJ0VGVtcGxhdGUoIkN1c3RvbWVyUmljaFRleHRFZGl0b3IudHQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmljaFRleHQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRBbnN3ZXJbJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHRpdGxlPSJbJSBEYXRhLlF1ZXN0aW9uICVdIiBpZD0iUmljaFRleHRbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlNFtbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgY2xhc3M9IlJpY2hUZXh0IERvbnRQcmludCIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuVmFsdWUgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJUZXh0YXJlYSIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljUXVlc3Rpb25zIikgJV0KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyIgaWQ9IkJvdHRvbUFjdGlvblJvdyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRmluaXNoIikgfCBodG1sICVdIj4gWyUgVHJhbnNsYXRlKCJGaW5pc2giKSB8IGh0bWwgJV0gPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvcm0+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljU3VydmV5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleU1lc3NhZ2UiKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Q29tcG9zZSBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDI+IFslIFRyYW5zbGF0ZShEYXRhLk1lc3NhZ2VUeXBlKSB8IGh0bWwgJV0gPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgPGg0PiBbJSBUcmFuc2xhdGUoRGF0YS5NZXNzYWdlSGVhZGVyKSB8IGh0bWwgJV0gPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9IlNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTWVzc2FnZSkgfCBodG1sICVdCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaG93QW5zd2Vyc0J1dHRvbiIpICVdCiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTaG93Vm90ZURhdGEiIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJQdWJsaWNTdXJ2ZXlLZXkiIHZhbHVlPSJbJSBEYXRhLlB1YmxpY1N1cnZleUtleSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgPlslIFRyYW5zbGF0ZSgiU2hvdyBteSBhbnN3ZXJzIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNob3dBbnN3ZXJzQnV0dG9uIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleU1lc3NhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljU3VydmV5Vm90ZURhdGEiKSAlXQo8ZGl2IGNsYXNzPSJDb250ZW50IEFSSUFSb2xlTWFpbiIgaWQ9Ik1haW5Cb3giPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJUaGVzZSBhcmUgeW91ciBhbnN3ZXJzIikgfCBodG1sICVdOjwvaDI+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU3VydmV5IFRpdGxlIikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSIpIHwgaHRtbCAlXTogWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gyPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgRGF0YS5JbnRyb2R1Y3Rpb24gJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxmaWVsZHNldCBjbGFzcz0iU3VydmV5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlc2UgYXJlIHlvdXIgYW5zd2VycyIpIHwgaHRtbCAlXToKICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleVZvdGVRdWVzdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb25Db250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gfCBodG1sICVdOjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXlWb3RlQW5zd2VyIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQW5zd2VyIj4KICAgICAgICAgICAgICAgIFslIERhdGEuQW5zd2VyIHwgaHRtbCAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljU3VydmV5Vm90ZUFuc3dlciIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleVZvdGVRdWVzdGlvbiIpICVdCiAgICA8L2ZpZWxkc2V0Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleVZvdGVEYXRhIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpTdXJ2ZXk6OlJlcXVlc3RzU2VuZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBiYXNlIHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN1cnZleScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdTZW5kIHBlbmRpbmcgc3VydmV5IHJlcXVlc3RzLicpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnZm9yY2UnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJBY3R1YWxseSBzZW5kIHRoZSByZXF1ZXN0cyBub3cuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDAsCiAgICApOwoKICAgICRTZWxmLT5BZGRpdGlvbmFsSGVscCg8PCJFT0YiKTsKCiA8eWVsbG93PkNvbmZpZ3VyZSBkZWxheWVkIHJlcXVlc3Qgc2VuZGluZzo8L3llbGxvdz4KCiAgPHllbGxvdz4xLjwveWVsbG93PiBHbyB0byB5b3VyIFN5c0NvbmZpZyAoU3VydmV5LT5Db3JlKSBhbmQgY29uZmlndXJlIDxncmVlbj5TdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZTwvZ3JlZW4+IHRvIGEgaGlnaGVyIHZhbHVlIHRoYW4gMAogIDx5ZWxsb3c+Mi48L3llbGxvdz4gQ3JlYXRlIGEgc3VydmV5LCBtYWtlIGl0IG1hc3RlcgogIDx5ZWxsb3c+My48L3llbGxvdz4gQ3JlYXRlIGEgdGlja2V0LCBjbG9zZSBpdAogIDx5ZWxsb3c+NC48L3llbGxvdz4gV2FpdCB0aGUgbmVjZXNzYXJ5IGFtb3VudCBvZiBob3VycyB5b3UgaGFkIGNvbmZpZ3VyZWQKICA8eWVsbG93PjUuPC95ZWxsb3c+IFlvdSBjYW4gZG8gYSBkcnkgcnVuIHRvIGdldCBhIGxpc3Qgb2Ygc3VydmV5IHJlcXVlc3RzIHRoYXQgd291bGQgYmUgc2VudCAoIGRvIG5vdCB1c2UgLS1mb3JjZSApCiAgPHllbGxvdz42LjwveWVsbG93PiBJZiB5b3UncmUgZmluZSB3aXRoIGl0LCBnbyBhZ2FpbiB0byBTeXNDb25maWcgKFN1cnZleS0+RGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2spIGFuZCBhY3RpdmF0ZSBkYWVtb24gdGFzayA8Z3JlZW4+IERhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kPC9ncmVlbj4KRU9GCgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbmRJbkhvdXJzQWZ0ZXJDbG9zZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3VydmV5OjpTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnKTsKICAgIGlmICggISRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgKSB7CiAgICAgICAgZGllICJObyBob3VycyBjb25maWd1cmVkIGluIFN1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UHJvY2Vzc2luZyBwZW5kaW5nIHN1cnZleSByZXF1ZXN0cy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICAjIGdldCBmb3JjZSBvcHRpb24KICAgIG15ICRGb3JjZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2ZvcmNlJyk7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbmQgc3VydmV5X3JlcXVlc3RzIHRoYXQgaGF2ZW4ndCBiZWVuIHNlbnQgeWV0CiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHRpY2tldF9pZCwgY3JlYXRlX3RpbWUsIHB1YmxpY19zdXJ2ZXlfa2V5CiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgV0hFUkUgc2VuZF90aW1lIElTIE5VTEwKICAgICAgICAgICAgT1JERVIgQlkgY3JlYXRlX3RpbWUgREVTQycsCiAgICApOwoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCJEQiBlcnJvciBkdXJpbmcgYSBQcmVwYXJlIGZ1bmN0aW9uLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAUmVxdWVzdExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBSZXF1ZXN0TGlzdCwgewogICAgICAgICAgICBJRCAgICAgICAgICAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFJvd1szXSwKICAgICAgICB9OwogICAgfQoKICAgIGlmICggIUBSZXF1ZXN0TGlzdCApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwogICAgfQoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICBteSAkVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJyk7CgogICAgIyBnZXQgU3lzdGVtVGltZSBpbiBVbml4VGltZQogICAgbXkgJFN5c3RlbVRpbWUgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpOwoKICAgIFJFUVVFU1Q6CiAgICBmb3IgbXkgJFJlcXVlc3QgKEBSZXF1ZXN0TGlzdCkgewoKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgVGlja2V0SUQgQ3JlYXRlVGltZSkpIHsKICAgICAgICAgICAgaWYgKCAhJFJlcXVlc3QtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5FcnJvcjogJE5lZWRlZCBtaXNzaW5nIGluIHNlcnZpY2VfcmVxdWVzdCByb3cuPC9yZWQ+XG4iKTsKICAgICAgICAgICAgICAgIG5leHQgUkVRVUVTVDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjb252ZXJ0IGNyZWF0ZV90aW1lIHRvIHVuaXh0aW1lCiAgICAgICAgbXkgJENyZWF0ZVRpbWUgPSAkVGltZU9iamVjdC0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkUmVxdWVzdC0+e0NyZWF0ZVRpbWV9LAogICAgICAgICk7CgogICAgICAgIG15ICRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1N1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlJyk7CgogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgIiAgUmVxdWVzdElEOiA8eWVsbG93PiRSZXF1ZXN0LT57SUR9PC95ZWxsb3c+XG4gICAtRm9yIFRpY2tldElEOiAkUmVxdWVzdC0+e1RpY2tldElEfVxuIgogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2VuZCBmb3Igc3VydmV5X3JlcXVlc3RzIHRoYXQgYXJlIHlvdW5nZXIgdGhhbiBDcmVhdGVUaW1lICsgJFNlbmRJTkhvdXJzQWZ0ZXJDbG9zZQogICAgICAgIGlmICggJFNlbmRJbkhvdXJzQWZ0ZXJDbG9zZSAqIDNfNjAwICsgJENyZWF0ZVRpbWUgPCAkU3lzdGVtVGltZSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgIiAgIC1Ta2lwcGVkIGJlY2F1c2Ugc2VuZCB0aW1lIHdhc24ndCByZWFjaGVkIHlldC5cblxuIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFJFUVVFU1Q7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICIgICAtU2VuZGluZyByZXF1ZXN0Li4uXG4iCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRGb3JjZSkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+UmVxdWVzdFNlbmQoCiAgICAgICAgICAgICAgICBUcmlnZ2VyU2VuZFJlcXVlc3RzID0+IDEsCiAgICAgICAgICAgICAgICBTdXJ2ZXlSZXF1ZXN0SUQgICAgID0+ICRSZXF1ZXN0LT57SUR9LAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICA9PiAkUmVxdWVzdC0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSAgICAgPT4gJFJlcXVlc3QtPntQdWJsaWNTdXJ2ZXlLZXl9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiICAgIDxyZWQ+RXJyb3Igc2VuZGluZyB0aGUgcmVxdWVzdDwvcmVkPlxuIikKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiICAgIDxncmVlbj5SZXF1ZXN0IGlzIHNlbnQgc3VjY2Vzc2Z1bGx5LjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkU2VsZi0+UHJpbnQoIlxuIik7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBEaWdlc3Q6Ok1ENTsKdXNlIE1haWw6OkFkZHJlc3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgYmFzZSBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OkFuc3dlcgogICAgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UXVlc3Rpb24KICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlJlcXVlc3QKICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlZvdGUKKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleSAtIHN1cnZleSBsaWIKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHN1cnZleSBmdW5jdGlvbnMuIEUuIGcuIHRvIGFkZCBzdXJ2ZXkgb3IgYW5kIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdMaWtlRXNjYXBlU3RyaW5nJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBTdXJ2ZXlBZGQoKQoKdG8gYWRkIGEgbmV3IHN1cnZleQoKICAgIG15ICRTdXJ2ZXlJRCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAnQSBUaXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shJywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyLCA1LCA5XSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHF1ZXVlcwogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgPT4gWzEsIDIsIDNdLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgdGlja2V0IHR5cGVzCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSBzZXJ2aWNlcwogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgVXNlcklEIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbgogICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBzZW5kIGNvbmRpdGlvbiBzdHJpbmcKICAgIG15ICRTZW5kQ29uZGl0aW9uU3RyZyA9ICRTZWxmLT5fQnVpbGRTZW5kQ29uZGl0aW9uU3RyZyglUGFyYW0pOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBpbnNlcnQgYSBuZXcgc3VydmV5CiAgICBteSAkU3RhdHVzID0gJ05ldyc7CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5ICh0aXRsZSwgaW50cm9kdWN0aW9uLCBkZXNjcmlwdGlvbiwgbm90aWZpY2F0aW9uX3NlbmRlciwKICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbl9zdWJqZWN0LCBub3RpZmljYXRpb25fYm9keSwgc3RhdHVzLCBzZW5kX2NvbmRpdGlvbnMsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksCiAgICAgICAgICAgICAgICBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5ICkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17VGl0bGV9LCAgICAgICAgICAgICAgXCRQYXJhbXtJbnRyb2R1Y3Rpb259LCAgICAgICAgXCRQYXJhbXtEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFwkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSwgXCRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSwgXCRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSwKICAgICAgICAgICAgXCRTdGF0dXMsIFwkU2VuZENvbmRpdGlvblN0cmcsIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBpZCBvZiB0aGUgc3VydmV5CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgV0hFUkUgdGl0bGUgPSA/CiAgICAgICAgICAgICAgICBBTkQgaW50cm9kdWN0aW9uID0gPwogICAgICAgICAgICAgICAgQU5EIGRlc2NyaXB0aW9uID0gPwogICAgICAgICAgICBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VGl0bGV9LCBcJFBhcmFte0ludHJvZHVjdGlvbn0sIFwkUGFyYW17RGVzY3JpcHRpb259LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFN1cnZleUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFN1cnZleUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIHNldCB0aGUgc3VydmV5IG51bWJlcgogICAgbXkgJFN1cnZleU51bWJlciA9ICRTdXJ2ZXlJRCArIDEwMDAwOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgU0VUIHN1cnZleW51bWJlciA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlOdW1iZXIsIFwkU3VydmV5SUQsIF0sCiAgICApOwoKICAgIHJldHVybiAkU3VydmV5SUQgaWYgISRQYXJhbXtRdWV1ZXN9OwogICAgcmV0dXJuICRTdXJ2ZXlJRCBpZiByZWYgJFBhcmFte1F1ZXVlc30gbmUgJ0FSUkFZJzsKCiAgICAjIGluc2VydCBuZXcgc3VydmV5LXF1ZXVlIHJlbGF0aW9ucwogICAgJFNlbGYtPlN1cnZleVF1ZXVlU2V0KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBRdWV1ZUlEcyA9PiAkUGFyYW17UXVldWVzfSwKICAgICk7CgogICAgcmV0dXJuICRTdXJ2ZXlJRDsKfQoKPWl0ZW0gU3VydmV5R2V0KCkKCnRvIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHN1cnZleQoKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gMTIzCiAgICApOwoKPWN1dAoKc3ViIFN1cnZleUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgc3VydmV5CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHN1cnZleW51bWJlciwgdGl0bGUsIGludHJvZHVjdGlvbiwgZGVzY3JpcHRpb24sIG5vdGlmaWNhdGlvbl9zZW5kZXIsCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25fc3ViamVjdCwgbm90aWZpY2F0aW9uX2JvZHksIHN0YXR1cywgc2VuZF9jb25kaXRpb25zLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LAogICAgICAgICAgICAgICAgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieQogICAgICAgICAgICBGUk9NIHN1cnZleQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICMgZ2V0IFNlbmRDb25kaXRpb24gYXMgaGFzaAogICAgICAgIG15ICRTZW5kQ29uZGl0aW9ucyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoIERhdGEgPT4gJFJvd1s5XSApIHx8IHt9OwoKICAgICAgICAjIHNldCBkYXRhIGZpZWxkcyBmb3Igc2VuZCBjb25kaXRpb25zCiAgICAgICAgSVRFTToKICAgICAgICBmb3IgbXkgJEl0ZW0gKHF3KFRpY2tldFR5cGVJRHMgU2VydmljZUlEcykpIHsKCiAgICAgICAgICAgIG5leHQgSVRFTSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VuZENvbmRpdGlvbnMtPnskSXRlbX0gKTsKCiAgICAgICAgICAgICREYXRheyRJdGVtfSA9ICRTZW5kQ29uZGl0aW9ucy0+eyRJdGVtfTsKICAgICAgICB9CgogICAgICAgICREYXRhe1N1cnZleUlEfSAgICAgICAgICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlOdW1iZXJ9ICAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7VGl0bGV9ICAgICAgICAgICAgICAgPSAkUm93WzJdOwogICAgICAgICREYXRhe0ludHJvZHVjdGlvbn0gICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtEZXNjcmlwdGlvbn0gICAgICAgICA9ICRSb3dbNF07CiAgICAgICAgJERhdGF7Tm90aWZpY2F0aW9uU2VuZGVyfSAgPSAkUm93WzVdOwogICAgICAgICREYXRhe05vdGlmaWNhdGlvblN1YmplY3R9ID0gJFJvd1s2XTsKICAgICAgICAkRGF0YXtOb3RpZmljYXRpb25Cb2R5fSAgICA9ICRSb3dbN107CiAgICAgICAgJERhdGF7U3RhdHVzfSAgICAgICAgICAgICAgPSAkUm93WzhdOwogICAgICAgICREYXRhe0NyZWF0ZVRpbWV9ICAgICAgICAgID0gJFJvd1sxMF07CiAgICAgICAgJERhdGF7Q3JlYXRlQnl9ICAgICAgICAgICAgPSAkUm93WzExXTsKICAgICAgICAkRGF0YXtDaGFuZ2VUaW1lfSAgICAgICAgICA9ICRSb3dbMTJdOwogICAgICAgICREYXRhe0NoYW5nZUJ5fSAgICAgICAgICAgID0gJFJvd1sxM107CiAgICB9CgogICAgaWYgKCAhJURhdGEgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIFN1cnZleUlEICRQYXJhbXtTdXJ2ZXlJRH0hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZXMKICAgICREYXRhe05vdGlmaWNhdGlvblNlbmRlcn0gIHx8PSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyJyk7CiAgICAkRGF0YXtOb3RpZmljYXRpb25TdWJqZWN0fSB8fD0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblN1YmplY3QnKTsKICAgICREYXRhe05vdGlmaWNhdGlvbkJvZHl9ICAgIHx8PSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uQm9keScpOwoKICAgICMgZ2V0IHF1ZXVlcwogICAgJERhdGF7UXVldWVzfSA9ICRTZWxmLT5TdXJ2ZXlRdWV1ZUdldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkUGFyYW17U3VydmV5SUR9LAogICAgKTsKCiAgICAjIGFkZGVkIENyZWF0ZUJ5CiAgICBpZiAoICEkUGFyYW17UHVibGljfSApIHsKCiAgICAgICAgIyBnZXQgdXNlciBvYmplY3QKICAgICAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgICAgIG15ICVDcmVhdGVVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICREYXRhe0NyZWF0ZUJ5fSwKICAgICAgICAgICAgQ2FjaGVkID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkRGF0YXtDcmVhdGVVc2VyTG9naW59ICAgICA9ICRDcmVhdGVVc2VySW5mb3tVc2VyTG9naW59OwogICAgICAgICREYXRhe0NyZWF0ZVVzZXJGaXJzdG5hbWV9ID0gJENyZWF0ZVVzZXJJbmZve1VzZXJGaXJzdG5hbWV9OwogICAgICAgICREYXRhe0NyZWF0ZVVzZXJMYXN0bmFtZX0gID0gJENyZWF0ZVVzZXJJbmZve1VzZXJMYXN0bmFtZX07CiAgICAgICAgJERhdGF7Q3JlYXRlVXNlckZ1bGxuYW1lfSAgPSAkQ3JlYXRlVXNlckluZm97VXNlckZ1bGxuYW1lfTsKCiAgICAgICAgIyBhZGRlZCBDaGFuZ2VCeQogICAgICAgIG15ICVDaGFuZ2VVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICREYXRhe0NoYW5nZUJ5fSwKICAgICAgICAgICAgQ2FjaGVkID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkRGF0YXtDaGFuZ2VVc2VyTG9naW59ICAgICA9ICRDaGFuZ2VVc2VySW5mb3tVc2VyTG9naW59OwogICAgICAgICREYXRhe0NoYW5nZVVzZXJGaXJzdG5hbWV9ID0gJENoYW5nZVVzZXJJbmZve1VzZXJGaXJzdG5hbWV9OwogICAgICAgICREYXRhe0NoYW5nZVVzZXJMYXN0bmFtZX0gID0gJENoYW5nZVVzZXJJbmZve1VzZXJMYXN0bmFtZX07CiAgICAgICAgJERhdGF7Q2hhbmdlVXNlckZ1bGxuYW1lfSAgPSAkQ2hhbmdlVXNlckluZm97VXNlckZ1bGxuYW1lfTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIFN1cnZleVVwZGF0ZSgpCgp0byB1cGRhdGUgYW4gZXhpc3Rpbmcgc3VydmV5CgogICAgJFN1cnZleU9iamVjdC0+U3VydmV5VXBkYXRlKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCAgICAgICAgICAgID0+IDQsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAnQSBUaXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shJywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyLCA1LCA5XSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHF1ZXVlcwogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgPT4gWzEsIDIsIDNdLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgdGlja2V0IHR5cGVzCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSBzZXJ2aWNlcwogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgVXNlcklEIFN1cnZleUlEIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbgogICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBxdWV1ZXMKICAgIGlmICggJFBhcmFte1F1ZXVlc30gJiYgcmVmICRQYXJhbXtRdWV1ZXN9IG5lICdBUlJBWScgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdRdWV1ZXMgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UuJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZQogICAgJFBhcmFte1F1ZXVlc30gfHw9IFtdOwoKICAgICMgYnVpbGQgc2VuZCBjb25kaXRpb24gc3RyaW5nCiAgICBteSAkU2VuZENvbmRpdGlvblN0cmcgPSAkU2VsZi0+X0J1aWxkU2VuZENvbmRpdGlvblN0cmcoJVBhcmFtKTsKCiAgICAjIHVwZGF0ZSB0aGUgc3VydmV5CiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgIFNFVCB0aXRsZSA9ID8sIGludHJvZHVjdGlvbiA9ID8sIGRlc2NyaXB0aW9uID0gPywgbm90aWZpY2F0aW9uX3NlbmRlciA9ID8sCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25fc3ViamVjdCA9ID8sIG5vdGlmaWNhdGlvbl9ib2R5ID0gPywgc2VuZF9jb25kaXRpb25zID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtUaXRsZX0sICAgICAgICAgICAgICBcJFBhcmFte0ludHJvZHVjdGlvbn0sICAgICAgICBcJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgXCRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9LCBcJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9LCBcJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9LAogICAgICAgICAgICBcJFNlbmRDb25kaXRpb25TdHJnLCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17U3VydmV5SUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgaW5zZXJ0IG5ldyBzdXJ2ZXktcXVldWUgcmVsYXRpb25zCiAgICByZXR1cm4gJFNlbGYtPlN1cnZleVF1ZXVlU2V0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgUXVldWVJRHMgPT4gJFBhcmFte1F1ZXVlc30sCiAgICApOwp9Cgo9aXRlbSBTdXJ2ZXlMaXN0KCkKCnRvIGdldCBhIGFycmF5IGxpc3Qgb2YgYWxsIHN1cnZleSBpdGVtcwoKICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5TGlzdCgpOwoKPWN1dAoKc3ViIFN1cnZleUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHN1cnZleSBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgT1JERVIgQlkgY3JlYXRlX3RpbWUgREVTQycsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdHMKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1pdGVtIFN1cnZleVNlYXJjaCgpCgpzZWFyY2ggaW4gc3VydmV5cwoKICAgIG15IEBJRHMgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTZWFyY2goCgogICAgICAgIE51bWJlciAgICAgICAgICAgICAgPT4gJzEzNCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICdzb21lIHRpdGxlJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnc29tZSBpbnRyb2R1Y3Rpb24nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ3NvbWUgZGVzY3JpcHRpb24nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICd1c2VyQGRvbWFpbicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnc29tZSBub3RpZmljYXRpb24gc3ViamVjdCcsICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ3NvbWUgbm90aWZpY2F0aW9uIGJvZHknLCAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLAogICAgICAgICMgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keQogICAgICAgIFdoYXQgICA9PiAnc29tZSB0ZXh0JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgU3RhdHVzID0+ICdzb21lIHN0YXR1cycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBDcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTAxLTMxIDEyOjAwOjAwJywKICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgID0+ICcxMjMnLCAgICAgICAgICAgICNVc2VySUQKICAgICAgICBDaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTMxIDEyOjAwOjAwJywKICAgICAgICBDaGFuZ2VCeSAgICAgICAgICAgID0+ICcxMjMnLCAgICAgICAgICAgICNVc2VySUQKCiAgICAgICAgT3JkZXJCeSA9PiBbICdTdXJ2ZXlJRCcsICdUaXRsZScgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdTdXJ2ZXlJRCcgXSwKICAgICAgICAjICgpU3VydmV5SUQsIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sCiAgICAgICAgIyBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QsIE5vdGlmaWNhdGlvbkJvZHksCiAgICAgICAgIyBTdGF0dXMsIENyZWF0ZVRpbWUsIENyZWF0ZUJ5LCBDaGFuZ2VUaW1lLCBDaGFuZ2VCeSkKCiAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAjIFRoZSBwYWlyaW5nIGlzIG1hZGUgYnkgdGhlIGFycmF5IGluZGV4ZXMuCgogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAnRG93bicsICdVcCcgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnRG93bicgXQogICAgICAgICMgKERvd24gfCBVcCkKCiAgICAgICAgTGltaXQgICAgID0+IDE1MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFN1cnZleVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgdmVyaWZ5IHRoYXQgYWxsIHBhc3NlZCBhcnJheSBwYXJhbWV0ZXJzIGNvbnRhaW4gYW4gYXJyYXkgcmVmZXJlbmNlCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9yZGVyQnkgT3JkZXJCeURpcmVjdGlvbikpIHsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgb3JkZXIgdGFibGUKICAgIG15ICVPcmRlckJ5VGFibGUgPSAoCgogICAgICAgICMgU3VydmV5IGl0ZW0gYXR0cmlidXRlcwogICAgICAgIFN1cnZleUlEICAgICAgICAgICAgPT4gJ3MuaWQnLAogICAgICAgIE51bWJlciAgICAgICAgICAgICAgPT4gJ3Muc3VydmV5bnVtYmVyJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICdzLnRpdGxlJywKICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdzLmludHJvZHVjdGlvbicsCiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAncy5kZXNjcmlwdGlvbicsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncy5ub3RpZmljYXRpb25fc2VuZGVyJywKICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdzLm5vdGlmaWNhdGlvbl9zdWJqZWN0JywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdzLm5vdGlmaWNhdGlvbl9ib2R5JywKICAgICAgICBTdGF0dXMgICAgICAgICAgICAgID0+ICdzLnN0YXR1cycsCiAgICAgICAgQ3JlYXRlVGltZSAgICAgICAgICA9PiAncy5jcmVhdGVfdGltZScsCiAgICAgICAgQ3JlYXRlQnkgICAgICAgICAgICA9PiAncy5jcmVhdGVfYnknLAogICAgICAgIENoYW5nZVRpbWUgICAgICAgICAgPT4gJ3MuY2hhbmdlX3RpbWUnLAogICAgICAgIENoYW5nZUJ5ICAgICAgICAgICAgPT4gJ3MuY2hhbmdlX2J5JywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRoZSB2YWx1ZSB0byBjaGVjayBpZiBpdCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlCiAgICAgICAgJE9yZGVyQnlTZWVueyRPcmRlckJ5fSA9IDE7CgogICAgfQoKICAgICMgY2hlY2sgaWYgT3JkZXJCeURpcmVjdGlvbiBhcnJheSBjb250YWlucyBvbmx5ICdVcCcgb3IgJ0Rvd24nCiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAoIEB7ICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAjIG9ubHkgJ1VwJyBvciAnRG93bicgYWxsb3dlZAogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ1VwJzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdEb3duJzsKCiAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeURpcmVjdGlvbiBjYW4gb25seSBjb250YWluICdVcCcgb3IgJ0Rvd24nISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSBAT3JkZXJCeUZpZWxkczsKICAgIG15ICRDb3VudCA9IDA7CiAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKCiAgICAgICAgIyBzZXQgdGhlIGRlZmF1bHQgb3JkZXIgZGlyZWN0aW9uCiAgICAgICAgbXkgJERpcmVjdGlvbiA9ICdERVNDJzsKCiAgICAgICAgIyBhZGQgdGhlIGdpdmVuIG9yZGVyIGRpcmVjdGlvbgogICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0tPlskQ291bnRdIGVxICdVcCcgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0FTQyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0tPlskQ291bnRdIGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gPSAnREVTQyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIFNRTAogICAgICAgIHB1c2ggQFNRTE9yZGVyQnksICAgICIkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSAkRGlyZWN0aW9uIjsKICAgICAgICBwdXNoIEBPcmRlckJ5RmllbGRzLCAkT3JkZXJCeVRhYmxleyRPcmRlckJ5fTsKCiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhlIG9yZGVyaW5nIGlzIG5vdCBkZXRlcm1pbmVkCiAgICAjIHdlIGFkZCBhbiBkZXNjZW5kaW5nIG9yZGVyaW5nIGJ5IGlkCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ1N1cnZleUlEJyB9ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSApIHsKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAiJE9yZGVyQnlUYWJsZXtTdXJ2ZXlJRH0gREVTQyI7CiAgICB9CgogICAgIyBTUUwKICAgIG15ICRTUUwgPSAnU0VMRUNUIHMuaWQgJzsKCiAgICAjIGV4dGVuZGVkIFNRTAogICAgbXkgJEV4dCA9ICcnOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBmdWxsLXRleHQgc2VhcmNoCiAgICBpZiAoICRQYXJhbXtXaGF0fSAmJiAkUGFyYW17V2hhdH0gbmUgJyonICkgewoKICAgICAgICAjIGRlZmluZSB0aGUgc2VhcmNoIGZpZWxkcyBmb3IgZnVsbC10ZXh0IHNlYXJjaAogICAgICAgIG15IEBTZWFyY2hGaWVsZHMgPSAoCiAgICAgICAgICAgICdzLnN1cnZleW51bWJlcicsCiAgICAgICAgICAgICdzLnRpdGxlJywKICAgICAgICAgICAgJ3MuaW50cm9kdWN0aW9uJywKICAgICAgICAgICAgJ3MuZGVzY3JpcHRpb24nLAogICAgICAgICAgICAncy5ub3RpZmljYXRpb25fc2VuZGVyJywKICAgICAgICAgICAgJ3Mubm90aWZpY2F0aW9uX3N1YmplY3QnLAogICAgICAgICAgICAncy5ub3RpZmljYXRpb25fYm9keScsCiAgICAgICAgICAgICdzLnN0YXR1cycsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIFNRTCBmb3IgdGhlIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICAkRXh0IC49ICREQk9iamVjdC0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiBcQFNlYXJjaEZpZWxkcywKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRQYXJhbXtXaGF0fSwKICAgICAgICAgICAgU2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgU2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgbnVtYmVyCiAgICBpZiAoICRQYXJhbXtOdW1iZXJ9ICkgewogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte051bWJlcn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgTE9XRVIocy5udW1iZXIpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17TnVtYmVyfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9ICJcJSRQYXJhbXtUaXRsZX1cJSI7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtUaXRsZX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17VGl0bGV9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKHMudGl0bGUpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17VGl0bGV9IC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgaW50cm9kdWN0aW9uCiAgICBpZiAoICRQYXJhbXtJbnRyb2R1Y3Rpb259ICkgewogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID0gIlwlJFBhcmFte0ludHJvZHVjdGlvbn1cJSI7CiAgICAgICAgJFBhcmFte0ludHJvZHVjdGlvbn0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte0ludHJvZHVjdGlvbn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte0ludHJvZHVjdGlvbn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17SW50cm9kdWN0aW9ufSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQKICAgICAgICAgICAgLj0gIiBMT1dFUihzLmludHJvZHVjdGlvbikgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtJbnRyb2R1Y3Rpb259CiAgICAgICAgICAgIC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgZGVzY3JpcHRpb24KICAgIGlmICggJFBhcmFte0Rlc2NyaXB0aW9ufSApIHsKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb259ID0gIlwlJFBhcmFte0Rlc2NyaXB0aW9ufVwlIjsKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb259ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9ufSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtEZXNjcmlwdGlvbn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5kZXNjcmlwdGlvbikgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtEZXNjcmlwdGlvbn0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBub3RpZmljYXRpb24gc2VuZGVyCiAgICBpZiAoICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ICkgewogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID0gIlwlJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn1cJSI7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQKICAgICAgICAgICAgLj0gIiBMT1dFUihzLm5vdGlmaWNhdGlvbl9zZW5kZXIpIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBzdWJqZWN0CiAgICBpZiAoICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSApIHsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gPSAiXCUkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH1cJSI7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5ub3RpZmljYXRpb25fc3ViamVjdCkgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBib2R5CiAgICBpZiAoICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSApIHsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gPSAiXCUkUGFyYW17Tm90aWZpY2F0aW9uQm9keX1cJSI7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5ub3RpZmljYXRpb25fYm9keSkgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIHN0YXR1cwogICAgaWYgKCAkUGFyYW17U3RhdHVzfSApIHsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9ICJcJSRQYXJhbXtTdGF0dXN9XCUiOwogICAgICAgICRQYXJhbXtTdGF0dXN9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtTdGF0dXN9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtTdGF0dXN9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte1N0YXR1c30sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgTE9XRVIocy5zdGF0dXMpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17U3RhdHVzfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGNyZWF0ZSBieQogICAgaWYgKCAkUGFyYW17Q3JlYXRlQnl9ICkgewogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgcy5jcmVhdGVfYnkgPSAiIC4gJFBhcmFte0NyZWF0ZUJ5fTsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGNyZWF0ZSBieQogICAgaWYgKCAkUGFyYW17Q2hhbmdlQnl9ICkgewogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgcy5jcmVhdGVfYnkgPSAiIC4gJFBhcmFte0NoYW5nZUJ5fTsKICAgIH0KCiAgICAjIHNldCB0aW1lIHBhcmFtcwogICAgbXkgJVRpbWVQYXJhbXMgPSAoCgogICAgICAgICMgdGltZXMgaW4gY2hhbmdlX2l0ZW0KICAgICAgICBDcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICdzLmNyZWF0ZV90aW1lID49JywKICAgICAgICBDcmVhdGVUaW1lT2xkZXJEYXRlID0+ICdzLmNyZWF0ZV90aW1lIDw9JywKICAgICAgICBDaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICdzLmNoYW5nZV90aW1lID49JywKICAgICAgICBDaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICdzLmNoYW5nZV90aW1lIDw9JywKICAgICk7CgogICAgIyBjaGVjayBhbmQgYWRkIHRpbWUgcGFyYW1zIHRvIFdIRVJFCiAgICBUSU1FUEFSQU06CiAgICBmb3IgbXkgJFRpbWVQYXJhbSAoIHNvcnQga2V5cyAlVGltZVBhcmFtcyApIHsKCiAgICAgICAgbmV4dCBUSU1FUEFSQU0gaWYgISRQYXJhbXskVGltZVBhcmFtfTsKCiAgICAgICAgIyBjaGVjayBmb3JtYXQKICAgICAgICBpZiAoICRQYXJhbXskVGltZVBhcmFtfSAhfiBteyBcQSBcZFxkXGRcZC1cZFxkLVxkXGQgXHMgXGRcZDpcZFxkOlxkXGQgXHogfXhtcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBwYXJhbWV0ZXIgJFRpbWVQYXJhbSBoYXMgYW4gaW52YWxpZCBkYXRlIGZvcm1hdCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJFBhcmFteyRUaW1lUGFyYW19ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFteyRUaW1lUGFyYW19ICk7CgogICAgICAgICMgYWRkIHRpbWUgcGFyYW1ldGVyIHRvIFdIRVJFCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiRUaW1lUGFyYW1zeyRUaW1lUGFyYW19ICckUGFyYW17JFRpbWVQYXJhbX0nIjsKICAgIH0KCiAgICAjIGFkZCBXSEVSRSBzdGF0ZW1lbnQKICAgIGlmICgkRXh0KSB7CiAgICAgICAgJEV4dCA9ICcgV0hFUkUgJyAuICRFeHQ7CiAgICB9CgogICAgIyBhZGQgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgaWYgKEBTUUxPcmRlckJ5KSB7CiAgICAgICAgJEV4dCAuPSAnT1JERVIgQlkgJzsKICAgICAgICAkRXh0IC49IGpvaW4gJywgJywgQFNRTE9yZGVyQnk7CiAgICAgICAgJEV4dCAuPSAnICc7CiAgICAgICAgaWYgKEBPcmRlckJ5RmllbGRzKSB7CiAgICAgICAgICAgICRTUUwgLj0gJywgJyAuIGpvaW4gJywgJywgQE9yZGVyQnlGaWVsZHM7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIGV4dGVuZGVkIFNRTAogICAgJFNRTCAuPSAnIEZST00gc3VydmV5IHMgJzsKICAgICRTUUwgLj0gJEV4dDsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9LAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1pdGVtIFN1cnZleVN0YXR1c1NldCgpCgp0byBzZXQgYSBuZXcgc3VydmV5IHN0YXR1cyAoVmFsaWQsIEludmFsaWQsIE1hc3RlcikKCiAgICAkU3RhdHVzU2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgICAgIFN1cnZleUlEICA9PiAxMjMsCiAgICAgICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCiAgICApOwoKPWN1dAoKc3ViIFN1cnZleVN0YXR1c1NldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdXJ2ZXlJRCBOZXdTdGF0dXMpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGN1cnJlbnQgc3RhdHVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1Qgc3RhdHVzCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFN0YXR1cyA9ICcnOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFN0YXR1cyA9ICRSb3dbMF07CiAgICB9CgogICAgIyB0aGUgY3VycmVudCBzdGF0dXMKICAgIGlmICggJFN0YXR1cyBlcSAnTmV3JyB8fCAkU3RhdHVzIGVxICdJbnZhbGlkJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHF1ZXN0aW9uIGlkcwogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICBteSAkUXVlc3Q7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRRdWVzdCA9ICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ05vUXVlc3Rpb24nIGlmICEkUXVlc3Q7CgogICAgICAgIG15ICVRdWVzdGlvblR5cGUgPSAoCiAgICAgICAgICAgIFJhZGlvICAgID0+ICdSYWRpbycsCiAgICAgICAgICAgIENoZWNrYm94ID0+ICdDaGVja2JveCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIHF1ZXN0aW9ucyAodHlwZSByYWRpbyBhbmQgY2hlY2stYm94KQogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICAgICAgICAgIEFORCAocXVlc3Rpb25fdHlwZSA9ID8gT1IgcXVlc3Rpb25fdHlwZSA9ID8pJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9LCBcJFF1ZXN0aW9uVHlwZXtSYWRpb30sIFwkUXVlc3Rpb25UeXBle0NoZWNrYm94fSwgXSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICBteSBAUXVlc3Rpb25JRHM7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgIHB1c2goIEBRdWVzdGlvbklEcywgJFJvd1swXSApOwogICAgICAgIH0KICAgICAgICBmb3IgbXkgJE9uZUlEIChAUXVlc3Rpb25JRHMpIHsKCiAgICAgICAgICAgICMgZ2V0IGFsbCBhbnN3ZXIgaWRzIG9mIGEgcXVlc3Rpb24KICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCAgPT4gWyBcJE9uZUlEIF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb3VudGVyOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJFJvd1swXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICdJbmNvbXBsZXRlUXVlc3Rpb24nIGlmICRDb3VudGVyIDwgMjsKICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBzdGF0dXMKICAgICAgICBpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdNYXN0ZXInICkgewogICAgICAgICAgICBteSAkVmFsaWRTdGF0dXMgPSAnVmFsaWQnOwogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIHN0YXR1cyA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkVmFsaWRTdGF0dXMsIFwkUGFyYW17TmV3U3RhdHVzfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgICAgIGlmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ1ZhbGlkJyB8fCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnTWFzdGVyJyApIHsKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5IFNFVCBzdGF0dXMgPSA/CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05ld1N0YXR1c30sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICdTdGF0dXNTZXQnOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFN0YXR1cyBlcSAnVmFsaWQnICkgewoKICAgICAgICAjIHNldCBzdGF0dXMgTWFzdGVyCiAgICAgICAgaWYgKCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnTWFzdGVyJyApIHsKCiAgICAgICAgICAgICMgc2V0IGFueSAnTWFzdGVyJyBzdXJ2ZXkgdG8gJ1ZhbGlkJwogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIHN0YXR1cyA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkU3RhdHVzLCBcJFBhcmFte05ld1N0YXR1c30sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCAnTWFzdGVyJyB0byBnaXZlbiBzdXJ2ZXkKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmV3U3RhdHVzfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJ1N0YXR1c1NldCc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBzdGF0dXMgSW52YWxpZAogICAgICAgIGVsc2lmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ0ludmFsaWQnICkgewogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOZXdTdGF0dXN9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAnU3RhdHVzU2V0JzsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTdGF0dXMgZXEgJ01hc3RlcicgKSB7CgogICAgICAgICMgc2V0IHN0YXR1cyBWYWxpZAogICAgICAgIGlmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ1ZhbGlkJyB8fCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnSW52YWxpZCcgKSB7CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleQogICAgICAgICAgICAgICAgICAgIFNFVCBzdGF0dXMgPSA/CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05ld1N0YXR1c30sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICdTdGF0dXNTZXQnOwogICAgICAgIH0KICAgIH0KfQoKPWl0ZW0gU3VydmV5UXVldWVHZXQoKQoKZ2V0IGEgc3VydmV5X3F1ZXVlIHJlbGF0aW9uIGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKbXkgJFF1ZXVlc1JlZiA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVF1ZXVlR2V0KAogICAgU3VydmV5SUQgPT4gMywKKTsKCj1jdXQKCnN1YiBTdXJ2ZXlRdWV1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHF1ZXVlIGlkcyBmcm9tIGRhdGFiYXNlCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHF1ZXVlX2lkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXVlCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcXVldWVfaWQgQVNDJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAUXVldWVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAUXVldWVMaXN0LCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBcQFF1ZXVlTGlzdDsKfQoKPWl0ZW0gU3VydmV5UXVldWVTZXQoKQoKYWRkIGEgc3VydmV5X3F1ZXVlIHJlbGF0aW9uCgpteSAkUmVzdWx0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5UXVldWVTZXQoCiAgICBTdXJ2ZXlJRCA9PiAzLAogICAgUXVldWVJRHMgPT4gWzEsIDddLAopOwoKPWN1dAoKc3ViIFN1cnZleVF1ZXVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN1cnZleUlEIFF1ZXVlSURzKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcmVtb3ZlIGFsbCBleGlzdGluZyByZWxhdGlvbnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUKICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICApOwoKICAgICMgYWRkIGFsbCBzdXJ2ZXlfcXVldWUgcmVsYXRpb25zIHRvIGRhdGFiYXNlCiAgICBmb3IgbXkgJFF1ZXVlSUQgKCBAeyAkUGFyYW17UXVldWVJRHN9IH0gKSB7CgogICAgICAgICMgYWRkIHN1cnZleV9xdWV1ZSByZWxhdGlvbiB0byBkYXRhYmFzZQogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9xdWV1ZSAoc3VydmV5X2lkLCBxdWV1ZV9pZCkKICAgICAgICAgICAgICAgIFZBTFVFUyAoPywgPyknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUXVldWVJRCwgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBQdWJsaWNTdXJ2ZXlHZXQoKQoKdG8gZ2V0IGFsbCBwdWJsaWMgYXR0cmlidXRlcyBvZiBhIHN1cnZleQoKICAgIG15ICVQdWJsaWNTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlHZXQoCiAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAnQXc1ZGUzWGY1cUEnLAogICAgICAgICAgICBJbnZhbGlkICAgICAgICAgPT4gMSwgIyBvcHRpb25hbCB0byBrbm93IGlmIG9uZSBrZXkgd2FzIGFscmVhZHkgdXNlZC4KICAgICk7Cgo9Y3V0CgpzdWIgUHVibGljU3VydmV5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1B1YmxpY1N1cnZleUtleX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIHN1cnZleV9pZAogICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICBXSEVSRSBwdWJsaWNfc3VydmV5X2tleSA9ID8nOwoKICAgIG15ICRWYWxpZFN0cmcgPSAnIEFORCB2YWxpZF9pZCA9IDEnOwoKICAgICMgaWYgbm90IGludmFsaWQgc2hvdyBqdXN0IHZhbGlkIGtleXMKICAgIGlmICggJFBhcmFte0ludmFsaWR9ICkgewogICAgICAgICRWYWxpZFN0cmcgPSAnIEFORCB2YWxpZF9pZCA9IDAnOwogICAgfQogICAgJFNRTCAuPSAkVmFsaWRTdHJnOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcmVxdWVzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UHVibGljU3VydmV5S2V5fSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFN1cnZleUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFN1cnZleUlEID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gKCkgaWYgISRTdXJ2ZXlJRDsKCiAgICAjIGdldCBzdXJ2ZXkKICAgIG15ICRNYXN0ZXJTdGF0dXMgPSAnTWFzdGVyJzsKICAgIG15ICRWYWxpZFN0YXR1cyAgPSAnVmFsaWQnOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXludW1iZXIsIHRpdGxlLCBpbnRyb2R1Y3Rpb24KICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgKHN0YXR1cyA9ID8gT1Igc3RhdHVzID0gPyknLAogICAgICAgIEJpbmQgID0+IFsgXCRTdXJ2ZXlJRCwgXCRNYXN0ZXJTdGF0dXMsIFwkVmFsaWRTdGF0dXMsIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICREYXRhe1N1cnZleUlEfSAgICAgPSAkUm93WzBdOwogICAgICAgICREYXRhe1N1cnZleU51bWJlcn0gPSAkUm93WzFdOwogICAgICAgICREYXRhe1RpdGxlfSAgICAgICAgPSAkUm93WzJdOwogICAgICAgICREYXRhe0ludHJvZHVjdGlvbn0gPSAkUm93WzNdOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWl0ZW0gUHVibGljU3VydmV5SW52YWxpZFNldCgpCgp0byBzZXQgYSByZXF1ZXN0IGludmFsaWQKCiAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0KAogICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAnYVZrZEU4MkR3MnF3NmVyQ2RhJywKICAgICk7Cgo9Y3V0CgpzdWIgUHVibGljU3VydmV5SW52YWxpZFNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UHVibGljU3VydmV5S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJwogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcmVxdWVzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgV0hFUkUgcHVibGljX3N1cnZleV9rZXkgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UHVibGljU3VydmV5S2V5fSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFJlcXVlc3RJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0SUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFJlcXVlc3RJRDsKCiAgICAjIHVwZGF0ZSByZXF1ZXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgIFNFVCB2YWxpZF9pZCA9IDAsIHZvdGVfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUmVxdWVzdElEIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBFbGVtZW50RXhpc3RzKCkKCmV4aXN0cyBhbiBzdXJ2ZXktLCBxdWVzdGlvbi0sIGFuc3dlci0gb3IgcmVxdWVzdC1lbGVtZW50CgogICAgbXkgJEVsZW1lbnRFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgIElEID0+IDEyMywgICAgICAgICAgICMgU3VydmV5SUQsIFF1ZXN0aW9uSUQsIEFuc3dlcklELCBSZXF1ZXN0SUQKICAgICAgICBFbGVtZW50ID0+ICdTdXJ2ZXknICAjIFN1cnZleSwgUXVlc3Rpb24sIEFuc3dlciwgUmVxdWVzdAogICAgKTsKCj1jdXQKCnN1YiBFbGVtZW50RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEVsZW1lbnRJRCBFbGVtZW50KSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlTG9va3VwVGFibGUgPSAoCiAgICAgICAgU3VydmV5ICAgPT4gJ3N1cnZleScsCiAgICAgICAgUXVlc3Rpb24gPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgQW5zd2VyICAgPT4gJ3N1cnZleV9hbnN3ZXInLAogICAgICAgIFJlcXVlc3QgID0+ICdzdXJ2ZXlfcmVxdWVzdCcsCiAgICApOwoKICAgIG15ICRUYWJsZSA9ICRMb29rdXBUYWJsZXsgJFBhcmFte0VsZW1lbnR9IH07CiAgICBpZiAoICEkVGFibGUgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFbGVtZW50OiAnJFBhcmFte0VsZW1lbnR9JyBpcyBub3QgdmFsaWQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKGlkKQogICAgICAgICAgICBGUk9NICc7CiAgICAkU1FMIC49ICRUYWJsZTsKICAgICRTUUwgLj0gJyBXSEVSRSBpZCA9ID8nOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCBlbGVtZW50CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtFbGVtZW50SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRWxlbWVudEV4aXN0cyA9ICdObyc7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBpZiAoICRSb3dbMF0gKSB7CiAgICAgICAgICAgICRFbGVtZW50RXhpc3RzID0gJ1llcyc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkRWxlbWVudEV4aXN0czsKfQoKPWl0ZW0gR2V0UmljaFRleHREb2N1bWVudENvbXBsZXRlKCkKCmdldCBzb21lIHRleHQgcmVhZHkgdG8gc2hvdyBhcyByaWNoLXRleHQgYXR0YWNobWVudCBpbi1saW5lCgogICAgbXkgJFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPkdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICBUZXh0ID0+ICRSaWNoVGV4dCwKICAgICk7Cgo9Y3V0CgpzdWIgR2V0UmljaFRleHREb2N1bWVudENvbXBsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFRleHQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50IHBhcmFtZXRlciEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNsZWFuIEhUTUwgc3RyaW5nCiAgICBteSAkVGV4dCA9ICRQYXJhbXtUZXh0fTsKICAgICRUZXh0ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICMgZ2V0IGRvY3VtZW50IGNvbXBsZXRlCiAgICBteSAkSFRNTERvY3VtZW50Q29tcGxldGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgU3RyaW5nICA9PiAkVGV4dCwKICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICApOwoKICAgIHJldHVybiAkSFRNTERvY3VtZW50Q29tcGxldGU7Cn0KCj1pdGVtIF9CdWlsZFNlbmRDb25kaXRpb25TdHJnKCkKCmJ1aWxkIHNlbmQgY29uZGl0aW9uIHN0cmluZyB3aXRoIHRoZSBzaW5nbGUgaXRlbXMKCiAgICBteSAlU2VuZENvbmRpdGlvbnMgPSAkU3VydmV5T2JqZWN0LT5fQnVpbGRTZW5kQ29uZGl0aW9uU3RyZygKICAgICAgICBUaWNrZXRUeXBlSURzID0+IFsxLCAyLCAzXSwgIyAob3B0aW9uYWwpCiAgICAgICAgU2VydmljZUlEcyAgICA9PiBbMSwgMiwgM10sICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBfQnVpbGRTZW5kQ29uZGl0aW9uU3RyZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYnVpbGQgc2VuZCBjb25kaXRpb24gaGFzaAogICAgbXkgJVNlbmRDb25kaXRpb25zOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKHF3KFRpY2tldFR5cGVJRHMgU2VydmljZUlEcykpIHsKCiAgICAgICAgbmV4dCBJVEVNIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKTsKCiAgICAgICAgJFNlbmRDb25kaXRpb25zeyRJdGVtfSA9ICRQYXJhbXskSXRlbX07CiAgICB9CgogICAgIyBkdW1wIHNlbmQgY29uZGl0aW9ucyBhcyBzdHJpbmcKICAgIG15ICRTZW5kQ29uZGl0aW9uU3RyZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoIERhdGEgPT4gXCVTZW5kQ29uZGl0aW9ucyApOwoKICAgICMgTWFrZSBzdXJlIHRoZSByZXN1bHRpbmcgc3RyaW5nIGhhcyB0aGUgVVRGLTggZmxhZy4gWUFNTCBvbmx5IHNldHMgaXQgaWYKICAgICMgICBwYXJ0IG9mIHRoZSBkYXRhIGFscmVhZHkgaGFkIGl0LgogICAgdXRmODo6dXBncmFkZSgkU2VuZENvbmRpdGlvblN0cmcpOwoKICAgIHJldHVybiAkU2VuZENvbmRpdGlvblN0cmc7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6QW5zd2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OkFuc3dlciAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OlN1cnZleQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgc3VydmV5IGFuc3dlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gQW5zd2VyQWRkKCkKCnRvIGFkZCBhIG5ldyBhbnN3ZXIgdG8gYSBxdWVzdGlvbgoKICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlckFkZCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBRdWVzdGlvbklEID0+IDEwLAogICAgICAgIEFuc3dlciA9PiAnVGhlIEFuc3dlcicsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgUXVlc3Rpb25JRCBBbnN3ZXIpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgaW5zZXJ0IGFuc3dlcgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfYW5zd2VyIChxdWVzdGlvbl9pZCwgYW5zd2VyLCBwb3NpdGlvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwKICAgICAgICAgICAgICAgIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkpCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8sIDI1NSwgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17QW5zd2VyfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sIF0sCiAgICApOwp9Cgo9aXRlbSBBbnN3ZXJEZWxldGUoKQoKdG8gZGVsZXRlIGEgYW5zd2VyIGZyb20gYSBxdWVzdGlvbgoKICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlckRlbGV0ZSgKICAgICAgICBRdWVzdGlvbklEID0+IDEwLAogICAgICAgIEFuc3dlcklEID0+IDQsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhRdWVzdGlvbklEIEFuc3dlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgYW5zd2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtBbnN3ZXJJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICApOwp9Cgo9aXRlbSBBbnN3ZXJHZXQoKQoKdG8gZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgYW5zd2VyCgogICAgbXkgJUFuc3dlciA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckdldCgKICAgICAgICBBbnN3ZXJJRCA9PiAxMjMKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtBbnN3ZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbnN3ZXIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgcXVlc3Rpb25faWQsIGFuc3dlciwgcG9zaXRpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Fuc3dlcklEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtBbnN3ZXJJRH0gICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gPSAkUm93WzFdOwogICAgICAgICREYXRhe0Fuc3dlcn0gICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtQb3NpdGlvbn0gICA9ICRSb3dbM107CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gPSAkUm93WzRdOwogICAgICAgICREYXRhe0NyZWF0ZUJ5fSAgID0gJFJvd1s1XTsKICAgICAgICAkRGF0YXtDaGFuZ2VUaW1lfSA9ICRSb3dbNl07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgPSAkUm93WzddOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWl0ZW0gQW5zd2VyVXBkYXRlKCkKCnRvIHVwZGF0ZSBhbiBleGlzdGluZyBhbnN3ZXIKCiAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcGRhdGUoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgQW5zd2VySUQgPT4gNiwKICAgICAgICBRdWVzdGlvbklEID0+IDQsCiAgICAgICAgQW5zd2VyID0+ICdUaGUgQW5zd2VyJywKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBBbnN3ZXJJRCBRdWVzdGlvbklEIEFuc3dlcikpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyB1cGRhdGUgYW5zd2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBhbnN3ZXIgPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17QW5zd2VyfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte0Fuc3dlcklEfSwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXSwKICAgICk7Cn0KCj1pdGVtIEFuc3dlckxpc3QoKQoKdG8gZ2V0IGEgYXJyYXkgbGlzdCBvZiBhbGwgYW5zd2VyIGl0ZW1zCgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMQogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtRdWVzdGlvbklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUXVlc3Rpb25JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFuc3dlciBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHF1ZXN0aW9uX2lkLCBhbnN3ZXIKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBwb3NpdGlvbicsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVEYXRhOwogICAgICAgICREYXRhe0Fuc3dlcklEfSAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtRdWVzdGlvbklEfSA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7QW5zd2VyfSAgICAgPSAkUm93WzJdOwoKICAgICAgICBwdXNoIEBMaXN0LCBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aXRlbSBBbnN3ZXJTb3J0KCkKCnRvIHNvcnQgYWxsIGFuc3dlcnMgZnJvbSBhIHF1ZXN0aW9uCgogICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICBRdWVzdGlvbklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlclNvcnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1F1ZXN0aW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBRdWVzdGlvbklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYW5zd2VyIGxpc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/CiAgICAgICAgICAgIE9SREVSIEJZIHBvc2l0aW9uJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICBteSAkQ291bnRlciA9IDE7CiAgICBmb3IgbXkgJEFuc3dlcklEIChATGlzdCkgewoKICAgICAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgICAgICBTRVQgcG9zaXRpb24gPSA/CiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDb3VudGVyLCBcJEFuc3dlcklEIF0sCiAgICAgICAgKTsKCiAgICAgICAgJENvdW50ZXIrKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQW5zd2VyVXAoKQoKdG8gbW92ZSBhIGFuc3dlciB1cAoKICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlclVwKAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBBbnN3ZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJVcCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhRdWVzdGlvbklEIEFuc3dlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHBvc2l0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBpZCA9ID8KICAgICAgICAgICAgICAgIEFORCBxdWVzdGlvbl9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtBbnN3ZXJJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUG9zaXRpb247CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkUG9zaXRpb24gPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAkUG9zaXRpb24gPCAyOwoKICAgIG15ICRQb3NpdGlvblVwID0gJFBvc2l0aW9uIC0gMTsKCiAgICAjIGdldCBhbnN3ZXIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/IEFORCBwb3NpdGlvbiA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQb3NpdGlvblVwLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEFuc3dlcklERG93bjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBbnN3ZXJJRERvd24gPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJEFuc3dlcklERG93bjsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbiwgXCRBbnN3ZXJJRERvd24sIF0sCiAgICApOwoKICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uVXAsIFwkUGFyYW17QW5zd2VySUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQW5zd2VyRG93bigpCgp0byBtb3ZlIGEgYW5zd2VyIGRvd24KCiAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJEb3duKAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBBbnN3ZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJEb3duIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFF1ZXN0aW9uSUQgQW5zd2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgcG9zaXRpb24KICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Fuc3dlcklEfSwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRQb3NpdGlvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRQb3NpdGlvbiA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUG9zaXRpb247CgogICAgbXkgJFBvc2l0aW9uRG93biA9ICRQb3NpdGlvbiArIDE7CgogICAgIyBnZXQgYW5zd2VyCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPwogICAgICAgICAgICAgICAgQU5EIHBvc2l0aW9uID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBvc2l0aW9uRG93biwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRBbnN3ZXJJRFVwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEFuc3dlcklEVXAgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJEFuc3dlcklEVXA7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBTRVQgcG9zaXRpb24gPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUG9zaXRpb24sIFwkQW5zd2VySURVcCwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBTRVQgcG9zaXRpb24gPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUG9zaXRpb25Eb3duLCBcJFBhcmFte0Fuc3dlcklEfSwgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEFuc3dlckNvdW50KCkKCnRvIGNvdW50IGFsbCBhbnN3ZXJzIG9mIGEgcXVlc3Rpb24KCiAgICBteSAkQ291bnRBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJDb3VudCgKICAgICAgICBRdWVzdGlvbklEID0+IDEyMwogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJDb3VudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IGFuc3dlcnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ291bnRBbnN3ZXI7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ291bnRBbnN3ZXIgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQ291bnRBbnN3ZXI7Cn0KCj1pdGVtIFB1YmxpY0Fuc3dlclNldCgpCgp0byBzYXZlIGEgcHVibGljIHZvdGUKCiAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICdhVmtkRTgyRHcycXc2ZXJDZGEnLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBWb3RlVmFsdWUgPT4gJ1RoZSBWYWx1ZScsCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY0Fuc3dlclNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQdWJsaWNTdXJ2ZXlLZXkgUXVlc3Rpb25JRCBWb3RlVmFsdWUpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcmVxdWVzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgV0hFUkUgcHVibGljX3N1cnZleV9rZXkgPSA/CiAgICAgICAgICAgICAgICBBTkQgdmFsaWRfaWQgPSAxJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UHVibGljU3VydmV5S2V5fSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFJlcXVlc3RJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0SUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFJlcXVlc3RJRDsKCiAgICAjIGluc2VydCB2b3RlCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5X3ZvdGUgKHJlcXVlc3RfaWQsIHF1ZXN0aW9uX2lkLCB2b3RlX3ZhbHVlLCBjcmVhdGVfdGltZSkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgY3VycmVudF90aW1lc3RhbXApJywKICAgICAgICBCaW5kID0+IFsgXCRSZXF1ZXN0SUQsIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17Vm90ZVZhbHVlfSwgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UXVlc3Rpb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UXVlc3Rpb24gLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXkKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHN1cnZleSBxdWVzdGlvbiBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gUXVlc3Rpb25BZGQoKQoKdG8gYWRkIGEgbmV3IHF1ZXN0aW9uIHRvIGEgc3VydmV5CgogICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgU3VydmV5SUQgPT4gMTAsCiAgICAgICAgUXVlc3Rpb24gPT4gJ1RoZSBRdWVzdGlvbicsCiAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwgIyBvciAwCiAgICAgICAgVHlwZSA9PiAnUmFkaW8nLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgU3VydmV5SUQgUXVlc3Rpb24gVHlwZSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkUGFyYW17UXVlc3Rpb259OwoKICAgICMgaW5zZXJ0IGEgbmV3IHF1ZXN0aW9uCiAgICAjIGlmIHdlIGRpZG4ndCBnZXQgYW4gQW5zd2VyIFBhcmFtZXRlciAoZS5nLiBqdXN0IHVuZGVmaW5lZCkKICAgICMgb3IgaXQgd2FzIHNvbWV0aGluZyBlbHNlIHRoYW4gMCBvciAxCiAgICAjIHdlIGFzc3VtZSBpdCdzIGEgcmVxdWlyZWQgYW5zd2VyCiAgICBpZiAoCiAgICAgICAgIWRlZmluZWQgJFBhcmFte0Fuc3dlclJlcXVpcmVkfQogICAgICAgIHx8CiAgICAgICAgKCAkUGFyYW17QW5zd2VyUmVxdWlyZWR9IG5lICcwJyAmJiAkUGFyYW17QW5zd2VyUmVxdWlyZWR9IG5lICcxJyApCiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtBbnN3ZXJSZXF1aXJlZH0gPSAxOwogICAgfQoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5X3F1ZXN0aW9uIChzdXJ2ZXlfaWQsIHF1ZXN0aW9uLCBxdWVzdGlvbl90eXBlLCBwb3NpdGlvbiwKICAgICAgICAgICAgICAgIGFuc3dlcl9yZXF1aXJlZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSkKICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/LCAyNTUsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1N1cnZleUlEfSwgXCRQYXJhbXtRdWVzdGlvbn0sIFwkUGFyYW17VHlwZX0sIFwkUGFyYW17QW5zd2VyUmVxdWlyZWR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKfQoKPWl0ZW0gUXVlc3Rpb25EZWxldGUoKQoKdG8gZGVsZXRlIGEgcXVlc3Rpb24gZnJvbSBhIHN1cnZleQoKICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uRGVsZXRlKAogICAgICAgIFN1cnZleUlEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMCwKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25EZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgUXVlc3Rpb25JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBkZWxldGUgYWxsIGFuc3dlcnMgb2YgYSBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgcXVlc3Rpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gUXVlc3Rpb25HZXQoKQoKdG8gZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgcXVlc3Rpb24KCiAgICBteSAlUXVlc3Rpb24gPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkdldCgKICAgICAgICBRdWVzdGlvbklEID0+IDEyMwogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXlfaWQsIHF1ZXN0aW9uLCBxdWVzdGlvbl90eXBlLCBwb3NpdGlvbiwgYW5zd2VyX3JlcXVpcmVkLCBjcmVhdGVfdGltZSwKICAgICAgICAgICAgICAgIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieQogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1F1ZXN0aW9ufSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJERhdGF7VHlwZX0gICAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtQb3NpdGlvbn0gICAgICAgPSAkUm93WzRdOwogICAgICAgICREYXRhe0Fuc3dlclJlcXVpcmVkfSA9ICRSb3dbNV07CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gICAgID0gJFJvd1s2XTsKICAgICAgICAkRGF0YXtDcmVhdGVCeX0gICAgICAgPSAkUm93WzddOwogICAgICAgICREYXRhe0NoYW5nZVRpbWV9ICAgICA9ICRSb3dbOF07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgICAgID0gJFJvd1s5XTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIFF1ZXN0aW9uVXBkYXRlKCkKCnRvIHVwZGF0ZSBhbiBleGlzdGluZyBxdWVzdGlvbgoKICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uVXBkYXRlKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBTdXJ2ZXlJRCA9PiAzLAogICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICcxJywgIyBvciAnMCcKICAgICAgICBRdWVzdGlvbiA9PiAnVGhlIFF1ZXN0aW9uJywKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25VcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFF1ZXN0aW9uSUQgU3VydmV5SUQgUXVlc3Rpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAxOwogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0Fuc3dlclJlcXVpcmVkfQogICAgICAgICYmICggJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBlcSAnMScgfHwgJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBlcSAnMCcgKQogICAgICAgICkKICAgIHsKICAgICAgICAkQW5zd2VyUmVxdWlyZWQgPSAkUGFyYW17QW5zd2VyUmVxdWlyZWR9OwogICAgfQoKICAgICMgdXBkYXRlIHF1ZXN0aW9uCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHF1ZXN0aW9uID0gPywgYW5zd2VyX3JlcXVpcmVkID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17UXVlc3Rpb259LCBcJEFuc3dlclJlcXVpcmVkLCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3VydmV5SUR9LAogICAgICAgIF0sCiAgICApOwp9Cgo9aXRlbSBRdWVzdGlvbkxpc3QoKQoKdG8gZ2V0IGEgYXJyYXkgbGlzdCBvZiBhbGwgcXVlc3Rpb24gaXRlbXMKCiAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBxdWVzdGlvbnMgb2YgYSBzdXJ2ZXkKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgc3VydmV5X2lkLCBxdWVzdGlvbiwgcXVlc3Rpb25fdHlwZSwgYW5zd2VyX3JlcXVpcmVkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1F1ZXN0aW9ufSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJERhdGF7VHlwZX0gICAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtBbnN3ZXJSZXF1aXJlZH0gPSAkUm93WzRdIHx8IDA7CgogICAgICAgIHB1c2ggQExpc3QsIFwlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1pdGVtIFF1ZXN0aW9uU29ydCgpCgp0byBzb3J0IGFsbCBxdWVzdGlvbnMgZnJvbSBhIHN1cnZleQoKICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvblNvcnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJwogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBxdWVzdGlvbiBvZiBhIHN1cnZleSAoc29ydGVkIGJ5IHBvc2l0aW9uKQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAxOwogICAgZm9yIG15ICRRdWVzdGlvbklEIChATGlzdCkgewogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvdW50ZXIsIFwkUXVlc3Rpb25JRCBdLAogICAgICAgICk7CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFF1ZXN0aW9uVXAoKQoKdG8gbW92ZSBhIHF1ZXN0aW9uIHVwCgogICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25VcCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25VcCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdXJ2ZXlJRCBRdWVzdGlvbklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHBvc2l0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHN1cnZleV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUG9zaXRpb24gPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgJFBvc2l0aW9uIDwgMjsKCiAgICBteSAkUG9zaXRpb25VcCA9ICRQb3NpdGlvbiAtIDE7CgogICAgIyBnZXQgcXVlc3Rpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcG9zaXRpb24gPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9LCBcJFBvc2l0aW9uVXAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRRdWVzdGlvbklERG93bjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRRdWVzdGlvbklERG93biA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUXVlc3Rpb25JRERvd247CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbiwgXCRRdWVzdGlvbklERG93biwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvblVwLCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gUXVlc3Rpb25Eb3duKCkKCnRvIG1vdmUgYSBxdWVzdGlvbiBkb3duCgogICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Eb3duKAogICAgICAgIFN1cnZleUlEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkRvd24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgUXVlc3Rpb25JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBwb3NpdGlvbgogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBpZCA9ID8KICAgICAgICAgICAgICAgIEFORCBzdXJ2ZXlfaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFBvc2l0aW9uOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRQb3NpdGlvbjsKCiAgICBteSAkUG9zaXRpb25Eb3duID0gJFBvc2l0aW9uICsgMTsKCiAgICAjIGdldCBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBwb3NpdGlvbiA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUG9zaXRpb25Eb3duLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFF1ZXN0aW9uSURVcDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRRdWVzdGlvbklEVXAgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFF1ZXN0aW9uSURVcDsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uLCBcJFF1ZXN0aW9uSURVcCwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbkRvd24sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBRdWVzdGlvbkNvdW50KCkKCnRvIGNvdW50IGFsbCBxdWVzdGlvbnMgb2YgYSBzdXJ2ZXkKCiAgICBteSAkQ291bnRRdWVzdGlvbiA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQ291bnQoCiAgICAgICAgU3VydmV5SUQgPT4gMTIzCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IHF1ZXN0aW9ucwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKGlkKQogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ291bnRRdWVzdGlvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudFF1ZXN0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJENvdW50UXVlc3Rpb247Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UmVxdWVzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3VydmV5OjpSZXF1ZXN0IC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6U3VydmV5Cgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBzdXJ2ZXkgcmVxdWVzdCBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gUmVxdWVzdEdldCgpCgp0byBnZXQgYW4gYXJyYXkgbGlzdCBvZiByZXF1ZXN0IGVsZW1lbnRzCgogICAgbXkgJVJlcXVlc3REYXRhID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJ0F3NWRlM1hmNXFBJywKICAgICk7Cgo9Y3V0CgpzdWIgUmVxdWVzdEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UHVibGljU3VydmV5S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUHVibGljU3VydmV5S2V5IScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgdm90ZSBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHRpY2tldF9pZCwgc3VydmV5X2lkLCB2YWxpZF9pZCwgcHVibGljX3N1cnZleV9rZXksIHNlbmRfdG8sIHNlbmRfdGltZSwKICAgICAgICAgICAgICAgIHZvdGVfdGltZQogICAgICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgIFdIRVJFIHB1YmxpY19zdXJ2ZXlfa2V5ID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1B1YmxpY1N1cnZleUtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVSZXF1ZXN0RGF0YTsKCiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkUmVxdWVzdERhdGF7UmVxdWVzdElEfSAgICAgICA9ICRSb3dbMF07CiAgICAgICAgJFJlcXVlc3REYXRhe1RpY2tldElEfSAgICAgICAgPSAkUm93WzFdOwogICAgICAgICRSZXF1ZXN0RGF0YXtTdXJ2ZXlJRH0gICAgICAgID0gJFJvd1syXTsKICAgICAgICAkUmVxdWVzdERhdGF7VmFsaWRJRH0gICAgICAgICA9ICRSb3dbM107CiAgICAgICAgJFJlcXVlc3REYXRhe1B1YmxpY1N1cnZleUtleX0gPSAkUm93WzRdOwogICAgICAgICRSZXF1ZXN0RGF0YXtTZW5kVG99ICAgICAgICAgID0gJFJvd1s1XTsKICAgICAgICAkUmVxdWVzdERhdGF7U2VuZFRpbWV9ICAgICAgICA9ICRSb3dbNl07CiAgICAgICAgJFJlcXVlc3REYXRhe1ZvdGVUaW1lfSAgICAgICAgPSAkUm93WzddOwogICAgfQoKICAgIHJldHVybiAlUmVxdWVzdERhdGE7Cn0KCj1pdGVtIFJlcXVlc3RTZW5kKCkKCnRvIHNlbmQgYSByZXF1ZXN0IHRvIGEgY3VzdG9tZXIgKGlmIG1hc3RlciBzdXJ2ZXkgaXMgc2V0KQoKICAgICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgUmVxdWVzdFNlbmQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1RpY2tldElEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVGlja2V0SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGltZSBvYmplY3QKICAgIG15ICRUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCiAgICAjIGNyZWF0ZSBQdWJsaWNTdXJ2ZXlLZXkKICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXk7CiAgICBpZiAoICEkUGFyYW17UHVibGljU3VydmV5S2V5fSApIHsKICAgICAgICBteSAkTUQ1ID0gRGlnZXN0OjpNRDUtPm5ldygpOwogICAgICAgICRNRDUtPmFkZCggJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKSAuIGludCggcmFuZCg5OTk5OTk5OTkpICkgKTsKICAgICAgICAkUHVibGljU3VydmV5S2V5ID0gJE1ENS0+aGV4ZGlnZXN0KCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUHVibGljU3VydmV5S2V5ID0gJFBhcmFte1B1YmxpY1N1cnZleUtleX07CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbmQgbWFzdGVyIHN1cnZleQogICAgbXkgJFN0YXR1cyA9ICdNYXN0ZXInOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIHN0YXR1cyA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRTdGF0dXMgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdXJ2ZXlJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyByZXR1cm4sIG5vIG1hc3RlciBzdXJ2ZXkgZm91bmQKICAgIHJldHVybiBpZiAhJFN1cnZleUlEOwoKICAgICMgZ2V0IHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU2VsZi0+U3VydmV5R2V0KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICk7CiAgICBteSAkU3ViamVjdCA9ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uU3ViamVjdH07CiAgICBteSAkQm9keSAgICA9ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uQm9keX07CgogICAgIyBmaXggbmV3IGxpbmVzCiAgICAkQm9keSA9fiBzLyhcblxyfFxyXHJcbnxcclxuKS9cbi9nOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgIyB0aWNrZXQgZGF0YQogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHRpY2tldCBpcyBpbiBhIHNlbmQgcXVldWUKICAgIGlmICggJFN1cnZleXtRdWV1ZXN9ICYmIHJlZiAkU3VydmV5e1F1ZXVlc30gZXEgJ0FSUkFZJyAmJiBAeyAkU3VydmV5e1F1ZXVlc30gfSApIHsKICAgICAgICBteSAkRm91bmQ7CgogICAgICAgIFFVRVVFOgogICAgICAgIGZvciBteSAkUXVldWVJRCAoIEB7ICRTdXJ2ZXl7UXVldWVzfSB9ICkgewogICAgICAgICAgICBuZXh0IFFVRVVFIGlmICRUaWNrZXR7UXVldWVJRH0gIT0gJFF1ZXVlSUQ7CiAgICAgICAgICAgICRGb3VuZCA9IDE7CiAgICAgICAgICAgIGxhc3QgUVVFVUU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaWYgISRGb3VuZDsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGlmIHRoZSBmb3Igc2VuZCBjb25kaXRpb24gdGlja2V0IHR5cGUgY2hlY2sgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScpICkgewoKICAgICAgICAjIGNoZWNrIGlmIHRpY2tldCBpcyBpbiBhIHNlbmQgdGlja2V0IHR5cGUgaWQKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFN1cnZleXtUaWNrZXRUeXBlSURzfSApICkgewoKICAgICAgICAgICAgcmV0dXJuIGlmICEkVGlja2V0e1R5cGVJRH07CgogICAgICAgICAgICBteSAkRm91bmQ7CgogICAgICAgICAgICBUSUNLRVRUWVBFOgogICAgICAgICAgICBmb3IgbXkgJFRpY2tldFR5cGVJRCAoIEB7ICRTdXJ2ZXl7VGlja2V0VHlwZUlEc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgVElDS0VUVFlQRSBpZiAkVGlja2V0e1R5cGVJRH0gIT0gJFRpY2tldFR5cGVJRDsKICAgICAgICAgICAgICAgICRGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IFRJQ0tFVFRZUEU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBpZiAhJEZvdW5kOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiB0aWNrZXQgaXMgaW4gYSBzZW5kIHNlcnZpY2UKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFN1cnZleXtTZXJ2aWNlSURzfSApICkgewoKICAgICAgICAgICAgcmV0dXJuIGlmICEkVGlja2V0e1NlcnZpY2VJRH07CgogICAgICAgICAgICBteSAkRm91bmQ7CgogICAgICAgICAgICBTRVJWSUNFOgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIEB7ICRTdXJ2ZXl7U2VydmljZUlEc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgU0VSVklDRSBpZiAkVGlja2V0e1NlcnZpY2VJRH0gIT0gJFNlcnZpY2VJRDsKICAgICAgICAgICAgICAgICRGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IFNFUlZJQ0U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBpZiAhJEZvdW5kOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJERhdGEgKCBzb3J0IGtleXMgJVRpY2tldCApIHsKICAgICAgICBpZiAoIGRlZmluZWQgJFRpY2tldHskRGF0YX0gKSB7CiAgICAgICAgICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfVElDS0VUXyREYXRhPi8kVGlja2V0eyREYXRhfS9naTsKICAgICAgICAgICAgJEJvZHkgPX4gcy88T1RSU19USUNLRVRfJERhdGE+LyRUaWNrZXR7JERhdGF9L2dpOwoKICAgICAgICAgICAgIyBmaWx0ZXIgZm9yIG5ldyByaWNoIHRleHQgY29udGVudAogICAgICAgICAgICAkQm9keSA9fiBzLyZsdDtPVFJTX1RJQ0tFVF8kRGF0YSZndDsvJFRpY2tldHskRGF0YX0vZzsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbnVwCiAgICAkU3ViamVjdCA9fiBzLzxPVFJTX1RJQ0tFVF8uKz8+Ly0vZ2k7CiAgICAkQm9keSA9fiBzLzxPVFJTX1RJQ0tFVF8uKz8+Ly0vZ2k7CgogICAgIyByZXBsYWNlIGNvbmZpZyBvcHRpb25zCiAgICAkU3ViamVjdCA9fiBzezxPVFJTX0NPTkZJR18oLis/KT59eyRDb25maWdPYmplY3QtPkdldCgkMSl9ZWd4OwogICAgJEJvZHkgPX4gc3s8T1RSU19DT05GSUdfKC4rPyk+fXskQ29uZmlnT2JqZWN0LT5HZXQoJDEpfWVneDsKCiAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAkQm9keSA9fiBzeyZsdDtPVFJTX0NPTkZJR18oLis/KSZndDt9eyRDb25maWdPYmplY3QtPkdldCgkMSl9ZWd4OwoKICAgICMgY2xlYW51cAogICAgJFN1YmplY3QgPX4gcy88T1RSU19DT05GSUdfLis/Pi8tL2dpOwogICAgJEJvZHkgPX4gcy88T1RSU19DT05GSUdfLis/Pi8tL2dpOwoKICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICRCb2R5ID1+IHMvJmx0O09UUlNfQ09ORklHXy4rPyZndDsvLS9naTsKCiAgICAjIGdldCBjdXN0b21lciBkYXRhIGFuZCByZXBsYWNlIGl0IHdpdGggPE9UUlNfQ1VTVE9NRVJfREFUQV8uLi4KICAgIG15ICVDdXN0b21lclVzZXI7CiAgICBpZiAoICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICVDdXN0b21lclVzZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgIFVzZXIgPT4gJFRpY2tldHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXBsYWNlIGN1c3RvbWVyIHN0dWZmIHdpdGggdGFncwogICAgICAgIENVU1RPTUVSOgogICAgICAgIGZvciBteSAkRGF0YSAoIHNvcnQga2V5cyAlQ3VzdG9tZXJVc2VyICkgewogICAgICAgICAgICBuZXh0IENVU1RPTUVSIGlmICEkQ3VzdG9tZXJVc2VyeyREYXRhfTsKCiAgICAgICAgICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfQ1VTVE9NRVJfREFUQV8kRGF0YT4vJEN1c3RvbWVyVXNlcnskRGF0YX0vZ2k7CiAgICAgICAgICAgICRCb2R5ID1+IHMvPE9UUlNfQ1VTVE9NRVJfREFUQV8kRGF0YT4vJEN1c3RvbWVyVXNlcnskRGF0YX0vZ2k7CgogICAgICAgICAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAgICAgICAgICRCb2R5ID1+IHMvJmx0O09UUlNfQ1VTVE9NRVJfREFUQV8kRGF0YSZndDsvJEN1c3RvbWVyVXNlcnskRGF0YX0vZ2k7CiAgICAgICAgfQogICAgfQoKICAgICMgY2xlYW51cCBhbGwgbm90IG5lZWRlZCA8T1RSU19DVVNUT01FUl9EQVRBXyB0YWdzCiAgICAkU3ViamVjdCA9fiBzLzxPVFJTX0NVU1RPTUVSX0RBVEFfLis/Pi8tL2dpOwogICAgJEJvZHkgPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXy4rPz4vLS9naTsKCiAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAkQm9keSA9fiBzLyZsdDtPVFJTX0NVU1RPTUVSX0RBVEFfLis/Jmd0Oy8tL2dpOwoKICAgICMgcmVwbGFjZSBrZXkKICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfUHVibGljU3VydmV5S2V5Pi8kUHVibGljU3VydmV5S2V5L2dpOwogICAgJEJvZHkgPX4gcy88T1RSU19QdWJsaWNTdXJ2ZXlLZXk+LyRQdWJsaWNTdXJ2ZXlLZXkvZ2k7CgogICAgIyBmaWx0ZXIgZm9yIG5ldyByaWNoIHRleHQgY29udGVudAogICAgJEJvZHkgPX4gcy8mbHQ7T1RSU19QdWJsaWNTdXJ2ZXlLZXkmZ3Q7LyRQdWJsaWNTdXJ2ZXlLZXkvZ2k7CgogICAgbXkgJFRvU3RyaW5nID0gJEN1c3RvbWVyVXNlcntVc2VyRW1haWx9OwoKICAgIGlmICggISRUb1N0cmluZyApIHsKICAgICAgICBteSAlQXJ0aWNsZSA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVMYXN0Q3VzdG9tZXJBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAkQXJ0aWNsZXtTZW5kZXJUeXBlfSBlcSAnYWdlbnQnICkgewogICAgICAgICAgICAkVG9TdHJpbmcgPSAkQXJ0aWNsZXtUb307CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkVG9TdHJpbmcgPSAkQXJ0aWNsZXtGcm9tfTsKICAgICAgICB9CiAgICB9CgogICAgIyBwYXJzZSB0aGUgdG8gc3RyaW5nCiAgICBteSAkVG87CiAgICBmb3IgbXkgJFRvUGFyc2VyICggTWFpbDo6QWRkcmVzcy0+cGFyc2UoJFRvU3RyaW5nKSApIHsKICAgICAgICAkVG8gPSAkVG9QYXJzZXItPmFkZHJlc3MoKTsKICAgIH0KCiAgICAjIHJldHVybiBpZiBubyB0byBpcyBmb3VuZAogICAgcmV0dXJuIGlmICEkVG87CgogICAgIyBjaGVjayBpZiBpdCdzIGEgdmFsaWQgZW1haWwgYWRkcmVzcyAobWluIGlzIG5lZWRlZCkKICAgIHJldHVybiBpZiAkVG8gIX4gL0AvOwoKICAgICMgY29udmVydCB0byBsb3dlciBjYXNlcwogICAgJFRvID0gbGMgJFRvOwoKICAgICMgY2hlY2sgcmVjaXBpZW50IGJsYWNrbGlzdAogICAgbXkgJFJlY2lwaWVudEJsYWNrbGlzdCA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25SZWNpcGllbnRCbGFja2xpc3QnKTsKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRSZWNpcGllbnRCbGFja2xpc3QKICAgICAgICAmJiByZWYgJFJlY2lwaWVudEJsYWNrbGlzdCBlcSAnQVJSQVknCiAgICAgICAgJiYgQHskUmVjaXBpZW50QmxhY2tsaXN0fQogICAgICAgICkKICAgIHsKICAgICAgICBmb3IgbXkgJFJlY2lwaWVudCAoIEB7JFJlY2lwaWVudEJsYWNrbGlzdH0gKSB7CiAgICAgICAgICAgIHJldHVybiBpZiBkZWZpbmVkICRSZWNpcGllbnQgJiYgbGVuZ3RoICRSZWNpcGllbnQgJiYgJFRvIGVxICRSZWNpcGllbnQ7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgbm90IHN1cnZleSBzaG91bGQgYmUgc2VuZAogICAgbXkgJFNlbmROb1N1cnZleVJlZ0V4cCA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpTZW5kTm9TdXJ2ZXlSZWdFeHAnKTsKCiAgICByZXR1cm4gaWYgJFNlbmROb1N1cnZleVJlZ0V4cCAmJiAkVG8gPX4gLyRTZW5kTm9TdXJ2ZXlSZWdFeHAvaTsKCiAgICAjIE9ubHkgaWYgd2UgaGF2ZW4ndCBiZWVuIGNhbGxlZCBieSBDUk9OCiAgICBpZiAoICEkUGFyYW17VHJpZ2dlclNlbmRSZXF1ZXN0c30gKSB7CiAgICAgICAgbXkgJEFtb3VudE9mU3VydmV5c1BlcjMwRGF5cyA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpBbW91bnRPZlN1cnZleXNQZXIzMERheXMnKTsKCiAgICAgICAgIyBpZiB3ZSBzaG91bGQganVzdCBzZW5kIGEgY2VydGFpbiBhbW91bnQgb2Ygc3VydmV5cyBwZXIgMzAgZGF5cyAmIHJlY2lwaWVudAogICAgICAgIGlmICgkQW1vdW50T2ZTdXJ2ZXlzUGVyMzBEYXlzKSB7CiAgICAgICAgICAgIG15ICROb3cgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpOwoKICAgICAgICAgICAgIyBGaW5kIGFsbCBzdXJ2ZXlzIHRoYXQgd2VyZSBjcmVhdGVkIGluIHRoZSBsYXN0IDMwIGRheXMKICAgICAgICAgICAgbXkgJFRoaXJ0eURheXNBZ28gPSAkTm93IC0gMzAgKiA4NjQwMDsKICAgICAgICAgICAgJFRoaXJ0eURheXNBZ28gPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZTJUaW1lU3RhbXAoIFN5c3RlbVRpbWUgPT4gJFRoaXJ0eURheXNBZ28gKTsKICAgICAgICAgICAgbXkgJExhc3RTZW50VGltZSA9IDA7CgogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGNyZWF0ZV90aW1lCiAgICAgICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICAgICAgICAgIFdIRVJFIExPV0VSKHNlbmRfdG8pID0gPwogICAgICAgICAgICAgICAgICAgICAgICBBTkQgY3JlYXRlX3RpbWUgPj0gPwogICAgICAgICAgICAgICAgICAgIE9SREVSIEJZIGNyZWF0ZV90aW1lIERFU0MnLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkVG8sIFwkVGhpcnR5RGF5c0FnbywgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgICAgICAgICBteSBAUm93czsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dzLCAkUm93WzBdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyBwZXIgbW9udGgKICAgICAgICAgICAgaWYgKCBzY2FsYXIgQFJvd3MgPj0gJEFtb3VudE9mU3VydmV5c1BlcjMwRGF5cyApIHsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhIHN1cnZleSBpcyBzZW50IGluIHRoZSBsYXN0IHRpbWUKICAgIG15ICRTZW5kUGVyaW9kID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRQZXJpb2QnKTsKICAgIGlmICgkU2VuZFBlcmlvZCkgewogICAgICAgIG15ICRMYXN0U2VudFRpbWUgPSAwOwoKICAgICAgICAjIGdldCBzZW5kIHRpbWUKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBzZW5kX3RpbWUKICAgICAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFdIRVJFIExPV0VSKHNlbmRfdG8pID0gPwogICAgICAgICAgICAgICAgT1JERVIgQlkgc2VuZF90aW1lIERFU0MnLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkVG8gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJExhc3RTZW50VGltZSA9ICRSb3dbMF07CiAgICAgICAgfQogICAgICAgIGlmICgkTGFzdFNlbnRUaW1lKSB7CiAgICAgICAgICAgIG15ICROb3cgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpOwogICAgICAgICAgICAkTGFzdFNlbnRUaW1lID0gJFRpbWVPYmplY3QtPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKCBTdHJpbmcgPT4gJExhc3RTZW50VGltZSApOwoKICAgICAgICAgICAgcmV0dXJuIGlmICggJExhc3RTZW50VGltZSArICRTZW5kUGVyaW9kICogNjAgKiA2MCAqIDI0ICkgPiAkTm93OwoKICAgICAgICB9CiAgICB9CiAgICBteSAkU2VuZEluSG91cnNBZnRlckNsb3NlID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScpOwoKICAgICMgSWYgbm8gRGVsYXllZCBTZW5kaW5nIGlzIGNvbmZpZ3VyZWQKICAgICMgc2VuZCBpbW1lZGlhdGVseSwgbG9nIGl0IHRvIFRpY2tldCBIaXN0b3J5IGFuZCBpbnNlcnQgaXQgdG8gc3VydmV5X3JlcXVlc3RzCiAgICAjIGluY2x1ZGluZyBzZW50X3RpbWUKICAgIGlmICggISRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgJiYgISRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKCiAgICAgICAgIyBpbnNlcnQgcmVxdWVzdAogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9yZXF1ZXN0ICh0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LAogICAgICAgICAgICAgICAgICAgIHNlbmRfdG8sIHNlbmRfdGltZSwgY3JlYXRlX3RpbWUpCiAgICAgICAgICAgICAgICBWQUxVRVMgKD8sID8sIDEsID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtUaWNrZXRJRH0sIFwkU3VydmV5SUQsIFwkUHVibGljU3VydmV5S2V5LCBcJFRvIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBsb2cgYWN0aW9uIG9uIHRpY2tldAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gMSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJTZW50IGN1c3RvbWVyIHN1cnZleSB0byAnJFRvJy4iLAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiB3ZSBzaG91bGQgc2VuZCBkZWxheWVkIGp1c3QgQ1JPTiBqb2JzIGRlbGl2ZXIgIlRyaWdnZXJTZW5kUmVxdWVzdHMiLAogICAgIyBzbyB3ZSB3ZXJlIGNhbGxlZCBieSBhIGNsb3NlZCB0aWNrZXQKICAgICMgYW5kIGhhdmUgdG8gY3JlYXRlIHRoZSBzdXJ2ZXlfcmVxdWVzdCByZWNvcmQgd2l0aCBubyBzZW5kX3RpbWUKICAgICMgKHdpbGwgYmUgZmlsbGVkIGluIGJ5IENST04gam9iIGFzIHNvb24gYXMgaXQgcmVhbGx5IGdvdCBkZWxpdmVyZWQpCiAgICAjIGFkZGl0aW9uYWxseSBubyBUaWNrZXQgSGlzdG9yeSB5ZXQsIGNhdXNlIG5vIHNlbmQgaGFzIGhhcHBlbmVkCiAgICBlbHNpZiAoICRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgJiYgISRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKCiAgICAgICAgIyBpbnNlcnQgcmVxdWVzdAogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9yZXF1ZXN0ICh0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LAogICAgICAgICAgICAgICAgICAgIHNlbmRfdG8sIGNyZWF0ZV90aW1lKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCAxLCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtUaWNrZXRJRH0sIFwkU3VydmV5SUQsIFwkUHVibGljU3VydmV5S2V5LCBcJFRvLCBdLAogICAgICAgICk7CgogICAgfQoKICAgICMgaGVyZSB3ZSBnb3QgY2FsbGVkIGJ5IENST04sIGFuZCBubyBtYXR0ZXIgaWYgU2VuZEluSG91cnNBZnRlckNsb3NlIGlzIGNvbmZpZ3VyZWQKICAgICMgb3Igbm90LCB3ZSBoYXZlIHRvIHNlbmQgdGhlIHN1cnZleSByZXF1ZXN0cyB0aGF0IHdlcmVuJ3Qgc2VudCB5ZXQKICAgICMgdGhpcyB0aW1lIHdlIGhhdmUgdG8gdXBkYXRlIHRoZSBzdXJ2ZXlfcmVxdWVzdCBsaW5lCiAgICAjIHRvIGZpbGwgaW4gdGhlIHNlbmRfdGltZSBhbmQgY3JlYXRlIHRoZSBUaWNrZXQgSGlzdG9yeSBlbnRyeQogICAgZWxzaWYgKAogICAgICAgICRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfQogICAgICAgICYmICRQYXJhbXtTdXJ2ZXlSZXF1ZXN0SUR9CiAgICAgICAgJiYgJFBhcmFte1N1cnZleVJlcXVlc3RJRH0gPX4gL15cZCskLwogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFNFVCBzZW5kX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcAogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5UmVxdWVzdElEfSBdLAogICAgICAgICk7CgogICAgICAgICMgbG9nIGFjdGlvbiBvbiB0aWNrZXQKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+IDEsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiU2VudCBjdXN0b21lciBzdXJ2ZXkgdG8gJyRUbycuIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNoYXJzZXQKICAgIG15ICRDaGFyc2V0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdEZWZhdWx0Q2hhcnNldCcpIHx8ICd1ZnQtOCc7CgogICAgIyBnZXQgSFRNTFV0aWxzIG9iamVjdAogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIGNsZWFuIEhUTUwgYW5kIGNvbnZlcnQgdGhlIEZpZWxkIGluIEhUTUwgKFxuIC0tPjxicj4pCiAgICAkQm9keSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgIGlmICggISQxICkgewoKICAgICAgICAjIGNvbnZlcnQgYm9keSB0byBIVE1MCiAgICAgICAgJEJvZHkgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgIFN0cmluZyA9PiAkQm9keSwKICAgICAgICApOwogICAgfQoKICAgICMgcHJlcGFyZSBIVE1MIGxpbmtzCiAgICAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nID0+IFwkQm9keSwKICAgICk7CgogICAgIyBjb21wbGV0ZSBIVE1MIGRvY3VtZW50CiAgICAkQm9keSA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgU3RyaW5nICA9PiAkQm9keSwKICAgICAgICBDaGFyc2V0ID0+ICRDaGFyc2V0LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5CiAgICBpZiAoICEkU2VuZEluSG91cnNBZnRlckNsb3NlIHx8ICRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVtYWlsJyktPlNlbmQoCiAgICAgICAgICAgIEZyb20gICAgID0+ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uU2VuZGVyfSwKICAgICAgICAgICAgVG8gICAgICAgPT4gJFRvLAogICAgICAgICAgICBTdWJqZWN0ICA9PiAkU3ViamVjdCwKICAgICAgICAgICAgTWltZVR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgID0+ICRDaGFyc2V0LAogICAgICAgICAgICBCb2R5ICAgICA9PiAkQm9keSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBSZXF1ZXN0Q291bnQoKQoKdG8gY291bnQgYWxsIHJlcXVlc3RzIG9mIGEgc3VydmV5CgogICAgbXkgJFJlcXVlc3RDb3VudCA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RDb3VudCgKICAgICAgICBRdWVzdGlvbklEID0+IDEyMywKICAgICAgICBWYWxpZElEID0+IDAsICAgICAgICMgKDB8MXxhbGwpCiAgICApOwoKPWN1dAoKc3ViIFJlcXVlc3RDb3VudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdXJ2ZXlJRCBWYWxpZElEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY291bnQgcmVxdWVzdHMKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIENPVU5UKGlkKQogICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/JzsKCiAgICAjIGFkZCB2YWxpZCBwYXJ0CiAgICBpZiAoICEkUGFyYW17VmFsaWRJRH0gKSB7CiAgICAgICAgJFNRTCAuPSAiIEFORCB2YWxpZF9pZCA9IDAiOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VmFsaWRJRH0gZXEgMSApIHsKICAgICAgICAkU1FMIC49ICIgQU5EIHZhbGlkX2lkID0gMSI7CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUmVxdWVzdENvdW50OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlcXVlc3RDb3VudCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRSZXF1ZXN0Q291bnQ7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6Vm90ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3VydmV5OjpWb3RlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6U3VydmV5Cgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBzdXJ2ZXkgdm90ZSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gVm90ZUdldCgpCgp0byBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgYSB2b3RlCgogICAgbXkgQFZvdGUgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgICAgIFJlcXVlc3RJRCA9PiAxMywKICAgICAgICBRdWVzdGlvbklEID0+IDIzCiAgICApOwoKPWN1dAoKc3ViIFZvdGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUmVxdWVzdElEIFF1ZXN0aW9uSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgdm90ZV92YWx1ZQogICAgICAgICAgICBGUk9NIHN1cnZleV92b3RlCiAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtSZXF1ZXN0SUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7UmVxdWVzdElEfSA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7Vm90ZVZhbHVlfSA9ICRSb3dbMV0gfHwgJy0nOwoKICAgICAgICBwdXNoIEBMaXN0LCBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aXRlbSBWb3RlTGlzdCgpCgp0byBnZXQgYSBhcnJheSBsaXN0IG9mIGFsbCB2b3RlIGl0ZW1zCgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlTGlzdCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxCiAgICApOwoKPWN1dAoKc3ViIFZvdGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgdm90ZSBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHRpY2tldF9pZCwgc2VuZF90aW1lLCB2b3RlX3RpbWUKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgdmFsaWRfaWQgPSAwCiAgICAgICAgICAgIE9SREVSIEJZIHZvdGVfdGltZSBERVNDJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVEYXRhOwogICAgICAgICREYXRhe1JlcXVlc3RJRH0gPSAkUm93WzBdOwogICAgICAgICREYXRhe1RpY2tldElEfSAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1NlbmRUaW1lfSAgPSAkUm93WzJdOwogICAgICAgICREYXRhe1ZvdGVUaW1lfSAgPSAkUm93WzNdOwoKICAgICAgICBwdXNoIEBMaXN0LCBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aXRlbSBWb3RlQXR0cmlidXRlR2V0KCkKCnRvIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHZvdGUKCiAgICBteSAkVm90ZUF0dHJpYnV0ZUNvbnRlbnQgPSAkU3VydmV5T2JqZWN0LT5Wb3RlQXR0cmlidXRlR2V0KAogICAgICAgIFZvdGVJRCA9PiAxMywKICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUF0dHJpYnV0ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhWb3RlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUgYXR0cmlidXRlCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1Qgdm90ZV92YWx1ZQogICAgICAgICAgICBGUk9NIHN1cnZleV92b3RlCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1ZvdGVJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRWb3RlQXR0cmlidXRlQ29udGVudCA9ICR7ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpIH1bMF07CgogICAgcmV0dXJuICRWb3RlQXR0cmlidXRlQ29udGVudDsKfQoKPWl0ZW0gVm90ZUNvdW50KCkKCnRvIGNvdW50IGFsbCB2b3RlcyBvZiBhIHN1cnZleQoKICAgIG15ICRWb3RlQ291bnQgPSAkU3VydmV5T2JqZWN0LT5Wb3RlQ291bnQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMjMsCiAgICAgICAgVm90ZVZhbHVlID0+ICdUaGUgVmFsdWUnLAogICAgKTsKCj1jdXQKCnN1YiBWb3RlQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUXVlc3Rpb25JRCBWb3RlVmFsdWUpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCB2b3RlcwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKHZvdGVfdmFsdWUpCiAgICAgICAgICAgIEZST00gc3VydmV5X3ZvdGUKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/IEFORCB2b3RlX3ZhbHVlID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte1ZvdGVWYWx1ZX0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkVm90ZUNvdW50OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFZvdGVDb3VudCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRWb3RlQ291bnQ7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OlN1cnZleVNlbmRSZXF1ZXN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN1cnZleScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhFdmVudCBDb25maWcpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggISRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVGlja2V0SUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb29wIFByb3RlY3Rpb24sIFJlcXVlc3RTZW5kIGNhbGxzIEhpc3RvcnlBZGQKICAgICMgc28gd2UgY2FuJ3QgbGlzdGVuIG9uIEhpc3RvcnlBZGQgRXZlbnRzIGluIG9yZGVyIHRvCiAgICAjIHByZXZlbnQgZGVlcCByZWN1cnNpb24KICAgIHJldHVybiAxIGlmICRQYXJhbXtFdmVudH0gZXEgJ0hpc3RvcnlBZGQnOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgIyBnZXQgdGlja2V0IGRhdGEKICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte0RhdGF9e1RpY2tldElEfSwKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJFRpY2tldHtTdGF0ZVR5cGV9IG5lICdjbG9zZWQnOwoKICAgICMgc2VuZCBhbHNvIHN1cnZleSByZXF1ZXN0IG9uIHRpY2tldCBjcmVhdGlvbiAob24gZmlyc3QgYXJ0aWNsZSkKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnQXJ0aWNsZUNyZWF0ZScgKSB7CgogICAgICAgIG15IEBBcnRpY2xlSW5kZXggPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlSW5kZXgoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtEYXRhfXtUaWNrZXRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDEgaWYgc2NhbGFyIEBBcnRpY2xlSW5kZXggIT0gMTsKICAgIH0KCiAgICAjIHNlbmQgcmVxdWVzdAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5SZXF1ZXN0U2VuZCgKICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJObyBQYXJhbXMgJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZGlzYWJsZWQiLAogICAgICAgIFBhcmFtcyAgID0+IFtdLAogICAgICAgIENvbmZpZyAgID0+IDAsCiAgICAgICAgRXhpdENvZGUgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgPT4gIldyb25nIFBhcmFtICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGRpc2FibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbJy0tdGVzdCddLAogICAgICAgIENvbmZpZyAgID0+IDAsCiAgICAgICAgRXhpdENvZGUgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgPT4gIkZvcmNlIHBhcmFtICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGRpc2FibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbJy0tZm9yY2UnXSwKICAgICAgICBDb25maWcgICA9PiAwLAogICAgICAgIEV4aXRDb2RlID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJObyBQYXJhbXMgJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZW5hYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gW10sCiAgICAgICAgQ29uZmlnICAgPT4gMSwKICAgICAgICBFeGl0Q29kZSA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiV3JvbmcgUGFyYW0gJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZW5hYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLXRlc3QnXSwKICAgICAgICBDb25maWcgICA9PiAxLAogICAgICAgIEV4aXRDb2RlID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJGb3JjZSBwYXJhbSAnU2VuZEluSG91cnNBZnRlckNsb3NlJyBlbmFibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbJy0tZm9yY2UnXSwKICAgICAgICBDb25maWcgICA9PiAxLAogICAgICAgIEV4aXRDb2RlID0+IDAsCiAgICB9LAoKKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpTdXJ2ZXk6OlJlcXVlc3RzU2VuZCcpOwpteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgc2V0IGNvbmZpZwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlJywKICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+e0NvbmZpZ30sCiAgICApOwoKICAgIG15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCBAeyAkVGVzdC0+e1BhcmFtc30gfSApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAkRXhpdENvZGUsCiAgICAgICAgJFRlc3QtPntFeGl0Q29kZX0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBFeGl0Q29kZSIsCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCnVzZSBEYXRhOjpEdW1wZXI7CgojIGNyZWF0ZSBsb2NhbCBjb25maWcgb2JqZWN0Cm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBzZXQgY29uZmlnIHRvIG5vdCBzZW5kIGVtYWlscwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnU2VuZG1haWxNb2R1bGUnLAogICAgVmFsdWUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbDo6RG9Ob3RTZW5kRW1haWwnLAopOwoKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlJywKICAgIFZhbHVlID0+IDAsCik7CgojIGdldCBkYXRhYmFzZSBvYmplY3QKbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgojIGNsZWFudXAgc3lzdGVtCiREQk9iamVjdC0+RG8oCiAgICBTUUwgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9yZXF1ZXN0IFdIRVJFIHNlbmRfdG8gTElLRSAnXCVcQHVuaXR0ZXN0LmNvbVwlJyIsCik7CgojIGdldCBoZWxwZXIgb2JqZWN0Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBGcmVlemUgVGltZQokSGVscGVyT2JqZWN0LT5GaXhlZFRpbWVTZXQoKTsKJFNlbGYtPlRydWUoCiAgICAxLAogICAgJy0tIFNldCBGaXhlZCBUaW1lIC0tJywKKTsKCiMgZ2V0IHR5cGUgb2JqZWN0Cm15ICRUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKCiMgY3JlYXRlIGEgdGVzdCB0eXBlCm15ICRUaWNrZXRUeXBlSUQgPSAkVHlwZU9iamVjdC0+VHlwZUFkZCgKICAgIE5hbWUgICAgPT4gJ1VuaXQgVGVzdCBOZXcgVHlwZScgLiBpbnQgcmFuZCAxXzAwMF8wMDAsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CgojIGdldCBzZXJ2aWNlIG9iamVjdApteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CgojIGNyZWF0ZSBhIHRlc3Qgc2VydmljZQpteSAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VBZGQoCiAgICBOYW1lICAgID0+ICdVbml0IFRlc3QgTmV3IFNlcnZpY2UnIC4gaW50IHJhbmQgMV8wMDBfMDAwLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnVW5pdCBUZXN0IENvbW1lbnQnLAogICAgVXNlcklEICA9PiAxLAoKICAgICMgVHlwZUlEIGFuZCBDcml0aWNhbGl0eSBpcyBuZWVkZWQgdG8gdGVzdCBTdXJ2ZXlTZW5kKCkgdG9nZXRoZXIgd2l0aCBJVFNNCiAgICBUeXBlSUQgICAgICA9PiAyLAogICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKKTsKCiMgY3JlYXRlIHN1cnZleQpteSAlU3VydmV5RGF0YSA9ICgKICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJ0EgVGl0bGUnLAogICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1RoZSBpbnRlcm5hbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ0hlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrISDDhMOWw5wnLAogICAgTm90aWZpY2F0aW9uQm9keSA9PgogICAgICAgICdEZWFyIGN1c3RvbWVyLi4uIMOkw7bDvCcsCiAgICBUaWNrZXRUeXBlSURzID0+IFskVGlja2V0VHlwZUlEXSwKICAgIFNlcnZpY2VJRHMgICAgPT4gWyRTZXJ2aWNlSURdLAopOwoKIyBnZXQgU3VydmV5IG9iamVjdApteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKbXkgJFN1cnZleUlEID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgVXNlcklEID0+IDEsCiAgICAlU3VydmV5RGF0YSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAiU3VydmV5QWRkKCkiLAopOwoKZm9yICggMSAuLiAzICkgewogICAgbXkgJFF1ZXN0aW9uQWRkID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgUXVlc3Rpb24gPT4gJ1RoZSBRdWVzdGlvbicsCiAgICAgICAgVHlwZSAgICAgPT4gJ1JhZGlvJywKICAgICk7Cn0KbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCik7CmZvciBteSAkUXVlc3Rpb24gKEBMaXN0KSB7CiAgICBmb3IgKCAxIC4uIDMgKSB7CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBRdWVzdGlvbklEICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VyICAgICAgICAgPT4gJ1RoZSBBbnN3ZXInLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCm15ICRTdGF0dXNTZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTdGF0dXNTZXQoCiAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCik7CiRTZWxmLT5JcygKICAgICRTdGF0dXNTZXQsCiAgICAnU3RhdHVzU2V0JywKICAgICJTdXJ2ZXlTdGF0dXNTZXQoKSIsCik7CgpteSAlU3VydmV5R2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAopOwoKIyBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlU3VydmV5R2V0ICkgewojICAgICBuZXh0IGlmICFkZWZpbmVkICRTdXJ2ZXlEYXRheyRLZXl9OwojICAgICAkU2VsZi0+SXMoCiMgICAgICAgICAkU3VydmV5R2V0eyRLZXl9LAojICAgICAgICAgJFN1cnZleURhdGF7JEtleX0sCiMgICAgICAgICAiU3VydmV5R2V0KCkiLAojICAgICApOwojIH0KCmZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICVTdXJ2ZXlEYXRhICkgewoKICAgICMgdHVybiBvZmYgYWxsIHByZXR0eSBwcmludAogICAgbG9jYWwgJERhdGE6OkR1bXBlcjo6SW5kZW50ID0gMDsKICAgIGxvY2FsICREYXRhOjpEdW1wZXI6OlVzZXFxICA9IDE7CgogICAgIyBkdW1wIHRoZSBhdHRyaWJ1dGUgZnJvbSBDaGFuZ2VHZXQoKSBhbmQgdGhlIHJlZmVyZW5jZSBhdHRyaWJ1dGUKICAgICMjIG5vIGNyaXRpYwogICAgbXkgJFN1cnZleUdldEF0dHJpYnV0ZSAgPSBEYXRhOjpEdW1wZXI6OkR1bXBlciggJFN1cnZleUdldHskQXR0cmlidXRlfSApOwogICAgbXkgJFN1cnZleURhdGFBdHRyaWJ1dGUgPSBEYXRhOjpEdW1wZXI6OkR1bXBlciggJFN1cnZleURhdGF7JEF0dHJpYnV0ZX0gKTsKICAgICMjIHVzZSBjcml0aWMKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFN1cnZleUdldEF0dHJpYnV0ZSwKICAgICAgICAkU3VydmV5RGF0YUF0dHJpYnV0ZSwKICAgICAgICAiU3VydmV5R2V0KCkiLAogICAgKTsKfQoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjMSB0cnknLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEwMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJ2VtYWlsLWV4dGVybmFsJywKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMSwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzIgdHJ5JywKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxMDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxTT01FQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJyMzIHRyeScsCiAgICAgICAgJ1N1cnZleTo6U2VuZFBlcmlvZCcgPT4gMTAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU09NRUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjNCB0cnknLAogICAgICAgIFNsZWVwICAgICAgICAgICAgICAgID0+IDgwLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEgLyAyNCAvIDYwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU09NRUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAxLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjNSB0cnknLAogICAgICAgIFNsZWVwICAgICAgICAgICAgICAgID0+IDIwLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEgLyAyNCAvIDYwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU09NRUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnIzYgdHJ5JywKICAgICAgICBUaWNrZXQgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgID0+ICdNeSBOYW1lJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKKTsKCiMgZ2V0IHRpY2tldCBvYmplY3QKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgaWYgKCAkVGVzdC0+eydTdXJ2ZXk6OlNlbmRQZXJpb2QnfSApIHsKICAgICAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+eydTdXJ2ZXk6OlNlbmRQZXJpb2QnfSwKICAgICAgICApOwogICAgfQoKICAgICMgbm8gc2VuZCBjb25kaXRpb24gY2hlY2sgaW4gbm9ybWFsIHRlc3RzCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScsCiAgICAgICAgVmFsdWUgPT4gMCwKICAgICk7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScsCiAgICAgICAgVmFsdWUgPT4gMCwKICAgICk7CgogICAgaWYgKCAkVGVzdC0+e1NsZWVwfSApIHsKICAgICAgICAkSGVscGVyT2JqZWN0LT5GaXhlZFRpbWVBZGRTZWNvbmRzKCAkVGVzdC0+e1NsZWVwfSApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAxLAogICAgICAgICAgICAiLS0gQWRkZWQgJFRlc3QtPntTbGVlcH0gU2Vjb25kKHMpIHRvIEZpeGVkIFRpbWUgLS0iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgICV7ICRUZXN0LT57VGlja2V0fSB9LAogICAgKTsKCiAgICBteSAkQXJ0aWNsZUlEID0gJFRpY2tldE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgJXsgJFRlc3QtPntBcnRpY2xlfSB9LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5IGZpcnN0IHRpbWUKICAgIG15ICggJEhlYWRlclJlZiwgJEJvZHlSZWYgKSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICk7CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZ290IHNlbnQKICAgIGlmICggJFRlc3QtPntSZXN1bHR9LT5bMF0gKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkeyRIZWFkZXJSZWZ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwoKICAgICAgICAkeyRIZWFkZXJSZWZ9ID1+IG17IF4gU3ViamVjdDogWyBdICggLis/ICkgXG4gXFMrOiBbIF0gfXhtczsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICQxLAogICAgICAgICAgICAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shID0/VVRGLTg/UT89QzM9ODQ9QzM9OTY9QzM9OUM/PScsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFRlc3Qgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGVtYWlsIHN1YmplY3QiLAogICAgICAgICk7CgogICAgICAgICMgZGVmaW5lIG1haWwgYm9keQogICAgICAgIG15ICRNYWlsYm9keTEgPSA8PCdFTkQnOwpUaGlzIGlzIGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0Li4uCgotLS0tLS0tLS0tLS09X01FU1NBR0VJRApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgpDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKRGVhciBjdXN0b21lci4uLiA9QzM9QTQ9QzM9QjY9QzM9QkM9CgotLS0tLS0tLS0tLS09X01FU1NBR0VJRApDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD0idXRmLTgiCkNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgo8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PTNEIkNvbnRlbnQtVHlwZSIgY29udGVudD0zRCJ0ZXg9CnQvaHRtbDsgY2hhcnNldD0zRHV0Zi04Ii8+PC9oZWFkPjxib2R5IHN0eWxlPTNEImZvbnQtZmFtaWx5OkdlbmV2YSxIZWx2ZXRpYz0KYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij5EZWFyIGN1c3RvbWVyLi4uID1DMz1BND1DMz1CNj1DMz1CQzwvPQpib2R5PjwvaHRtbD49CgotLS0tLS0tLS0tLS09X01FU1NBR0VJRC0tCkVORAoKICAgICAgICAjIGNvcHkgbWFpbCBib2R5CiAgICAgICAgbXkgJE1haWxib2R5MiA9ICR7JEJvZHlSZWZ9OwoKICAgICAgICAjIHByZXBhcmUgbWFpbCBib2R5CiAgICAgICAgJE1haWxib2R5MiA9fiBzeyBcZHs4LDEyfSAtIFxkezMsNn0gLSBcZHsxLDN9IH17TUVTU0FHRUlEfXhtc2c7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJE1haWxib2R5MiwKICAgICAgICAgICAgJE1haWxib2R5MSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gVGVzdCBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZW1haWwgYm9keSIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJHskSGVhZGVyUmVmfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gUmVxdWVzdFNlbmQoKSAtIG5vIHN1cnZleSBnb3Qgc2VudCIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlbmQgc3VydmV5IHNlY29uZCB0aW1lCiAgICAoICRIZWFkZXJSZWYsICRCb2R5UmVmICkgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0U2VuZCgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICApOwoKICAgICMgY2hlY2sgaWYgc3VydmV5IGdvdCBzZW50CiAgICBpZiAoICRUZXN0LT57UmVzdWx0fS0+WzFdICkgewogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkeyRIZWFkZXJSZWZ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAyIFJlcXVlc3RTZW5kKCkgLSBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICR7JEhlYWRlclJlZn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IDIgUmVxdWVzdFNlbmQoKSAtIG5vIHN1cnZleSBnb3Qgc2VudCIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRGVsZXRlID0gJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKfQoKbXkgQFNlbmRDb25kaXRpb25UZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lID0+ICdTZW5kQ29uZGl0aW9uIzEgd2l0aG91dCBzZW5kIGNvbmRpdGlvbiBjaGVjayAodGlja2V0IHR5cGUgYW5kIHNlcnZpY2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJ2VtYWlsLWV4dGVybmFsJywKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnU2VuZENvbmRpdGlvbiMyIHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+ICRUaWNrZXRUeXBlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJ2VtYWlsLWV4dGVybmFsJywKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnU2VuZENvbmRpdGlvbiMzIHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSAodmFsdWUgZmFsc2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTZW5kQ29uZGl0aW9uIzQgdHJ5IHdpdGggY2hlY2sgZm9yIHNlcnZpY2UnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgPT4gMSwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICA9PiAkU2VydmljZUlELAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NlbmRDb25kaXRpb24jNSB0cnkgd2l0aCBjaGVjayBmb3Igc2VydmljZSAodmFsdWUgZmFsc2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgID0+IDEsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTZW5kQ29uZGl0aW9uIzYgdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlIGFuZCBzZXJ2aWNlJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgID0+IDEsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gJFRpY2tldFR5cGVJRCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJ2VtYWlsLWV4dGVybmFsJywKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+ICdTZW5kQ29uZGl0aW9uIzcgdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlIGlkICh2YWx1ZSBmYWxzZSkgYW5kIHNlcnZpY2UnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgPT4gMSwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgPT4gJ1NlbmRDb25kaXRpb24jOCB0cnkgd2l0aCBjaGVjayBmb3IgdGlja2V0IHR5cGUgYW5kIHNlcnZpY2UgKHZhbHVlIGZhbHNlKScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICA9PiAxLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+ICRUaWNrZXRUeXBlSUQsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAnU2VuZENvbmRpdGlvbiM5IHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSAodmFsdWUgZmFsc2UpIGFuZCBzZXJ2aWNlICh2YWx1ZSBmYWxzZSknLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgPT4gMSwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAU2VuZENvbmRpdGlvblRlc3RzKSB7CgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgIFZhbHVlID0+ICcwJywKICAgICk7CgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgIFZhbHVlID0+ICRUZXN0LT57J1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZSd9LAogICAgKTsKCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJ30sCiAgICApOwoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAleyAkVGVzdC0+e1RpY2tldH0gfSwKICAgICk7CiAgICBteSAkQXJ0aWNsZUlEID0gJFRpY2tldE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgJXsgJFRlc3QtPntBcnRpY2xlfSB9LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5IGZpcnN0IHRpbWUKICAgIG15ICggJEhlYWRlclJlZiwgJEJvZHlSZWYgKSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICk7CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZ290IHNlbnQKICAgIGlmICggJFRlc3QtPntTdWNjZXNzfSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICR7JEhlYWRlclJlZn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFJlcXVlc3RTZW5kKCkgLSBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkeyRIZWFkZXJSZWZ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gbm8gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwogICAgfQoKICAgIG15ICREZWxldGUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwp9CgojIHRlc3QgR2V0UmljaFRleHREb2N1bWVudENvbXBsZXRlCnsKICAgIG15ICVUZXh0OwoKICAgICN0ZXN0cyBmb3IgcmljaCB0ZXh0CiAgICAkVGV4dHtSaWNoVGV4dH0gPSB7CiAgICAgICAgSW5wdXQgPT4KICAgICAgICAgICAgJyRodG1sL3RleHQkIDxlbT5UaGlzIGlzIHRoZSBpbnRyb2R1Y3Rpb24gdG8gdGhpcyBzdXJ2ZXksIGlmIHlvdSB3YW50IHRvIGFuc3dlciBpdCB5b3UgaGF2ZSB0bzxiciAvPgpyZWFkIHRoaXMgZmlyc3QsIHBsZWFzZSBsZXQgdXMgdGVsbCB5b3UgdGhhbmtzIGZvciB0aGUgb3Bwb3J0dW5pdHkgdG8gaW50ZXJhY3Q8YnIgLz4Kd2l0aCB5b3UuPC9lbT48YnIgLz4KPHVsPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5QbGVhc2UgcmVhZCBhbGwgdGhlIGluc3RydWN0aW9uczwvc3Bhbj48L2xpPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5QbGVhc2UgdGFrZSBhdHRlbnRpb24gaW4gZXZlcnkgcXVlc3Rpb248L3NwYW4+PC9saT4KICAgIDxsaT4KICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAxMjgpOyI+QW5zd2VyIGFzIGNsZWFyIGFzIHBvc3NpYmxlPC9zcGFuPjwvbGk+CjwvdWw+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwgMTYwLCAxMjIpOyI+VGhpcyBpcyBhbGwgd2UgaGF2ZSB0byB0ZWxsIHlvdSBmb3Igbm93LCBwbGVhc2UgdGFrZSB0aGUgb3Bwb3J0dW5pdHkgbm93IHRvPGJyIC8+CmV4cHJlc3MgeW91ciBmZWVsaW5ncyBpbiBvdXIgc3VydmV5Ljwvc3Bhbj48YnIgLz4KPGJyIC8+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwgMTYwLCAxMjIpOyI+IGdyZWV0aW5ncyw8YnIgLz4KPGJyIC8+CmRhbmllbHosPC9zcGFuPjxiciAvPicsCiAgICAgICAgT3V0cHV0ID0+CiAgICAgICAgICAgICc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIvPjwvaGVhZD48Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6R2VuZXZhLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij48ZW0+VGhpcyBpcyB0aGUgaW50cm9kdWN0aW9uIHRvIHRoaXMgc3VydmV5LCBpZiB5b3Ugd2FudCB0byBhbnN3ZXIgaXQgeW91IGhhdmUgdG88YnIgLz4KcmVhZCB0aGlzIGZpcnN0LCBwbGVhc2UgbGV0IHVzIHRlbGwgeW91IHRoYW5rcyBmb3IgdGhlIG9wcG9ydHVuaXR5IHRvIGludGVyYWN0PGJyIC8+CndpdGggeW91LjwvZW0+PGJyIC8+Cjx1bD4KICAgIDxsaT4KICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAxMjgpOyI+UGxlYXNlIHJlYWQgYWxsIHRoZSBpbnN0cnVjdGlvbnM8L3NwYW4+PC9saT4KICAgIDxsaT4KICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAxMjgpOyI+UGxlYXNlIHRha2UgYXR0ZW50aW9uIGluIGV2ZXJ5IHF1ZXN0aW9uPC9zcGFuPjwvbGk+CiAgICA8bGk+CiAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMTI4KTsiPkFuc3dlciBhcyBjbGVhciBhcyBwb3NzaWJsZTwvc3Bhbj48L2xpPgo8L3VsPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigyNTUsIDE2MCwgMTIyKTsiPlRoaXMgaXMgYWxsIHdlIGhhdmUgdG8gdGVsbCB5b3UgZm9yIG5vdywgcGxlYXNlIHRha2UgdGhlIG9wcG9ydHVuaXR5IG5vdyB0bzxiciAvPgpleHByZXNzIHlvdXIgZmVlbGluZ3MgaW4gb3VyIHN1cnZleS48L3NwYW4+PGJyIC8+CjxiciAvPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigyNTUsIDE2MCwgMTIyKTsiPiBncmVldGluZ3MsPGJyIC8+CjxiciAvPgpkYW5pZWx6LDwvc3Bhbj48YnIgLz48L2JvZHk+PC9odG1sPicsCiAgICB9OwoKICAgICMgY3JlYXRlIHRlc3RzIGZvciBzaW1wbGUgdGV4dAogICAgJFRleHR7U2ltcGxlVGV4dH0gPSB7CiAgICAgICAgSW5wdXQgPT4gIlRoaXMgaXMgYW4gaW50ZXJuYWwgZGVzY3JpcHRpb24gZXhhbXBsZToKCiAtIE9uZQogLSBUd28KIC0gVGhyZWUKIC0gRm91cgogLSBGaXZlCgpUaGF0J3MgaXQuCi1kegoiLAogICAgICAgIE91dHB1dCA9PgogICAgICAgICAgICAnPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz48L2hlYWQ+PGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OkdlbmV2YSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI+VGhpcyBpcyBhbiBpbnRlcm5hbCBkZXNjcmlwdGlvbiBleGFtcGxlOgoKIC0gT25lCiAtIFR3bwogLSBUaHJlZQogLSBGb3VyCiAtIEZpdmUKClRoYXRcJ3MgaXQuCi1kego8L2JvZHk+PC9odG1sPicsCiAgICB9OwoKICAgIG15ICREb2N1bWVudENvbXBsZXRlOwogICAgZm9yIG15ICRUZXh0VHlwZSAoIHNvcnQga2V5cyAlVGV4dCApIHsKICAgICAgICAkRG9jdW1lbnRDb21wbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPkdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSggVGV4dCA9PiAkVGV4dHskVGV4dFR5cGV9LT57SW5wdXR9ICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkVGV4dHskVGV4dFR5cGV9LT57T3V0cHV0fSwKICAgICAgICAgICAgJERvY3VtZW50Q29tcGxldGUsCiAgICAgICAgICAgICJHZXRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUgVGVzdCAtICRUZXh0VHlwZSIsCiAgICAgICAgKTsKICAgIH0KfQoKIyBhZGRlZCAodmVyeSBsaW1pdGVkKSBTdXJ2ZXlTZWFyY2ggdGVzdHMKCm15IEBJRHMgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTZWFyY2goCiAgICBOb3RpZmljYXRpb25TZW5kZXIgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgIExpbWl0ICAgICAgICAgICAgICA9PiAxNTAsICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciBASURzLAogICAgIlN1cnZleVNlYXJjaCgpIiwKKTsKCm15IEBTb3J0ZWRJRHMgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTZWFyY2goCiAgICBOb3RpZmljYXRpb25TZW5kZXIgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgIE9yZGVyQnkgICAgICAgICAgICA9PiBbICdTdXJ2ZXlJRCcsICdUaXRsZScgXSwgICAgIyAob3B0aW9uYWwpCiAgICBPcmRlckJ5RGlyZWN0aW9uICAgPT4gWyAnRG93bicsICdVcCcgXSwgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgTGltaXQgICAgICAgICAgICAgID0+IDE1MCwgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgQElEcywKICAgICJTdXJ2ZXlTZWFyY2goKSB3aXRoIHNvcnQiLAopOwoKIyBjbGVhbnVwIHN5c3RlbQokREJPYmplY3QtPkRvKAogICAgU1FMID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBXSEVSRSBzZW5kX3RvIExJS0UgJ1wlXEB1bml0dGVzdC5jb21cJSciLAopOwoKIyBzZXQgYXMgaW52YWxpZCB0aGUgdGVzdCB0eXBlCiRUeXBlT2JqZWN0LT5UeXBlVXBkYXRlKAogICAgSUQgICAgICA9PiAkVGlja2V0VHlwZUlELAogICAgTmFtZSAgICA9PiAnVW5pdCBUZXN0IE5ldyBUeXBlJyAuIGludCByYW5kIDEwMDAwLAogICAgVmFsaWRJRCA9PiAyLAogICAgVXNlcklEICA9PiAxLAopOwoKIyBzZXQgYXMgaW52YWxpZCB0aGUgdGVzdCBzZXJ2aWNlCiRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlVXBkYXRlKAogICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICBOYW1lICAgICAgPT4gJ1VuaXQgVGVzdCBOZXcgU2VydmljZScgLiBpbnQgcmFuZCAxMDAwMCwKICAgIFZhbGlkSUQgICA9PiAyLAogICAgVXNlcklEICAgID0+IDEsCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVTeXN0ZW1Db25maWd1cmF0aW9uID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBnZXQgc3lzY29uZmlnIG9iamVjdAogICAgICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5QWRkCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5QWRkIik7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhUaXRsZSBJbnRyb2R1Y3Rpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSBRdWV1ZXMgRGVzY3JpcHRpb24pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICAgICAgICdjc3MnICktPnNlbmRfa2V5cygkU3VydmV5VGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ludHJvZHVjdGlvbiIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gSW50cm9kdWN0aW9uJyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNRdWV1ZV9TZWFyY2gnKS52YWwoJzJ8fFJhdycpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVzY3JpcHRpb24iLCAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIERlc2NyaXB0aW9uJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0NyZWF0ZSddW1xAdHlwZT0nc3VibWl0J10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIHN1cnZleSB2YWx1ZXMKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRTdXJ2ZXlUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgdGl0bGUgLSBmb3VuZCIKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIG15ICRTdXJ2ZXlUaXRsZVF1b3RlZCA9ICREQk9iamVjdC0+UXVvdGUoJFN1cnZleVRpdGxlKTsKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleSBXSEVSRSB0aXRsZSA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlUaXRsZVF1b3RlZCBdCiAgICAgICAgKTsKICAgICAgICBteSAkU3VydmV5SUQ7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICAjIGNsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YQogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5X3F1ZXVlIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU3VydmV5LVF1ZXVlIGZvciAkU3VydmV5VGl0bGUtIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5IFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgLSBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVTeXN0ZW1Db25maWd1cmF0aW9uID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBnZXQgc3lzY29uZmlnIG9iamVjdAogICAgICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHN1cnZleQogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSAgICAgICAgID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkSW50cm9kdWN0aW9uICAgICAgICA9ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJzsKICAgICAgICBteSAkRGVzY3JpcHRpb24gICAgICAgICA9ICdTdXJ2ZXkgRGVzY3JpcHRpb24nOwogICAgICAgIG15ICROb3RpZmljYXRpb25TZW5kZXIgID0gJ3F1YWxpdHlAZXhhbXBsZS5jb20nOwogICAgICAgIG15ICROb3RpZmljYXRpb25TdWJqZWN0ID0gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCc7CiAgICAgICAgbXkgJE5vdGlmaWNhdGlvbkJvZHkgICAgPSAnU3VydmV5IE5vdGlmaWF0aW9uIEJvZHknOwoKICAgICAgICBteSAkU3VydmV5SUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAkSW50cm9kdWN0aW9uLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICREZXNjcmlwdGlvbiwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAkTm90aWZpY2F0aW9uU2VuZGVyLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICROb3RpZmljYXRpb25TdWJqZWN0LAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICROb3RpZmljYXRpb25Cb2R5LAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIC0gY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgY2xpY2sgb24gJ0VkaXQgR2VuZXJhbCBJbmZvJyBhbmQgc3dpdGNoIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI01lbnUwMTAtRWRpdEdlbmVyYWxJbmZvIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIGdldCB0ZXN0IHBhcmFtcwogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJFN1cnZleVRpdGxlIC4gJyBlZGl0ZWQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJ0ludHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJEludHJvZHVjdGlvbiwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkSW50cm9kdWN0aW9uIC4gJyBlZGl0ZWQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkRGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJERlc2NyaXB0aW9uIC4gJyBlZGl0ZWQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJ05vdGlmaWNhdGlvblNlbmRlcicsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJE5vdGlmaWNhdGlvblNlbmRlciwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkTm90aWZpY2F0aW9uU2VuZGVyIC4gJyBlZGl0ZWQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJ05vdGlmaWNhdGlvblN1YmplY3QnLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICROb3RpZmljYXRpb25TdWJqZWN0LAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICROb3RpZmljYXRpb25TdWJqZWN0IC4gJyBlZGl0ZWQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJ05vdGlmaWNhdGlvbkJvZHknLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICROb3RpZmljYXRpb25Cb2R5LAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICROb3RpZmljYXRpb25Cb2R5IC4gJyBlZGl0ZWQnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgdGVzdCBzdXJ2ZXkgdmFsdWVzIGFuZCBlZGl0IHRoZW0KICAgICAgICBmb3IgbXkgJFN1cnZleVN0b3JlZCAoQFRlc3QpIHsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlTdG9yZWQtPntJRH0iLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgICAgICRTdXJ2ZXlTdG9yZWQtPntTdG9yZWR9LAogICAgICAgICAgICAgICAgIiMkU3VydmV5U3RvcmVkLT57SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGVkaXQgdmFsdWUKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJFN1cnZleVN0b3JlZC0+e0lEfSIsICdjc3MnICktPnNlbmRfa2V5cygnIGVkaXRlZCcpOwogICAgICAgIH0KCiAgICAgICAgIyBzdWJtaXQgdXBkYXRlcyBhbmQgc3dpdGNoIGJhY2sgd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1VwZGF0ZSddW1xAdHlwZT0nc3VibWl0J10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBjbGljayBvbiAnRWRpdCBHZW5lcmFsIEluZm8nIGFnYWluIGFuZCBzd2l0Y2ggd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAxMC1FZGl0R2VuZXJhbEluZm8iLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgY2hlY2sgZWRpdGVkIHZhbHVlcwogICAgICAgIGZvciBteSAkU3VydmVyeUVkaXRlZCAoQFRlc3QpIHsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXJ5RWRpdGVkLT57SUR9IiwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAkU3VydmVyeUVkaXRlZC0+e0VkaXRlZH0sCiAgICAgICAgICAgICAgICAiIyRTdXJ2ZXJ5RWRpdGVkLT57SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlLSBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSAtIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3F1YWxpdHlAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgLSBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5T3ZlcnZpZXcgb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3Iik7CgogICAgICAgICMgY2hlY2sgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkU3VydmV5VGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGNsaWNrIG9uIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbXEB0aXRsZT0nJFN1cnZleVRpdGxlJ10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyB2ZXJpZnkgd2UgYXJlIGluIEFnZW50U3VydmV5Wm9vbSBzY3JlZW4KICAgICAgICBteSAkVVJMQWN0aW9uID0gJFNlbGVuaXVtLT5nZXRfY3VycmVudF91cmwoKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIGluZGV4KCAkVVJMQWN0aW9uLCAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiICkgPiAtMSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkxpbmsgZnJvbSBPdmVydmlldyB0byBab29tIHZpZXcgLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlLSBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSAtIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVTeXN0ZW1Db25maWd1cmF0aW9uID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBnZXQgc3lzY29uZmlnIG9iamVjdAogICAgICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHN1cnZleQogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSAgICAgICAgID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkSW50cm9kdWN0aW9uICAgICAgICA9ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJzsKICAgICAgICBteSAkRGVzY3JpcHRpb24gICAgICAgICA9ICdTdXJ2ZXkgRGVzY3JpcHRpb24nOwogICAgICAgIG15ICROb3RpZmljYXRpb25TZW5kZXIgID0gJ3F1YWxpdHlAZXhhbXBsZS5jb20nOwogICAgICAgIG15ICROb3RpZmljYXRpb25TdWJqZWN0ID0gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCc7CiAgICAgICAgbXkgJE5vdGlmaWNhdGlvbkJvZHkgICAgPSAnU3VydmV5IE5vdGlmaWF0aW9uIEJvZHknOwoKICAgICAgICBteSAkU3VydmV5SUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAkSW50cm9kdWN0aW9uLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICREZXNjcmlwdGlvbiwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAkTm90aWZpY2F0aW9uU2VuZGVyLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICROb3RpZmljYXRpb25TdWJqZWN0LAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICROb3RpZmljYXRpb25Cb2R5LAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIC0gY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhNZW51MDAwLUJhY2sgTWVudTAxMC1FZGl0R2VuZXJhbEluZm8gTWVudTAyMC1FZGl0UXVlc3Rpb25zIE5ld1N0YXR1cykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgdmFsdWVzCiAgICAgICAgbXkgQFZhbHVlcyA9ICggJFN1cnZleVRpdGxlLCAkSW50cm9kdWN0aW9uLCAkRGVzY3JpcHRpb24gKTsKICAgICAgICBmb3IgbXkgJFN1cnZleUNoZWNrIChAVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkU3VydmV5Q2hlY2siICkgPiAtMSwKICAgICAgICAgICAgICAgICIkU3VydmV5Q2hlY2sgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlLSBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSAtIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3N2aWtAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgLSBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5Wm9vbSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjbGljayBvbiAnRWRpdCBRdWVzdGlvbnMnIGFuZCBzd2l0Y2ggc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAyMC1FZGl0UXVlc3Rpb25zIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIGNoZWNrIHBhZ2UKICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoUXVlc3Rpb24gVHlwZSBBbnN3ZXJSZXF1aXJlZCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0ZXN0IHBhcmFtcwogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdZZXNOb1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1llc05vJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnUmFkaW9RdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdSYWRpbycsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ2hlY2tib3hRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGV4dGFyZWFRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0YXJlYScsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBxdWVzdGlvbnMKICAgICAgICBteSAkU3VjY2VzczsKICAgICAgICBmb3IgbXkgJFF1ZXN0aW9ucyAoQFRlc3QpIHsKCiAgICAgICAgICAgICMgd2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0Fuc3dlclJlcXVpcmVkJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhZGQgcXVlc3Rpb24KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjUXVlc3Rpb24iLCAnY3NzJyApLT5zZW5kX2tleXMoICRRdWVzdGlvbnMtPntOYW1lfSApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgIlwkKCcjVHlwZScpLnZhbCgnJFF1ZXN0aW9ucy0+e1R5cGV9JykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdBZGQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPmNsaWNrKCk7CgogICAgICAgICAgICAjIGFkZCBhbnN3ZXJzIGZvciByYWRpbyBhbmQgY2hlY2tib3ggcXVlc3Rpb25zCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRRdWVzdGlvbnMtPntOYW1lfSBlcSAnUmFkaW9RdWVzdGlvbicKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbnMtPntOYW1lfSBlcSAnQ2hlY2tib3hRdWVzdGlvbicKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IHF1ZXN0aW9uIGlzIGluIGluY29tcGxldGUgc3RhdGUKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF90ZXh0KCIvL2RpdltcQGNsYXNzPSdDb250ZW50J10iKSwgJ0luY29tcGxldGUnICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJFF1ZXN0aW9ucy0+e05hbWV9IC0gaW5jb21wbGV0ZSIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2xpY2sgb24gdGVzdCBjcmVhdGVkIHF1ZXN0aW9uCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJFF1ZXN0aW9ucy0+e05hbWV9LCAnbGlua190ZXh0JyApLT5jbGljaygpOwoKICAgICAgICAgICAgICAgICMgd2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjQW5zd2VyJykubGVuZ3RoIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0Fuc3dlciIsICdjc3MnICktPnNlbmRfa2V5cyggJFF1ZXN0aW9ucy0+e0Fuc3dlcjF9ICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5jbGljaygpOwoKICAgICAgICAgICAgICAgICMgd2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjQW5zd2VyJykubGVuZ3RoIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0Fuc3dlciIsICdjc3MnICktPnNlbmRfa2V5cyggJFF1ZXN0aW9ucy0+e0Fuc3dlcjJ9ICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5jbGljaygpOwoKICAgICAgICAgICAgICAgICMgd2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjQW5zd2VyJykubGVuZ3RoIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJldHVybiBiYWNrIHRvIGFkZCBxdWVzdGlvbiBzY3JlZW4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdHbyBiYWNrJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5jbGljaygpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgcXVlc3Rpb24gaXMgaW4gY29tcGxldGUgc3RhdGUKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfdGV4dCgiLy9kaXZbXEBjbGFzcz0nQ29udGVudCddIiksICdDb21wbGV0ZScgKSA+IC0xLAogICAgICAgICAgICAgICAgIiRRdWVzdGlvbnMtPntOYW1lfSAtIGNvbXBsZXRlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNsaWNrIG9uIGRlbGV0ZSBpY29uCiAgICAgICAgICAgIG15ICRDaGVja0NvbmZpcm1KUyA9IDw8IkpBVkFTQ1JJUFQiOwooZnVuY3Rpb24gKCkgewogICAgdmFyIGxhc3RDb25maXJtID0gdW5kZWZpbmVkOwogICAgd2luZG93LmNvbmZpcm0gPSBmdW5jdGlvbiAobWVzc2FnZSkgewogICAgICAgIGxhc3RDb25maXJtID0gbWVzc2FnZTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07Cn0oKSk7CkpBVkFTQ1JJUFQKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgkQ2hlY2tDb25maXJtSlMpOwoKICAgICAgICAgICAgIyBkZWxldGUgdGVzdCBxdWVzdGlvbgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5RdWVzdGlvbkRlbGV0ZSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIi5EaWFsb2c6dmlzaWJsZSIpLmxlbmd0aCA9PT0gMDsnICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkUXVlc3Rpb25zLT57TmFtZX0gKSA9PSAtMSwKICAgICAgICAgICAgICAgICIkUXVlc3Rpb25zLT57TmFtZX0gLSBkZWxldGVkIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IHF1ZXVlCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUgV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTdXJ2ZXktUXVldWUgZm9yICRTdXJ2ZXlUaXRsZS0gZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5IFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgLSBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVTeXN0ZW1Db25maWd1cmF0aW9uID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIHNldCBzZW5kIHBlcmlvZCB0byBhbHdheXMgc2VuZCBzdXJ2ZXkKICAgICAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cwogICAgICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc3VydmV5IG9iamVjdAogICAgICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ1N1cnZleSBJbnRyb2R1Y3Rpb24nLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdTdXJ2ZXkgRGVzY3JpcHRpb24nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmlhdGlvbiBCb2R5JywKICAgICAgICAgICAgUXVldWVzICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1cnZleUlELAogICAgICAgICAgICAiU3VydmV5IElEICRTdXJ2ZXlJRCAtIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgYWRkIHF1ZXN0aW9uIHRvIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFF1ZXN0aW9uTmFtZSA9ICdRdWVzdGlvbiAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgU3VydmV5SUQgICAgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAkUXVlc3Rpb25OYW1lLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAnWWVzTm8nLAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRlc3Qgc3VydmV5IG9uIG1hc3RlciBzdGF0dXMKICAgICAgICBteSAkU3RhdHVzU2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgICAgICAgICBOZXdTdGF0dXMgPT4gJ01hc3RlcicKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAgICAgVE4gICAgICAgICAgID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAiU2VsZW5pdW0gVGVzdCBUaWNrZXQiLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdTZWxlbml1bUN1c3RvbWVyJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0ZXN0QGxvY2FsaG9zdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgYWRkIGFydGljZSB0byB0ZXN0IGNyZWF0ZWQgdGlja2V0CiAgICAgICAgbXkgJEFydGljbGVJRCA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJ25vdGUtaW50ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ0N1c3RvbWVyIEEgPGN1c3RvbWVyLWFAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgQ2MgICAgICAgICAgICAgPT4gJ0N1c3RvbWVyIEIgPGN1c3RvbWVyLWJAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgUmVwbHlUbyAgICAgICAgPT4gJ0N1c3RvbWVyIEIgPGN1c3RvbWVyLWJAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJ3NvbWUgc2hvcnQgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCBQZXJsIG1vZHVsZXMgcHJvdmlkZSBhIHJhbmdlIG9mJywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkVGlja2V0SUQsCiAgICAgICAgICAgICJBcnRpbGUgSUQgJEFydGljbGVJRCAtIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgc2VuZCBzdXJ2ZXkgcmVxdWVzdAogICAgICAgIG15ICRSZXF1ZXN0ID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdFNlbmQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkUmVxdWVzdCwKICAgICAgICAgICAgIlN1cnZleSByZXF1ZXN0IC0gc2VudCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgZ2V0IHB1YmxpYyBzdXJ2ZXkga2V5IGZyb20gdGVzdCBzdXJ2ZXkgcmVxdWVzdAogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIHB1YmxpY19zdXJ2ZXlfa2V5IEZST00gc3VydmV5X3JlcXVlc3QgV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICBteSAkUHVibGljU3VydmV5S2V5OwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkUHVibGljU3VydmV5S2V5ID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBQdWJsaWNTdXJ2ZXkgb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljU3VydmV5O1B1YmxpY1N1cnZleUtleT0kUHVibGljU3VydmV5S2V5Iik7CgogICAgICAgICMgc2VsZWN0IHllcyBhcyBhbnN3ZXIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQHZhbHVlPSdZZXMnXVtcQHR5cGU9J3JhZGlvJ10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nRmluaXNoJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5jbGljaygpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgY2xpY2sgb24gJ1N0YXRzIERldGFpbHMnIGFuZCBzd2l0Y2ggd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAzMC1TdGF0c0RldGFpbHMiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgY2hlY2sgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgdmVyaWZ5IHN0YXRzIGFyZSBmb3IgcmlnaHQgdGlja2V0CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGlja2V0TnVtYmVyICkgPiAtMSwKICAgICAgICAgICAgIlRpY2tldCBudW1iZXIgJFRpY2tldE51bWJlciAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGNsaWNrIHRvIHNlZSBkZXRhaWxzIG9mIHN0YXRzCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuU2VlRGV0YWlscyIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgdmVyaWZ5IHF1ZXN0aW9uIHZhbHVlcwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFF1ZXN0aW9uTmFtZSApID4gLTEsCiAgICAgICAgICAgICIkUXVlc3Rpb25OYW1lIC0gZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnWWVzJyApID4gLTEsCiAgICAgICAgICAgICJBbnN3ZXIgJ1llcycgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGVzdCBxdWVzdGlvbiBJRAogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIGlkIEZST00gc3VydmV5X3F1ZXN0aW9uIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgbXkgJFF1ZXN0aW9uSUQ7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRRdWVzdGlvbklEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNsZWFuLXVwIGRhdGEKICAgICAgICBteSBAQ2xlYW5EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVldWUnLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9xdWV1ZScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0Fuc3dlcicsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X2Fuc3dlcicsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAncXVlc3Rpb25faWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFF1ZXN0aW9uSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdzdXJ2ZXlfaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUmVxdWVzdCcsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3JlcXVlc3QnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdWb3RlJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfdm90ZScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAncXVlc3Rpb25faWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFF1ZXN0aW9uSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdTdXJ2ZXknLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRTdWNjZXNzOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGRhdGEgZnJvbSBEQgogICAgICAgIGZvciBteSAkRGVsZXRlIChAQ2xlYW5EYXRhKSB7CgogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSAkRGVsZXRlLT57VGFibGV9IFdIRVJFICREZWxldGUtPntTUUxJRH0gPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcIiREZWxldGUtPntJRH0iIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiJERlbGV0ZS0+e05hbWV9IGZvciAkU3VydmV5VGl0bGUgLSBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3N2aWtAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgLSBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5Wm9vbSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjcmVhdGUgbWVudSBtb2R1bGUgdGVzdCBwYXJhbXMKICAgICAgICBteSBATWVudU1vZHVsZSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAiQmFjayIsCiAgICAgICAgICAgICAgICBJRCAgID0+ICJNZW51MDAwLUJhY2siLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICJFZGl0IEdlbmVyYWwgSW5mbyIsCiAgICAgICAgICAgICAgICBJRCAgID0+ICJNZW51MDEwLUVkaXRHZW5lcmFsSW5mbyIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gIkVkaXQgUXVlc3Rpb25zIiwKICAgICAgICAgICAgICAgIElEICAgPT4gIk1lbnUwMjAtRWRpdFF1ZXN0aW9ucyIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gIkNoYW5nZSBTdGF0dXMiLAogICAgICAgICAgICAgICAgSUQgICA9PiAiTmV3U3RhdHVzIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHN1cnZleSBtZW51IG1vZHVsZXMKICAgICAgICBmb3IgbXkgJFN1cnZleU1lbnUgKEBNZW51TW9kdWxlKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJFN1cnZleU1lbnUtPntJRH0iLCAnY3NzJyApLAogICAgICAgICAgICAgICAgIlN1cnZleSBtZW51ICRTdXJ2ZXlNZW51LT57TmFtZX0gLSBmb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IERCIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGNsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YQogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5X3F1ZXVlIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU3VydmV5LVF1ZXVlIGZvciAkU3VydmV5VGl0bGUtIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIC0gZGVsZXRlZCIsCiAgICAgICAgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3N2aWtAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgLSBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5T3ZlcnZpZXcgb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3O1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAjIGNoZWNrIG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIGZvciBteSAkQ29sdW1ucyAoICdTdXJ2ZXkjJywgJ1RpdGxlJywgJ1N0YXR1cycsICdDcmVhdGVkJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENvbHVtbnMgKSA+IC0xLAogICAgICAgICAgICAgICAgIkNvbHVtbiAkQ29sdW1ucyAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkU3VydmV5VGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlLSBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSAtIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlU3lzdGVtQ29uZmlndXJhdGlvbiA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBzZXQgc2VuZCBwZXJpb2QgdG8gYWx3YXlzIHNlbmQgc3VydmV5CiAgICAgICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpTZW5kUGVyaW9kJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHNldCBubyBzZW5kIGNvbmRpdGlvbiBjaGVjayBpbiBub3JtYWwgdGVzdHMKICAgICAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHN1cnZleSBvYmplY3QKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHN1cnZleQogICAgICAgIG15ICRTdXJ2ZXJ5SW50cm9kdWN0aW9uICAgID0gJ1N1cnZleSBJbnRyb2R1Y3Rpb24nLAogICAgICAgICAgICBteSAkU3VydmVyeURlc2NyaXB0aW9uID0gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIG15ICRTdXJ2ZXlUaXRsZSAgICAgICAgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAkU3VydmVyeUludHJvZHVjdGlvbiwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAkU3VydmVyeURlc2NyaXB0aW9uLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmlhdGlvbiBCb2R5JywKICAgICAgICAgICAgUXVldWVzICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1cnZleUlELAogICAgICAgICAgICAiU3VydmV5IElEICRTdXJ2ZXlJRCAtIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHF1ZXN0aW9uIGRhdGEKICAgICAgICBteSBAUXVlc3Rpb25EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdZZXNObycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgICA9PiAnUmFkaW8nLAogICAgICAgICAgICAgICAgQW5zd2VyID0+IFsgIlJhZGlvT25lIiwgIlJhZGlvVHdvIiBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgICAgIEFuc3dlciA9PiBbICJDaGVja0JveE9uZSIsICJDaGVja0JveFR3byIgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGV4dGFyZWEnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IERCIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGFkZCBxdWVzdGlvbiBhbmQgYW5zd2VycyB0byB0ZXN0IHN1cnZleQogICAgICAgIG15IEBRdWVzdGlvbk5hbWVzOwogICAgICAgIG15IEBRdWVzdGlvbklEczsKICAgICAgICBteSBAQW5zd2VyTmFtZXM7CiAgICAgICAgbXkgQEFuc3dlcklEczsKICAgICAgICBmb3IgbXkgJFF1ZXN0aW9ucyAoQFF1ZXN0aW9uRGF0YSkgewogICAgICAgICAgICBteSAkUXVlc3Rpb25OYW1lID0gJFF1ZXN0aW9ucy0+e1R5cGV9IC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU3VydmV5SUQgICAgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJFF1ZXN0aW9uTmFtZSwKICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAkUXVlc3Rpb25zLT57VHlwZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0ZXN0IHF1ZXN0aW9uIElECiAgICAgICAgICAgIG15ICRRdWVzdGlvblF1b3RlZCA9ICREQk9iamVjdC0+UXVvdGUoJFF1ZXN0aW9uTmFtZSk7CiAgICAgICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleV9xdWVzdGlvbiBXSEVSRSBxdWVzdGlvbiA9ID8iLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUXVlc3Rpb25RdW90ZWQgXQogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkUXVlc3Rpb25JRDsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICAkUXVlc3Rpb25JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25JRHMsICRRdWVzdGlvbklEOwoKICAgICAgICAgICAgIyBhZGQgYW5zd2VyIGZvciByYWRpbyBhbmQgY2hlY2tib3ggcXVlc3Rpb25zCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRRdWVzdGlvbnMtPntUeXBlfSBlcSAnUmFkaW8nCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57VHlwZX0gZXEgJ0NoZWNrYm94JwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgZm9yIG15ICRBbnN3ZXJzICggQHsgJFF1ZXN0aW9ucy0+e0Fuc3dlcn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgPT4gJFF1ZXN0aW9uSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlciAgICAgICAgID0+ICRBbnN3ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRlc3QgYW5zd2VyIElECiAgICAgICAgICAgICAgICAgICAgbXkgJEFuc3dlclF1b3RlZCA9ICREQk9iamVjdC0+UXVvdGUoJEFuc3dlcnMpOwogICAgICAgICAgICAgICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIGlkIEZST00gc3VydmV5X2Fuc3dlciBXSEVSRSBhbnN3ZXIgPSA/IEFORCBxdWVzdGlvbl9pZCA9ID8iLAogICAgICAgICAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRBbnN3ZXJRdW90ZWQsIFwkUXVlc3Rpb25JRCBdCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBteSAkQW5zd2VySUQ7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRBbnN3ZXJJRCA9ICRSb3dbMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFuc3dlcklEcywgICAkQW5zd2VySUQ7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQW5zd2VyTmFtZXMsICRBbnN3ZXJzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHB1c2ggQFF1ZXN0aW9uTmFtZXMsICRRdWVzdGlvbk5hbWU7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0ZXN0IHN1cnZleSBvbiBtYXN0ZXIgc3RhdHVzCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN0YXR1c1NldCwKICAgICAgICAgICAgIlN1cnZleSBtYXN0ZXIgc3RhdHVzIC0gc2V0IiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAgICAgVE4gICAgICAgICAgID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAiU2VsZW5pdW0gVGVzdCBUaWNrZXQiLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdTZWxlbml1bUN1c3RvbWVyJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0ZXN0QGxvY2FsaG9zdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgYWRkIGFydGljZSB0byB0ZXN0IGNyZWF0ZWQgdGlja2V0CiAgICAgICAgbXkgJEFydGljbGVJRCA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJ25vdGUtaW50ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ0N1c3RvbWVyIEEgPGN1c3RvbWVyLWFAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgQ2MgICAgICAgICAgICAgPT4gJ0N1c3RvbWVyIEIgPGN1c3RvbWVyLWJAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgUmVwbHlUbyAgICAgICAgPT4gJ0N1c3RvbWVyIEIgPGN1c3RvbWVyLWJAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJ3NvbWUgc2hvcnQgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCBQZXJsIG1vZHVsZXMgcHJvdmlkZSBhIHJhbmdlIG9mJywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkVGlja2V0SUQsCiAgICAgICAgICAgICJBcnRpbGUgSUQgJEFydGljbGVJRCAtIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgc2VuZCBzdXJ2ZXkgcmVxdWVzdAogICAgICAgIG15ICRSZXF1ZXN0ID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdFNlbmQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkUmVxdWVzdCwKICAgICAgICAgICAgIlN1cnZleSByZXF1ZXN0IC0gc2VudCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgcHVibGljIHN1cnZleSBrZXkgZnJvbSB0ZXN0IHN1cnZleSByZXF1ZXN0CiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgcHVibGljX3N1cnZleV9rZXkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY1N1cnZleSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNTdXJ2ZXk7UHVibGljU3VydmV5S2V5PSRQdWJsaWNTdXJ2ZXlLZXkiKTsKCiAgICAgICAgIyBnZXQgdGVzdCBkYXRhCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdUaXRsZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdUaWNrZXQgTnVtYmVyJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICcnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFN1cnZlcnlJbnRyb2R1Y3Rpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBbQFF1ZXN0aW9uTmFtZXNdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnQW5zd2VyJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFtAQW5zd2VyTmFtZXNdLAogICAgICAgICAgICB9LAoKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHRlc3Qgc3VydmV5IHZhbHVlcwogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZSAoQFRlc3QpIHsKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRDaGVja1ZhbHVlLT57VmFsdWV9ICkgKSB7CiAgICAgICAgICAgICAgICBmb3IgKCBAeyAkQ2hlY2tWYWx1ZS0+e1ZhbHVlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJF8gKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAiJENoZWNrVmFsdWUtPntOYW1lfSAkXyAtIGZvdW5kIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDaGVja1ZhbHVlLT57VmFsdWV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJENoZWNrVmFsdWUtPntOYW1lfSAkQ2hlY2tWYWx1ZS0+e1ZhbHVlfSAtIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHZvdGUgZGF0YQogICAgICAgIG15IEBWb3RlRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjEkUXVlc3Rpb25JRHNbMF1ZZXMiLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ1llcycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjIkUXVlc3Rpb25JRHNbMV0kQW5zd2VySURzWzBdIiwKICAgICAgICAgICAgICAgIENoZWNrID0+ICdSYWRpb09uZScKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjMkQW5zd2VySURzWzJdIiwKICAgICAgICAgICAgICAgIENoZWNrID0+ICJDaGVja0JveE9uZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICIkUXVlc3Rpb25JRHNbM10iLAogICAgICAgICAgICAgICAgQW5zd2VyID0+ICdTZWxlbml1bSBTdXJ2ZXkgQW5zd2VyJywKICAgICAgICAgICAgICAgIENoZWNrICA9PiAnU2VsZW5pdW0gU3VydmV5IEFuc3dlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmaWxsIGluIHN1cnZleSBxdWVzdGlvbnMKICAgICAgICBmb3IgbXkgJFN1cnZleVZvdGUgKEBWb3RlRGF0YSkgewogICAgICAgICAgICBpZiAoICRTdXJ2ZXlWb3RlLT57QW5zd2VyfSApIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JpY2hUZXh0JFN1cnZleVZvdGUtPntJRH0iLCAnY3NzJyApLT5zZW5kX2tleXMoICRTdXJ2ZXlWb3RlLT57QW5zd2VyfSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nUHVibGljU3VydmV5Vm90ZSRTdXJ2ZXlWb3RlLT57SUR9J10iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzdWJtaXQgdm90ZQogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdGaW5pc2gnXVtcQHR5cGU9J3N1Ym1pdCddIiktPmNsaWNrKCk7CgogICAgICAgICMgdmVyaWZ5IHBvc3Qgdm90ZSBtZXNzYWdlcwogICAgICAgIG15ICRQb3N0Vm90ZSA9IFsgIlN1cnZleSBJbmZvcm1hdGlvbiIsICJUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suIiwgIlRoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuIiBdOwogICAgICAgIGZvciBteSAkUG9zdFZvdGVNZXNzYWdlICggQHskUG9zdFZvdGV9ICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkUG9zdFZvdGVNZXNzYWdlICkgPiAtMSwKICAgICAgICAgICAgICAgICInJFBvc3RWb3RlTWVzc2FnZScgbWVzc2FnZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5Wm9vbSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjbGljayBvbiAnU3RhdHMgRGV0YWlscycgYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDMwLVN0YXRzRGV0YWlscyIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBjbGljayB0byBzZWUgZGV0YWlscyBvZiBzdGF0cwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLlNlZURldGFpbHMiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIHZlcmlmeSB2b3RlIGRldGFpbHMKICAgICAgICBmb3IgbXkgJFZvdGVEZXRhaWxzIChAVm90ZURhdGEpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFZvdGVEZXRhaWxzLT57Q2hlY2t9ICkgPiAtMSwKICAgICAgICAgICAgICAgICJWb3RlICRWb3RlRGV0YWlscy0+e0NoZWNrfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNsZWFuLXVwIGRhdGEKICAgICAgICBteSBAQ2xlYW5EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVldWVzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcXVldWUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdBbnN3ZXJzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfYW5zd2VyJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdpZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiBbQEFuc3dlcklEc10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdRdWVzdGlvbnMnLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1JlcXVlc3RzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcmVxdWVzdCcsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1ZvdGVzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfdm90ZScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gW0BRdWVzdGlvbklEc10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdTdXJ2ZXknLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRTdWNjZXNzOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGRhdGEgZnJvbSBEQgogICAgICAgIGZvciBteSAkRGVsZXRlIChAQ2xlYW5EYXRhKSB7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkRGVsZXRlLT57SUR9ICkgKSB7CgogICAgICAgICAgICAgICAgbXkgJElEcyA9IGpvaW4gJywgJywgQHsgJERlbGV0ZS0+e0lEfSB9OwogICAgICAgICAgICAgICAgbXkgJFNRTFdoZXJlID0gIldIRVJFICREZWxldGUtPntTUUxJRH0gSU4gKCAkSURzICkiOwoKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NICREZWxldGUtPntUYWJsZX0gJFNRTFdoZXJlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAiJERlbGV0ZS0+e05hbWV9IGZvciAkU3VydmV5VGl0bGUgLSBkZWxldGVkIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NICREZWxldGUtPntUYWJsZX0gV0hFUkUgJERlbGV0ZS0+e1NRTElEfSA9ID8iLAogICAgICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJERlbGV0ZS0+e0lEfSBdLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgICAgICIkRGVsZXRlLT57TmFtZX0gZm9yICRTdXJ2ZXlUaXRsZSAtIGRlbGV0ZWQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGVzdCB0aWNrZXQKICAgICAgICAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTUgT1RSUyBBRywgaHR0cDovL290cnMuY29tL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LlN1cnZleVpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5Wm9vbS4KICovClN1cnZleS5BZ2VudC5TdXJ2ZXlab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewogICAgLyoqCiAgICAgKiBAbmFtZSBJZnJhbWVBdXRvSGVpZ2h0CiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LlN1cnZleVpvb20KICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJZnJhbWUgLSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2V0IGlmcmFtZSBoZWlnaHQgYXV0b21hdGljYWxseSBiYXNlZCBvbiByZWFsIGNvbnRlbnQgaGVpZ2h0IGFuZCBkZWZhdWx0IGNvbmZpZyBzZXR0aW5nLgogICAgICovCiAgICBUYXJnZXROUy5JZnJhbWVBdXRvSGVpZ2h0ID0gZnVuY3Rpb24gKCRJZnJhbWUpIHsKICAgICAgICB2YXIgTmV3SGVpZ2h0OwoKICAgICAgICBpZiAoaXNKUXVlcnlPYmplY3QoJElmcmFtZSkpIHsKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmhlaWdodCgpOwogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ1N1cnZleS5IVE1MUmljaFRleHRIZWlnaHREZWZhdWx0Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoTmV3SGVpZ2h0ID4gQ29yZS5Db25maWcuR2V0KCdTdXJ2ZXkuSFRNTFJpY2hUZXh0SGVpZ2h0TWF4JykpIHsKICAgICAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ1N1cnZleS5IVE1MUmljaFRleHRIZWlnaHRNYXgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbSB8fCB7fSkpOwo=
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gU3VydmV5IEdyYXBoCiAqLwoKZmllbGRzZXQuU3VydmV5R3JhcGhzIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKZmllbGRzZXQuU3VydmV5R3JhcGhzIC5RdWVzdGlvbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgd2lkdGg6IDI1JTsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKZmllbGRzZXQuU3VydmV5R3JhcGhzIC5BbnN3ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBsaW5lLWhlaWdodDogMS4zZW07CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGQUZBRkE7CiAgICB3aWR0aDogMjUlOwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgpkaXYuU3VydmV5R3JhcGggewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogNTAlOwogICAgaGVpZ2h0OiAyMnB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogM3B4Owp9CgpkaXYuU3VydmV5R3JhcGhDb250YWluZXIgewogICAgd2lkdGg6IDk1JTsKICAgIGhlaWdodDogMjJweDsKfQoKZGl2LlN1cnZleUdyYXBoQmFyIHsKICAgIGhlaWdodDogMjJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGMkIxM0U7Cn0KCnAuU3VydmV5R3JhcGhMZXllbmQgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBsaW5lLWhlaWdodDogMS4zZW07CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIHdpZHRoOiAxMCU7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBoZWlnaHQ6IDIycHg7Cn0KCi5TdWJMYWJlbCB7CiAgICB3aWR0aDogMzUlOwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBmbG9hdDogbGVmdDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouU3ViRmllbGQgewogICAgbWFyZ2luLWxlZnQ6IDM1JTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgphLkFycm93VXAsCmEuQXJyb3dVcERpc2FibGVkLAphLkFycm93RG93biwKYS5BcnJvd0Rvd25EaXNhYmxlZCB7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAxcHg7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMXB4OwogICAgYm9yZGVyLXN0eWxlOiBub25lOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKYS5BcnJvd1VwLAphLkFycm93RG93biB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmEuQXJyb3dVcERpc2FibGVkLAphLkFycm93RG93bkRpc2FibGVkIHsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKYS5BcnJvd1VwOmFjdGl2ZSwKYS5BcnJvd0Rvd246YWN0aXZlIHsKICAgIG1hcmdpbi10b3A6IDFweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCmEuQXJyb3dVcERpc2FibGVkOmFjdGl2ZSwKYS5BcnJvd0Rvd25EaXNhYmxlZDphY3RpdmUgewogICAgbWFyZ2luLXRvcDogMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMXB4Owp9CgphLkFycm93VXAgaSwKYS5BcnJvd0Rvd24gaSB7CiAgICBjb2xvcjogIzMzOTlGRjsKfQoKYS5BcnJvd1VwOmhvdmVyIGksCmEuQXJyb3dEb3duOmhvdmVyIGkgewogICAgY29sb3I6ICMzMzk5MDAgIWltcG9ydGFudDsKfQoKYS5BcnJvd1VwRGlzYWJsZWQsCmEuQXJyb3dEb3duRGlzYWJsZWQgewogICAgZGlzcGxheTogaW5saW5lICFJbXBvcnRhbnQ7Cn0KCmEuQXJyb3dVcERpc2FibGVkIGksCmEuQXJyb3dEb3duRGlzYWJsZWQgaSB7CiAgICBjb2xvcjogIzkwOTA5MDsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKYS5TZWVEZXRhaWxzIHsKICAgIGhlaWdodDogMTVweDsKICAgIHBhZGRpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IC02cHg7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgphLlNlZURldGFpbHMgc3BhbiB7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgZGlzcGxheTogbm9uZTsKfQoKYS5TZWVEZXRhaWxzIGkgewogICAgY29sb3I6ICNGRjk5MjI7Cn0KCmxhYmVsLlRleHRhcmVhLApkaXYuVGV4dGFyZWEgewogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIG1hcmdpbi10b3A6IDEwcHg7Cn0KCi5GaWVsZCB1bCBsaXsKICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwogICAgbGlzdC1zdHlsZTogZGlzYzsKfQoKLkZpZWxkIG9sIGxpewogICAgbWFyZ2luLWxlZnQ6IDMwcHg7CiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsOwp9CiNTdXJ2ZXlFbXB0eU1lc3NhZ2VTbWFsbCB7CiAgICBib3JkZXItY29sb3I6ICNkZGQ7CiAgICBib3JkZXItaW1hZ2U6IG5vbmU7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICBwYWRkaW5nOiA3cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKCi5UYWJsZVNtYWxsIHRib2R5IHRyLkludmFsaWQgewogICAgY29sb3I6ICNDQ0M7Cn0KCn0=
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEN1c3RvbWVyIEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTdXJ2ZXkgLSBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgQ3VzdG9tZXIKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKZGl2LlN1cnZleUJsb2NrIHsKICAgIG1hcmdpbjogOHB4IDAgMTNweDsKICAgIHBhZGRpbmctYm90dG9tOiA1cHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjRkZGRkZGIDAlLCAjRjhGOUY5IDEwMCUpIHJlcGVhdCBzY3JvbGwgMCAwIHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAxcHggc29saWQgI0VBRUVFRTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHdpZHRoOiA3MzhweDsKfQoKLlN1cnZleUJsb2NrIGRpdi5Db250ZW50IHsKICAgIGJvcmRlcjogMHB4Owp9CgouU3VydmV5QmxvY2tIZWFkZXIgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFOEU5RTk7CiAgICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRkZGRkZGOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiA1cHggOHB4IDRweDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGRkZGRkY7Cn0KCmZpZWxkc2V0LlN1cnZleSB7CiAgICB3aWR0aDogNzM4cHg7Cn0KCmRpdi5BY3Rpb25Sb3cgewogICAgd2lkdGg6IDcyMHB4Owp9CgpkaXYuSW50cm8gLkNvbnRlbnR7CiAgICBib3JkZXItdG9wOiAwOwp9CgpkaXYuUXVlc3Rpb257CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M5QzlDOTsKICAgIGNvbG9yOiAjOTI5MjkyOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbWFyZ2luLWxlZnQ6IDQwcHg7CiAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgd2lkdGg6IDUyMHB4OwogICAgcGFkZGluZzogNHB4IDlweCAzcHggOXB4OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0VDRUVFRTsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCmRpdi5NYW5kYXRvcnkgewogICAgY29sb3I6IGJsYWNrOwp9CgpkaXYuRXJyb3IgewogICAgY29sb3I6ICNmZjUwNWUgIWltcG9ydGFudDsKfQoKZGl2LlRvb2x0aXBFcnJvcnsKICAgIG1hcmdpbjogLTEwcHggMCAwcHggNzVweDsKfQpkaXYuVG9vbHRpcEVycm9yIGRpdjpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wOiAwcHggIWltcG9ydGFudDsKfQpkaXYuVG9uZ3VlIHsKICAgIGJvcmRlcjogMHB4OwogICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7Cn0KCmxhYmVsLkFuc3dlciB7CiAgICBiYWNrZ3JvdW5kOm5vbmU7CiAgICBib3JkZXI6IG5vbmU7CiAgICB3aWR0aDogMzY1cHg7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgbWFyZ2luLXRvcDogM3B4OwogICAgdGV4dC1hbGlnbjpsZWZ0Owp9CgpmaWVsZHNldCBpbnB1dCwKZGl2LkFuc3dlciB7CiAgICBmbG9hdDpsZWZ0Owp9CgpmaWVsZHNldCBpbnB1dCwKZmllbGRzZXQgdGV4dGFyZWEsCmRpdi5BbnN3ZXIgewogICAgbWFyZ2luOiA3cHggMCA3cHggNzVweDsKfQoKLlJpY2hUZXh0QW5zd2VyIHsKICAgIG1hcmdpbjogN3B4IDAgN3B4IDc1cHg7Cn0KCmRpdi5BbnN3ZXIgewogICAgcGFkZGluZzowcHg7Cn0KCi5TdXJ2ZXlCdXR0b24gewogICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjVweDsKICAgIC1tb3otYm94LXNoYWRvdzowIDAgM3B4ICNGNkY5Rjk7CiAgICBib3JkZXItY29sb3I6LW1vei11c2UtdGV4dC1jb2xvciAjRDZENkQ2ICNENkQ2RDY7CiAgICBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNENkQ2RDY7CiAgICBib3JkZXItc3R5bGU6bm9uZSBzb2xpZCBzb2xpZDsKICAgIGJvcmRlci13aWR0aDptZWRpdW0gMXB4IDFweDsKICAgIGJvdHRvbTotMjJweDsKICAgIGNvbG9yOiM5OTk5OTk7CiAgICBkaXNwbGF5Om5vbmU7CiAgICBoZWlnaHQ6MTBweDsKICAgIG1hcmdpbjowIDEzcHg7CiAgICBwYWRkaW5nOjRweCA4cHggN3B4IDI0cHg7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsKfQp9
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE1IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgdmFyOjpwYWNrYWdlc2V0dXA6OlN1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycsCik7Cgo9aGVhZDEgTkFNRQoKU3VydmV5LnBtIC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OlN1cnZleScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHJlYnVpbGQgWlpaKiBmaWxlcwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5Xcml0ZURlZmF1bHQoKTsKCiAgICAjIGRlZmluZSB0aGUgWlpaIGZpbGVzCiAgICBteSBAWlpaRmlsZXMgPSAoCiAgICAgICAgJ1paWkFBdXRvLnBtJywKICAgICAgICAnWlpaQXV0by5wbScsCiAgICApOwoKICAgICMgcmVsb2FkIHRoZSBaWlogZmlsZXMgKG1vZF9wZXJsIHdvcmthcm91bmQpCiAgICBmb3IgbXkgJFpaWkZpbGUgKEBaWlpGaWxlcykgewoKICAgICAgICBQUkVGSVg6CiAgICAgICAgZm9yIG15ICRQcmVmaXggKEBJTkMpIHsKICAgICAgICAgICAgbXkgJEZpbGUgPSAkUHJlZml4IC4gJy9LZXJuZWwvQ29uZmlnL0ZpbGVzLycgLiAkWlpaRmlsZTsKICAgICAgICAgICAgbmV4dCBQUkVGSVggaWYgIS1mICRGaWxlOwogICAgICAgICAgICBkbyAkRmlsZTsKICAgICAgICAgICAgbGFzdCBQUkVGSVg7CiAgICAgICAgfQogICAgfQoKICAgICMgYWx3YXlzIGRpc2NhcmQgdGhlIGNvbmZpZyBvYmplY3QgYmVmb3JlIHBhY2thZ2UgY29kZSBpcyBleGVjdXRlZCwKICAgICMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbmZpZyBvYmplY3Qgd2lsbCBiZSBjcmVhdGVkIG5ld2x5LCBzbyB0aGF0IGl0CiAgICAjIHdpbGwgdXNlIHRoZSByZWNlbnRseSB3cml0dGVuIG5ldyBjb25maWcgZnJvbSB0aGUgcGFja2FnZQogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgICAgIE9iamVjdHMgPT4gWydLZXJuZWw6OkNvbmZpZyddLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVuaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlVW5pbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8yXzBfOTIoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDIuMC45Mi4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMF85MigpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8yXzBfOTIgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFNFTEVDVCBhbGwgZnVuY3Rpb25hbGl0eSB2YWx1ZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgc2VuZF90aW1lCiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QnLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIFJPVzoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG5leHQgUk9XIGlmICEkUm93WzFdOwoKICAgICAgICBwdXNoIEBMaXN0LCBcQFJvdzsKICAgIH0KCiAgICAjIHNhdmUgZW50cmllcyBpbiBuZXcgdGFibGUKICAgIGZvciBteSAkRW50cnkgKEBMaXN0KSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgICAgICBTRVQgY3JlYXRlX3RpbWUgPSA/CiAgICAgICAgICAgICAgICBXSEVSRSAgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkRW50cnktPlsxXSwgXCRFbnRyeS0+WzBdIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81KCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiAyLjEuNS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81IHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGFsbCBzdXJ2ZXlfcXVlc3Rpb24gcmVjb3JkcwogICAgIyB0aGF0IGRvbid0IGhhdmUgYW5zd2VyX3JlcXVpcmVkIHNldCB0byBzb21ldGhpbmcKICAgICMgdG8gMAogICAgJFNlbGYtPl9QcmVmaWxsX0Fuc3dlclJlcXVpcmVkRnJvbVN1cnZleVF1ZXN0aW9uXzJfMV81KCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjEuCgpteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG1pZ3JhdGUgdGhlIERUTCBDb250ZW50IGluIHRoZSBTeXNDb25maWcKICAgICRTZWxmLT5fTWlncmF0ZURUTEluU3lzQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDQuMC45MS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCiAgICAkU2VsZi0+X01pZ3JhdGVDb25maWdzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9QcmVmaWxsX0Fuc3dlclJlcXVpcmVkRnJvbVN1cnZleVF1ZXN0aW9uXzJfMV81KCkKCkluc2VydHMgMCBpbnRvIGFsbCBhbnN3ZXJfcmVxdWlyZWQgcmVjb3JkcyBvZiB0YWJsZSBzdXZleV9xdWVzdGlvbgp3aGVyZSB0aGVyZSBpcyBubyBlbnRyeSBwcmVzZW50LgoKICAgIG15ICRTdWNjZXNzID0gJFBhY2thZ2VTZXR1cC0+X1ByZWZpbGxfQW5zd2VyUmVxdWlyZWRGcm9tU3VydmV5UXVlc3Rpb25fMl8xXzUoKTsKCj1jdXQKCnN1YiBfUHJlZmlsbF9BbnN3ZXJSZXF1aXJlZEZyb21TdXJ2ZXlRdWVzdGlvbl8yXzFfNSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBhbnN3ZXJfcmVxdWlyZWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24nLAogICAgKTsKICAgIG15IEBJZHNUb1VwZGF0ZTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIGlmIHdlIGhhZCBhbiBpZAogICAgICAgICMgYnV0IG5vIGFuc3dlcl9yZXF1aXJlZCBvciBhbnN3ZXJfcmVxdWlyZWQgaXNuJ3QgMCBvciAxCiAgICAgICAgIyBjb2xsZWN0IHRoZSBJRCBpbiBASWRzVG9VcGRhdGUKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFJvd1swXQogICAgICAgICAgICAmJiBsZW5ndGggJFJvd1swXQogICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAhZGVmaW5lZCAkUm93WzFdCiAgICAgICAgICAgICAgICB8fCAoICRSb3dbMV0gbmUgJzAnICYmICRSb3dbMV0gbmUgJzEnICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBwdXNoIEBJZHNUb1VwZGF0ZSwgJFJvd1swXTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRRdWVzdGlvbklEIChASWRzVG9VcGRhdGUpIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgICAgICBTRVQgYW5zd2VyX3JlcXVpcmVkID0gMAogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFF1ZXN0aW9uSUQsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX01pZ3JhdGVEVExJblN5c0NvbmZpZyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRQcm92aWRlck9iamVjdCAgPSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyLT5uZXcoKTsKCiAgICAjIGdldCBzZXR0aW5nJ3MgY29udGVudAogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhJFNldHRpbmc7CgogICAgTUVOVU1PRFVMRToKICAgIGZvciBteSAkTWVudU1vZHVsZSAoIHNvcnQga2V5cyAleyRTZXR0aW5nfSApIHsKCiAgICAgICAgbXkgJFNldHRpbmdDb250ZW50ID0gJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntMaW5rfTsKCiAgICAgICAgIyBkbyBub3RoaW5nIG5vIHZhbHVlIGZvciBtaWdyYXRpbmcKICAgICAgICBuZXh0IE1FTlVNT0RVTEUgaWYgISRTZXR0aW5nQ29udGVudDsKCiAgICAgICAgbXkgJFRUQ29udGVudDsKICAgICAgICBldmFsIHsKICAgICAgICAgICAgJFRUQ29udGVudCA9ICRQcm92aWRlck9iamVjdC0+TWlncmF0ZURUTHRvVFQoIENvbnRlbnQgPT4gJFNldHRpbmdDb250ZW50ICk7CiAgICAgICAgfTsKICAgICAgICBpZiAoJEApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRNZW51TW9kdWxlLT5MaW5rIDogJEAhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBuZXh0IE1FTlVNT0RVTEUgaWYgJFNldHRpbmdDb250ZW50IGVxICRUVENvbnRlbnQ7CgogICAgICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+e0xpbmt9ID0gJFRUQ29udGVudDsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2V0dGluZywKICAgICAgICApOwogICAgfQogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9NaWdyYXRlQ29uZmlncygpCgpjaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fTWlncmF0ZUNvbmZpZ3MoKTsKCj1jdXQKCnN1YiBfTWlncmF0ZUNvbmZpZ3MgewoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBtaWdyYXRlIHN1cnZleSBtZW51IG1vZHVsZSBzeXNjb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3Igc3VydmV5IHN5c2NvbmZpZwogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKCiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICBteSAkTW9kdWxlID0gJFNldHRpbmctPnskTWVudU1vZHVsZX0tPnsnTW9kdWxlJ307CiAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICEkTW9kdWxlOwoKICAgICAgICBpZiAoICRNb2R1bGUgIX4gbXtLZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudShcdyspfSApIHsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNOwogICAgICAgIH0KCiAgICAgICAgJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjokMSI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIycgLiAkTWVudU1vZHVsZSwKICAgICAgICAgICAgVmFsdWUgPT4gJFNldHRpbmctPnskTWVudU1vZHVsZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG1pZ3JhdGUgc3VydmV5IG92ZXJ2aWV3IHNtYWxsIFN5c0NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBzdXJ2ZXkgU3lzQ29uZmlnCiAgICAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpGcm9udGVuZDo6T3ZlcnZpZXcnKTsKCiAgICBpZiAoICRTZXR0aW5nLT57J1NtYWxsJ30tPntNb2R1bGV9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICAkU2V0dGluZy0+eydTbWFsbCd9LT57TW9kdWxlfSA9ICJLZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5T3ZlcnZpZXc6OlNtYWxsIjsKCiAgICAgICAgIyBzZXQgbmV3IHNldHRpbmcKICAgICAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldyMjI1NtYWxsJywKICAgICAgICAgICAgVmFsdWUgPT4gJFNldHRpbmctPnsnU21hbGwnfSwKICAgICAgICApOwogICAgfQoKICAgICMgbWlncmF0ZSBzdXJ2ZXkgcHJlZmVyZW5jZSBTeXNDb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3Igc3VydmV5IFN5c0NvbmZpZwogICAgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1ByZWZlcmVuY2VzR3JvdXBzJyk7CgogICAgaWYgKCAkU2V0dGluZy0+eydTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duJ30tPntNb2R1bGV9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICAkU2V0dGluZy0+eydTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duJ30tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYyI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMjIyNTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duJywKICAgICAgICAgICAgVmFsdWUgPT4gJFNldHRpbmctPnsnU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93bid9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlz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K0b1R5vHHMaOjfuNX3my8MnI0+yn0xPFP6v+XPvM/Nl3v3j+0j8ZOznyXPz806+bXmi+2Pdy9sueqbCph6+Er6Zfl7zRfLP/Lett37uYd6PT+e+x7ys/WHzo/hj08f4n4adPvwHJ4vTiCmVuZHN0cmVhbQplbmRvYmoKNiAwIG9iagpbL0lDQ0Jhc2VkIDUgMCBSXQplbmRvYmoKNyAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDEzIDAgUgo+PgpzdHJlYW0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz48eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj4KPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHJkZjphYm91dD0iIj4KPGRjOmxhbmd1YWdlPmVuPC9kYzpsYW5ndWFnZT4KPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KPGRjOmRhdGU+MjAxNS0xMC0xNVQwNToyMDoxNiswMjowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UERGVmVyc2lvbj4xLjQ8L3BkZjpQREZWZXJzaW9uPgo8cGRmOlByb2R1Y2VyPkFwYWNoZSBGT1AgVmVyc2lvbiAxLjE8L3BkZjpQcm9kdWNlcj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTEwLTE1VDA1OjIwOjE2KzAyOjAwPC94bXA6Q3JlYXRlRGF0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bnVsbF0KPj4KZW5kb2JqCjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjY3LjYyOSAxNTMuODExIDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjMzOCA2NjcuNjI5IDU0Mi42OTggNjc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MSAwIFIKL0ggL0kKCj4+CmVuZG9iago4NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY1NS42MjkgMjA0LjkyOSA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS45NTYgNjU1LjYyOSA1NDIuMzE2IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjQzLjYyOSAxNzMuMzgzIDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODcgMCBSCi9IIC9JCgo+PgplbmRvYmoKODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjM0NCA2NDMuNjI5IDU0Mi43MDQgNjUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDE2NC44ODggNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuNTgzIDYzMS42MjkgNTQyLjk0MyA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNTU4LjAgbnVsbF0KPj4KZW5kb2JqCjk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxOS42MjkgMjA5LjUwMyA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4wNiA2MTkuNjI5IDU0Mi40MiA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYwNy42MjkgMjIxLjcxOSA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS45NjIgNjA3LjYyOSA1NDIuMzIyIDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzQgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTk1LjYyOSAxNDkuMzY3IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4zNzIgNTk1LjYyOSA1NDIuNzMyIDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM0IDAgUiAvWFlaIDcyLjAgNjc4LjggbnVsbF0KPj4KZW5kb2JqCjEwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODMuNjI5IDE5OC45NTYgNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4xNDIgNTgzLjYyOSA1NDIuNTAyIDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDYwMi40IG51bGxdCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTcxLjYyOSAxOTQuNTkxIDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMTc4IDU3MS42MjkgNTQyLjUzOCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTU5LjYyOSAxNjEuNzYgNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4yNzggNTU5LjYyOSA1NDIuNjM4IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDY2Ni4xNzggbnVsbF0KPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NDcuNjI5IDQ2Ni41MzIgNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4wMjEgNTQ3LjYyOSA1NDAuMzgxIDU1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDYwMC4xNjEgbnVsbF0KPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDMxNi41OTYgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4yMDkgNTM1LjYyOSA1NDEuNTY5IDU0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDUzNC4xNDQgbnVsbF0KPj4KZW5kb2JqCjExOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjMuNjI5IDMxNi41ODYgNTMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4yMDkgNTIzLjYyOSA1NDEuNTY5IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDQ2OC4xMjcgbnVsbF0KPj4KZW5kb2JqCjEyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MTEuNjI5IDM2Ni4yNjkgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC44MTUgNTExLjYyOSA1NDEuMTc1IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDQwMi4xMSBudWxsXQo+PgplbmRvYmoKMTI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ5OS42MjkgMzQzLjI3IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuOTk3IDQ5OS42MjkgNTQxLjM1NyA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCAzMzYuMDkzIG51bGxdCj4+CmVuZG9iagoxMjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDg3LjYyOSAzMjIuNzIyIDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuMTYxIDQ4Ny42MjkgNTQxLjUyMSA0OTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCAyNzAuMDc2IG51bGxdCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDc1LjYyOSAzMjYuMDE5IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuMTM1IDQ3NS42MjkgNTQxLjQ5NSA0ODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCAyMDQuMDU5IG51bGxdCj4+CmVuZG9iagoxMzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDYzLjYyOSA0MDYuODM4IDQ3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNDkzIDQ2My42MjkgNTQwLjg1MyA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCAxMzguMDQyIG51bGxdCj4+CmVuZG9iagoxMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDUxLjYyOSAzMjUuMzMxIDQ2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuMTQgNDUxLjYyOSA1NDEuNSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQzOS42MjkgMzExLjk4NCA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjI0NiA0MzkuNjI5IDU0MS42MDYgNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNjQ4Ljk0NiBudWxsXQo+PgplbmRvYmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQyNy42MjkgMzA4LjI3OSA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjI3NSA0MjcuNjI5IDU0MS42MzUgNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNTgzLjY5NiBudWxsXQo+PgplbmRvYmoKMTQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQxNS42MjkgMzIzLjgxNyA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjE1MiA0MTUuNjI5IDU0MS41MTIgNDI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNTE4LjQ0NiBudWxsXQo+PgplbmRvYmoKMTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQwMy42MjkgNDI1LjA1NiA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjM0OSA0MDMuNjI5IDU0MC43MDkgNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNDQxLjE5NiBudWxsXQo+PgplbmRvYmoKMTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM5MS42MjkgMzU3LjUxNCA0MDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0Ljg4NSAzOTEuNjI5IDU0MS4yNDUgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMzc1Ljk0NiBudWxsXQo+PgplbmRvYmoKMTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM3OS42MjkgMzQxLjcxNiAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjAxIDM3OS42MjkgNTQxLjM3IDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDMxMC42OTYgbnVsbF0KPj4KZW5kb2JqCjE1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDM1My44OTggMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC45MTMgMzY3LjYyOSA1NDEuMjczIDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDI0NS40NDYgbnVsbF0KPj4KZW5kb2JqCjE2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNTUuNjI5IDQwNy4yMTcgMzY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC40OTEgMzU1LjYyOSA1NDAuODUxIDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDE4MC4xOTYgbnVsbF0KPj4KZW5kb2JqCjE2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNDMuNjI5IDM5OS4wMjkgMzUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC41NTUgMzQzLjYyOSA1NDAuOTE1IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDExNC45NDYgbnVsbF0KPj4KZW5kb2JqCjE2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMzEuNjI5IDM4OS45NzUgMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC42MjcgMzMxLjYyOSA1NDAuOTg3IDM0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDY5Ni4wIG51bGxdCj4+CmVuZG9iagoxNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzE5LjYyOSAzMTguNDc4IDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuMTk0IDMxOS42MjkgNTQxLjU1NCAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA2MjkuMzM1IG51bGxdCj4+CmVuZG9iagoxNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzA3LjYyOSAxOTMuNzczIDMxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMTgzIDMwNy42MjkgNTQyLjU0MyAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA1NjIuNjcgbnVsbF0KPj4KZW5kb2JqCjE3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyOTUuNjI5IDI0OS4xNDMgMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS43NDQgMjk1LjYyOSA1NDIuMTA0IDMwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDQ5Ni4wMDUgbnVsbF0KPj4KZW5kb2JqCjE3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyODMuNjI5IDMxMy4xOTkgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4yMzYgMjgzLjYyOSA1NDEuNTk2IDI5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDQyOS4zNCBudWxsXQo+PgplbmRvYmoKMTgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI3MS42MjkgMjU5LjgxMSAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjY1OSAyNzEuNjI5IDU0Mi4wMTkgMjgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMzYyLjY3NSBudWxsXQo+PgplbmRvYmoKMTg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI1OS42MjkgMjYyLjYzIDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNjM3IDI1OS42MjkgNTQxLjk5NyAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAyOTYuMDEgbnVsbF0KPj4KZW5kb2JqCjE4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyNDcuNjI5IDI4Mi44MiAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjQ3NyAyNDcuNjI5IDU0MS44MzcgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMjE3LjM0NSBudWxsXQo+PgplbmRvYmoKMTkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDIzNS42MjkgMjc4Ljk2NSAyNDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjUwOCAyMzUuNjI5IDU0MS44NjggMjQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMTUwLjY4IG51bGxdCj4+CmVuZG9iagoxOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjIzLjYyOSAyMjQuNDUxIDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuOTQgMjIzLjYyOSA1NDIuMyAyMzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDIxMS42MjkgMjQxLjEyNSAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjgwOCAyMTEuNjI5IDU0Mi4xNjggMjIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNjQ5LjYgbnVsbF0KPj4KZW5kb2JqCjE5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxOTkuNjI5IDM5MC43OTIgMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC42MjEgMTk5LjYyOSA1NDAuOTgxIDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAxODcuNjI5IDEyNS4yNzcgMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi41NTIgMTg3LjYyOSA1NDIuOTEyIDE5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDcwMC44IG51bGxdCj4+CmVuZG9iagoyMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTc1LjYyOSAyMTUuMjI3IDE4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMDE0IDE3NS42MjkgNTQyLjM3NCAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCA1NTUuOTI2IG51bGxdCj4+CmVuZG9iagoyMDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTYzLjYyOSAxOTEuNjY0IDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMiAxNjMuNjI5IDU0Mi41NiAxNzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCAyMzYuMDIgbnVsbF0KPj4KZW5kb2JqCjIxMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNTEuNjI5IDI3MS44NzcgMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS41NjYgMTUxLjYyOSA1NDEuOTI2IDE2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyMTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTM5LjYyOSAyMjcuOTE2IDE0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuOTE0IDEzOS42MjkgNTQyLjI3NCAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIxMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTUgMCBSIC9YWVogNzIuMCA0NDAuMzQ1IG51bGxdCj4+CmVuZG9iagoyMTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTI3LjYyOSAyMDIuNjI3IDEzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMTE0IDEyNy42MjkgNTQyLjQ3NCAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIxNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTUgMCBSIC9YWVogNzIuMCAzMDQuMjcxIG51bGxdCj4+CmVuZG9iagoyMjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTE1LjYyOSAyMDUuNjEzIDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMDkgMTE1LjYyOSA1NDIuNDUgMTI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjIyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYxIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjIyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDEwMy42MjkgMjYxLjYzMiAxMTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI5LjEyNCAxMDMuNjI5IDU0MS44NDQgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjI1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzY0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjIyNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDkxLjYyOSAxMzAuMDgxIDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzAuMTA4IDkxLjYyOSA1NDIuODI4IDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIyOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyMjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA3OS42MjkgMTE5LjAzNiA4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzAuMTkgNzkuNjI5IDU0Mi45MSA4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIzMSAwIG9iago8PCAvTGVuZ3RoIDIzMiAw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jU2ScePGJiGCcWNAGMu4MSCMI9zYk338vX/TRQdP9vGuCfn/YHzyXq33l75+Pr7z8wvIHsnjCmVuZHN0cmVhbQplbmRvYmoKNzkgMCBvYmoKWwo3OCAwIFIKODAgMCBSCjgyIDAgUgo4MyAwIFIKODUgMCBSCjg2IDAgUgo4OCAwIFIKODkgMCBSCjkxIDAgUgo5MiAwIFIKOTQgMCBSCjk1IDAgUgo5NyAwIFIKOTggMCBSCjEwMCAwIFIKMTAxIDAgUgoxMDMgMCBSCjEwNCAwIFIKMTA2IDAgUgoxMDcgMCBSCjEwOSAwIFIKMTEwIDAgUgoxMTIgMCBSCjExMyAwIFIKMTE1IDAgUgoxMTYgMCBSCjExOCAwIFIKMTE5IDAgUgoxMjEgMCBSCjEyMiAwIFIKMTI0IDAgUgoxMjUgMCBSCjEyNyAwIFIKMTI4IDAgUgoxMzAgMCBSCjEzMSAwIFIKMTMzIDAgUgoxMzQgMCBSCjEzNiAwIFIKMTM3IDAgUgoxMzkgMCBSCjE0MCAwIFIKMTQyIDAgUgoxNDMgMCBSCjE0NSAwIFIKMTQ2IDAgUgoxNDggMCBSCjE0OSAwIFIKMTUxIDAgUgoxNTIgMCBSCjE1NCAwIFIKMTU1IDAgUgoxNTcgMCBSCjE1OCAwIFIKMTYwIDAgUgoxNjEgMCBSCjE2MyAwIFIKMTY0IDAgUgoxNjYgMCBSCjE2NyAwIFIKMTY5IDAgUgoxNzAgMCBSCjE3MiAwIFIKMTczIDAgUgoxNzUgMCBSCjE3NiAwIFIKMTc4IDAgUgoxNzkgMCBSCjE4MSAwIFIKMTgyIDAgUgoxODQgMCBSCjE4NSAwIFIKMTg3IDAgUgoxODggMCBSCjE5MCAwIFIKMTkxIDAgUgoxOTMgMCBSCjE5NCAwIFIKMTk2IDAgUgoxOTcgMCBSCjE5OSAwIFIKMjAwIDAgUgoyMDIgMCBSCjIwMyAwIFIKMjA1IDAgUgoyMDYgMCBSCjIwOCAwIFIKMjA5IDAgUgoyMTEgMCBSCjIxMiAwIFIKMjE0IDAgUgoyMTUgMCBSCjIxNyAwIFIKMjE4IDAgUgoyMjAgMCBSCjIyMSAwIFIKMjIzIDAgUgoyMjQgMCBSCjIyNiAwIFIKMjI3IDAgUgoyMjkgMCBSCjIzMCAwIFIKXQplbmRvYmoKNzYgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDMgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0Fubm90cyA3OSAwIFIKICAvQ29udGVudHMgMjMxIDAgUgo+PgoKZW5kb2JqCjIzMiAwIG9iagoyODgyMAplbmRvYmoKMjM0IDAgb2JqCjw8IC9MZW5ndGggMjM1IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNVMtuGzEMvOsr+ANVSOoNFAUSOy7am9EFcghySl+HbAr30t8vKWntXds1WqAHw1hIpEbUcDTyzhCg/N7okArD82h2PUeQGFzsqRDBoc0hIhKMUGOyhDV+EfhRtMf2KE5rvdI+/g4P5tUgvDePTwL9DGgD/DJ4etys5CeznfHUVbxannOmjviKme5M8s0OHC2VUEqBzMDJsmCeR7j5MDKsf9SmtkujRM82UlgaCKFkm3PPSs5ykLN18QVYDvEeEfkkVNhRJtS22/jHBnv901LH99AQl9hRsFjiYtpK7aN/YbQsoWwQvpm7wdxsRDNCGL4eXqJce06ivWwgkn1BO0kwjPD4VqZ3Em3ePcHw0dwPy6482SAv9qpEr7ZitYiPWWyS4ecXeIBXSfuArWedZILIk8v85LKFx1L9fzooJ/rEhXKCczYFEu1ynARjks914ZTgrXxZvnuVFdEVeQG+zedYlDyvOlbz8lJQcasmfiPACwIZ9ArI6e35iQDFdgClPvaCykVHWve13LDIfZ5m89ixqddbzfatGmZyxTlPqfLypL26qkzEPLUNB+edhalAKhYpndAF0kB53DZRKjfXcFUkFTC0fqt4mi+XhMvFlqqOP9zcZilcvam/EU9vdRJP1p2fYddNMK1d6606vlwSj4ht0IdIzJfUO4f7b/LJ6ELLo3SBafLp7M9ga34DgTKPegplbmRzdHJlYW0KZW5kb2JqCjIzMyAwIG9iago8PAogIC9SZXNvdXJjZXMgMyAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMSAwIFIKICAvQ29udGVudHMgMjM0IDAgUgo+PgoKZW5kb2JqCjIzNSAwIG9iago1MjkKZW5kb2JqCjIzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3MyAwIFIgL1hZWiA3Mi4wIDY3OC44IG51bGxdCj4+CmVuZG9iagoyMzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNzA5LjAwNSAxNzEuODcgNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOS45NDYgNzA5LjAwNSA1NDIuNjY2IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3MyAwIFIgL1hZWiA3Mi4wIDYyNC40IG51bGxdCj4+CmVuZG9iagoyNDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjk3LjAwNSAxNjcuNzgzIDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuOTggNjk3LjAwNSA1NDIuNyA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAv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cyAxIDAgUgogIC9MYW5nIChlbikKICAvTWV0YWRhdGEgNyAwIFIKICAvUGFnZUxhYmVscyA5IDAgUgo+PgoKZW5kb2JqCjMgMCBvYmoKPDwKICAvRm9udCA8PAogIC9GMTkgMjUyIDAgUgogIC9GMTUgMjU4IDAgUgogIC9GMTYgMjY0IDAgUgo+PgoKICAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHRdCiAgL1hPYmplY3QgPDwKICAvSW0xIDEwIDAgUgogIC9JbTIgMTEgMCBSCiAgL0ltMyAxOSAwIFIKICAvSW00IDIwIDAgUgo+PgoKICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA2IDAgUiA+PgoKPj4KCmVuZG9iago5IDAgb2JqCjw8IC9OdW1zIFswIDw8IC9QICgxKSA+PgogMSA8PCAvUCAoaWkpID4+CiAyIDw8IC9QIChpaWkpID4+CiAzIDw8IC9QIChpdikgPj4KIDQgPDwgL1AgKDEpID4+CiA1IDw8IC9QICgyKSA+PgogNiA8PCAvUCAoMykgPj4KIDcgPDwgL1AgKDQpID4+CiA4IDw8IC9QICg1KSA+PgogOSA8PCAvUCAoNikgPj4KIDEwIDw8IC9QICg3KSA+PgogMTEgPDwgL1AgKDgpID4+CiAxMiA8PCAvUCAoOSkgPj4KIDEzIDw8IC9QICgxMCkgPj4KIDE0IDw8IC9QICgxMSkgPj4KIDE1IDw8IC9QICgxMikgPj4KIDE2IDw8IC9QICgxMykgPj4KIDE3IDw8IC9QICgxNCkgPj4KIDE4IDw8IC9QICgxNSkgPj4KIDE5IDw8IC9QICgxNikgPj4KXSA+PgoKZW5kb2JqCnhyZWYKMCAyNzYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMjQ2MzcxIDAwMDAwIG4gCjAwMDAyNDY1NjUgMDAwMDAgbiAKMDAwMDI0NjY3MCAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNDUgMDAwMDAgbiAKMDAwMDAwMjgyMyAwMDAwMCBuIAowMDAwMDAyODU2IDAwMDAwIG4gCjAwMDAxMDYxNjggMDAwMDAgbiAKMDAwMDI0NjkwNSAwMDAwMCBuIAowMDAwMDAzODA0IDAwMDAwIG4gCjAwMDAwNTIzMzEgMDAwMDAgbiAKMDAwMDEwNTU5MyAwMDAwMCBuIAowMDAwMTA1NjE0IDAwMDAwIG4gCjAwMDAxMDU2MzQgMDAwMDAgbiAKMDAwMDEwNTY1NiAwMDAwMCBuIAowMDAwMTA1Njc4IDAwMDAwIG4gCjAwMDAxMDYzNjAgMDAwMDAgbiAKMDAwMDEyMDk2MCAwMDAwMCBuIAowMDAwMTA2MzgwIDAwMDAwIG4gCjAwMDAxMTI1NTEgMDAwMDAgbiAKMDAwMDExOTczMSAwMDAwMCBuIAowMDAwMTE5NzUyIDAwMDAwIG4gCjAwMDAxMTk3NzMgMDAwMDAgbiAKMDAwMDExOTg1OCAwMDAwMCBuIAowMDAwMTIwOTMzIDAwMDAwIG4gCjAwMDAxMTk5OTYgMDAwMDAgbiAKMDAwMDEyMTE3MCAwMDAwMCBuIAowMDAwMTIxOTU2IDAwMDAwIG4gCjAwMDAxMjExOTAgMDAwMDAgbiAKMDAwMDEyMjE0OSAwMDAwMCBuIAowMDAwMTIzMDI4IDAwMDAwIG4gCjAwMDAxMjIxNjkgMDAwMDAgbiAKMDAwMDEyMzIyMSAwMDAwMCBuIAowMDAwMTI0Nzc4IDAwMDAwIG4gCjAwMDAxMjMyNDEgMDAwMDAgbiAKMDAwMDEyMzMzNiAwMDAwMCBuIAowMDAwMTI0NzUxIDAwMDAwIG4gCjAwMDAxMjM0NzIgMDAwMDAgbiAKMDAwMDEyNDk4OCAwMDAwMCBuIAowMDAwMTI2NTg4IDAwMDAwIG4gCjAwMDAxMjUwMDkgMDAwMDAgbiAKMDAwMDEyNjc4MSAwMDAwMCBuIAowMDAwMTI4NDE2IDAwMDAwIG4gCjAwMDAxMjY4MDIgMDAwMDAgbiAKMDAwMDEyODYwOSAwMDAwMCBuIAowMDAwMTMwMzQxIDAwMDAwIG4gCjAwMDAxMjg2MzAgMDAwMDAgbiAKMDAwMDEzMDUzNCAwMDAwMCBuIAowMDAwMTMxNDkzIDAwMDAwIG4gCjAwMDAxMzA1NTUgMDAwMDAgbiAKMDAwMDEzMTY4NiAwMDAwMCBuIAowMDAwMTM0NDA4IDAwMDAwIG4gCjAwMDAxMzE3MDYgMDAwMDAgbiAKMDAwMDEzNDYwMSAwMDAwMCBuIAowMDAwMTM3NTc1IDAwMDAwIG4gCjAwMDAxMzQ2MjIgMDAwMDAgbiAKMDAwMDEzNzc2OCAwMDAwMCBuIAowMDAwMTM4NDg5IDAwMDAwIG4gCjAwMDAxMzc3ODkgMDAwMDAgbiAKMDAwMDEzODY4MiAwMDAwMCBuIAowMDAwMTM5ODMzIDAwMDAwIG4gCjAwMDAxMzg3MDIgMDAwMDAgbiAKMDAwMDE0MDAyNiAwMDAwMCBuIAowMDAwMTQxMjcyIDAwMDAwIG4gCjAwMDAxNDAwNDcgMDAwMDAgbiAKMDAwMDE0MTQ2NSAwMDAwMCBuIAowMDAwMTQyNzc2IDAwMDAwIG4gCjAwMDAxNDE0ODYgMDAwMDAgbiAKMDAwMDE0Mjk2OSAwMDAwMCBuIAowMDAwMTQzNzEyIDAwMDAwIG4gCjAwMDAxNDI5OTAgMDAwMDAgbiAKMDAwMDE0MzkwNSAwMDAwMCBuIAowMDAwMTQ2MDcwIDAwMDAwIG4gCjAwMDAxNDM5MjUgMDAwMDAgbiAKMDAwMDE0NjI2MyAwMDAwMCBuIAowMDAwMTk0Mzk0IDAwMDAwIG4gCjAwMDAxNDYyODQgMDAwMDAgbiAKMDAwMDE0NjM2MiAwMDAwMCBuIAowMDAwMTkzNTcyIDAwMDAwIG4gCjAwMDAxNDY0OTggMDAwMDAgbiAKMDAwMDE0NjYzOCAwMDAwMCBuIAowMDAwMTQ2NzE2IDAwMDAwIG4gCjAwMDAxNDY4NTMgMDAwMDAgbiAKMDAwMDE0Njk5MyAwMDAwMCBuIAowMDAwMTQ3MDcxIDAwMDAwIG4gCjAwMDAxNDcyMDggMDAwMDAgbiAKMDAwMDE0NzM0OCAwMDAwMCBuIAowMDAwMTQ3NDI2IDAwMDAwIG4gCjAwMDAxNDc1NjQgMDAwMDAgbiAKMDAwMDE0NzcwNCAwMDAwMCBuIAowMDAwMTQ3NzgyIDAwMDAwIG4gCjAwMDAxNDc5MjAgMDAwMDAgbiAKMDAwMDE0ODA2MCAwMDAwMCBuIAowMDAwMTQ4MTM4IDAwMDAwIG4gCjAwMDAxNDgyNzYgMDAwMDAgbiAKMDAwMDE0ODQxNCAwMDAwMCBuIAowMDAwMTQ4NDkyIDAwMDAwIG4gCjAwMDAxNDg2MzAgMDAwMDAgbiAKMDAwMDE0ODc3MCAwMDAwMCBuIAowMDAwMTQ4ODQ4IDAwMDAwIG4gCjAwMDAxNDg5ODYgMDAwMDAgbiAKMDAwMDE0OTEyNyAwMDAwMCBuIAowMDAwMTQ5MjA2IDAwMDAwIG4gCjAwMDAxNDkzNDYgMDAwMDAgbiAKMDAwMDE0OTQ4OCAwMDAwMCBuIAowMDAwMTQ5NTY3IDAwMDAwIG4gCjAwMDAxNDk3MDcgMDAwMDAgbiAKMDAwMDE0OTg0OSAwMDAwMCBuIAowMDAwMTQ5OTI4IDAwMDAwIG4gCjAwMDAxNTAwNjYgMDAwMDAgbiAKMDAwMDE1MDIwOCAwMDAwMCBuIAowMDAwMTUwMjg5IDAwMDAwIG4gCjAwMDAxNTA0MjkgMDAwMDAgbiAKMDAwMDE1MDU3MSAwMDAwMCBuIAowMDAwMTUwNjUyIDAwMDAwIG4gCjAwMDAxNTA3OTIgMDAwMDAgbiAKMDAwMDE1MDkzNCAwMDAwMCBuIAowMDAwMTUxMDE1IDAwMDAwIG4gCjAwMDAxNTExNTUgMDAwMDAgbiAKMDAwMDE1MTI5NyAwMDAwMCBuIAowMDAwMTUxMzc4IDAwMDAwIG4gCjAwMDAxNTE1MTggMDAwMDAgbiAKMDAwMDE1MTY2MCAwMDAwMCBuIAowMDAwMTUxNzQwIDAwMDAwIG4gCjAwMDAxNTE4NzkgMDAwMDAgbiAKMDAwMDE1MjAyMSAwMDAwMCBuIAowMDAwMTUyMTAyIDAwMDAwIG4gCjAwMDAxNTIyNDIgMDAwMDAgbiAKMDAwMDE1MjM4NCAwMDAwMCBuIAowMDAwMTUyNDY1IDAwMDAwIG4gCjAwMDAxNTI2MDUgMDAwMDAgbiAKMDAwMDE1Mjc0NyAwMDAwMCBuIAowMDAwMTUyODI4IDAwMDAwIG4gCjAwMDAxNTI5NjggMDAwMDAgbiAKMDAwMDE1MzExMCAwMDAwMCBuIAowMDAwMTUzMTkxIDAwMDAwIG4gCjAwMDAxNTMzMzEgMDAwMDAgbiAKMDAwMDE1MzQ3MCAwMDAwMCBuIAowMDAwMTUzNTQ5IDAwMDAwIG4gCjAwMDAxNTM2ODkgMDAwMDAgbiAKMDAwMDE1MzgzMSAwMDAwMCBuIAowMDAwMTUzOTEyIDAwMDAwIG4gCjAwMDAxNTQwNTIgMDAwMDAgbiAKMDAwMDE1NDE5NCAwMDAwMCBuIAowMDAwMTU0Mjc1IDAwMDAwIG4gCjAwMDAxNTQ0MTUgMDAwMDAgbiAKMDAwMDE1NDU1NyAwMDAwMCBuIAowMDAwMTU0NjM4IDAwMDAwIG4gCjAwMDAxNTQ3NzggMDAwMDAgbiAKMDAwMDE1NDkyMCAwMDAwMCBuIAowMDAwMTU1MDAxIDAwMDAwIG4gCjAwMDAxNTUxNDEgMDAwMDAgbiAKMDAwMDE1NTI4MyAwMDAwMCBuIAowMDAwMTU1MzY0IDAwMDAwIG4gCjAwMDAxNTU1MDQgMDAwMDAgbiAKMDAwMDE1NTY0NCAwMDAwMCBuIAowMDAwMTU1NzI1IDAwMDAwIG4gCjAwMDAxNTU4NjUgMDAwMDAgbiAKMDAwMDE1NjAwNyAwMDAwMCBuIAowMDAwMTU2MDg4IDAwMDAwIG4gCjAwMDAxNTYyMjggMDAwMDAgbiAKMDAwMDE1NjM3MCAwMDAwMCBuIAowMDAwMTU2NDUxIDAwMDAwIG4gCjAwMDAxNTY1OTEgMDAwMDAgbiAKMDAwMDE1NjczMyAwMDAwMCBuIAowMDAwMTU2ODE0IDAwMDAwIG4gCjAwMDAxNTY5NTQgMDAwMDAgbiAKMDAwMDE1NzA5NiAwMDAwMCBuIAowMDAwMTU3MTc1IDAwMDAwIG4gCjAwMDAxNTczMTUgMDAwMDAgbiAKMDAwMDE1NzQ1NyAwMDAwMCBuIAowMDAwMTU3NTM4IDAwMDAwIG4gCjAwMDAxNTc2NzggMDAwMDAgbiAKMDAwMDE1NzgyMCAwMDAwMCBuIAowMDAwMTU3OTAwIDAwMDAwIG4gCjAwMDAxNTgwNDAgMDAwMDAgbiAKMDAwMDE1ODE4MiAwMDAwMCBuIAowMDAwMTU4MjYzIDAwMDAwIG4gCjAwMDAxNTg0MDMgMDAwMDAgbiAKMDAwMDE1ODU0NSAwMDAwMCBuIAowMDAwMTU4NjI1IDAwMDAwIG4gCjAwMDAxNTg3NjUgMDAwMDAgbiAKMDAwMDE1ODkwNyAwMDAwMCBuIAowMDAwMTU4OTg4IDAwMDAwIG4gCjAwMDAxNTkxMjcgMDAwMDAgbiAKMDAwMDE1OTI2OSAwMDAwMCBuIAowMDAwMTU5MzQ5IDAwMDAwIG4gCjAwMDAxNTk0ODggMDAwMDAgbiAKMDAwMDE1OTYzMCAwMDAwMCBuIAowMDAwMTU5NzExIDAwMDAwIG4gCjAwMDAxNTk4NTEgMDAwMDAgbiAKMDAwMDE1OTk5MyAwMDAwMCBuIAowMDAwMTYwMDczIDAwMDAwIG4gCjAwMDAxNjAyMTMgMDAwMDAgbiAKMDAwMDE2MDM1MiAwMDAwMCBuIAowMDAwMTYwNDMxIDAwMDAwIG4gCjAwMDAxNjA1NzEgMDAwMDAgbiAKMDAwMDE2MDcxMyAwMDAwMCBuIAowMDAwMTYwNzkyIDAwMDAwIG4gCjAwMDAxNjA5MzIgMDAwMDAgbiAKMDAwMDE2MTA3NCAwMDAwMCBuIAowMDAwMTYxMTUzIDAwMDAwIG4gCjAwMDAxNjEyOTIgMDAwMDAgbiAKMDAwMDE2MTQzNCAwMDAwMCBuIAowMDAwMTYxNTEzIDAwMDAwIG4gCjAwMDAxNjE2NTMgMDAwMDAgbiAKMDAwMDE2MTc5NSAwMDAwMCBuIAowMDAwMTYxODc2IDAwMDAwIG4gCjAwMDAxNjIwMTYgMDAwMDAgbiAKMDAwMDE2MjE1NSAwMDAwMCBuIAowMDAwMTYyMjM1IDAwMDAwIG4gCjAwMDAxNjIzNzUgMDAwMDAgbiAKMDAwMDE2MjUxNyAwMDAwMCBuIAowMDAwMTYyNTk2IDAwMDAwIG4gCjAwMDAxNjI3MzYgMDAwMDAgbiAKMDAwMDE2Mjg3OCAwMDAwMCBuIAowMDAwMTYyOTU5IDAwMDAwIG4gCjAwMDAxNjMwOTkgMDAwMDAgbiAKMDAwMDE2MzI0MSAwMDAwMCBuIAowMDAwMTYzMzIyIDAwMDAwIG4gCjAwMDAxNjM0NjIgMDAwMDAgbiAKMDAwMDE2MzYwMiAwMDAwMCBuIAowMDAwMTYzNjgxIDAwMDAwIG4gCjAwMDAxNjM4MjAgMDAwMDAgbiAKMDAwMDE2Mzk2MiAwMDAwMCBuIAowMDAwMTY0MDQxIDAwMDAwIG4gCjAwMDAxNjQxNzkgMDAwMDAgbiAKMDAwMDE2NDMyMCAwMDAwMCBuIAowMDAwMTY0Mzk5IDAwMDAwIG4gCjAwMDAxNjQ1MzYgMDAwMDAgbiAKMDAwMDE2NDY3NCAwMDAwMCBuIAowMDAwMTk0NjA1IDAwMDAwIG4gCjAwMDAxOTUyMzUgMDAwMDAgbiAKMDAwMDE5NDYyOCAwMDAwMCBuIAowMDAwMTk1NDMwIDAwMDAwIG4gCjAwMDAxOTkzNjUgMDAwMDAgbiAKMDAwMDE5NTQ1MSAwMDAwMCBuIAowMDAwMTk1NTMwIDAwMDAwIG4gCjAwMDAxOTkyOTYgMDAwMDAgbiAKMDAwMDE5NTY2OSAwMDAwMCBuIAowMDAwMTk1ODExIDAwMDAwIG4gCjAwMDAxOTU4OTAgMDAwMDAgbiAKMDAwMDE5NjAzMCAwMDAwMCBuIAowMDAwMTk2MTY5IDAwMDAwIG4gCjAwMDAxOTYyNDkgMDAwMDAgbiAKMDAwMDE5NjM4OCAwMDAwMCBuIAowMDAwMTk2NTMwIDAwMDAwIG4gCjAwMDAxOTk1NzggMDAwMDAgbiAKMDAwMDE5OTYwMCAwMDAwMCBuIAowMDAwMTk5ODYzIDAwMDAwIG4gCjAwMDAyMTA3OTEgMDAwMDAgbiAKMDAwMDIxMDg5MCAwMDAwMCBuIAowMDAwMjExMDU1IDAwMDAwIG4gCjAwMDAyMTE0NzQgMDAwMDAgbiAKMDAwMDIxMTk5NSAwMDAwMCBuIAowMDAwMjEyMjU2IDAwMDAwIG4gCjAwMDAyMjgzMzggMDAwMDAgbiAKMDAwMDIyODQ0MyAwMDAwMCBuIAowMDAwMjI4NjA0IDAwMDAwIG4gCjAwMDAyMjkxMzUgMDAwMDAgbiAKMDAwMDIyOTc3MiAwMDAwMCBuIAowMDAwMjMwMDM4IDAwMDAwIG4gCjAwMDAyNDQ4MzUgMDAwMDAgbiAKMDAwMDI0NDkzNSAwMDAwMCBuIAowMDAwMjQ1MTAxIDAwMDAwIG4gCjAwMDAyNDU1OTEgMDAwMDAgbiAKMDAwMDI0NjE3OSAwMDAwMCBuIAowMDAwMjQ2MjAyIDAwMDAwIG4gCjAwMDAyNDYyMjIgMDAwMDAgbiAKMDAwMDI0NjI0MyAwMDAwMCBuIAowMDAwMjQ2MjY2IDAwMDAwIG4gCjAwMDAyNDYyODYgMDAwMDAgbiAKMDAwMDI0NjMwNyAwMDAwMCBuIAowMDAwMjQ2MzMwIDAwMDAwIG4gCjAwMDAyNDYzNTAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDIgMCBSCiAgL0luZm8gNCAwIFIKICAvSUQgWzw1MjE4OTlDQUUxRkYwM0EzNDNERURGNEFBNjUyODAzQj4gPDUyMTg5OUNBRTFGRjAzQTM0M0RFREY0QUE2NTI4MDNCPl0KICAvU2l6ZSAyNzYKPj4Kc3RhcnR4cmVmCjI0NzI3NgolJUVPRgo=