OTRSMasterSlave
6.0.1
OTRS AG
http://otrs.org/
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
- Updated documentation (Config chapter).
- Updated translations, thanks to all translators.
- Updated translations, thanks to all translators.
- Initial version for OTRS 6.
- Updated translations, thanks to all translators.
- Replaced UserFistname, UserLastname in favor of a more flexible UserFullname, thanks to Dian Tong Software.
Includes "Ticket Master/Slave" feature.
Enthält "Ticket Master/Slave" Funktionalität.
A „mester/alárendelt jegy” funkciót tartalmazza.
6.0.x
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to install the OTRS package OTRSMasterSlave.<br/>
<br/>
<br/>
<strong>ATTENTION</strong>
<br/>
<br/>
Make sure your database accepts packages over 5 MB in size. A MySQL database for example accepts packages up to 1 MB by default. In this case, the value for max_allowed_packet must be increased. The recommended maximum size accepted is 20 MB.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está a punto de instalar el paquete OTRSMasterSlave de OTRS.<br/>
<br/>
<br/>
<strong>ATENCIÓN</strong>
<br/>
<br/>
Por favor asegúrese que su base de datos acepte paquetes de más de 5 MB de tamaño. Por ejemplo una base de datos de MySQL acepta paquetes de más de 1 MB predefinido. En este caso la configuración max_allowed_packet debe ser incrementada. El tamaño recomendado es 20 MB.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az OTRSMasterSlave OTRS csomag telepítésére készül.<br/>
<br/>
<br/>
<strong>FIGYELEM</strong>
<br/>
<br/>
Győződjön meg arról, hogy az adatbázisa elfogadja-e az 5 MB-nál nagyobb méretű csomagokat.
Például egy MySQL adatbázis alapértelmezetten legfeljebb 1 MB méretű csomagot fogad el.
Ebben az esetben a max_allowed_packet értékét kell megnövelni.
A javasolt legnagyobb elfogadott méret 20 MB.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ATTENTION</strong>
<br/>
<br/>
If you uninstall this package, ParentChild ticket links will remain, but all ticket Master
Slave relations that were created during the use of this package be deleted.
All data from these relations will be irrevocably lost!
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ATENCIÓN</strong>
<br/>
<br/>
Si usted desinstala este paquete, los vínculos de tickets PadreHijo
permanecerán, pero todas relaciones de tickets Master Slave creadas durante
el uso de este paquete serán borradas.
¡Todos los datos de esas relaciones se perderán irrevocablemente!.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>FIGYELEM</strong>
<br/>
<br/>
Ha eltávolítja ezt a csomagot, akkor a szülő-gyermek jegy hivatkozások meg fognak maradni,
de az összes olyan mester-alárendelt kapcsolat törlésre kerül, amelyek a csomag használata
során lettek létrehozva.
Ezekből a kapcsolatokból az összes adat visszavonhatatlanul el fog veszni!
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to upgrade the OTRS package OTRSMasterSlave.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está apunto de actualizar el paquete OTRSMasterSlave de OTRS.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az OTRSMasterSlave OTRS csomag frissítésére készül.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
$Kernel::OM->Get('var::packagesetup::OTRSMasterSlave')->CodeInstall();
$Kernel::OM->Get('var::packagesetup::OTRSMasterSlave')->CodeUpgrade125();
$Kernel::OM->Get('var::packagesetup::OTRSMasterSlave')->CodeUpgrade();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_91();
$Kernel::OM->Get('var::packagesetup::OTRSMasterSlave')->CodeUninstall();
$Kernel::OM->Get('var::packagesetup::OTRSMasterSlave')->CodeReinstall();
2017-11-15 03:00:49
opms.otrs.com
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkNoYW5nZXMiPgogICAgPFNldHRpbmcgTmFtZT0iTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6Ok1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTWFzdGVyU2xhdmU6OlVuc2V0TWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpVcGRhdGVNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpGb2xsb3dVcGRhdGVkTWFzdGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpGb3J3YXJkU2xhdmVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgJ2ZvcndhcmQnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgJ2ZvcndhcmQnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVcGRhdGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6Ok1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6Ok1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+QXJ0aWNsZUNyZWF0ZXxBcnRpY2xlU2VuZHxUaWNrZXRTdGF0ZVVwZGF0ZXxUaWNrZXRQcmlvcml0eVVwZGF0ZXxUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZXxUaWNrZXRMb2NrVXBkYXRlfFRpY2tldE93bmVyVXBkYXRlfFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZUFwcGxpY2F0aW9uTW9kdWxlIyMjQWdlbnRQcmVNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPktlcm5lbDo6TW9kdWxlczo6QWdlbnRQcmVNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50VGlja2V0TWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VGlja2V0IE1hc3RlclNsYXZlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPk1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjMDA0LU9UUlNNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRpY2tldEFjdGlvbi5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UaWNrZXRNYXN0ZXJTbGF2ZS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjIzAwNC1PVFJTTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNDgwLU1hc3RlclNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRab29tOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldE1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50VGlja2V0TWFzdGVyU2xhdmU7VGlja2V0SUQ9WyUgRGF0YS5UaWNrZXRJRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQb3B1cFR5cGUiPlRpY2tldEFjdGlvbjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNSZXF1aXJlZExvY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzbid0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjVGlja2V0VHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1NlcnZpY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI093bmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjT3duZXJNYW5kYXRvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyBpZiB0aWNrZXQgb3duZXIgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1Jlc3BvbnNpYmxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1N0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPklmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjU3RhdGVUeXBlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+b3BlbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPmNsb3NlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnBlbmRpbmcgcmVtaW5kZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wZW5kaW5nIGF1dG88L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNTdGF0ZURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlN0YXRlIiBWYWx1ZVJlZ2V4PSIiPnBlbmRpbmcgcmVtaW5kZXI8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNOb3RlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkFsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI05vdGVNYW5kYXRvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyBpZiBub3RlIG11c3QgYmUgZmlsbGVkIGluIGJ5IHRoZSBhZ2VudC4gQ2FuIGJlIG92ZXJ3cml0dGVuIGJ5IFRpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNTdWJqZWN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+WyUgVHJhbnNsYXRlKCJNYXN0ZXJTbGF2ZSIpIHwgaHRtbCAlXSE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNCb2R5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNJbnZvbHZlZEFnZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0luZm9ybUFnZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjQXJ0aWNsZVR5cGVEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ub3RlLWludGVybmFsPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjQXJ0aWNsZVR5cGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ibm90ZS1pbnRlcm5hbCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ibm90ZS1leHRlcm5hbCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ibm90ZS1yZXBvcnQiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1ByaW9yaXR5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjUHJpb3JpdHlEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlByaW9yaXR5IiBWYWx1ZVJlZ2V4PSIiPjMgbm9ybWFsPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjVGl0bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjSGlzdG9yeVR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5BZGROb3RlPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjSGlzdG9yeUNvbW1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj4lJU1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYXNoYm9hcmRCYWNrZW5kIyMjMDkwMC1UaWNrZXRNYXN0ZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpEYXNoYm9hcmQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpUaWNrZXRHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5NYXN0ZXIgVGlja2V0czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+QWxsIG1hc3RlciB0aWNrZXRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj5EeW5hbWljRmllbGRfTWFzdGVyU2xhdmVfRXF1YWxzPU1hc3RlcjtTdGF0ZVR5cGU9b3BlbjtTdGF0ZVR5cGU9bmV3OzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRmlsdGVyIj5BbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWUiPkFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGltaXQiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5ydzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRMYXJnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVExMb2NhbCI+MC41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Q29sdW1ucyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lck5hbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VySUQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXNjYWxhdGlvblJlc3BvbnNlVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFc2NhbGF0aW9uU29sdXRpb25UaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVzY2FsYXRpb25UaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVzY2FsYXRpb25VcGRhdGVUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldE51bWJlciI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVyIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBlbmRpbmdUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJlc3BvbnNpYmxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFzaGJvYXJkQmFja2VuZCMjIzA5MTAtVGlja2V0U2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkRhc2hib2FyZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OlRpY2tldEdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNsYXZlIFRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkFsbCBzbGF2ZSB0aWNrZXRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj5EeW5hbWljRmllbGRfTWFzdGVyU2xhdmVfTGlrZT1TbGF2ZSo7U3RhdGVUeXBlPW9wZW47U3RhdGVUeXBlPW5ldzs8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZpbHRlciI+QWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbWl0Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVybWlzc2lvbiI+cnc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50TGFyZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhY2hlVFRMTG9jYWwiPjAuNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZSI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJOYW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlcklEIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVzY2FsYXRpb25SZXNwb25zZVRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXNjYWxhdGlvblNvbHV0aW9uVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFc2NhbGF0aW9uVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFc2NhbGF0aW9uVXBkYXRlVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXROdW1iZXIiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lciI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZW5kaW5nVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXNwb25zaWJsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlJlcGxhY2VDdXN0b21lclJlYWxOYW1lT25TbGF2ZUFydGljbGVUeXBlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImVtYWlsLWV4dGVybmFsIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJlbWFpbC1pbnRlcm5hbCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZW1haWwtbm90aWZpY2F0aW9uLWV4dCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZW1haWwtbm90aWZpY2F0aW9uLWludCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icGhvbmUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImZheCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ic21zIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJ3ZWJyZXF1ZXN0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJub3RlLWludGVybmFsIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJub3RlLWV4dGVybmFsIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJub3RlLXJlcG9ydCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJBQ0xLZXlzTGV2ZWwzOjpBY3Rpb25zIyMjODg4LU9UUlNNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yICdBY3Rpb24nIGluIHRoaXJkIGxldmVsIG9mIHRoZSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6VGlja2V0OjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5BZ2VudFRpY2tldE1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpEcml2ZXIjIyNNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljRmllbGQgYmFja2VuZCByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzOjpEcml2ZXJSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzcGxheU5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TWFzdGVyIC8gU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNhYmxlZEFkZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPmFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5BZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIERyb3AtZG93biBCYWNrZW5kIEdVSTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZSMjIzAwNC1PVFJTTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkR5bmFtaWNGaWVsZC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkR5bmFtaWNGaWVsZC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZSMjIzAwNC1PVFJTTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QnVsa01vZHVsZSMjIzAxMC1NYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldEJ1bGs6Ok1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRCdWxrOjpNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6Y3NfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Rvdm9sdWplIHDFmWlkw6F2w6Fuw60gcG96bsOhbWVrIHDFmWkgem9icmF6ZW7DrSBOYWTFmcOtemVuw6lobyAvIFBvZMWZw616ZW7DqWhvIHYgZGV0YWlsdSB0aWtldHUgLSBBZ2VudFRpY2tldFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdabcSbbmEgc3RhdnUgTmFkxZnDrXplbsO9L1BvZMWZw616ZW7DvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdVcsSNdWplLCB6ZGEgamUgdnnFvmFkb3bDoW5vIHV6YW1rbnV0w60gdGlrZXR1IHDFmWkgem9icmF6ZW7DrSBOYWTFmcOtemVuw6lobyAvIFBvZMWZw616ZW7DqWhvIHYgZGV0YWlsdSB0aWtldHUgdiBBZ2VudFRpY2tldFpvb20uIChOZW7DrS1saSB0aWtldCB6YXTDrW0gdXplbcSNZW4sIGJ1ZGUgdXphbcSNZW4gYSBzdMOhdmFqw61jw60gYWdlbnQgYnVkZSBhdXRvbWF0aWNreSB1csSNZW4gamFrbyB2bGFzdG7DrWsuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGRlZmF1bHRuw60gbsOhc2xlZHVqw60gc3RhdiB0aWtldHUgcG8gcMWZaWTDoW7DrSBwb3puw6Fta3kgLSB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiBBZ2VudFRpY2tldFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXLEjXVqZSBkZWZhdWx0bsOtIHByaW9yaXR1IHRpa2V0dSB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgQWdlbnRUaWNrZXRab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGRlZmF1bHRuw60gdHlwIHBvem7DoW1reSB2IHBvaGxlZHUgTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiBBZ2VudFRpY2tldFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGtvbWVudMOhxZkgaGlzdG9yaWUgcHJvIGFrY2kgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70sIGtvbWVudMOhxZkgamUgcG91xb5pdCB2IGhpc3RvcmlpIHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIHR5cCBoaXN0b3JpZSBwcm8gYWtjaSB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSwgdHlwIGplIHBvdcW+aXQgdiBoaXN0b3JpaSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXLEjXVqZSBkYWzFocOtIHN0YXYgdGlrZXR1IHBvIHDFmWlkw6Fuw60gcG96bsOhbWt5IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva3VkIGplIHDFmWlkw6FuYSBwb3puw6Fta2EgYWdlbnRlbSwgdXLEjcOtIHN0YXYgdGlrZXR1IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gLSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cnkgbmFzdGF2ZW7DrSBuw6FzdMSbbmt5IHYgcMWZZWhsZWR1IG5hZMWZw616ZW7DvWNoIHRpa2V0xa8gdiByb3pocmFuw60gYWdlbnRhLiAiTGltaXQiIGplIG1ub8W+c3R2w60gc3RhbmRhcmRuxJsgdmlkaXRlbG7DvWNoIHZzdHVwxa8uICJHcm91cCIgc2UgcG91xb7DrXbDoSBrIG9tZXplbsOtIHDFmcOtc3R1cHUgayBwbHVnaW51IChuYXDFmS46IEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiB1csSNdWplLCB6ZGEgamUgcGx1Z2luIHBvdm9sZW4gc3RhbmRhcmRuxJsgbmVibyB6ZGEgamVqIG11c8OtIHXFvml2YXRlbCBwb3ZvbGl0IG1hbnXDoWxuxJsuICJDYWNoZVRUTExvY2FsIiBqZSBjYWNob3ZhY8OtIMSNYXMgcGx1Z2ludSAtICB2IG1pbnV0w6FjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cnkgbmFzdGF2ZW7DrSBuw6FzdMSbbmt5IHBybyBwxZllaGxlZCBwb2TFmcOtemVuw71jaCB0aWtldMWvIHYgcm96aHJhbsOtIGFnZW50YS4gIkxpbWl0IiBqZSBtbm/FvnN0dsOtIHN0YW5kYXJkbsSbIHZpZGl0ZWxuw71jaCB2c3R1cMWvLiAiR3JvdXAiIHNlIHBvdcW+w612w6EgayBvbWV6ZW7DrSBwxZnDrXN0dXB1IGsgcGx1Z2ludSAobmFwxZkuOiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgdXLEjXVqZSwgemRhIGplIHBsdWdpbiBwb3ZvbGVuIHN0YW5kYXJkbsSbIG5lYm8gemRhIGplaiBtdXPDrSB1xb5pdmF0ZWwgcG92b2xpdCBtYW51w6FsbsSbLiAiQ2FjaGVUVExMb2NhbCIgamUgY2FjaG92YWPDrSDEjWFzIHBsdWdpbnUgLSB2IG1pbnV0w6FjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlZ2lzdHJhY2UgbW9kdWx1IHVkw6Fsb3N0w60gdGlrZXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgdcW+w612w6Fuw60gem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgZGVmYXVsdG7DrSB0ZXh0IHTEm2xhIHBvem7DoW1reSBwxZlpZGFuw6kgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgZGVmYXVsdG7DrSBzdWJqZWt0IHBvem7DoW1layB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXLEjXVqZSB6b2Rwb3bEm2Ruw6lobyBhZ2VudGEgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdVcsSNdWplIHNlcnZpcyB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLiAoTXVzw60gYsO9dCBha3Rpdm92w6FuIFRpY2tldDo6U2VydmljZS4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgdmxhc3Ruw61rYSB0aWtldHUgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnVXLEjXVqZSB0eXAgdGlrZXR1IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuIChNdXPDrSBiw710IGFrdGl2b3bDoW4gVGlja2V0OjpUeXBlLiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXp1amUgbGluayB2IG1lbnUsICBrdGVyw70gc2xvdcW+w60ga2Ugem3Em27EmyBzdGF0dXN1IHRpa2V0dSB2IG5hZMWZw616ZW7DvSAvIHBvZMWZw616ZW7DvSwgdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXp1amUgc2V6bmFtIHbFoWVjaCBhZ2VudMWvLCBrdGXFmcOtIHNlIHBvZMOtbGVsaSBuYSB0aWtldHUsICB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhenVqZSBzZXpuYW0gbW/Fvm7DvWNoIGFnZW50xa8gKHbFoWljaG5pIGFnZW50aSBtb2hvdWPDrSBwxZlpZGF0IHBvem7DoW1rdSBrIGZyb250xJsvdGlrZXR1KSwgYWJ5IGJ5bG8gbW/Fvm5vIHVyxI1pdCwga2RvIGJ1ZGUgbyBwb3puw6FtY2UgaW5mb3Jtb3bDoW4gLSB2IHpvYnJhemVuw60gTmFkxZnDrXplbsOpaG8vUG9kxZnDrXplbsOpaG8gemF6b29tb3ZhbsOpaG8gdGlrZXR1IHYgYWdlbnRza8OpbSBwcm9zdMWZZWTDrS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGRzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGVfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdGZWxkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05ldWVzIE1hc3RlciBUaWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ0F1ZmhlYmVuIGRlcyBNYXN0ZXIgVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdBdWZoZWJlbiBkZXMgU2xhdmUgVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdBdWZoZWJlbiBkZXIgTWFzdGVyIFRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJ0F1ZmhlYmVuIGRlciBTbGF2ZSBUaWNrZXRzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdBbGxlIE1hc3RlciBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnQWxsZSBTbGF2ZSBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmxhdWJ0IGRhcyBoaW56dWbDvGdlbiB2b24gTm90aXplbiBpbiBkZXIgTWFzdGVyU2xhdmUgQW5zaWNodCBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdEZW4gTWFzdGVyU2xhdmUgU3RhdHVzIGRlcyBUaWNrZXRzIMOkbmRlcm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnQmVzdGltbXQsIG9iIGRpZXNlciBTY3JlZW4gaW0gQWdlbnRlbi1JbnRlcmZhY2UgZGFzIFNwZXJyZW4gZGVzIFRpY2tldHMgdm9yYXVzc2V0enQuIERhcyBUaWNrZXQgd2lyZCAoZmFsbHMgbsO2dGlnKSBnZXNwZXJydCB1bmQgZGVyIGFrdHVlbGxlIEFnZW50IHdpcmQgYWxzIEJlc2l0emVyIGdlc2V0enQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiBGb2xnZXN0YXR1cyBmw7xyIFRpY2tldHMsIGbDvHIgZGllIGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGVpbmUgTm90aXogaGluenVnZWbDvGd0IHd1cmRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRpZSBzdGFuZGFyZG3DpMOfaWdlIFRpY2tldCBQcmlvcml0w6R0IGbDvHIgVGlja2V0cyBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIHN0YW5kYXJkbcOkw59pZ2VuIFR5cCBlaW5lciBOb3RpeiBmw7xyIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gSGlzdG9yaWVuIEtvbW1lbnRhciB2b24gVGlja2V0IEFrdGlvbmVuIGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0sIHdlbGNoZXIgZsO8ciBkaWUgVGlja2V0IEhpc3RvcmllIGltIEFnZW50ZW4gSW50ZXJmYWNlIHZlcndlbmRldCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIEhpc3RvcmllbiBUeXAgdm9uIFRpY2tldCBBa3Rpb25lbiBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtLCB3ZWxjaGVyIGbDvHIgZGllIFRpY2tldCBIaXN0b3JpZSBpbSBBZ2VudGVuIEludGVyZmFjZSB2ZXJ3ZW5kZXQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiBGb2xnZXN0YXR1cyBmw7xyIFRpY2tldHMsIGbDvHIgZGllIGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGVpbmUgTm90aXogaGluenVnZWbDvGd0IHd1cmRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcm3DtmdsaWNodCBkYXMgw4RuZGVybiBkZXMgVElja2V0IFN0YXR1cywgYmVpbSBIaW56dWbDvGdlbiBlaW5lciBOb3RpeiBpbm5lcmhhbGIgZGVzIE1hc3RlclNsYXZlIEJpbGRzY2hpcm1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hc3RlciAvIFNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNYXN0ZXJTbGF2ZSBNb2R1bCBmw7xyIGRpZSBGdW5rdGlvbiB2b24gU2FtbWVsYWt0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnRWluc3RlbGx1bmcgZGVyIMOcYmVyc2ljaHRzc2VpdGVucGFyYW1ldGVyIGbDvHIgTWFzdGVyIFRpY2tldHMgaW4gZGVyIEFnZW50ZW5vYmVyZmzDpGNoZS4gIkxpbWl0IiBnaWJ0IGRpZSBBbnphaGwgZGVyIHN0YW5kYXJkbcOkw59pZyBkYXJnZXN0ZWxsdGVuIEVpbnRyw6RnZSBhbi4gIkdyb3VwIiB3aXJkIHZlcndlbmRldCwgdW0gZGVuIFp1Z3JpZmYgYXVmIGRhcyBQbHVnaW4genUgYmVncmVuemVuIChic3B3LiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgYmVzdGltbXQsIG9iIGRhcyBQbHVnaW4gc3RhbmRhcmRtw6TDn2lnIGFrdGl2aWVydCBpc3Qgb2RlciBvYiBkZXIgQmVudXR6ZXIgZXMgc2VsYnN0IGFrdGl2aWVyZW4gbXVzcy4gIkNhY2hlVFRMTG9jYWwiIGlzdCBkaWUgQ2FjaGluZy1aZWl0IGRlcyBQbHVnaW5zLCBhbmdlZ2ViZW4gaW4gTWludXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdFaW5zdGVsbHVuZyBkZXIgw5xiZXJzaWNodHNzZWl0ZW5wYXJhbWV0ZXIgZsO8ciBTbGF2ZSBUaWNrZXRzIGluIGRlciBBZ2VudGVub2JlcmZsw6RjaGUuICJMaW1pdCIgZ2lidCBkaWUgQW56YWhsIGRlciBzdGFuZGFyZG3DpMOfaWcgZGFyZ2VzdGVsbHRlbiBFaW50csOkZ2UgYW4uICJHcm91cCIgd2lyZCB2ZXJ3ZW5kZXQsIHVtIGRlbiBadWdyaWZmIGF1ZiBkYXMgUGx1Z2luIHp1IGJlZ3JlbnplbiAoYnNwdy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGJlc3RpbW10LCBvYiBkYXMgUGx1Z2luIHN0YW5kYXJkbcOkw59pZyBha3RpdmllcnQgaXN0IG9kZXIgb2IgZGVyIEJlbnV0emVyIGVzIHNlbGJzdCBha3RpdmllcmVuIG11c3MuICJDYWNoZVRUTExvY2FsIiBpc3QgZGllIENhY2hpbmctWmVpdCBkZXMgUGx1Z2lucywgYW5nZWdlYmVuIGluIE1pbnV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdSZWdpc3RyaWVydW5nIGRlcyBUaWNrZXQgRXZlbnQgTW9kdWxzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZW7DtnRpZ3RlIEJlcmVjaHRpZ3VuZ2VuIHVtIGRlbiBNYXN0ZXJTbGF2ZSBEaWFsb2cgaW0gWm9vbSBUaWNrZXQgRGlhbG9nIGRlcyBBZ2VudGVuaW50ZXJmYWNlIGFuemVpZ2VuIHp1IGxhc3Nlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIHN0YW5kYXJkbcOkw59pZ2VuIEJvZHkgVGV4dCBlaW5lciBOb3RpeiBmw7xyIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gc3RhbmRhcmRtw6TDn2lnZW4gQmV0cmVmZiBlaW5lciBOb3RpeiBmw7xyIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gdmVyYW50d29ydGxpY2hlbiBBZ2VudGVuIGVpbmVzIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZsO8ciBlaW4gYXVmZ2VydWZlbmVzIFRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gU2VydmljZSBlaW5lcyBUaWNrZXRzIGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGbDvHIgZWluIGF1ZmdlcnVmZW5lcyBUaWNrZXQgKFRpY2tldDo6U2VydmljZSBtdXNzIGFrdGl2aWVydCBzZWluKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIEJlc2l0emVyIGVpbmVzIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZsO8ciBlaW4gYXVmZ2VydWZlbmVzIFRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIFRpY2tldCBUeXAgZWluZXMgVGlja2V0cyBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZSBmw7xyIGVpbiBhdWZnZXJ1ZmVuZXMgVGlja2V0IChUaWNrZXQ6OlR5cGUgbXVzcyBha3RpdmllcnQgc2VpbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbSBNZW7DvCB1bSBkZW4gTWFzdGVyU2xhdmUgU3RhdHVzIGVpbmVzIFRpY2tldHMgaW0gVGlja2V0IFpvb20gSW50ZXJmYWNlIGRlcyBBZ2VudGVuIGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZSBMaXN0ZSBhbGxlciBpbnZvbHZpZXJ0ZW4gQWdlbnRlbiBmw7xyIGRhcyBnZXfDpGhsdGUgVGlja2V0IGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lIExpc3RlIGFsbGVyIG3DtmdsaWNoZW4gQWdlbnRlbiAoYWxsZSBBZ2VudGVuIG1pdCBOb3RpeiBCZXJlY2h0aWd1bmcgYXVmIGRlciBRdWV1ZS9kZW0gVGlja2V0KSBmw7xyIGRhcyBnZXfDpGhsdGUgVGlja2V0IGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBkaWUgUHJpb3JpdMOkdCBlaW5lcyBUaWNrZXRzIGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGbDvHIgZWluIGF1ZmdlcnVmZW5lcyBUaWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBkaWUgVGl0ZWwtRmVsZGVyIGluIGRlciBNYXN0ZXJTbGF2ZS1PYmVyZmzDpGNoZSBlaW5lcyBhdWZnZXJ1ZmVuZW4gVGlja2V0cyBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIHZlcnNjaGllZGVuZSBBcnRpa2VsdHlwZW4gaW4gZGVuZW4gZGVyIHJlYWxlIE5hbWUgZGVzIE1hc3Rlci1USWNrZXRzIG1pdCBkZW5lbiBkZXMgU2xhdmUtVGlja2V0cyBlcnNldHp0IHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdEaWVzZXMgTW9kdWwgYWt0aXZpZXJ0IGRhcyBNYXN0ZXIvU2xhdmUgRmVsZCBpbiBkZXIgQW56ZWlnZSBmw7xyIGVpbiBuZXVlcyBFbWFpbC0gb2RlciBUZWxlZm9uLVRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdDYW1wbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ0dlc3Rpb25hciBlbCBlc3RhZG8gTWFlc3Ryby9Fc2NsYXZvIHBhcmEgICVzJXMlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICdOdWV2byB0aWNrZXQgbWFlc3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnRGVzYWN0aXZhciB0aWNrZXQgbWFlc3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdEZXNhY3RpdmFyIHRpY2tldCBlc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICdFc2NsYXZvIGRlICVzJXMlczogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ0Rlc2FjdGl2YXIgdGlja2V0cyBtYWVzdHJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnRGVzYWN0aXZhciB0aWNrZXRzIGVzY2xhdm9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdUaWNrZXQgTWFlc3Rybyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ1RvZG9zIGxvcyBUaWNrZXRzIG1hZXN0cm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnVG9kb3MgbG9zIFRpY2tldHMgZXNjbGF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYcOxYWRpciBub3RhcyBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ01vZGlmaWNhIGVsIGVzdGFkbyBNYWVzdHJvLUVzY2xhdm8gZGVsIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdEZWZpbmUgZWwgbm9tYnJlIGRlbCBjYW1wbyBkaW7DoW1pY28gcGFyYSBsYSBmdW5jacOzbiBkZSB0aWNrZXQgbWFlc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYmxvcXVlbyByZXF1ZXJpZG8gaW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgKHNpIGVsIHRpY2tldCBubyBoYSBzaWRvIGJsb3F1ZWFkbyBhdW4sIGVsIHRpY2tldCBzZSBibG9xdWVhIHkgZWwgYWdlbnRlIGFjdHVhbCBzZSBjb252ZXJ0aXLDoSBhdXRvbcOhdGljYW1lbnRlIGVuIGVsIGR1ZcOxbyBkZWwgbWlzbW8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc2lndWllbnRlIGVzdGFkbyBkZWwgdGlja2V0IGRlc3B1w6lzIGRlIGHDsWFkaXIgdW5hIG5vdGEsIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBwcmlvcmlkYWQgcG9yIGRlZmVjdG8gZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCB0aXBvIGRlIG5vdGEgcG9yIGRlZmVjdG8gZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgY29tZW50YXJpbyBkZWwgaGlzdG9yaWFsIHBhcmEgbGEgYWNjacOzbiBkZSBsYSBwYW50YWxsYSBkZWwgdGlja2V0IE1hZXN0cm8tRXNjbGF2bywgcXVlIGVzIHVzYWRvIHBhcmEgZWwgaGlzdG9yaWFsIGRlbCB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCB0aXBvIGRlIGhpc3RvcmlhbCBwYXJhIGxhIGFjY2nDs24gZGUgbGEgcGFudGFsbGEgZGVsIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8sIHF1ZSBlcyB1c2FkbyBwYXJhIGVsIGhpc3RvcmlhbCBkZWwgdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc2lndWllbnRlIGVzdGFkbyBkZXNwdcOpcyBkZSBhw7FhZGlyIHVuYSBub3RhLCBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICdBY3RpdmEgbGEgcGFydGUgTWFlc3Ryby1Fc2NsYXZvIGF2YW56YWRhIGRlIGxhIGZ1bmNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIHF1ZSBsb3MgdGlja2V0cyBlc2NsYXZvcyBzaWd1ZW4gZWwgdGlja2V0IG1hZXN0cm8gYSB1biBudWV2byBtYWVzdHJvIGVuIGVsIG1vZG8gTWFlc3Ryby1Fc2NsYXZvIGF2YW56YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gcXVlIGNhbWJpZSBlbCBlc3RhZG8gTWFlc3Ryby1Fc2NsYXZvIGRlIHVuIHRpY2tldCBlbiBlbCBtb2RvIE1hZXN0cm8tRXNjbGF2byBhdmFuemFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2kgdW5hIG5vdGEgZXMgYcOxYWRpZGEgcG9yIHVuIGFnZW50ZSwgZmlqYSBlbCBlc3RhZG8gZGVsIHRpY2tldCBlbiBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNYWVzdHJvIC8gRXNjbGF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ1RpY2tldHMgTWFlc3Ryb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNYWVzdHJvLUVzY2xhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ03Ds2R1bG8gRXNjbGF2byBNYWVzdHJvIHBhcmEgbWF5b3IgY2FyYWN0ZXLDrXN0aWNhcyBkZSBlbnRyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgZWwgZGFzaGJvYXJkIGJhY2tlbmQgZGUgbGEgdmlzdGEgZGUgbG9zIHRpY2tldHMgbWFlc3Ryb3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0ZSIgZXMgZWwgbnVtZXJvIGRlIGVudHJhZGFzIGEgbW9zdHJhciBwb3IgZGVmZWN0by4gIkdydXBvIiBlcyB1c2FkbyBwYXJhIHJlc3RyaW5naXIgZWwgYWNjZXNvIGEgZWwgcGx1Z2luIChFLkouIEdydXBvOiBhZG1pbjtncnVwbzE7Z3J1cG8yOykuICJEZWZlY3RvIiBkZXRlcm1pbmEgc2kgZWwgcGx1Z2luIGVzIGFjdGl2YWRvIHBvciBkZWZlY3RvIMOzIHNpIGVsIHVzdWFyaW8gbmVjZXNpdGEgYWN0aXZhcmxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgZXMgaG9yYSBjYWNoZSBlbiBtaW51dG9zIHBhcmEgZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgZGVsIGJhY2tlbmQgZGVsIHBhbmVsIHByaW5jaXBhbCBkZSBsYSB2aXN0YSBkZWwgdGlja2V0IGVzY2xhdm8gZGVsIGludGVyZmFjZSBkZWwgYWdlbnRlLiAiTGltaXRlIiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGEgbW9zdHJhZGFzIHBvciBkZWZlY3RvLiAiR3J1cG8iZXMgdXNhZG8gcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKEVqbS4gR3J1cG86IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmVjdG8iIGRldGVybWluYSBzaSBlbCBwbHVnaW4gZXMgaGFiaWxpdGFkbyBwb3IgZGVmZWN0byBvIHNpIGVsIHVzdWFyaW8gbmVjZXNpdGEgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZGUgY2FjaGUgZW4gbWludXRvcyBwYXJhIGVsIHBsdWdpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gZGUgZXZlbnRvIGRlIHRpY2tldHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVlcmlkb3MgcGFyYSB1c2FyIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBkZSB1biB0aWNrZXQsIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmlqYSBlbCB0ZXh0byBkZWwgY3VlcnBvIHBvciBkZWZlY3RvIGRlIGxhcyBub3RhcyBhw7FhZGlkYXMgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgYXN1bnRvIHBvciBkZWZlY3RvIGRlIGxhcyBub3RhcyBhw7FhZGlkYXMgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgYWdlbnRlIHJlc3BvbnNhYmxlIGRlIHVuIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgc2VydmljaW8gZGUgdW4gdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgKFRpY2tldDo6U2VydmljZSByZXF1aXJlIHNlciBhY3RpdmFkbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgZHVlw7FvIGRlIHVuIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdGaWphIGVsIHRpcG8gZGUgdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgKFRpY2tldDo6VHlwZSByZXF1aXJlIHNlciBhY3RpdmFkbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBjYW1iaWFyIGVsIGVzdGF0dXMgTWFlc3Ryby1Fc2NsYXZvIGRlIHVuIHRpY2tldCwgZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1bmEgbGlzdGEgZGUgdG9kb3MgbG9zIGFnZW50ZXMgaW52b2x1Y3JhZG9zIGNvbiBlc3RlIHRpY2tldCwgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1bmEgbGlzdGEgZGUgdG9kb3MgbG9zIHBvc2libGVzIGFnZW50ZXMgKHRvZG9zIGxvcyBhZ2VudGVzIGNvbiBwZXJtaXNvcyAibm90YSIgZW4gbGEgZmlsYS90aWNrZXQpIHBhcmEgZGV0ZXJtaW5hciBxdWnDqW4gZGViZXLDoSBzZXIgaW5mb3JtYWRvIGFjZXJjYSBkZSBlc3RhIG5vdGEsIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgbGFzIG9wY2lvbmVzIGRlIHByaW9yaWRhZCBkZSB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgbG9zIGNhbXBvcyB0w610dWxvIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdUaWNrZXRzIGVzY2xhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnRXNwZWNpZmljYXIgbG9zIGRpZmVyZW50ZXMgdGlwb3MgZGUgYXJ0w61jdWxvcyBkb25kZSBlbCB2ZXJkYWRlcm8gbm9tYnJlIGRlbCB0aWNrZXkgbWFlc3RybyBzZXLDoSByZWVtcGxhemFkbyBjb24gZWwgZGVsIHRpY2tldCBlc2NsYXZvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBub3RlIHR5cGVzIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnRXN0ZSBtw7NkdWxvIGFjdGl2YSBlbCBjYW1wbyBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgcGFudGFsbGEgZGUgdW4gbnVldm8gdGlja2V0IGRlIGVtYWlsIG8gZGUgdGVsw6lmb25vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnVGlja2V0IE1hZXN0cm8tRXNjbGF2by4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfTVhfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdDYW1wbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ0dlc3Rpb25hciBlc3RhcyBNYWVzdHJvL0VzY2xhdm8gcGFyYSAlcyVzJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnTnVldm8gVGlja2V0IE1hZXN0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ1JlbW92ZXIgZXN0YWRvIFRpY2tldCBNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ1JlbW92ZXIgZXN0YWRvIFRpY2tldCBFc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICdFc2NsYXZvIGRlICVzJXMlczolcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnUmVtb3ZlciBlc3RhZG8gTWFlc3RybyBkZSBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdSZW12ZXIgZXN0YWRvIEVzY2xhdm8gZGUgVGlja2V0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdUaWNrZXQgTWFlc3Rybyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ1RvZG9zIGxvcyB0aWNrZXRzIG1hZXN0cm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnVG9kb3MgbG9zIHRpY2tldHMgZXNjbGF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYcOxYWRpciBub3RhcyBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ01vZGlmaWNhIGVsIGVzdGFkbyBNYWVzdHJvLUVzY2xhdm8gZGVsIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdEZWZpbmUgZWwgbm9tYnJlIGRlbCBjYW1wbyBkaW7DoW1pY28gcGFyYSBlbCBmdW5jaW9uYWxpZGFkIGRlIHRpY2tldCBtYWVzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBibG9xdWVvIHJlcXVlcmlkbyBpbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZSAoc2kgZWwgdGlja2V0IG5vIGhhIHNpZG8gYmxvcXVlYWRvIGF1biwgZWwgdGlja2V0IHNlIGJsb3F1ZWEgeSBlbCBhZ2VudGUgYWN0dWFsIHNlIGNvbnZlcnRpcsOhIGF1dG9tw6F0aWNhbWVudGUgZW4gZWwgZHVlw7FvIGRlbCBtaXNtbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlbCB0aWNrZXQgZGVzcHXDqXMgZGUgYcOxYWRpciB1bmEgbm90YSwgZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxhIHByaW9yaWRhZCBwb3IgZGVmZWN0byBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHRpcG8gZGUgbm90YSBwb3IgZGVmZWN0byBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBjb21lbnRhcmlvIGRlbCBoaXN0b3JpYWwgcGFyYSBsYSBhY2Npw7NuIGRlIGxhIHBhbnRhbGxhIGRlbCB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvLCBxdWUgZXMgdXNhZG8gcGFyYSBlbCBoaXN0b3JpYWwgZGVsIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHRpcG8gZGUgaGlzdG9yaWFsIHBhcmEgbGEgYWNjacOzbiBkZSBsYSBwYW50YWxsYSBkZWwgdGlja2V0IE1hZXN0cm8tRXNjbGF2bywgcXVlIGVzIHVzYWRvIHBhcmEgZWwgaGlzdG9yaWFsIGRlbCB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlc3B1w6lzIGRlIGHDsWFkaXIgdW5hIG5vdGEsIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ0hhYmlsaXRhIGxhIHBhcnRlIGF2YW56YWRhIGRlIGxhIGZ1bmNpb25hbGlkYWQgTWFlc3Ryb0VzY2xhdm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBmdW5jaW9uYWxpZGFkIGVuIGxhIHF1ZSB0aWNrZXRzIGVzY2xhdm9zIHNpZ3VlbiBhbCB0aWNrZXQgbWFlc3RybyBoYWNpYSB1biBudWV2byBtYWVzdHJvIGVuIGVsIG1vZG8gYXZhbnphZG8gZGUgTWFzdGVyU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgZnVuY2lvbmFsaWRhZCBkZSBjYW1iaWFyIGVsIGVzdGFkbyBNYWVzdHJvRXNjbGF2byBkZSB1biB0aWNrZXQgZW4gZWwgbW9kbyBhdmFuemFkbyBkZSBNYWVzdHJvRXNjbGF2by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgZnVuY2lvbmFsaWRhZCBkZSByZS1lbnZpYXIgYXJ0w61jdWxvcyBkZSB0aXBvIFwnZm9yd2FyZFwnIGRlIHVuIHRpY2tldCBtYWVzdHJvIGhhY2lhIGxvcyBjbGllbnRlcyBkZSBzdXMgdGlja2V0IGVzY2xhdm9zLiBQb3Igb21pc2nDs24gKGRlc2hhYml0YWRvKSBubyByZS1lbnZpYXLDoSBhcnTDrWN1bG9zIGRlIHRpcG8gXCdmb3J3YXJkXCcgaGFjaWEgbG9zIHRpY2tldHMgZXNjbGF2b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgZnVuY2lvbmFsaWRhZCBkZSBtYW50ZW5lciBsb3MgdsOtbmN1bG9zIHBhZHJlLWhpam8gZGVzcHXDqXMgZGUgY2FtYmlhciBlbCBlc3RhZG8gZGUgTWFlc3Ryb0VzY2xhdm8gZW4gZWwgbW9kbyBhdmFuemFkbyBkZSBNYWVzdHJvRXNjbGF2by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGxhIGZ1bmNpb25hbGlkYWQgZGUgbWFudGVuZXIgbG9zIHbDrW5jdWxvcyBwYWRyZS1oaWpvIGRlc3B1w6lzIGRlIHJlbW92ZXIgZWwgZXN0YWRvIGRlIE1hZXN0cm9Fc2NsYXZvICBlbiBlbCBtb2RvIGF2YW56YWRvIGRlIE1hZXN0cm9Fc2NsYXZvLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBmdW5jaW9uYWxpZGFkIGRlIHJlbW92ZXIgZWwgZXN0YWRvIGRlIE1hZXN0cm9Fc2NsYXZvIGRlIHVuIHRpY2tldCBlbiBlbCBtb2RvIGF2YW56YWRvIGRlIE1hZXN0cm9Fc2NsYXZvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaSB1bmEgbm90YSBlcyBhw7FhZGlkYSBwb3IgdW4gYWdlbnRlLCBmaWphIGVsIGVzdGFkbyBkZWwgdGlja2V0IGVuIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hZXN0cm8gLyBFc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnVGlja2V0cyBNYWVzdHJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ01hZXN0cm9Fc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNw7NkdWxvIE1hc3RlclNsYXZlIHBhcmEgbGEgb3BjacOzbiBkZSBUaWNrZXRzIHBvciBMb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYmFja2VuZCBkZWwgcGFuZWwgcHJpbmNpcGFsIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHRpY2tldHMgbWFlc3Ryb3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0IiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdyb3VwIiBzZSB1c2EgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyB0aWVuZSBxdWUgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZW4gbWludXRvcyBwYXJhIGxhIGNhY2jDqSBkZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYmFja2VuZCBkZWwgcGFuZWwgcHJpbmNpcGFsIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHRpY2tldHMgZXNjbGF2b3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0IiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdyb3VwIiBzZSB1c2EgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyB0aWVuZSBxdWUgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZW4gbWludXRvcyBwYXJhIGxhIGNhY2jDqSBkZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1byBkZSBldmVudG8gcGFyYSB0aWNrZXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgdXNhciBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZGUgdW4gdGlja2V0LCBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgdGV4dG8gZGVsIGN1ZXJwbyBwb3IgZGVmZWN0byBkZSBsYXMgbm90YXMgYcOxYWRpZGFzIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGFzdW50byBwb3IgZGVmZWN0byBkZSBsYXMgbm90YXMgYcOxYWRpZGFzIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGFnZW50ZSByZXNwb25zYWJsZSBkZSB1biB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdGaWphIGVsIHNlcnZpY2lvIGRlIHVuIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIChUaWNrZXQ6OlNlcnZpY2UgcmVxdWlyZSBzZXIgYWN0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGR1ZcOxbyBkZSB1biB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnRmlqYSBlbCB0aXBvIGRlIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIChUaWNrZXQ6OlR5cGUgcmVxdWlyZSBzZXIgYWN0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgY2FtYmlhciBlbCBlc3RhdHVzIE1hZXN0cm8tRXNjbGF2byBkZSB1biB0aWNrZXQsIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW5hIGxpc3RhIGRlIHRvZG9zIGxvcyBhZ2VudGVzIGludm9sdWNyYWRvcyBjb24gZXN0ZSB0aWNrZXQsIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW5hIGxpc3RhIGRlIHRvZG9zIGxvcyBwb3NpYmxlcyBhZ2VudGVzICh0b2RvcyBsb3MgYWdlbnRlcyBjb24gcGVybWlzb3MgIm5vdGEiIGVuIGxhIGZpbGEvdGlja2V0KSBwYXJhIGRldGVybWluYXIgcXVpw6luIGRlYmVyw6Egc2VyIGluZm9ybWFkbyBhY2VyY2EgZGUgZXN0YSBub3RhLCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGxhcyBvcGNpb25lcyBkZSBwcmlvcmlkYWQgZGUgdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGxvcyBjYW1wb3MgdMOtdHVsbyBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnVGlja2V0IEVzY2xhdm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ0VzcGVjaWZpcXVlIGxvcyBkaWZlcmVudGVzIHRpcG9zIGRlIGFydMOtY3Vsb3MgZW4gbG9zIGN1YWxlcyBzZSByZWVtcGxhemFyw6EgZWwgbm9tYnJlIHJlYWwgZGUgdGlja2V0IE1hZXN0cm8gY29uIGVsIG5vbWJyZSBkZWwgdGlja2V0IEVzY2xhdm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ0VzcGVjaWZpY2EgbG9zIGRpZmVyZW50ZXMgdGlwb3MgZGUgbm90YSBxdWUgc2UgdXNhcsOhbiBlbiBlbCBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdFc3RlIG3Ds2R1bG8gYWN0aXZhIGVsIGNhbXBvIE1hZXN0cm8vRXNjbGF2byBlbiB1bmEgbnVldmEgcGFudGFsbGEgZGUgdGlja2V0IHBvciBlbWFpbCBvIHBvciB0ZWzDqWZvbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdUaWNrZXQgTWFlc3Ryb0VzY2xhdm8nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aHVfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdNZXrFkSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJyVzJXMlcyBtZXN0ZXIvYWzDoXJlbmRlbHQgw6FsbGFwb3TDoW5hayBrZXplbMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnw5pqIG1lc3RlcmplZ3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ01lc3RlcmplZ3kgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ0Fsw6FyZW5kZWx0IGplZ3kgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICclcyVzJXMgYWzDoXJlbmRlbHRqZTogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ01lc3RlcmplZ3llayB0w7ZybMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJ0Fsw6FyZW5kZWx0IGplZ3llayB0w7ZybMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ01lc3RlcmplZ3knOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICfDlnNzemVzIG1lc3RlcmplZ3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICfDlnNzemVzIGFsw6FyZW5kZWx0IGplZ3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xlaGV0xZF2w6kgdGVzemkgamVneXpldGVrIGhvenrDoWFkw6Fzw6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdWw6FsdG96dGFzc2EgbWVnIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnTWVnaGF0w6Fyb3p6YSBhIGRpbmFtaWt1cyBtZXrFkSBuZXbDqXQgYSBtZXN0ZXJqZWd5IGZ1bmtjacOzbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IHN6w7xrc8OpZ2VzLWUgamVneXrDoXJvbMOhcyBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIChoYSBhIGplZ3kgbcOpZyBuaW5jcyB6w6Fyb2x2YSwgYWtrb3IgYSBqZWd5IHrDoXJvbHZhIGxlc3osIMOpcyBheiBha3R1w6FsaXMgw7xneWludMOpesWRIGF1dG9tYXRpa3VzYW4gYW5uYWsgdHVsYWpkb25vc2Frw6ludCBsZXN6IGJlw6FsbMOtdHZhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBlZ3kgamVneSBhbGFww6lydGVsbWV6ZXR0IGvDtnZldGtlesWRIMOhbGxhcG90w6F0IGVneSBqZWd5emV0IGhvenrDoWFkw6FzYSB1dMOhbiBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBqZWd5cHJpb3JpdMOhc3QgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGplZ3l6ZXQgYWxhcMOpcnRlbG1lemV0dCB0w61wdXPDoXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6dCBheiBlbMWRem3DqW55IG1lZ2plZ3l6w6lzdCBoYXTDoXJvenphIG1lZyBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZEgbcWxdmVsZXTDqW7DqWwsIGFtZWx5ZXQgYSBqZWd5IGVsxZF6bcOpbnllaW7DqWwgc3pva3RhayBoYXN6bsOhbG5pIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6dCBheiBlbMWRem3DqW55IHTDrXB1c3QgaGF0w6Fyb3p6YSBtZWcgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRIG3FsXZlbGV0w6luw6lsLCBhbWVseWV0IGEgamVneSBlbMWRem3DqW55ZWluw6lsIHN6b2t0YWsgaGFzem7DoWxuaSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGVneSBqZWd5IGvDtnZldGtlesWRIMOhbGxhcG90w6F0IGVneSBqZWd5emV0IGhvenrDoWFkw6FzYSB1dMOhbiBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ0VuZ2Vkw6lseWV6aSBhIGZ1bmtjacOzIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IHLDqXN6w6l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGF6dCBhIGZ1bmtjacOzdCwgaG9neSBheiBhbMOhcmVuZGVsdCBqZWd5ZWsgYSBtZXN0ZXJqZWd5ZXQga8O2dmVzc8OpayBlZ3kgw7pqIG1lc3RlcmhleiBhIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IG3Ds2RiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0VuZ2Vkw6lseWV6aSBhIGZ1bmtjacOzdCBlZ3kgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3TDoW5hayBtZWd2w6FsdG96dGF0w6Fzw6Fob3ogYSBzcGVjacOhbGlzIG1lc3Rlci1hbMOhcmVuZGVsdCBtw7NkYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYSBmdW5rY2nDs3QgYSBiZWplZ3l6w6lzZWsgdG92w6FiYsOtdMOhc8OhaG96IGVneSBtZXN0ZXJqZWd5IOKAnnRvdsOhYmLDrXTDoXPigJ0gdMOtcHVzw6Fiw7NsIGF6IGFsw6FyZW5kZWx0IGplZ3llayDDvGd5ZmVsZWloZXouIEFsYXDDqXJ0ZWxtZXpldHRlbiAobGV0aWx0dmEpIG5lbSBmb2cgYmVqZWd5esOpc2VrZXQgdG92w6FiYsOtdGFuaSBhIOKAnnRvdsOhYmLDrXTDoXPigJ0gdMOtcHVzYsOzbCBheiBhbMOhcmVuZGVsdCBqZWd5ZWtoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEgZnVua2Npw7N0IGEgc3rDvGzFkS1neWVybWVrIGthcGNzb2xhdCBtZWd0YXJ0w6Fzw6Fob3ogYSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3QgbWVndsOhbHRvenRhdMOhc2EgdXTDoW4gYSBzcGVjacOhbGlzIG1lc3Rlci1hbMOhcmVuZGVsdCBtw7NkYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEgZnVua2Npw7N0IGEgc3rDvGzFkS1neWVybWVrIGthcGNzb2xhdCBtZWd0YXJ0w6Fzw6Fob3ogYSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3QgdMO2cmzDqXNlIHV0w6FuIGEgc3BlY2nDoWxpcyBtZXN0ZXItYWzDoXJlbmRlbHQgbcOzZGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYSBmdW5rY2nDs3QgZWd5IGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IMOhbGxhcG90w6FuYWsgdMO2cmzDqXPDqWhleiBhIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IG3Ds2RiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hhIGVneSDDvGd5aW50w6l6xZEgaG96esOhYWRvdHQgZWd5IG1lZ2plZ3l6w6lzdCwgYWtrb3IgYmXDoWxsw610amEgYSBqZWd5IMOhbGxhcG90w6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWVzdGVyIC8gYWzDoXJlbmRlbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICdNZXN0ZXJqZWd5ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNZXN0ZXItYWzDoXJlbmRlbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01lc3Rlci1hbMOhcmVuZGVsdCBtb2R1bCBhIGplZ3kgdMO2bWVnZXMgZnVua2Npw7Nqw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IG1lc3RlcmplZ3llaSDDoXR0ZWtpbnTFkWrDqW5layB2ZXrDqXJsxZFwdWx0IGjDoXR0w6lycHJvZ3JhbWrDoWhvei4gQSDigJ5MaW1pdOKAnSBheiBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgYmVqZWd5esOpc2VrIHN6w6FtYS4gQSDigJ5Hcm91cOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgR3JvdXA6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEEg4oCeRGVmYXVsdOKAnSBqZWx6aSwgaG9neSBhIGLFkXbDrXRtw6lueSBhbGFww6lydGVsbWV6ZXR0ZW4gZW5nZWTDqWx5ZXp2ZSB2YW4sIHZhZ3kgaG9neSBhIGZlbGhhc3puw6Fsw7NuYWsga8OpenplbCBrZWxsIGVuZ2Vkw6lseWV6bmllIGF6dC4gQSDigJ5DYWNoZVRUTExvY2Fs4oCdIGEgYsWRdsOtdG3DqW55IGd5b3Jzw610w7N0w6FyIGlkZWplIHBlcmNiZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYWzDoXJlbmRlbHQgamVneWVpIMOhdHRla2ludMWRasOpbmVrIHZlesOpcmzFkXB1bHQgaMOhdHTDqXJwcm9ncmFtasOhaG96LiBBIOKAnkxpbWl04oCdIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBiZWplZ3l6w6lzZWsgc3rDoW1hLiBBIOKAnkdyb3Vw4oCdIGhhc3puw6FsaGF0w7MgYSBob3p6w6Fmw6lyw6lzIGtvcmzDoXRvesOhc8OhaG96IGEgYsWRdsOtdG3DqW55cmUgKHDDqWxkw6F1bCBHcm91cDogYWRtaW47Y3NvcG9ydDE7Y3NvcG9ydDI7KS4gQSDigJ5EZWZhdWx04oCdIGplbHppLCBob2d5IGEgYsWRdsOtdG3DqW55IGFsYXDDqXJ0ZWxtZXpldHRlbiBlbmdlZMOpbHllenZlIHZhbiwgdmFneSBob2d5IGEgZmVsaGFzem7DoWzDs25hayBrw6l6emVsIGtlbGwgZW5nZWTDqWx5ZXpuaWUgYXp0LiBBIOKAnkNhY2hlVFRMTG9jYWzigJ0gYSBixZF2w610bcOpbnkgZ3lvcnPDrXTDs3TDoXIgaWRlamUgcGVyY2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ0EgamVneSBlc2Vtw6lueSBtb2R1bCByZWdpc3p0csOhY2nDs2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgdMO2cnpzc3rDtnZlZ2V0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBob3p6w6FhZG90dCBqZWd5emV0ZWtuw6lsIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgdMOhcmd5YXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGhvenrDoWFkb3R0IGplZ3l6ZXRla27DqWwgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYSBqZWd5IGZlbGVsxZFzIMO8Z3lpbnTDqXrFkWrDqXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBhIHN6b2xnw6FsdGF0w6FzdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIChhIFRpY2tldDo6U2VydmljZSBsZWhldMWRc8OpZ25layBha3RpdsOhbHZhIGtlbGwgbGVubmllKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYSBqZWd5IHR1bGFqZG9ub3PDoXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYSBqZWd5IHTDrXB1c8OhdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIChhIFRpY2tldDo6VHlwZSBsZWhldMWRc8OpZ25layBha3RpdsOhbHZhIGtlbGwgbGVubmllKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCDDoWxsYXBvdMOhbmFrIG1lZ3bDoWx0b3p0YXTDoXPDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGplZ3luYWd5w610w6FzIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnamVsZW7DrXRpIGEgamVneWVuIHLDqXN6dCB2ZXbFkSDDtnNzemVzIMO8Z3lpbnTDqXrFkSBsaXN0w6Fqw6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBheiDDtnNzemVzIGxlaGV0c8OpZ2VzIMO8Z3lpbnTDqXrFkSAoYSB2w6Fyw7NsaXN0w6FuIHZhZ3kgamVneWVuIGplZ3l6ZXQgam9nb3N1bHRzw6FnZ2FsIHJlbmRlbGtlesWRIMO2c3N6ZXMgw7xneWludMOpesWRKSBsaXN0w6Fqw6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYW5uYWsgbWVnaGF0w6Fyb3rDoXPDoWhveiwgaG9neSBraXQga2VsbCB0w6Fqw6lrb3p0YXRuaSBlcnLFkWwgYSBqZWd5emV0csWRbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnamVsZW7DrXRpIGEgamVneSBwcmlvcml0w6FzaSBsZWhldMWRc8OpZ2VrZXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBhIGPDrW1tZXrFkWtldCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnQWzDoXJlbmRlbHQgamVneWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ01lZ2FkamEgYSBrw7xsw7ZuYsO2esWRIGJlamVneXrDqXN0w61wdXNva2F0LCBhaG9sIGEgbWVzdGVyamVneWJlbiBsw6l2xZEgdmFsw7NkaSBuw6l2IGtpIGxlc3ogY3NlcsOpbHZlIGF6IGFsw6FyZW5kZWx0IGplZ3liZW4gbMOpdsWRdmVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBub3RlIHR5cGVzIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdNZWdhZGphIGEga8O8bMO2bmLDtnrFkSBqZWd5emV0dMOtcHVzb2thdCwgYW1lbHllayBhIHJlbmRzemVyZW4gaGFzem7DoWx2YSBsZXN6bmVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdFeiBhIG1vZHVsIGJla2FwY3NvbGphIGEgbWVzdGVyL2Fsw6FyZW5kZWx0IG1lesWRdCBheiDDumogZS1tYWlsIMOpcyB0ZWxlZm9ub3MgamVneSBrw6lwZXJuecWRa8O2bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJ0plZ3kgbWVzdGVyLWFsw6FyZW5kZWx0Lic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aWRfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdCaWRhbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnVGlrZXQgbWFzdGVyIGJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ1RpZGFrIHBlcmx1IHNldCB0aWtldCBtYXN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnTGVwYXNrYW4gc2V0IHRpa2V0IHNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ01lbGVwYXMgdGlrZXQgbWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdNZWxlcGFza2FuIHRpa2V0IHNsYXZlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdTZW11YSB0aWtldCBtYXN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICdTZW11YSB0aWtldCBzbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIG1lbmFtYmFoa2FuIGNhdGF0YW4gZGFsYW0gbGF5YXIgdGlrZXQgbWFzdGVyIHNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnTWVuZ3ViYWgga2VhZGFhbiBNYXN0ZXIgc2xhdmUgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnTWVuZGVmaW5pc2lrYW4gbmFtYSBmaWVsZCB5YW5nIGRpbmFtaXMgdW50dWsgZml0dXIgdXRhbWEgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gamlrYSBrdW5jaSB0aWtldCBkaXBlcmx1a2FuIGRpIGxheWFyIE1hc3RlclNsYXZlIHRpa2V0IGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuIChqaWthIHRpa2V0IHRpZGFrIHRlcmt1bmNpIGxhZ2ksIHRpa2V0IGFrYW4gdGVya3VuY2kgZGFuIGFnZW4gc2FhdCBpbmkgYWthbiBkaWF0dXIgc2VjYXJhIG90b21hdGlzIHNlYmFnYWkgcGVtaWxpa255YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGRlZmF1bHQgc3RhdGUgYmVyaWt1dG55YSB0aWtldCBzZXRlbGFoIG1lbmFtYmFoa2FuIGNhdGF0YW4sIGRhbGFtIHRpa2V0IEd1cnUgbGF5YXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gcHJpb3JpdGFzIHRpa2V0IGRlZmF1bHQgZGkgbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBqZW5pcyBkZWZhdWx0IGNhdGF0YW4gZGFsYW0gbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29tZW50YXIgc2VqYXJhaCB1bnR1ayB0aW5kYWthbiB0aWtldCBtYXN0ZXJzbGF2ZSBwYWRhIGxheWFyLCB5YW5nIGFrYW4gZGlndW5ha2FuIHVudHVrIHNlamFyYWggdGlrZXQgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBqZW5pcyBzZWphcmFoIHVudHVrIHRpbmRha2FuIHRpa2V0IG1hc3RlciBzbGF2ZSBkaSBsYXlhciwgeWFuZyBha2FuIGRpZ3VuYWthbiB1bnR1ayBzZWphcmFoIHRpa2V0IGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gc3RhdGUgYmVyaWt1dG55YSB0aWtldCBzZXRlbGFoIG1lbmFtYmFoa2FuIGNhdGF0YW4sIGRhbGFtIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICdNZW11bmdraW5rYW4gTWFzdGVyIHNsYXZlIGJhZ2lhbiBkYXJpIGZpdHVyIHRlcnNlYnV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnTWVuZ2FrdGlma2FuIGZpdHVyIHRpa2V0IHNsYXZlIHVudHVrIG1lbmdpa3V0aSB0aWtldCBtYXN0ZXIgYmFydSBkYWxhbSBtb2R1cyBNYXN0ZXIgU2xhdmUgY2FuZ2dpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIHVudHVrIG1lbmd1YmFoIGtlYWRhYW4gTWFzdGVyIHNsYXZlIGRhcmkgdGlrZXQgZGFsYW0gbW9kdXMgTWFzdGVyIFNsYXZlIGNhbmdnaWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciB1bnR1ayBtZW5lcnVza2FuIGFydGlrZWwgZGFyaSBqZW5pcyBcJ21hanVcJyBkYXJpIHRpa2V0IG1hc3RlciB1bnR1ayBwZWxhbmdnYW4gZGFyaSB0aWtldCBzbGF2ZS4gU2VjYXJhIGRlZmF1bHQgKGNhY2F0KSBpdHUgdGlkYWsgYWthbiBtZW5lcnVza2FuIGFydGlrZWwgZGFyaSBqZW5pcyBcJ21hanVcJyB1bnR1ayB0aWtldCBzbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgdW50dWsgbWVuamFnYSBsaW5rIG9yYW5ndHVhLWFuYWsgc2V0ZWxhaCBwZXJ1YmFoYW4gZGFyaSBzdGF0ZSBNYXN0ZXIgc2xhdmUgZGFsYW0gbW9kdXMgTWFzdGVyIFNsYXZlIGNhbmdnaWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgdW50dWsgbWVuamFnYSBsaW5rIG9yYW5ndHVhLWFuYWsgc2V0ZWxhaCBkaXNldCBkYXJpIG5lZ2FyYSBNYXN0ZXIgc2xhdmUgZGFsYW0gbW9kdXMgTWFzdGVyIFNsYXZlIGNhbmdnaWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIHlhbmcgdGlkYWsgZGkgc2V0IE1hc3RlciBzbGF2ZSBkYXJpIHRpa2V0IGRhbGFtIG1vZHVzIE1hc3RlciBTbGF2ZSBjYW5nZ2loLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKaWthIGNhdGF0YW4gZGl0YW1iYWhrYW4gb2xlaCBhZ2VuLCBtZW5ldGFwa2FuIGtlYWRhYW4gdGlrZXQgZGkgdGlrZXQgbGF5YXIgTWFzdGVyU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWFzdGVyL1NsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnVGlrZXQgTWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnTWFzdGVyU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01vZHVsIE1hc3RlclNsYXZlIHVudHVrIGZpdHVyIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBiYWNrZW5kIGRhc2hib2FyZCB0aWtldCBtZW5ndWFzYWkgZ2FtYmFyYW4gZGFyaSBhbnRhcm11a2EgYWdlbi4gIkJhdGFzIiBhZGFsYWgganVtbGFoIGVudHJpIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQuICJHcnVwIiBkaWd1bmFrYW4gdW50dWsgbWVtYmF0YXNpIGFrc2VzIGtlIHBsdWdpbiAoZSBnIEdydXA6IEFkbWluO2dyb3VwMSxncm91cDI7KS4gIkRlZmF1bHQiIG1lbmVudHVrYW4gYXBha2FoIHBsdWdpbiBkaWFrdGlma2FuIHNlY2FyYSBkZWZhdWx0IGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSBtZW5nYWt0aWZrYW5ueWEgc2VjYXJhIG1hbnVhbC4gIkNhY2hlVFRMTG9jYWwiIGFkYWxhaCB3YWt0dSBjYWNoZSBkaSBtZW5pdCB1bnR1ayBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGJhY2tlbmQgZGFzaGJvYXJkIHRpa2V0IGJ1ZGFrIGdhbWJhcmFuIGRhcmkgYW50YXJtdWthIGFnZW4uICJCYXRhcyIgYWRhbGFoIGp1bWxhaCBlbnRyaSB5YW5nIGRpdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0LiAiR3J1cCIgZGlndW5ha2FuIHVudHVrIG1lbWJhdGFzaSBha3NlcyBrZSBwbHVnaW4gKGUgZyBHcnVwOiBBZG1pbjtncm91cDEsZ3JvdXAyOykuICJEZWZhdWx0IiBtZW5lbnR1a2FuIGFwYWthaCBwbHVnaW4gZGlha3RpZmthbiBzZWNhcmEgZGVmYXVsdCBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgbWVuZ2FrdGlma2FubnlhIHNlY2FyYSBtYW51YWwuICJDYWNoZVRUTExvY2FsIiBhZGFsYWggd2FrdHUgY2FjaGUgZGkgbWVuaXQgdW50dWsgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUGVuZGFmdGFyYW4gbW9kdWwgYWNhcmEgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIGxheWEgdGlrZXQgTWFzdGVyU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmdhdHVyIHRla3MgdHVidWggZGVmYXVsdCB1bnR1ayBjYXRhdGFuIGRpdGFtYmFoa2FuIGRhbGFtIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmdhdHVyIFRla3MgVHVidWggYmF3YWFuIHVudHVrIHJldmlldyBDYXRhdGFuIGRpdGFtYmFoa2FuIGhlYXJ0cyBUaWtldCBMYXlhciBTbGF2ZSBEYXJpIFRpa2V0IFlhbmcgZGlwZXJiZXNhciBkaSBBbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBhZ2VuIHlhbmcgYmVydGFuZ2d1bmcgamF3YWIgZGFyaSB0aWtldCBkaSBsYXlhciB0aWtldCBNYXN0ZXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnU2V0IGxheWFuYW4gZGFsYW0gdGlrZXQgR3VydSBsYXlhciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbiAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5ldGFwa2FuIHBlbWlsaWsgdGlrZXQgZGkgbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdNZW5ldGFwa2FuIGplbmlzIHRpa2V0IGRpIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbiAgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5ndWJhaCBzdGF0dXMgTWFzdGVyIHNsYXZlIGRhcmkgdGlrZXQgZGFsYW0gdGFtcGlsYW4gem9vbSB0aWtldCBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gZGFmdGFyIHNlbXVhIGFnZW4geWFuZyB0ZXJsaWJhdCBwYWRhIHRpa2V0IGluaSwgZGFsYW0gbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBkYWZ0YXIgc2VtdWEgYWdlbiB5YW5nIG11bmdraW4gKHNlbXVhIGFnZW4gZGVuZ2FuIGl6aW4gY2F0YXRhbiBkaSBhbnRyaWFuIC8gdGlrZXQpIHVudHVrIG1lbmVudHVrYW4gc2lhcGEgeWFuZyBoYXJ1cyBkaWJlcml0YWh1IHRlbnRhbmcgY2F0YXRhbiBpbmksIGRpIGxheWFyIE1hc3RlclNsYXZlIHRpa2V0IGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwaWxpaGFuIHByaW9yaXRhcyB0aWtldCBkaSB0aWtldCBHdXJ1IGxheWFyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGRzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gYmlkYW5nIGp1ZHVsIGRhbGFtIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ1Rpa2V0IHNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gamVuaXMgYXJ0aWtlbCB5YW5nIGJlcmJlZGEgZGkgbWFuYSBuYW1hIGFzbGkgZGFyaSBtYXN0ZXIgdGlrZXQgYWthbiBkaWdhbnRpIGRlbmdhbiBzYXR1IHRpa2V0IFNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBub3RlIHR5cGVzIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGplbmlzIGNhdGF0YW4geWFuZyBiZXJiZWRhIHlhbmcgYWthbiBkaWd1bmFrYW4gZGFsYW0gc2lzdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdNb2R1bCBpbmkgbWVuZ2FrdGlma2FuIGJpZGFuZyBNYXN0ZXIgLyBTbGF2ZSBkaSBiYXJ1IGxheWFyIGVtYWlsIGRhbiB0aWtldCB0ZWxlcG9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnVGlrZXQgTWFzdGVyU2xhdmUuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6amFfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICfjg5XjgqPjg7zjg6vjg4knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICclcyVzJXPjga7jg57jgrnjgr8v44K544Os44O844OW44K544OG44O844K/44K544KS566h55CG44GZ44KLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ+aWsOOBl+OBhOODnuOCueOCv+ODvOODgeOCseODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAn44Oe44K544K/44O844OB44Kx44OD44OI44KS6Kej6Zmk44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ+OCueODrOODvOODluODgeOCseODg+ODiOOCkuino+mZpOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJXMlcyVz44Gu44K544OG44O844OWOiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAn44Oe44K544K/44O844OB44Kx44OD44OI44KS6Kej6Zmk44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICfjgrnjg6zjg7zjg5bjg4HjgrHjg4Pjg4jjgpLop6PpmaTjgZnjgosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ+ODnuOCueOCv+ODvOODgeOCseODg+ODiCc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ+OBmeOBueOBpuOBruODnuOCueOCv+ODvOODgeOCseODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ+OBmeOBueOBpuOBruOCueODrOODvOODluODgeOCseODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44Oe44K544K/44O844K544Os44Kk44OW55S76Z2i44Gn44CB5rOo6YeI44Gu6L+95Yqg44KS6Kix5Y+v44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICfjg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnirbms4HjgpLlpInmm7TjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICfjg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bli5XnmoTjg5XjgqPjg7zjg6vjg4nlkI3jgpLoqK3lrprjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgeODh+ODleOCqeODq+ODiOOBruODoeODouOBruOCv+OCpOODl+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44OB44Kx44OD44OI5bGl5q2044Gn5L2/55So44GV44KM44KL44CB44OB44Kx44OD44OI44O744Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Ki44Kv44K344On44Oz44Gr6Zai44GZ44KL5bGl5q2044Kz44Oh44Oz44OI44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jg4HjgrHjg4Pjg4jlsaXmrbTjgafkvb/nlKjjgZXjgozjgovjgIHjg4HjgrHjg4Pjg4jjg7vjg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgqLjgq/jgrfjg6fjg7PjgavplqLjgZnjgovlsaXmrbTjgr/jgqTjg5fjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICfjg57jgrnjgr/jg7wgLyDjgrnjg6zjg7zjg5YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICfjg57jgrnjgr/jg7zjg4HjgrHjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICfjg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01hc3RlclNsYXZlIOODouOCuOODpeODvOODq+OBruODgeOCseODg+ODiOS4gOaLrOWHpueQhuapn+iDvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ+ODgeOCseODg+ODiOOCpOODmeODs+ODiOODouOCuOODpeODvOODq+OBrueZu+mMsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgafjgIHjgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjga7lv4XopoHjgaroqLHlj6/jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Gn44CB6L+95Yqg44GV44KM44Gf44Oh44Oi44Gu44OH44OV44Kp44Or44OI44Gu5pys5paH44KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgafjgIHov73liqDjgZXjgozjgZ/jg6Hjg6Ljga7jg4fjg5Xjgqnjg6vjg4jjga7ku7blkI3jgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgeODgeOCseODg+ODiOOBruiyrOS7u+OCkuacieOBmeOCi+aLheW9k+iAheOCkuioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgeOCteODvOODk+OCueOCkuioreWumuOBl+OBvuOBmSAoVGlja2V0OjpTZXJ2aWNl44KS5pyJ5Yq544Go44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgafjgIHjg4HjgrHjg4Pjg4jmiYDmnInogIXjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Gn44CB44OB44Kx44OD44OI44O744K/44Kk44OX44KS6Kit5a6a44GX44G+44GZKFRpY2tldDo6VHlwZeOCkuacieWKueOBqOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmSnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga4gTWFzdGVyU2xhdmUg44Gu44OB44Kx44OD44OI44K644O844Og55S76Z2i44Gn44K/44Kk44OI44Or44OV44Kj44O844Or44OJ44KS6KGo56S644GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICfjgrnjg6zjg7zjg5bjg4HjgrHjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ+OCt+OCueODhuODoOOBp+S9v+eUqOOBleOCjOOCi+OAgeeVsOOBquOCi+ODoeODouOBruOCv+OCpOODl+OCkueJueWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICfjgZPjga7jg6Ljgrjjg6Xjg7zjg6vjga/jgIHmlrDopo/jg6Hjg7zjg6sv6Zu76Kmx44OB44Kx44OD44OI44Gr44CB44Oe44K544K/44O8L+OCueODrOODvOODluODgeOCseODg+ODiOashOOCkui/veWKoOOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAn44Oe44K544K/44O844O744K544Os44O844OW44OB44Kx44OD44OIJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bXNfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdCaWRhbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnVGlrZXQgTWFzdGVyIEJhaGFydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnVGlrZXQgTWFzdGVyIFRpZGFrIERpdGV0YXBrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnVGlrZXQgU2xhdmUgVGlkYWsgRGl0ZXRhcGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1iZW5hcmthbiBtZW5hbWJhaCBub3RhIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IGJhZ2kgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ1ViYWgga2VhZGFhbiB0aWtldCBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gamlrYSBrdW5jaSB0aWtldCBkaXBlcmx1a2FuIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4gKGppa2EgdGlrZXQgaXR1IHRpZGFrIGRpa3VuY2kgbGFnaSwgdGlrZXQgeWFuZyBha2FuIGRpa3VuY2kgZGFuIGVqZW4gc2VtYXNhIGFrYW4gZGl0ZXRhcGthbiBzZWNhcmEgYXV0b21hdGlrIHNlYmFnYWkgcGVtaWxpa255YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWFkYWFuIGRlZmF1bHQgc2V0ZXJ1c255YSBiYWdpIHRpa2V0IHNlbGVwYXMgbWVuYW1iYWggbm90YSwgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga2V1dGFtYWFuIHRpa2V0IGRlZmF1bHQgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGplbmlzIGRlZmF1bHQgbm90YSBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtvbWVuIHNlamFyYWggYmFnaSBrZXNhbiBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCwgeWFuZyBha2FuIGRpZ3VuYWthbiB1bnR1ayBzZWphcmFoIHRpa2V0IGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gamVuaXMgc2VqYXJhaCBiYWdpIHRpbmRha2FuIHNrcmluIHRpa2V0IE1hc3RlclNsYXZlLCB5YW5nIGFrYW4gZGlndW5ha2FuIHVudHVrIHNlamFyYWggdGlrZXQgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWFkYWFuIHNldGVydXNueWEgYmFnaSB0aWtldCBzZWxlcGFzIG1lbmFtYmFoIG5vdGEsIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ppa2Egbm90YSBkaXRhbWJhaCBvbGVoIGVqZW4sIHRldGFwa2FuIGtlYWRhYW4gdGlrZXQgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNYXN0ZXIgLyBTbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTW9kdWwgTWFzdGVyU2xhdmUgdW50dWsgY2lyaSBCdWxrIFRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgYmFoYWdpYW4gYmVsYWthbmcgcGFwYW4gcGVtdWthIGRhcmlwYWRhIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIHRpa2V0IG1hc3RlciBhbnRhcmEgbXVrYSBlamVuLiAiSGFkIiBhZGFsYWggYmlsYW5nYW4gcGVueWVydGFhbiBkaXR1bmp1a2thbiBzZWNhcmEgZGVmYXVsdC4gIkt1bXB1bGFuIiBkaWd1bmFrYW4gdW50dWsgbWVueWVrYXQgYWtzZXMga2VwYWRhIG1hc3VrIChjb250b2g6IEt1bXB1bGFuOiBhZG1pbjsga3VtcHVsYW4xOyBrdW1wdWxhbjI7KS4gIkRlZmF1bHQiIG1lbmVudHVrYW4gamlrYSBwbHVnaW4gaW5pIGRpYWt0aWZrYW4gc2VjYXJhIGRlZmF1bHQgYXRhdSBqaWthIHBlbmdndW5hIHBlcmx1IHVudHVrIG1lbWJvbGVoa2FuIHNlY2FyYSBtYW51YWwuICJDYWNoZVRUTExvY2FsIiBhZGFsYWggbWFzYSBjYWNoZSBkYWxhbSBtaW5pdCB1bnR1ayBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGJhaGFnaWFuIGJlbGFrYW5nIHBhcGFuIHBlbXVrYSBkYXJpcGFkYSBnYW1iYXJhbiBrZXNlbHVydWhhbiB0aWtldCBzbGF2ZSBhbnRhcmEgbXVrYSBlamVuLiAiSGFkIiBhZGFsYWggYmlsYW5nYW4gcGVueWVydGFhbiBkaXR1bmp1a2thbiBzZWNhcmEgZGVmYXVsdC4gIkt1bXB1bGFuIiBkaWd1bmFrYW4gdW50dWsgbWVueWVrYXQgYWtzZXMga2VwYWRhIG1hc3VrIChjb250b2g6IEt1bXB1bGFuOiBhZG1pbjsga3VtcHVsYW4xOyBrdW1wdWxhbjI7KS4gIkRlZmF1bHQiIG1lbmVudHVrYW4gamlrYSBwbHVnaW4gaW5pIGRpYWt0aWZrYW4gc2VjYXJhIGRlZmF1bHQgYXRhdSBqaWthIHBlbmdndW5hIHBlcmx1IHVudHVrIG1lbWJvbGVoa2FuIHNlY2FyYSBtYW51YWwuICJDYWNoZVRUTExvY2FsIiBhZGFsYWggbWFzYSBjYWNoZSBkYWxhbSBtaW5pdCB1bnR1ayBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdQZW5kYWZ0YXJhbiB0aWtldCBtb2R1bCBhY2FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2ViZW5hcmFuIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5ldGFwa2FuIHRla3MgYmFkYW4gZGVmYXVsdCB1bnR1ayBub3RhIGRpdGFtYmFoIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQgc3ViamVrIGRlZmF1bHQgdW50dWsgbm90YSBkaXRhbWJhaCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IGVqZW4geWFuZyBiZXJ0YW5nZ3VuZ2phd2FiIGJhZ2kgdGlrZXQgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdTZXQgcGVya2hpZG1hdGFuIGRpIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4gKFRpa2V0OjpQZXJraGlkbWF0YW4gcGVybHUgZGlha3RpZmthbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBwZW1pbGlrIHRpa2V0IGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4gamVuaXMgdGlrZXQgeWFuZyBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuIChUaWtldDo6SmVuaXMgcGVybHUgZGlha3RpZmthbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVudWthciBzdGF0dXMgTWFzdGVyU2xhdmUgYmFnaSB0aWtldCBkYWxhbSBwYW5kYW5nYW4genVtIHRpa2V0IGJhZ2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWFwYXJrYW4gc2VuYXJhaSBzZW11YSBlamVuIHlhbmcgdGVybGliYXQgZGFsYW0gdGlrZXQgaW5pLCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1hcGFya2FuIHNlbmFyYWkgc2VtdWEga2VtdW5na2luYW4gZWplbiAoc2VtdWEgZWplbiBkZW5nYW4ga2ViZW5hcmFuIG5vdGEgbWVuZ2VuYWkgYmFyaXNhbi90aWtldCkgdW50dWsgbWVuZW50dWthbiBzaWFwYSB5YW5nIHBlcmx1IGRpYmVyaXRhaHUgdGVudGFuZyBub3RhIGluaSwgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGlsaWhhbiBrZXV0YW1hYW4gdGlrZXQgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGJpZGFuZyB0YWp1ayBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gamVuaXMgYXJ0aWtlbCB5YW5nIGJlcmJlemEgZGkgbWFuYSBuYW1hIHNlYmVuYXIgZGFyaSB0aWtldCBNYXN0ZXIgYWthbiBkaWdhbnRpa2FuIGRlbmdhbiB5YW5nIGRhbGFtIHRpa2V0IFNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBub3RlIHR5cGVzIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdUZW50dWthbiBqZW5pcyBub3RhIGJlcmJlemEgeWFuZyBha2FuIGRpZ3VuYWthbiBkYWxhbSBzaXN0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ01vZHVsIGluaSBtZW5nYWt0aWZrYW4gbWVkYW4gTWFzdGVyL1NsYXZlIGRpIHNrcmluIGVtZWwgZGFuIHRpa2V0IHRlbGVmb24gYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cGxfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdQb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnVXN0YXcgc3RhbiBOYWRyesSZZG55L1BvZHJ6xJlkbnkgZGxhICVzJXMlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICdOb3dlIHpnxYJvc3plbmllIG5hZHJ6xJlkbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ1d5xYLEhWN6IHdhcnRvxZvEhyBOYWRyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ1d5xYLEhWN6IHdhcnRvxZvEhyBQb2RyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICdQb2RyesSZZG5lIGRvICVzJXMlczogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ1d5Y3p5xZvEhyB3YXJ0b8WbxIcgTmFkcnrEmWRueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnV3ljennFm8SHIHdhcnRvxZvEhyBQb2RyesSZZG55JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdaZ8WCb3N6ZW5pZSBuYWRyesSZZG5lJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnV3N6eXN0a2llIHpnxYJvc3plbmlhIG5hZHJ6xJlkbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICdXc3p5c3RraWUgemfFgm9zemVuaWEgcG9kcnrEmWRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG96d2FsYSBuYSBkb2RhbmllIG5vdGF0a2kgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHd5d2/FgmFueW0geiBwcnp5YmxpxbxvbmVnbyB3aWRva3UgemfFgm9zemVuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdabWllxYQgc3RhbiB6Z8WCb3N6ZW5pYSBkbGEgTmFkcnrEmWRueS9Qb2RyesSZZG55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ09rcmXFm2xhIG5henfEmSBwb2xhIGR5bmFtaWN6bmVnbyBkbGEgZnVua2Nqb25hbG5vxZtjaSB6Z8WCb3N6ZW5pYSBuYWRyesSZZG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGN6eSB3eW1hZ2FuYSBqZXN0IHphYmxva293YW5pZSB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEgKGplxZtsaSB6Z8WCb3N6ZW5pZSBuaWUgamVzdCBqZXN6Y3plIHphYmxva293YW5lLCBzdGFqZSBzacSZwqB6YWJsb2tvd2FuZSwgYSBiaWXFvMSFY3kgYWdlbnQgc3RhamUgc2nEmSBqZWdvIHfFgmHFm2NpY2llbGVtKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG55IG5hc3TEmXBueSBzdGFuIHpnxYJvc3plbmlhIHBvIGRvZGFuaXUgbm90YXRraSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG55IHByaW9yeXRldCB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xueSB0eXAgbm90YXRraSBub3RhdGtpIG5hIGVrcmFuaWUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGtvbWVudGFyeiBoaXN0b3JpaSBkbGEgYWtjamkgemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkga3TDs3J5IHpvc3RhbmllIHXFvHl0eSB3IGhpc3RvcmlpIHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgdHlwIGhpc3RvcmlpIGRsYSBha2NqaSB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSBrdMOzcnkgem9zdGFuaWUgdcW8eXR5IHcgaGlzdG9yaWkgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBuYXN0xJlwbnkgc3RhbiB6Z8WCb3N6ZW5pYSBwbyBkb2Rhbml1IG5vdGF0a2kgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ1fFgsSFY3phIHphYXdhbnNvd2FuxIUgY3rEmcWbxIcgZnVua2Nqb25hbG5vxZtjaSBOYWRyesSZZG55L1BvZHJ6xJlkbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdXxYLEhWN6YSBmdW5rY2pvbmFsbm/Fm8SHIHRyeWJ1IHphYXdhbnNvd2FuZWdvIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSwgdyBrdMOzcmVqIHpnxYJvc3plbmlhIHBvZHJ6xJlkbmUgcG9kxIXFvGFqxIUgemEgemfFgm9zemVuaWVtIG5hZHJ6xJlkbnltIGRvIG5vd2VnbyB6Z8WCb3N6ZW5pYSBuYWRyesSZZG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjam9uYWxub8WbxIcgdHJ5YnUgemFhd2Fuc293YW5lZ28gTmFkcnrEmWRueS9Qb2RyesSZZG55IHVtb8W8bGl3aWFqxIVjxIUgem1pYW7EmSBzdGFudSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyB6Z8WCb3N6ZW5pdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyBwcnplc3nFgmFuaWEgYXJ0eWt1xYLDs3cgdHlwdSAicHJ6ZWthxbwiIHplIHpnxYJvc3plbmlhIG5hZHJ6xJlkbmVnbyBkbyBrbGllbnTDs3cgemfFgm9zemXFhCBwb2RyesSZZG55Y2guIERvbXnFm2xuaWUgKHd5xYLEhWN6b25lKSBhcnR5a3XFgnkgdHlwdSAicHJ6ZWthxbwiIG5pZSBzxIUgcHJ6ZWthenl3YW5lIGRvIHpnxYJvc3plxYQgcG9kcnrEmWRueWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjam9uYWxub8WbxIcgdHJ5YnUgemFhd2Fuc293YW5lZ28gTmFkcnrEmWRueS9Qb2RyesSZZG55LCBwb2xlZ2FqxIVjxIUgbmEgdXRyenltYW5pdSBwb8WCxIVjemVuaWEgcm9kemljLWR6aWVja28gcG8gem1pYW5pZSB6YWxlxbxub8WbY2kgTmFkcnrEmWRueS9Qb2RyesSZZG55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyB0cnlidSB6YWF3YW5zb3dhbmVnbyBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHBvbGVnYWrEhWPEhSBuYSB1dHJ6eW1hbml1IHBvxYLEhWN6ZW5pYSByb2R6aWMtZHppZWNrbyBwbyB1c3VuacSZY2l1IHphbGXFvG5vxZtjaSBOYWRyesSZZG55L1BvZHJ6xJlkbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyB0cnlidSB6YWF3YW5zb3dhbmVnbyBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHVzdXdhbmlhIHN0YW51IE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB6ZSB6Z8WCb3N6ZW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSmXFm2xpIGFnZW50IGRvZGEgbm90YXRrxJksIHRvIHVzdGF3aWFueSBqZXN0IHN0YW4gemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgb2tuYSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ05hZHJ6xJlkbnkgLyBQb2RyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnWmfFgm9zemVuaWEgbmFkcnrEmWRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ05hZHJ6xJlkbnkvUG9kcnrEmWRueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTW9kdcWCIE5hZHJ6xJlkbnljaC9Qb2RyesSZZG55Y2ggZGxhIGZ1bmtjamkgZ3J1cG93eWNoIHpnxYJvc3plxYQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyIG9rbmEgcHVscGl0dSB6Z8WCb3N6ZcWEIG5hZHJ6xJlkbnljaCBpbnRlcmZlanN1IGFnZW50YS4gIkxpbWl0IiBqZXN0IGxpY3pixIUgd2llcnN6eSBwb2thenl3YW7EhSBkb215xZtsbmllLiAiR3JvdXAiIGplc3QgdcW8eXdhbmEgZG8gb2dyYW5pY3plbmlhIGRvc3TEmXB1IGRvIHd0eWN6a2kgKG5wLjogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIG9rcmXFm2xhIGN6eSB3dHljemthIGplc3QgZG9tecWbbG5pZSB3xYLEhWN6b25hIGx1YiBjenkgdcW8eXRrb3duaWsgbW/FvGUgd8WCxIVjennEhyBqxIUgcsSZY3puaWUuICJDYWNoZVRUTExvY2FsIiBqZXN0IGN6YXNlbSBwb2RhbnltIHcgbWludXRhY2ggb2tyZcWbbGFqxIVjeW0gY3phcyBjYWNoZVwnb3dhbmlhIHd0eWN6a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldHIgb2tuYSBwdWxwaXR1IHpnxYJvc3plxYQgcG9kcnrEmWRueWNoIGludGVyZmVqc3UgYWdlbnRhLiAiTGltaXQiIGplc3QgbGljemLEhSB3aWVyc3p5IHBva2F6eXdhbsSFIGRvbXnFm2xuaWUuICJHcm91cCIgamVzdCB1xbx5d2FuYSBkbyBvZ3JhbmljemVuaWEgZG9zdMSZcHUgZG8gd3R5Y3praSAobnAuOiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2tyZcWbbGEgY3p5IHd0eWN6a2EgamVzdCBkb215xZtsbmllIHfFgsSFY3pvbmEgbHViIGN6eSB1xbx5dGtvd25payBtb8W8ZSB3xYLEhWN6ecSHIGrEhSByxJljem5pZS4gIkNhY2hlVFRMTG9jYWwiIGplc3QgY3phc2VtIHBvZGFueW0gdyBtaW51dGFjaCBva3JlxZtsYWrEhWN5bSBjemFzIGNhY2hlXCdvd2FuaWEgd3R5Y3praS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlamVzdHJhY2phIG1vZHXFgnUgemRhcnplxYQgemfFgm9zemVuaWEsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwcmF3bmllbmlhIHd5bWFnYW5lIGRvIHXFvHl3YW5pYSBla3JhbnUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBkb215xZtsbsSFIHRyZcWbxIcgbm90YXRraSBkb2Rhd2FuZWogZG8gemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBkb215xZtsbnkgdGVtYXQgZGxhIG5vdGF0ZWsgZG9kYXdhbnljaCBkbyB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIG9kcG93aWVkemlhbG5lZ28gemEgemfFgm9zemVuaWUgYWdlbnRhIG5hIGVrcmFuaWUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdVc3Rhd2lhIHVzxYJ1Z8SZIHcgemfFgm9zemVuaXUgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhIChUaWNrZXQ6OlNlcnZpY2UgbXVzaSBiecSHIGFrdHl3b3dhbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIHfFgmHFm2NpY2llbGEgemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdVc3Rhd2lhIHR5cCB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSwgd3l3b8WCYW55bSB6IHByenlibGnFvG9uZWdvIHdpZG9rdSB6Z8WCb3N6ZW5pYSB3IGludGVyZmVqc2llIGFnZW50IChUaWNrZXQ6OlR5cGUgbXVzaSBiecSHIGFrdHl3b3dhbnkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hIGVrcmFuaWUgcHJ6eWJsacW8b25lZ28gd2lkb2t1IHpnxYJvc3plbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLCBwb2thenVqZSBsaW5rIHcgbWVudSBkbyB6bWlhbnkgc3RhbnUgTmFkcnrEmWRueS9Qb2RyesSZZG55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHd5d2/FgmFueW0geiBwcnp5YmxpxbxvbmVnbyB3aWRva3UgemfFgm9zemVuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEsIHBva2F6dWplIGxpc3TEmSB3c3p5c3RraWNoIGFnZW50w7N3IHphYW5nYcW8b3dhbnljaCB3IHpnxYJvc3plbmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSwgd3l3b8WCYW55bSB6IHByenlibGnFvG9uZWdvIHdpZG9rdSB6Z8WCb3N6ZW5pYSB3IGludGVyZmVqc2llIGFnZW50YSwgcG9rYXp1amUgbGlzdMSZIHdzenlzdGtpY2ggbW/FvGxpd3ljaCBhZ2VudMOzdyAod3N6eXN0a2ljaCBhZ2VudMOzdyB6IHVwcmF3bmllbmlhbWkgZG8gbm90YXRlayB3IGtvbGVqY2UvemfFgm9zemVuaXUpLCB3IGNlbHUgb2tyZcWbbGVuaWEga3RvIHBvd2luaWVuIGJ5xIcgcG9pbmZvcm1vd2FueSBvIHRlaiBub3RhdGNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2thenVqZSBvcGNqZSBwcmlvcnl0ZXR1IHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueS9Qb2RyesSZZG55LCB3eXdvxYJhbnltIHogcHJ6eWJsacW8b25lZ28gd2lkb2t1IHpnxYJvc3plbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2thenVqZSBwb2xhIHR5dHXFgm93ZSB3IG9rbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSBwcnp5YmxpxbxvbmVnbyB6Z8WCb3N6ZW5pYSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ1pnxYJvc3plbmlhIHBvZHJ6xJlkbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnT2tyZcWbbGEgcsOzxbxuZSByb2R6YWplIHR5cMOzdyB3aWFkb21vxZtjaSBpIHcgamFraSBzcG9zw7NiIHfFgmHFm2Npd2EgbmF6d2EgemUgemfFgm9zemVuaWEgbmFkcnrEmWRuZWdvIHpvc3RhbmllIHphc3TEhXBpb25hIHcgemfFgm9zemVuaXUgcG9kcnrEmWRueW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1dza2F6dWplIHLDs8W8bmUgcm9kemFqZSBub3RhdGVrIGt0w7NyZSBixJlkxIUgdcW8eXdhbmUgdyBzeXN0ZW1pZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnVGVuIG1vZHXFgiBha3R5d3VqZSBwb2xlIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIG5vd2VnbyB6Z8WCb3N6ZW5pYSBlLW1haWwgaSB0ZWxlZm9uaWN6bmVnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnWmfFgm9zemVuaWUgTmFkcnrEmWRuZS9Qb2RyesSZZG5lJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cHRfQlJfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdDYW1wbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ0dlcmVuY2lhciBlc3RhZG8gZGUgTWVzdHJlL0VzY3Jhdm8gcGFyYSAlcyVzJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnTm92byBDaGFtYWRvIE1lc3RyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnRGVzZmF6ZXIgQ2hhbWFkbyBNZXN0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnRGVzZmF6ZXIgQ2hhbWFkbyBFc2NyYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICdFc2NyYXZvIGRlICVzJXMlczogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ0xpbXBhciBDaGFtYWRvcyBNZXN0cmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdMaW1wYXIgQ2hhbWFkb3MgRXNjcmF2b3MnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ0NoYW1hZG8gTWVzdHJlJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnVG9kb3MgY2hhbWFkb3MgbWVzdHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ1RvZG9zIGNoYW1hZG9zIGVzY3Jhdm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXRlIGFkaWNpb25hciBub3RhcyBuYSB0ZWxhICJNYXN0ZXJTbGF2ZSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ0FsdGVyYSBvIGVzdGFkbyBNYXN0ZXJTbGF2ZSBkZSB1bSBjaGFtYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ0RlZmluZSBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBjaGFtYWRvIG1lc3RyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdEZWZpbmUgc2UgdW0gYmxvcXVlaW8gZGUgdGlja2V0IMOpIHJlcXVlcmlkbyBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZSAoc2UgbyB0aWNrZXQgYWluZGEgbsOjbyBlc3RpdmVyIGJsb3F1ZWFkbywgbyB0aWNrZXQgc2Vyw6EgYmxvcXVlYWRvIGUgbyBhZ2VudGUgY29ycmVudGUgc2Vyw6EgYXV0b21hdGljYW1lbnRlIGRlZmluaWRvIGNvbW8gbyBzZXUgcHJvcHJpZXTDoXJpbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHByw7N4aW1vIGVzdGFkbyBwYWRyw6NvIGRlIHVtIHRpY2tldCBhcMOzcyB1bWEgbm90YSB0ZXIgc2lkbyBhZGljaW9uYWRhLCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYSBwcmlvcmlkYWRlIHBhZHLDo28gZG8gdGlja2V0IG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyB0aXBvIHBhZHLDo28gZGUgbm90YSBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGNvbWVudMOhcmlvIGRlIGhpc3TDs3JpY28gcGFyYSBhIGHDp8OjbyBkZSB0ZWxhIE1hc3RlclNsYXZlIGRvIHRpY2tldCwgcXVlIMOpIHV0aWxpemFkYSBwYXJhIG8gaGlzdMOzcmljbyBkbyB0aWNrZXQgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHRpcG8gZGUgaGlzdMOzcmljbyBwYXJhIGEgYcOnw6NvIGRhIHRlbGEgTWFzdGVyU2xhdmUgZG8gdGlja2V0LCBxdWUgw6kgdXRpbGl6YWRvIHBhcmEgbyBoaXN0w7NyaWNvIGRvIHRpY2tldCBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gcHLDs3hpbW8gZXN0YWRvIGRlIHVtIHRpY2tldCBhcMOzcyB1bWEgbm90YSB0ZXIgc2lkbyBhZGljaW9uYWRhLCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICdIYWJpbGl0YSBhcyBmdW5jaW9uYWxpZGFkZXMgYXZhbsOnYWRhcyBkbyBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgY2hhbWFkb3MgZXNjcmF2b3Mgc2VndWlyZW0gY2hhbWFkb3MgbWVzdHJlIHBhcmEgdW0gbm92byBtZXN0cmUgbm8gbW9kbyBhdmFuw6dhZG8gZG8gTWFzdGVyU2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgYWx0ZXJhciBlc3RhZG8gZG8gTWFzdGVyU2xhdmUgZGUgdW0gY2hhbWFkbyBubyBtb2RvIGF2YW7Dp2Fkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnSGFiaWxpdGEgYSBmdW5jaW9uYWxpZGFkZSBkZSBlbmNhbWluaGFyIGFydGlnb3MgZG8gdGlwbyBcJ2ZvcndhcmRcJyBkZSB1bSBjaGFtYWRvIG1lc3RyZSBwYXJhIG9zIGNsaWVudGVzIGRvcyBjaGFtYWRvcyBlc2NyYXZvcy4gUG9yIHBhZHLDo28gKGRlc2FiaWxpdGFkbykgb3MgYXJ0aWdvcyBuw6NvIHPDo28gZW5jYW1pbmhhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgcXVlIG1hbnRlbSBvIGxpbmsgcGFpLWZpbGhvIGFww7NzIGEgYWx0ZXJhw6fDo28gZG8gZXN0YWRvIGRlIE1hc3RlclNsYXZlIG5vIG1vZG8gYXZhbsOnYWRvIGRvIE1hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnSGFiaWxpdGEgYSBmdW5jaW9uYWxpZGFkZSBkZSBtYW50ZXIgYSBhc3NvY2lhw6fDo28gcGFpLWZpbGhvIGRlcG9pcyBkZSBsaW1wYXIgbyBlc3RhZG8gZGUgTWFzdGVyU2xhdmUgbm8gbW9kbyBhdmFuw6dhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnSGFiaWxpdGEgYSBmdW5jaW9uYWxpZGFkZSBkZSBsaW1wYXIgbyBlc3RhZG8gTWFzdGVyU2xhdmUgZGUgdW0gY2hhbWFkbyBubyBtb2RvIGF2YW7Dp2Fkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2UgdW1hIG5vdGEgZm9yIGFkaWNpb25hZGEgcG9yIHVtIGFnZW50ZSwgZGVmaW5lIG8gZXN0YWRvIGRvIHRpY2tldCBuYSB0ZWxhIGRlIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNZXN0cmUgLyBFc2NyYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnQ2hhbWFkb3MgTWVzdHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ01lc3RyZUVzY3Jhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ03Ds2R1bG8gTWVzdHJlRXNjcmF2byBwYXJhIGZ1bmNpb25hbGlkYWRlIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBjaGFtYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gYmFja2VuZCBkbyBwYWluZWwgZGUgdmlzw6NvIGdlcmFsIGRlIHRpY2tldHMgbWVzdHJlIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuICJMaW1pdGUiIMOpIGEgcXVhbnRpZGFkZSBkZSByZWdpc3Ryb3MgZXhpYmlkYSBwb3IgcGFkcsOjby4gIkdydXBvIiDDqSB1c2FkbyBwYXJhIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gcGx1Z2luIChleC46IEdydXBvOiBhZG1pbjtncnVwbzE7Z3J1cG8yKS4gIlBhZHLDo28iIGRldGVybWluYSBzZSBvIHBsdWdpbiDDqSBoYWJpbGl0YWRvIHBvciBwYWRyw6NvIG91IHNlIG8gdXN1w6FyaW8gcHJlY2lzYSBoYWJpbGl0w6EtbG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiDDqSBvIHRlbXBvIGRlIGNhY2hlIGVtIG1pbnV0b3MgcGFyYSBvIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gYmFja2VuZCBkbyBwYWluZWwgZGUgdmlzw6NvIGdlcmFsIGRlIHRpY2tldHMgbWVzdHJlIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuICJMaW1pdGUiIMOpIGEgcXVhbnRpZGFkZSBkZSByZWdpc3Ryb3MgZXhpYmlkYSBwb3IgcGFkcsOjby4gIkdydXBvIiDDqSB1c2FkbyBwYXJhIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gcGx1Z2luIChleC46IEdydXBvOiBhZG1pbjtncnVwbzE7Z3J1cG8yKS4gIlBhZHLDo28iIGRldGVybWluYSBzZSBvIHBsdWdpbiDDqSBoYWJpbGl0YWRvIHBvciBwYWRyw6NvIG91IHNlIG8gdXN1w6FyaW8gcHJlY2lzYSBoYWJpbGl0w6EtbG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiDDqSBvIHRlbXBvIGRlIGNhY2hlIGVtIG1pbnV0b3MgcGFyYSBvIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlZ2lzdHJvIGRvIG3Ds2R1bG8gZGUgZXZlbnRvcyBkZSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIHJlcXVlcmlkYXMgcGFyYSB1c2FyIGEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBjb3JwbyBkbyB0ZXh0byBwYWRyw6NvIHBhcmEgbm90YXMgYWRpY2lvbmFkYXMgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXNzdW50byBwYWRyw6NvIHBhcmEgbm90YXMgYWRpY2lvbmFkYXMgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYWdlbnRlIHJlc3BvbnPDoXZlbCBkbyB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHNlcnZpw6dvIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlIChUaWNrZXQ6OlNlcnZpY2UgcHJlY2lzYSBzZXIgYXRpdmFkbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHByb3ByaWV0w6FyaW8gZG8gdGlja2V0IG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnRGVmaW5lIG8gdGlwbyBkbyB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlIChUaWNrZXQ6OlR5cGUgcHJlY2lzYSBzZXIgYXRpdmFkbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgYWx0ZXJhciBvIGVzdGFkbyBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgbmEgdGVsYSBkZSBkZXRhbGhlIGRlIHRpY2tldCBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW1hIGxpc3RhIGRlIHRvZG9zIG9zIGFnZW50ZXMgZW52b2x2aWRvcyBuZXN0ZSB0aWNrZXQsIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW1hIGxpc3RhIGRlIHRvZG9zIG9zIGFnZW50ZXMgcG9zc8OtdmVpcyAodG9kb3Mgb3MgYWdlbnRlcyBjb20gcGVybWlzc8OjbyBkZSBub3RhIG5hIGZpbGEvdGlja2V0KSBwYXJhIGRldGVybWluYXIgcXVlbSBkZXZlIHNlciBpbmZvcm1hZG8gc29icmUgZXN0YSBub3RhLCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIGFzIG9ww6fDtWVzIGRlIHByaW9yaWRhZGUgZGUgdGlja2V0IG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIG8gY2FtcG8gZGUgdMOtdHVsbyBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdDaGFtYWRvcyBFc2NyYXZvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICdFc3BlY2lmaWNhIG9zIGRpZmVyZW50ZXMgdGlwb3MgZGUgYXJ0aWdvIG9uZGUgbyBub21lIHJlYWwgZG8gdGlja2V0IE1hc3RlciBzZXLDoSBzdWJzdGl0dcOtZG8gY29tIG8gbm9tZSBkbyB0aWNrZXQgZXNjcmF2by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgbm90ZSB0eXBlcyB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ0VzdGUgbcOzZHVsbyBhdGl2YSBvIGNhbXBvIE1lc3RyZS9Fc2NyYXZvIG5hcyB0ZWxhcyBkZSBub3ZvIGNoYW1hZG8gZm9uZS9lLW1haWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdDaGFtYWRvIE1lc3RyZUVzY3Jhdm8nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cnVfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICfQn9C+0LvQtSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INGB0YLQsNGC0YPRgdC+0Lwg0JPQu9Cw0LLQvdCw0Y8v0JLQtdC00L7QvNCw0Y8g0LTQu9GPICVzJXMlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICfQndC+0LLQsNGPIE1hc3RlciDQt9Cw0Y/QstC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ9Ch0L3Rj9GC0Ywg0LfQvdCw0YfQtdC90LjQtSBNYXN0ZXIg0LfQsNGP0LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ9Ch0L3Rj9GC0Ywg0LfQvdCw0YfQtdC90LjQtSBTbGF2ZSDQt9Cw0Y/QstC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJ9CS0LXQtNC+0LzQsNGPINC+0YIgJXMlcyVzOiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAn0KPQsdGA0LDRgtGMINCz0LvQsNCy0L3Ri9C1INC30LDRj9Cy0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAn0KPQsdGA0LDRgtGMINCy0LXQtNC+0LzRi9C1INC30LDRj9Cy0LrQuCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAn0JPQu9Cw0LLQvdCw0Y8g0LfQsNGP0LLQutCwJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAn0JLRgdC1INCz0LvQsNCy0L3Ri9C1INC30LDRj9Cy0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ9CS0YHQtSDQstC10LTQvtC80YvQtSDQt9Cw0Y/QstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LXRgiDQtNC+0LHQsNCy0LjRgtGMINGB0L7QvtCx0YnQtdC90LjQtSDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICfQmNC30LzQtdC90LjRgtGMINGB0L7RgdGC0L7Rj9C90LjQtSBNYXN0ZXJTbGF2ZSDQtNC70Y8g0Y3RgtC+0Lkg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ9CX0LDQtNCw0LXRgiDQuNC80Y8g0LTQuNC90LDQvNC40YfQtdGB0LrQvtCz0L4g0L/QvtC70Y8g0LTQu9GPINGE0YPQvdC60YbQuNC4INCz0LvQsNCy0L3QvtC5INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXRgtGB0Y8g0LvQuCDQsdC70L7QutC40YDQvtCy0LrQsCDQt9Cw0Y/QstC60Lgg0L/RgNC4INC/0YDQuNC80LXQvdC10L3QuNC4INC+0L/RhtC40LggTWFzdGVyU2xhdmUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwICjQtdGB0LvQuCDQt9Cw0Y/QstC60LAg0LXRidC1INC90LUg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNC90LAsINC+0L3QsCDQsdC70L7QutC40YDRg9C10YLRgdGPINC4INGC0LXQutGD0YnQuNC5INCw0LPQtdC90YIg0YHRgtCw0L3QvtCy0LjRgtGB0Y8g0LXQtSDQktC70LDQtNC10LvRjNGG0LXQvCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC70LXQtNGD0Y7RidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQt9Cw0Y/QstC60Lgg0L/QvtGB0LvQtSDQtNC+0LHQsNCy0LvQtdC90LjRjyDQt9Cw0LzQtdGC0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0L/RgNC4INC10LUg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YPQvNCw0LvRh9C40LLQsNC10LzRi9C5INC/0YDQuNC+0YDQuNGC0LXRgiDQt9Cw0Y/QstC60Lgg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YPQvNCw0LvRh9C40LLQsNC10LzRi9C5INGC0LjQvyDRgdC+0L7QsdGJ0LXQvdC40Y8g0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0LXQutGB0YIg0LrQvtC80LzQtdC90YLQsNGA0LjRjyDQsiDQt9Cw0L/QuNGB0Lgg0LjRgdGC0L7RgNC40Lgg0L/RgNC4INCy0YvQt9C+0LLQtSBNYXN0ZXJTbGF2ZSDRjdC60YDQsNC90LAgLCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLQuNC/INC30LDQv9C40YHQuCDQuNGB0YLQvtGA0LjQuCDQv9GA0Lgg0LLRi9C30L7QstC1IE1hc3RlclNsYXZlINGN0LrRgNCw0L3QsCAsINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC70LXQtNGD0Y7RidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC00LvRjyDQt9Cw0Y/QstC60Lgg0L/QvtGB0LvQtSDQtNC+0LHQsNCy0LvQtdC90LjRjyDQt9Cw0LzQtdGC0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0L/RgNC4INC10LUg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICfQktC60LvRjtGH0LDQtdGCINGA0LDRgdGI0LjRgNC10L3QvdGL0LUg0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQtNC70Y8gTWFzdGVyU2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0L/QtdGA0LXQtNCw0YfQuCDQstC10LTQvtC80YvRhSDQt9Cw0Y/QstC+0Log0LPQu9Cw0LLQvdC+0Lkg0LfQsNGP0LLQutC4INC6INC90L7QstC+0Lkg0LPQu9Cw0LLQvdC+0Lkg0LIg0YDQsNGB0YjQuNGA0LXQvdC90L7QvCDRgNC10LbQuNC80LUgTWFzdGVyU2xhdmUgLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0YDQsNGB0YjQuNGA0LXQvdC90L7QvCDRgNC10LbQuNC80LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9C10YDQtdGB0YvQu9C60Lgg0YHQvtC+0LHRidC10L3QuNC5L9C30LDQvNC10YLQvtC6INC/0YDQuCDQv9C10YDQtdGB0YvQu9C60LUg0LPQu9Cw0LLQvdC+0Lkg0LfQsNGP0LLQutC4ICDQutC70LjQtdC90YLQsNC8INCy0LXQtNC+0LzRi9GFINC30LDRj9Cy0L7Qui4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gKNCy0YvQutC70Y7Rh9C10L3Qvikg0LIg0LLQtdC00L7QvNGL0LUg0LfQsNGP0LLQutC4INC90LjRh9C10LPQviDQvdC1INC/0LXRgNC10YHRi9C70LDQtdGC0YHRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0YHQvtGF0YDQsNC90LjRgtGMINGB0LLRj9C30Ywg0YDQvtC00LjRgtC10LvRjC3Qv9C+0YLQvtC80L7QuiDQtNC70Y8g0LfQsNGP0LLQvtC6LCDQv9C+0YHQu9C1INC40LfQvNC10L3QtdC90LjRjyDQv9GA0LjQt9C90LDQutCwIE1hc3RlclNsYXZlINCyINGA0LDRgdGI0LjRgNC10L3QvdC+0Lwg0YDQtdC20LjQvNC1IE1hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGB0L7RhdGA0LDQvdC40YLRjCDRgdCy0Y/Qt9GMINGA0L7QtNC40YLQtdC70Ywt0L/QvtGC0L7QvNC+0Log0LTQu9GPINC30LDRj9Cy0L7Quiwg0L/QvtGB0LvQtSDRgdC90Y/RgtC40Y8g0L/RgNC40LfQvdCw0LrQsCBNYXN0ZXJTbGF2ZSDQsiDRgNCw0YHRiNC40YDQtdC90L3QvtC8INGA0LXQttC40LzQtSBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDRgdCx0YDQvtGB0LjRgtGMINGD0YHRgtCw0L3QvtCy0LvQtdC90L3QvtC1INGB0L7RgdGC0L7Rj9C90LjQtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0YDQsNGB0YjQuNGA0LXQvdC90L7QvCDRgNC10LbQuNC80LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CV0YHQu9C4INGB0L7QvtCx0YnQtdC90LjQtS/Qt9Cw0LzQtdGC0LrQsCDQtNC+0LHQsNCy0LvQtdC90LAg0LDQs9C10L3RgtC+0LwsINC30LDQtNCw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LUg0LfQsNGP0LLQutC4INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlICDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWFzdGVyIC8gU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICfQk9C70LDQstC90YvQtSDQt9Cw0Y/QstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNYXN0ZXJTbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTWFzdGVyU2xhdmUg0LzQvtC00YPQu9GMINC00LvRjyDRhNGD0L3QutGG0LjQuCDQnNCw0YHRgdC+0LLQvtC1INC00LXQudGB0YLQstC40LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YDQsNC30LTQtdC70LAg0JTQsNC50LTQttC10YHRgtCwINGBINC40L3RhNC+0YDQvNCw0YbQuNC10Lkg0L4gbWFzdGVyINC30LDRj9Cy0LrQsNGFINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gIkdyb3VwIiDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40Y8g0LTQvtGB0YLRg9C/0LAg0Log0YDQsNC30LTQtdC70YMgKNC90LDQv9GA0LjQvNC10YAsIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiAtINC30LDQtNCw0LXRgiwg0LHRg9C00LXRgiDQu9C4INGA0LDQt9C00LXQuyDQtNC+0YHRgtGD0L/QtdC9INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC40LvQuCDQsNCz0LXQvdGCINC00L7Qu9C20LXQvSDQsNC60YLQuNCy0LjRgNC+0LLQsNGC0Ywg0LXQs9C+INCy0YDRg9GH0L3Rg9GOLiAiQ2FjaGVUVExMb2NhbCIgLSDQstGA0LXQvNGPINC+0LHQvdC+0LLQu9C10L3QuNGPINC60Y3RiNCwINCyINC80LjQvdGD0YLQsNGFINC00LvRjyDRjdGC0L7Qs9C+INGA0LDQt9C00LXQu9CwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YDQsNC30LTQtdC70LAg0JTQsNC50LTQttC10YHRgtCwINGBINC40L3RhNC+0YDQvNCw0YbQuNC10Lkg0L4gc2xhdmUg0LfQsNGP0LLQutCw0YUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAiR3JvdXAiINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0L7Qs9GA0LDQvdC40YfQtdC90LjRjyDQtNC+0YHRgtGD0L/QsCDQuiDRgNCw0LfQtNC10LvRgyAo0L3QsNC/0YDQuNC80LXRgCwgR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIC0g0LfQsNC00LDQtdGCLCDQsdGD0LTQtdGCINC70Lgg0YDQsNC30LTQtdC7INC00L7RgdGC0YPQv9C10L0g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LjQu9C4INCw0LPQtdC90YIg0LTQvtC70LbQtdC9INCw0LrRgtC40LLQuNGA0L7QstCw0YLRjCDQtdCz0L4g0LLRgNGD0YfQvdGD0Y4uICJDYWNoZVRUTExvY2FsIiAtINCy0YDQtdC80Y8g0L7QsdC90L7QstC70LXQvdC40Y8g0LrRjdGI0LAg0LIg0LzQuNC90YPRgtCw0YUg0LTQu9GPINGN0YLQvtCz0L4g0YDQsNC30LTQtdC70LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC80L7QtNGD0LvRjyDQvtCx0YDQsNCx0L7RgtC60Lgg0YHQvtCx0YvRgtC40Lkg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LDQstCwLCDRgtGA0LXQsdGD0LXQvNGL0LUg0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGE0YPQvdC60YbQuNC4IE1hc3RlclNsYXZlINC30LDRj9Cy0L7QuiDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGC0LXQutGB0YIg0YHQvtC+0LHRidC10L3QuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC/0YDQuCDQtNC+0LHQsNCy0LvQtdC90LjQuCDRgdC+0L7QsdGJ0LXQvdC40Y8g0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGC0LXQvNGDINGB0L7QvtCx0YnQtdC90LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQv9GA0Lgg0LTQvtCx0LDQstC70LXQvdC40Lgg0YHQvtC+0LHRidC10L3QuNGPINC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0J7RgtCy0LXRgtGB0YLQstC10L3QvdC+0LPQviDQt9CwINC30LDRj9Cy0LrRgyDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC10YDQstC40YEg0LTQu9GPINC30LDRj9Cy0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAo0J/QsNGA0LDQvNC10YLRgCBUaWNrZXQ6OlNlcnZpY2Ug0LTQvtC70LbQtdC9INCx0YvRgtGMINCy0LrQu9GO0YfQtdC9KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCS0LvQsNC00LXQu9GM0YbQsCDQt9Cw0Y/QstC60Lgg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0LjQvyDQt9Cw0Y/QstC60Lgg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gKNCf0LDRgNCw0LzQtdGC0YAgVGlja2V0OjpTZXJ2aWNlINC00L7Qu9C20LXQvSDQsdGL0YLRjCDQstC60LvRjtGH0LXQvSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0YHRi9C70LrRgyDQsiDQvNC10L3RjiDQtNC70Y8g0LjQt9C80LXQvdC10L3QuNGPIE1hc3RlclNsYXZlINGB0YLQsNGC0YPRgdCwICDQvdCwINGN0LrRgNCw0L3QtSDQv9GA0L7RgdC80L7RgtGA0LAg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINGB0L/QuNGB0L7QuiDQstGB0LXRhSDQv9GA0LjQstC70LXQutCw0LXQvNGL0YUg0LDQs9C10L3RgtC+0LIg0L/QviDRjdGC0L7QuSDQt9Cw0Y/QstC60LUg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINGB0L/QuNGB0L7QuiDQstGB0LXRhSDQtNC+0YHRgtGD0L/QvdGL0YUg0LDQs9C10L3RgtC+0LIgKNCy0YHQtdGFINCw0LPQtdC90YLQvtCyINGBINC/0YDQsNCy0LDQvNC4IG5vdGUg0LTQu9GPINC+0YfQtdGA0LXQtNC4L9C30LDRj9Cy0LrQuCksINGH0YLQvtCx0Ysg0LfQsNC00LDRgtGMINC60L7Qs9C+INC90YPQttC90L4g0LjQvdGE0L7RgNC80LjRgNC+0LLQsNGC0Ywg0L7QsSDRjdGC0L7QuSDQt9Cw0LzQtdGC0LrQtSDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQuNC30LzQtdC90LjRgtGMINC/0YDQuNC+0YDQuNGC0LXRgiDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LjQt9C80LXQvdC40YLRjCDRgtC10LzRgyDQt9Cw0Y/QstC60Lgg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICfQktC10LTQvtC80YvQtSDQt9Cw0Y/QstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGA0LDQt9C70LjRh9C90YvQtSDRgtC40L/RiyDRgdC+0L7QsdGJ0LXQvdC40Lkv0LfQsNC80LXRgtC+0Log0LTQu9GPINGB0LvRg9GH0LDRjyDQt9Cw0LzQtdC90Ysg0YDQtdCw0LvRjNC90L7Qs9C+INC40LzQtdC90Lgg0LjQtyDQs9C70LDQstC90L7QuSDQt9Cw0Y/QstC60Lgg0LIg0YLQsNC60LjQvCDQttC1INCyINC/0L7QtNGH0LjQvdC10L3QvdC+0LkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgNCw0LfQu9C40YfQvdGL0LUg0YLQuNC/0Ysg0YHQvtC+0LHRidC10L3QuNC5L9C30LDQvNC10YLQvtC6INC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQsiDRgdC40YHRgtC10LzQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAn0K3RgtC+0YIg0LzQvtC00YPQu9GMINCy0LrQu9GO0YfQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQstGL0LHQvtGA0LAgbWFzdGVyL3NsYXZlINC+0L/RhtC40Lgg0L3QsCDRjdC60YDQsNC90LUg0YHQvtC30LTQsNC90LjRjyDQt9Cw0Y/QstC60LgsINC90LAg0L7RgdC90L7QstC1INGC0LXQu9C10YTQvtC90L3QvtCz0L4g0LfQstC+0L3QutCwINC40LvQuCDQv9C40YHRjNC80LAg0LrQu9C40LXQvdGC0LAg0LDQs9C10L3RgtC+0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICfQl9Cw0Y/QstC60LAgTWFzdGVyU2xhdmUnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3JfQ3lybF9PVFJTTWFzdGVyU2xhdmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZCd9ID0gJ9Cf0L7RmdC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAn0KPQv9GA0LDQstGZ0LDRmtC1INGB0YLQsNGC0YPRgdC+0Lwg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INC30LAgJXMlcyVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ9Cd0L7QstC4INCz0LvQsNCy0L3QuCDRgtC40LrQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICfQntC/0L7Qt9C+0LLQuCDQv9C+0LTQtdGI0LDQstCw0ZrQtSDQs9C70LDQstC90L7QsyDRgtC40LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAn0J7Qv9C+0LfQvtCy0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LUg0LfQsNCy0LjRgdC90L7QsyDRgtC40LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJ9CX0LDQstC40YHQvdC4INC+0LQgJXMlcyVzOiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAn0J7Qv9C+0LfQvtCy0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LUg0LPQu9Cw0LLQvdC40YUg0YLQuNC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICfQntC/0L7Qt9C+0LLQuCDQv9C+0LTQtdGI0LDQstCw0ZrQtSDQt9Cw0LLQuNGB0L3QuNGFINGC0LjQutC10YLQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAn0JPQu9Cw0LLQvdC4INGC0LjQutC10YInOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICfQodCy0Lgg0LPQu9Cw0LLQvdC4INGC0LjQutC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ9Ch0LLQuCDQt9Cw0LLQuNGB0L3QuCDRgtC40LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0L7Qt9Cy0L7RmdCw0LLQsCDQtNC+0LTQsNCy0LDRmtC1INCx0LXQu9C10YjQutC4INC90LAg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDQvtC/0LXRgNCw0YLQtdGA0YHQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICfQn9GA0L7QvNC10L3QuCDQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90Lgg0YHRgtCw0YLRg9GBINGC0LjQutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICfQlNC10YTQuNC90LjRiNC1INC00LjQvdCw0LzQuNGH0LrQuCDQvdCw0LfQuNCyINC/0L7RmdCwINC30LAg0YTRg9C90LrRhtC40ZjRgyDQs9C70LDQstC90L7QsyDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQtNCwINC70Lgg0ZjQtSDQv9C+0YLRgNC10LHQvdC+INC30LDQutGZ0YPRh9Cw0YLQuCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvSDRgtC40LrQtdGC0LAg0L3QsCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAgKNCw0LrQviDRgtC40LrQtdGCINGY0L7RiCDRg9Cy0LXQuiDQvdC40ZjQtSDQt9Cw0LrRmdGD0YfQsNC9LCDRgtC40LrQtdGCINGb0LUg0LTQvtCx0LjRgtC4INGB0YLQsNGC0YPRgSDQt9Cw0LrRmdGD0YfQsNC9INC4INGC0YDQtdC90YPRgtC90Lgg0L7Qv9C10YDQsNGC0LXRgCDRm9C1INCx0LjRgtC4INCw0YPRgtC+0LzQsNGC0YHQutC4INC/0L7RgdGC0LDQstGZ0LXQvSDQutCw0L4g0LLQu9Cw0YHQvdC40LopLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC90LDRgNC10LTQvdC4INGB0YLQsNGC0YPRgSDRgtC40LrQtdGC0LAg0L/QvtGB0LvQtSDQtNC+0LTQsNCy0LDRmdCwINCx0LXQu9C10YjQutC1LCDQvdCwINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC40L7RgNC40YLQtdGCINGC0LjQutC10YLQsCDQvdCwINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQtdC60LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgtC40L8g0LHQtdC70LXRiNC60LUg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LrQvtC80LXQvdGC0LDRgCDQt9CwINC40YHRgtC+0YDQuNGY0LDRgiDQvdCwINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YHQutC+0Zgg0LDQutGG0LjRmNC4LCDRiNGC0L4g0ZvQtSDRgdC1INC60L7RgNC40YHRgtC40YLQuCDQt9CwINC40YHRgtC+0YDQuNGY0LDRgiDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGC0LjQvyDQuNGB0YLQvtGA0LjRmNCw0YLQsCDQt9CwINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YHQutGDINCw0LrRhtC40ZjRgywg0YjRgtC+INGb0LUg0YHQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0LfQsCDQuNGB0YLQvtGA0LjRmNCw0YIg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQvdCw0YDQtdC00L3QuCDRgdGC0LDRgtGD0YEg0YLQuNC60LXRgtCwINC/0L7RgdC70LUg0LTQvtC00LDQstCw0ZnQsCDQsdC10LvQtdGI0LrQtSwg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICfQkNC60YLQuNCy0LjRgNCwINC90LDQv9GA0LXQtNC90Lgg0LTQtdC+INGE0YPQvdC60YbQuNGY0LUg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsNGa0LUg0YHQstC+0ZjRgdGC0LLQsCDQtNCwINC30LDQstC40YHQvdC4INGC0LjQutC10YIg0L/RgNCw0YLQuCDQs9C70LDQstC90Lgg0L3QsCDQvdC+0LLQuCDQs9C70LDQstC90Lgg0YMg0L3QsNC/0YDQtdC00L3QvtC8INCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQvNC+0LTRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsNGa0LUg0YTRg9C90LrRhtC40ZjQtSDQt9CwINC/0YDQvtC80LXQvdGDINGB0YLQsNGa0LAg0YLQuNC60LXRgtCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCAg0YMg0L3QsNC/0YDQtdC00L3QvtC8INCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQvNC+0LTRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsNGa0LUg0YHQstC+0ZjRgdGC0LLQsCDQt9CwINC/0YDQvtGB0LvQtdGS0LjQstCw0ZrQtSDRh9C70LDQvdCw0LrQsCDQvtC0INGC0LjQv9CwIOKAntC/0YDQvtGB0LvQtdC00LjigJ0g0LPQu9Cw0LLQvdC+0LMg0YLQuNC60LXRgtCwINC60L7RgNC40YHQvdC40YbQuNC80LAg0LfQsNCy0LjRgdC90LjRhSDRgtC40LrQtdGC0LAuINCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGY0LUgKNC40YHQutGZ0YPRh9C10L3Qvikg0LTQsCDRgdC1INC90LjRiNGC0LAg0L3QtSDQv9GA0L7RgdC70LXRktGD0ZjQtSDQt9Cw0LLQuNGB0L3QuNC8INGC0LjQutC10YLQuNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsNGa0LUg0YTRg9C90LrRhtC40ZjQtSDQt9CwINC30LDQtNGA0LbQsNCy0LDRmtC1INCy0LXQt9C1INC90LDQtNGA0LXRktC10L3QuC3Qv9C+0LTRgNC10ZLQtdC90Lgg0L/QvtGB0LvQtSDQuNC30LzQtdC90LUg0YHRgtCw0ZrQsCDQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90LggINGDINC90LDQv9GA0LXQtNC90L7QvCDQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90Lgg0LzQvtC00YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICfQkNC60YLQuNCy0LjRgNCw0ZrQtSDRhNGD0L3QutGG0LjRmNC1INC30LAg0LfQsNC00YDQttCw0LLQsNGa0LUg0LLQtdC30LUg0L3QsNC00YDQtdGS0LXQvdC4LdC/0L7QtNGA0LXRktC10L3QuCDQv9C+0YHQu9C1INC+0L/QvtC30LjQstCwINC/0L7QtNC10YjQsNCy0LDRmtCwINGB0YLQsNGa0LAg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4ICDRgyDQvdCw0L/RgNC10LTQvdC+0Lwg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INC80L7QtNGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INGE0YPQvdC60YbQuNGY0LUg0LfQsCDQvtC/0L7Qt9C40LIg0L/QvtC00LXRiNCw0LLQsNGa0LAg0YHRgtCw0ZrQsCDRgtC40LrQtdGC0LAg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4ICDRgyDQvdCw0L/RgNC10LTQvdC+0Lwg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INC80L7QtNGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkNC60L4g0ZjQtSDQvtC/0LXRgNCw0YLQtdGAINC00L7QtNCw0L4g0L3QsNC/0L7QvNC10L3Rgywg0L/QvtC00LXRiNCw0LLQsCDRgdGC0LDRgtGD0YEg0YLQuNC60LXRgtCwINC90LAg0LXQutGA0LDQvdGDINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDRgtC40LrQtdGC0LAg0L3QsCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICfQk9C70LDQstC90LggLyDQl9Cw0LLQuNGB0L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ9CT0LvQsNCy0L3QuCDRgtC40LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICfQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ9Cc0L7QtNGD0Lsg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INC30LAg0YTRg9C90LrRhtC40ZjRgyDQvNCw0YHQvtCy0L3QtSDQvtCx0YDQsNC00LUg0YLQuNC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQv9C+0LfQsNC00LjQvdGB0LrQuCDQv9GA0LjQutCw0Lcg0LrQvtC90YLRgNC+0LvQvdC1INGC0LDQsdC70LUg0L/RgNC10LPQu9C10LTQsCDQs9C70LDQstC90LjRhSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLiDigJ7Qm9C40LzQuNGC4oCdINGY0LUg0LHRgNC+0Zgg0YPQvdC+0YHQsCDQv9C+0LTRgNC10LfRg9C80LXQstCw0L3QviDQv9GA0LjQutCw0LfQsNC90LjRhS4g4oCe0JPRgNGD0L/QsOKAnSDRgdC1INC60L7RgNC40YHRgtC4INC00LAg0L7Qs9GA0LDQvdC40YfQuCDQv9GA0LjRgdGC0YPQvyDQtNC+0LTQsNGC0LrRgyAo0L3Qv9GALiDQk9GA0YPQv9CwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuIOKAntCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+4oCdINC+0LTRgNC10ZLRg9GY0LUg0LTQsCDQu9C4INGY0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0LDQutGC0LjQstC40YDQsNC9INC40LvQuCDQtNCwINGY0LUg0L/QvtGC0YDQtdCx0L3QviDQtNCwINCz0LAg0LrQvtGA0LjRgdC90LjQuiDQvNCw0L3Rg9C10LvQvdC+INCw0LrRgtC40LLQuNGA0LAuIOKAnkNhY2hlVFRMTG9jYWzigJ0g0ZjQtSDQstGA0LXQvNC1INGDINC80LjQvdGD0YLQsNC80LAg0LfQsCDQutC10Ygg0LTQvtC00LDRgtC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0L/QvtC30LDQtNC40L3RgdC60Lgg0L/RgNC40LrQsNC3INC60L7QvdGC0YDQvtC70L3QtSDRgtCw0LHQu9C1INC/0YDQtdCz0LvQtdC00LAg0LPQu9Cw0LLQvdC40YUg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g4oCe0JvQuNC80LjRguKAnSDRmNC1INCx0YDQvtGYINGD0L3QvtGB0LAg0L/QvtC00YDQtdC30YPQvNC10LLQsNC90L4g0L/RgNC40LrQsNC30LDQvdC40YUuIOKAntCT0YDRg9C/0LDigJ0g0YHQtSDQutC+0YDQuNGB0YLQuCDQtNCwINC+0LPRgNCw0L3QuNGH0Lgg0L/RgNC40YHRgtGD0L8g0LTQvtC00LDRgtC60YMgKNC90L/RgC4g0JPRgNGD0L/QsDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiDigJ7Qn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QvuKAnSDQvtC00YDQtdGS0YPRmNC1INC00LAg0LvQuCDRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INCw0LrRgtC40LLQuNGA0LDQvSDQuNC70Lgg0LTQsCDRmNC1INC/0L7RgtGA0LXQsdC90L4g0LTQsCDQs9CwINC60L7RgNC40YHQvdC40Log0LzQsNC90YPQtdC70L3QviDQsNC60YLQuNCy0LjRgNCwLiDigJ5DYWNoZVRUTExvY2Fs4oCdINGY0LUg0LLRgNC10LzQtSDRgyDQvNC40L3Rg9GC0LDQvNCwINC30LAg0LrQtdGIINC00L7QtNCw0YLQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQtNC+0LPQsNGS0LDRmNCwINC30LAg0YLQuNC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7Qv9GF0L7QtNC90LAg0LTQvtC30LLQvtC70LAg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90LAg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGB0LDQtNGA0LbQsNGYINC30LAg0L3QsNC/0L7QvNC10L3QtSDQtNC+0LTQsNGC0LUg0L3QsCDQvdCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LXQtNC80LXRgiDQt9CwINC90LDQv9C+0LzQtdC90LUg0LTQvtC00LDRgtC1INC90LAg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC+0LTQs9C+0LLQvtGA0L3QvtCzINC+0L/QtdGA0LDRgtC10YDQsCDQt9CwINGC0LjQutC10YIg0L3QsCDQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGB0LXRgNCy0LjRgSDQvdCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwICjQn9C+0YLRgNC10LHQvdC+INGY0LUg0LDQutGC0LjQstC40YDQsNGC0Lgg0KLQuNC60LXRgjo60KHQtdGA0LLQuNGBKS4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LLQu9Cw0YHQvdC40LrQsCDRgtC40LrQtdGC0LAg0L3QsCDQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgtC40L8g0YLQuNC60LXRgtCwINC90LAg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAgKNCf0L7RgtGA0LXQsdC90L4g0ZjQtSDQsNC60YLQuNCy0LjRgNCw0YLQuCDQotC40LrQtdGCOjrQotC40L8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQuNC30LzQtdC90YMg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INGB0YLQsNGC0YPRgdCwINGC0LjQutC10YLQsCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQt9GD0ZjQtSDQu9C40YHRgtGDINGB0LLQuNGFINC+0L/QtdGA0LDRgtC10YDQsCDRg9C60ZnRg9GH0LXQvdC40YUg0YMg0L7QstCw0Zgg0YLQuNC60LXRgiDQvdCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LfRg9GY0LUg0LvQuNGB0YLRgyDRgdCy0LjRhSDQvNC+0LPRg9Gb0LjRhSDQvtC/0LXRgNCw0YLQtdGA0LAgKNGB0LLQuCDQvtC/0LXRgNCw0YLQtdGA0Lgg0YHQsCDQtNC+0LfQstC+0LvQvtC8INC30LAg0L3QsNC/0L7QvNC10L3RgyDQt9CwINGA0LXQtC/RgtC40LrQtdGCKSDRgNCw0LTQuCDRg9GC0LLRgNGS0LjQstCw0ZrQsCDQutC+INGC0YDQtdCx0LAg0LTQsCDQsdGD0LTQtSDQuNC90YTQvtGA0LzQuNGB0LDQvSDQviDQvtCy0L7RmCDQvdCw0L/QvtC80LXQvdC4LCDQvdCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0YLQuNC60LXRgtCwINC90LAg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LfRg9GY0LUg0L7Qv9GG0LjRmNC1INC/0YDQuNC+0YDQuNGC0LXRgtCwINGC0LjQutC10YLQsCDQvdCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0YLQuNC60LXRgtCwINC90LAg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGRzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC90LDRgdC70L7QstC90LAg0L/QvtGZ0LAg0L3QsCDQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINGC0LjQutC10YLQsCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ9CX0LDQstC40YHQvdC4INGC0LjQutC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICfQndCw0LLQvtC00Lgg0YDQsNC30L3QtSDRgtC40L/QvtCy0LUg0YfQu9Cw0L3QsNC60LAg0LPQtNC1INGb0LUg0YHRgtCy0LDRgNC90L4g0LjQvNC1INGB0LAg0LPQu9Cw0LLQvdC+0LMg0YLQuNC60LXRgtCwINCx0LjRgtC4INC30LDQvNC10ZrQtdC90L4g0YHQsCDRmNC10LTQvdC40Lwg0L3QsCDQt9Cw0LLQuNGB0L3QvtC8INGC0LjQutC10YLRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgbm90ZSB0eXBlcyB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgNCw0LfQu9C40YfQuNGC0LUg0YLQuNC/0L7QstC1INC90LDQv9C+0LzQtdC90LAg0LrQvtGY0Lgg0ZvQtSDRgdC1INC60L7RgNC40YHRgtC40YLQuCDRgyDRgdC40YHRgtC10LzRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAn0J7QstCw0Zgg0LzQvtC00YPQuyDQsNC60YLQuNCy0LjRgNCwINC/0L7RmdC1INCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQvdCwINC10LrRgNCw0L3RgyDQvdC+0LLQuNGFINC40LzQtdGY0Lsg0Lgg0YLQtdC70LXRhNC+0L3RgdC60LjRhSDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICfQotC40LrQtdGCINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuC4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3JfTGF0bl9PVFJTTWFzdGVyU2xhdmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZCd9ID0gJ1BvbGplJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnVXByYXZsamFuamUgc3RhdHVzb20gR2xhdm5pL1phdmlzbmkgemEgJXMlcyVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05vdmkgZ2xhdm5pIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdPcG96b3ZpIHBvZGXFoWF2YW5qZSBnbGF2bm9nIHRpa2V0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdPcG96b3ZpIHBvZGXFoWF2YW5qZSB6YXZpc25vZyB0aWtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJ1phdmlzbmkgb2QgJXMlcyVzOiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnT3Bvem92aSBwb2RlxaFhdmFuamUgZ2xhdm5paCB0aWtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJ09wb3pvdmkgcG9kZcWhYXZhbmplIHphdmlzbmloIHRpa2V0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnR2xhdm5pIHRpa2V0JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnU3ZpIGdsYXZuaSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICdTdmkgemF2aXNuaSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RvenZvbGphdmEgZG9kYXZhbmplIGJlbGXFoWtpIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgb3BlcmF0ZXJza29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdQcm9tZW5pIEdsYXZuaS9aYXZpc25pIHN0YXR1cyB0aWtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnRGVmaW5pxaFlIGRpbmFtacSNa2kgbmF6aXYgcG9samEgemEgZnVua2NpanUgZ2xhdm5vZyB0aWtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnT2RyZcSRdWplIGRhIGxpIGplIHBvdHJlYm5vIHpha2xqdcSNYXRpIGdsYXZuaS96YXZpc25pIGVrcmFuIHRpa2V0YSBuYSBkZXRhbGpub20gcHJpa2F6dSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYSAoYWtvIHRpa2V0IGpvxaEgdXZlayBuaWplIHpha2xqdcSNYW4sIHRpa2V0IMSHZSBkb2JpdGkgc3RhdHVzIHpha2xqdcSNYW4gaSB0cmVudXRuaSBvcGVyYXRlciDEh2UgYml0aSBhdXRvbWF0c2tpIHBvc3RhdmxqZW4ga2FvIHZsYXNuaWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG9kcmF6dW1ldmFuaSBuYXJlZG5pIHN0YXR1cyB0aWtldGEgcG9zbGUgZG9kYXZhbGphIGJlbGXFoWtlLCBuYSBnbGF2bmkvemF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgcHJpb3JpdGV0IHRpa2V0YSBuYSBnbGF2bmkvemF2aXNuaSBla2FudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgdGlwIGJlbGXFoWtlIG5hIGdsYXZuaS96YXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBrb21lbnRhciB6YSBpc3RvcmlqYXQgbmEgZ2xhdm5pL3phdmlzbmkgZWtyYW5za29qIGFrY2lqaSwgxaF0byDEh2Ugc2Uga29yaXN0aXRpIHphIGlzdG9yaWphdCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHRpcCBpc3RvcmlqYXRhIHphIGdsYXZuaS96YXZpc25pIGVrcmFuc2t1IGFrY2lqdSwgxaF0byDEh2Ugc2Uga29yaXN0aXRpIHphIGlzdG9yaWphdCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIG5hcmVkbmkgc3RhdHVzIHRpa2V0YSBwb3NsZSBkb2RhdmFsamEgYmVsZcWha2UsIG5hIGdsYXZuaS96YXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICdBa3RpdmlyYSBuYXByZWRuaSBkZW8gZnVua2NpamUgR2xhdm5pL1phdmlzbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmlyYW5qZSBzdm9qc3R2YSBkYSB6YXZpc25pIHRpa2V0IHByYXRpIGdsYXZuaSBuYSBub3ZpIGdsYXZuaSB1IG5hcHJlZG5vbSBHbGF2bmkvWmF2aXNuaSBtb2R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmlyYW5qZSBmdW5rY2lqZSB6YSBwcm9tZW51IHN0YW5qYSB0aWtldGEgR2xhdm5pL1phdmlzbmkgIHUgbmFwcmVkbm9tIEdsYXZuaS9aYXZpc25pIG1vZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ0FrdGl2aXJhbmplIHN2b2pzdHZhIHphIHByb3NsZcSRaXZhbmplIMSNbGFuYWthIG9kIHRpcGEg4oCecHJvc2xlZGnigJ0gZ2xhdm5vZyB0aWtldGEga29yaXNuaWNpbWEgemF2aXNuaWggdGlrZXRhLiBQb2RyYXp1bWV2YW5vIGplIChpc2tsanXEjWVubykgZGEgc2UgbmnFoXRhIG5lIHByb3NsZcSRdWplIHphdmlzbmltIHRpa2V0aW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0FrdGl2aXJhbmplIGZ1bmtjaWplIHphIHphZHLFvmF2YW5qZSB2ZXplIG5hZHJlxJFlbmktcG9kcmXEkWVuaSBwb3NsZSBpem1lbmUgc3RhbmphIEdsYXZuaS9aYXZpc25pICB1IG5hcHJlZG5vbSBHbGF2bmkvWmF2aXNuaSBtb2R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWt0aXZpcmFuamUgZnVua2NpamUgemEgemFkcsW+YXZhbmplIHZlemUgbmFkcmXEkWVuaS1wb2RyZcSRZW5pIHBvc2xlIG9wb3ppdmEgcG9kZcWhYXZhbmphIHN0YW5qYSBHbGF2bmkvWmF2aXNuaSAgdSBuYXByZWRub20gR2xhdm5pL1phdmlzbmkgbW9kdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmlyYW5qZSBmdW5rY2lqZSB6YSBvcG96aXYgcG9kZcWhYXZhbmphIHN0YW5qYSB0aWtldGEgR2xhdm5pL1phdmlzbmkgIHUgbmFwcmVkbm9tIEdsYXZuaS9aYXZpc25pIG1vZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FrbyBqZSBvcGVyYXRlciBkb2RhbyBuYXBvbWVudSwgcG9kZcWhYXZhIHN0YXR1cyB0aWtldGEgbmEgZWtyYW51IEdsYXZuaS9aYXZpc25pIHRpa2V0YSBuYSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ0dsYXZuaSAvIFphdmlzbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICdHbGF2bmkgdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnR2xhdm5pL1phdmlzbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01vZHVsIEdsYXZuaS9aYXZpc25pIHphIGZ1bmtjaWp1IG1hc292bmUgb2JyYWRlIHRpa2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHBvemFkaW5za2kgcHJpa2F6IGtvbnRyb2xuZSB0YWJsZSBwcmVnbGVkYSBnbGF2bmloIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiDigJ5MaW1pdOKAnSBqZSBicm9qIHVub3NhIHBvZHJlenVtZXZhbm8gcHJpa2F6YW5paC4g4oCeR3J1cGHigJ0gc2Uga29yaXN0aSBkYSBvZ3JhbmnEjWkgcHJpc3R1cCBkb2RhdGt1IChucHIuIEdydXBhOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuIOKAnlBvZHJhenVtZXZhbm/igJ0gb2RyZcSRdWplIGRhIGxpIGplIHBvZHJhenVtZXZhbm8gYWt0aXZpcmFuIGlsaSBkYSBqZSBwb3RyZWJubyBkYSBnYSBrb3Jpc25payBtYW51ZWxubyBha3RpdmlyYS4g4oCeQ2FjaGVUVExMb2NhbOKAnSBqZSB2cmVtZSB1IG1pbnV0YW1hIHphIGtlxaEgZG9kYXRrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgcG96YWRpbnNraSBwcmlrYXoga29udHJvbG5lIHRhYmxlIHByZWdsZWRhIGdsYXZuaWggdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuIOKAnkxpbWl04oCdIGplIGJyb2ogdW5vc2EgcG9kcmV6dW1ldmFubyBwcmlrYXphbmloLiDigJ5HcnVwYeKAnSBzZSBrb3Jpc3RpIGRhIG9ncmFuacSNaSBwcmlzdHVwIGRvZGF0a3UgKG5wci4gR3J1cGE6IGFkbWluO2dyb3VwMTtncm91cDI7KS4g4oCeUG9kcmF6dW1ldmFub+KAnSBvZHJlxJF1amUgZGEgbGkgamUgcG9kcmF6dW1ldmFubyBha3RpdmlyYW4gaWxpIGRhIGplIHBvdHJlYm5vIGRhIGdhIGtvcmlzbmlrIG1hbnVlbG5vIGFrdGl2aXJhLiDigJ5DYWNoZVRUTExvY2Fs4oCdIGplIHZyZW1lIHUgbWludXRhbWEgemEga2XFoSBkb2RhdGthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUmVnaXN0cmFjaWphIG1vZHVsYSBkb2dhxJFhamEgemEgdGlrZXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZW9waG9kbmEgZG96dm9sYSB6YSB1cG90cmVidSBnbGF2bmkvemF2aXNuaSBla3JhbmEgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHNhZHLFvmFqIHphIG5hcG9tZW5lIGRvZGF0ZSBuYSBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG9kcmF6dW1ldmFuaSBwcmVkbWV0IHphIG5hcG9tZW5lIGRvZGF0ZSBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgb2Rnb3Zvcm5vZyBvcGVyYXRlcmEgemEgdGlrZXQgbmEgR2xhdm5pL1phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBzZXJ2aXMgbmEgR2xhdm5pL1phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhIChQb3RyZWJubyBqZSBha3RpdmlyYXRpIFRpa2V0OjpTZXJ2aXMpLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHZsYXNuaWthIHRpa2V0YSBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSB0aXAgdGlrZXRhIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYSAoUG90cmVibm8gamUgYWt0aXZpcmF0aSBUaWtldDo6VGlwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBpem1lbnUgR2xhdm5pL1phdmlzbmkgc3RhdHVzYSB0aWtldGEgbmEgZGV0YWxqbm9tIHByaWthenUgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgbGlzdHUgc3ZpaCBvcGVyYXRlcmEgdWtsanXEjWVuaWggdSBvdmFqIHRpa2V0IG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIGxpc3R1IHN2aWggbW9ndcSHaWggb3BlcmF0ZXJhIChzdmkgb3BlcmF0ZXJpIHNhIGRvenZvbG9tIHphIG5hcG9tZW51IHphIHJlZC90aWtldCkgcmFkaSB1dHZyxJFpdmFuamEga28gdHJlYmEgZGEgYnVkZSBpbmZvcm1pc2FuIG8gb3ZvaiBuYXBvbWVuaSwgbmEgR2xhdm5pL1phdmlzbmkgZWtyYW51IHRpa2V0YSBuYSBkZXRhbGpub20gcHJpa2F6dSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIG9wY2lqZSBwcmlvcml0ZXRhIHRpa2V0YSBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgdGlrZXRhIG5hIGRldGFsam5vbSBwcmlrYXp1IHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGRzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIG5hc2xvdm5hIHBvbGphIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSB0aWtldGEgbmEgZGV0YWxqbm9tIHByaWthenUgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdaYXZpc25pIHRpa2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICdOYXZvZGkgcmF6bmUgdGlwb3ZlIMSNbGFuYWthIGdkZSDEh2Ugc3R2YXJubyBpbWUgc2EgZ2xhdm5vZyB0aWtldGEgYml0aSB6YW1lbmplbm8gc2EgamVkbmltIG5hIHphdmlzbm9tIHRpa2V0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgbm90ZSB0eXBlcyB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJhemxpxI1pdGUgdGlwb3ZlIG5hcG9tZW5hIGtvamkgxIdlIHNlIGtvcmlzdGl0aSB1IHNpc3RlbXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ092YWogbW9kdWwgYWt0aXZpcmEgcG9samUgR2xhdm5pL1phdmlzbmkgbmEgZWtyYW51IG5vdmloIGltZWpsIGkgdGVsZWZvbnNraWggdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnVGlrZXQgR2xhdm5pL1phdmlzbmkuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3dfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdVZ2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1J1aHVzdSBrdW9uZ2V6YSB2aWRva2V6aSBrYXRpa2Egc2tyaW5pIHlhIE1rdXVNdHVtd2EgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnQmFkaWxpc2hhIGhhbGkgeWEgTWt1dS9tdHVtd2EgeWEgdGlrZXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0ZhZmFudWEga2FtYSBrdWZ1bmdhIGt3YSB0aWtldGkga3VuYWhpdGFqaWthIGthdGlrYSBza3JpbmkgeWEgdGlrZXRpIHlhICBta3V1bXR1bXdhIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYSAoa2FtYSB0aWtldGkgaGFpamFmdW5nd2EgYmFkbywgdGlrZXRpIHppcGF0d2Uga3VmdW5nd2EgbmEgd2FrYWxhIHdhIHNhc2EgYXRhZmFueXdhIGF1dG9tYXRpa2kga3V3YSBtbWlsaWtpIHdha2UpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kgbGEgaGFsaSBpeWFqbyB5YSB0aWtldGkgYmFhZGEgeWEga3VvbmdlemEga2lkb2tlem8sIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lwYXVtYmVsZSBjaGFndW8tbXNpbmdpIGNoYSB0aWtldGkga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgYWluYSB5YSBjaGFndW8tbXNpbmdpIGxhIGtpZG9rZXpvIGt3YSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBoaXN0b3JpYSB5YSBtYW9uaSBrd2Ega2l0ZW5kbyBjaGEgc2tyaW5pIHlhIHRpa2V0aSBta3V1bXR1bXdhLCBhbWJheW8gaW5hdHVtaWthIG5hIGhpc3RvcmlhIHlhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZhZmFudWEgYWluYSB5YSBoaXN0b3JpYSBrd2Ega2l0ZW5kbyBjaGEgc2tyaW5pIHlhIG1rdXVtdHVtd2EgY2hhIHRpa2V0aSwgYW1iYWNobyBraW5hdHVtaWthIG5hIGhpc3RvcmlhIHlhIHRpa2V0aSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGYWZhbnVhIGhhbGkgaW5heW9mdWF0YSB5YSB0aWtldGkgYmFhZGEgeWEga3VvbmdlemEga2lkb2tlem8sIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLYW1hIGtpZG9rZXpvIGtpbWVvbmdlendhIG5hIHdha2FsYSwgaW5hd2VrYSBoYWxpIHlhIHRpa2V0aSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0YSBrd2EgYmFja2VuZCB5YSBkYXNpYm9kaSB5YSBtYXBpdGlvIHlhIHRpa2V0aSBrdXUgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIFwnXCdLaWtvbW9cJ1wnIG5pIG5hbWJhIHlhIHZpcGVuZ2VlIGhhbGlzaSB2aW5hdnlvb255ZXNod2Ega3dhIG1jaGFndW8taGFsaXNpLiBcJ1wnS2lrdW5kaVwnXCcga2luYXR1bWlrYSBrdXp1aWEga3VmaWtpYSBrdWNob21la2EgKG1mYW5vIEtpa3VuZGk6VXRhd2FsYTtraWt1bmRpIGNoYSAxO2tpa3VuZGkgY2hhIDI7KS4gXCdcJ0NoYWd1by1tc2luZ2lcJ1wnIGluYWhha2lraSBrYW1hIG1jaG9tZWtvIHVtZXdlemVzaHdhIGt3YSBtY2hhZ3VvLW1zaW5naSBhdSBrYW1hIG10dW1pemkgYW5haGl0YWppIGt1d2V6ZXNoYSBrd2EgbWtvbm8uIFwnXCdIaWZhZGhpbXVkYVRUTEtpYW1ib1wnXCcgbmkgbXVkYSB3YSBoaWZhZGhpIG11ZGEga2F0aWthIGRha2lrYSBrd2EgbWNob21la28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldGEga3dhIGJhY2tlbmQgeWEgZGFzaWJvZGkgeWEgbWFwaXRpbyB5YSB0aWtldGkgdHVtd2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIFwnXCdLaWtvbW9cJ1wnIG5pIG5hbWJhIHlhIHZpcGVuZ2VlIGhhbGlzaSB2aW5hdnlvb255ZXNod2Ega3dhIG1jaGFndW8taGFsaXNpLiBcJ1wnS2lrdW5kaVwnXCcga2luYXR1bWlrYSBrdXp1aWEga3VmaWtpYSBrdWNob21la2EgKG1mYW5vIEtpa3VuZGk6VXRhd2FsYTtraWt1bmRpIGNoYSAxO2tpa3VuZGkgY2hhIDI7KS4gXCdcJ0NoYWd1by1tc2luZ2lcJ1wnIGluYWhha2lraSBrYW1hIG1jaG9tZWtvIHVtZXdlemVzaHdhIGt3YSBtY2hhZ3VvLW1zaW5naSBhdSBrYW1hIG10dW1pemkgYW5haGl0YWppIGt1d2V6ZXNoYSBrd2EgbWtvbm8uIFwnXCdIaWZhZGhpbXVkYVRUTEtpYW1ib1wnXCcgbmkgbXVkYSB3YSBoaWZhZGhpIG11ZGEga2F0aWthIGRha2lrYSBrd2EgbWNob21la28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdVc2FqaWxpIHdhIGtpcGltbyBjaGEgdHVraW8gbGEgdGlrZXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9lc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIG1hdGluaSBraWluaSBraWxpY2hvb25nZXp3YSBjaGEgY2hhZ3VvLW1zaW5naSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHV3YSB5YSB0aWtldGkga2F0aWthIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYXdla2Egc29tbyBsYSBjaGFndW8tbXNpbmdpIGt3YSBraXBlbmdlbGUga2lsaWNob29uZ2V6d2Ega2F0aWthIHNrcmluaSB5YSBta3V1bXR1d2EgeWEgdGlrZXRpIGthdGlrYSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIHdha2FsYSBhbWJheWUgYW5haHVzaWthIG5hIHRpa2V0aSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYXQga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnSW5hd2VrYSBodWR1bWEga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEgKFRpa2V0aTo6SHVkdW1hIGluYXlvaGl0YWppIGt1YW1pbGlzaHdhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBtbWlsaWtpIHdhIHRpa2V0aSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnSW5hd2VrYSBhaW5hIHlhIHRpa2V0aSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYSAodGlrZXRpOjogYWluYSBpbmF5b2l0YWppIGt1YW1pbGlzaHdhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgY2hhIGt1YmFkaWxpc2hhIGhhZGhpIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIGthdGlrYSBtYW5kaGFyaSBpbGl5b2t1endhIHlhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEgb3JvZGhhIHlhIG1hd2FrYWxhIHdvdGUgd2FuYW9odXNpa2EgbmEgdGlrZXRpIGhpaSwga2F0aWthIHNrcmluaSB5YSB0aWtldGkgbWt1dS9tdHVtd2EgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIG9yb2RoYSB5YSB3YWthbGEgd290ZSB3YW5hb3dlemEgKG1hd2FrYWxhIHdvdGUgd2VueWUga2lkb2tlem8gY2hhIHJ1aHVzYSB5YSB0aWtldGkvZm9sZW5pKSBrdXRhbWJ1YSBuYW5pIGF0YWFyaWZpd2Uga3VodXN1IGtpZG9rZXpvIGhpa2ksIGthdGlrYSBza3JpbmkgeWEgdGlrZXRpIG1rdXVtdHVtd2EgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaHdhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBtYWNoYWd1byB5YSBraXBhdW1iZWxlIHlhIHRpa2V0aSBrYXRpa2Egc2tyaW5pIHlhIHRpa2V0aSBta3V1bXR1bXdhIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2ljaHdhIGNoYSBoYWJhcmkga2F0aWthIHNrcmluaSB5YSB0aWtldGkgbWt1dW10dW13YSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnSW5hYmFpbmlzaGEgYWluYSBtYmFsaW1iYWxpIHphIG1ha2FsYSBhbWJhem8gbWFqaW5hIHlha2UgeWEgdWt3ZWxpIGt1dG9rYSB0aWtldGkga3V1IHlhdGFiYWRpbGlzaHdhIG5hIG1vamF3YXBvIGthdGlrYSB0aWtldGkgdHVtd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ0luYWJhaW5pc2hhIGFpbmEgemEgdmlkb2tlem8gbWJhbGltYmFsaSBhbWJhdnlvIHZpdGF0dW1pa2Ega2F0aWthIG1mdW1vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dGhfVEhfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICfguJ/guLTguKXguJTguYwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAn4LiV4Lix4LmL4Lin4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmM4LmD4Lir4Lih4LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICfguKLguIHguYDguKXguLTguIHguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJXguLHguYvguKfguKHguLLguKrguYDguJXguK3guKPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAn4Lii4LiB4LmA4Lil4Li04LiB4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiV4Lix4LmL4LinU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lit4LiZ4Li44LiN4Liy4LiV4LmD4Lir4LmJ4LmA4Lie4Li04LmI4Lih4LmC4LiZ4LmJ4LiV4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4luC5ieC4suC4q+C4suC4geC4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C5g+C4iuC5ieC4leC4seC5i+C4p+C4peC5h+C4reC4hOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4p01hc3RlclNsYXZl4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICjguJfguLPguIHguLLguKPguKXguYfguK3guITguJXguLHguYvguKfguJbguYnguLLguKvguLLguIHguJXguLHguYvguKfguKLguLHguIfguYTguKHguYjguYTguJTguYnguKXguYfguK3guITguYHguKXguLDguKPguLDguJrguLjguYPguKvguYnguYDguK3guYDguKLguYjguJnguJXguYzguJvguLHguIjguIjguLjguJrguLHguJnguYDguJvguYfguJnguYDguIjguYnguLLguILguK3guIfguK3guLHguJXguYLguJnguKHguLHguJXguLQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4quC4luC4suC4meC4oOC4suC4nuC4luC4seC4lOC5hOC4m+C4guC4reC4h+C4leC4seC5i+C4p+C4q+C4peC4seC4h+C4iOC4suC4geC5gOC4nuC4tOC5iOC4oeC5guC4meC5ieC4leC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4p01hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKXguLPguJTguLHguJrguITguKfguLLguKHguKrguLPguITguLHguI3guYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKdNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lib4Lij4Liw4LmA4Lig4LiX4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LmC4LiZ4LmJ4LiV4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguJvguKPguLDguKfguLHguJXguLTguIHguLLguKPguYHguKrguJTguIfguITguKfguLLguKHguYDguKvguYfguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguIHguKPguLDguJfguLPguKvguJnguYnguLLguIjguK3guJXguLHguYvguKdNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKEg4LiL4Li24LmI4LiH4LiX4Liz4LmD4Lir4LmJ4LmA4LiB4Li04LiU4LiE4Lin4Liy4Lih4LiE4Li44LmJ4LiZ4LmA4LiE4Lii4LmD4LiZ4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguJvguKPguLDguYDguKDguJfguJvguKPguLDguKfguLHguJXguLTguKrguLPguKvguKPguLHguJrguIHguLLguKPguIHguKPguLDguJfguLPguKrguLPguKvguKPguLHguJrguIHguLLguKPguIHguKPguLDguJfguLPguKvguJnguYnguLLguIjguK3guJXguLHguYvguKdNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKEg4LiL4Li24LmI4LiH4LiX4Liz4LmD4Lir4LmJ4LmA4LiB4Li04LiU4LiE4Lin4Liy4Lih4LiE4Li44LmJ4LiZ4LmA4LiE4Lii4LmD4LiZ4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguJbguLLguJnguKDguLLguJ7guJbguLHguJTguYTguJvguILguK3guIfguJXguLHguYvguKfguKvguKXguLHguIfguIjguLLguIHguYDguJ7guLTguYjguKHguYLguJnguYnguJXguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKdNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmA4LiL4LiV4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jOC4q+C4suC4geC5gOC4reC5gOC4ouC5iOC4meC4leC5jOC5hOC4lOC5ieC5gOC4nuC4tOC5iOC4oeC5guC4meC5ieC4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ+C4oeC4suC4quC5gOC4leC4reC4o+C5jC9TbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAn4LmC4Lih4LiU4Li54LilIOC4oeC4suC4quC5gOC4leC4reC4o+C5jC9TbGF2ZSDguKrguLPguKvguKPguLHguJrguITguLjguJPguKXguLHguIHguKnguJPguLDguIHguKXguLjguYjguKHguJXguLHguYvguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiU4LiK4Lia4Lit4Lij4LmM4LiU4LmA4Lia4Li34LmJ4Lit4LiH4Lir4Lil4Lix4LiH4LiC4Lit4LiH4Lig4Liy4Lie4Lij4Lin4Lih4LiV4Lix4LmL4LinbWFzdGVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4quC5gOC4reC5gOC4ouC5iOC4meC4leC5jCAi4LiI4Liz4LiB4Lix4LiUIiDguITguLfguK3guIHguLPguKvguJnguJTguIjguLPguJnguKfguJnguILguK3guIfguKPguLLguKLguIHguLLguKPguJfguLXguYjguYHguKrguJTguIfguYLguJTguKLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJkgIuC4geC4peC4uOC5iOC4oSIg4LiI4Liw4LiW4Li54LiB4LiZ4Liz4Lih4Liy4LmD4LiK4LmJ4LmA4Lie4Li34LmI4Lit4LiI4Liz4LiB4Lix4LiU4LiB4Liy4Lij4LmA4LiC4LmJ4Liy4LiW4Li24LiH4Lib4Lil4Lix4LmK4LiB4Lit4Li04LiZICjguYDguIrguYjguJnguIHguKXguLjguYjguKE6IOC4nOC4ueC5ieC4lOC4ueC5geC4peC4o+C4sOC4muC4mjsg4LiB4Lil4Li44LmI4LihIDE7IOC4geC4peC4uOC5iOC4oTI7KSAi4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZIiDguKPguLDguJrguLjguKfguYjguLLguJbguYnguLLguJvguKXguLHguYrguIHguK3guLTguJnguJbguLnguIHguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYLguJTguKLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguKvguKPguLfguK3guKvguLLguIHguJzguLnguYnguYPguIrguYnguJXguYnguK3guIfguIHguLLguKPguYDguJ7guLfguYjguK3guYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYTguJTguYnguJTguYnguKfguKLguJXguJnguYDguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJTguIrguJrguK3guKPguYzguJTguYDguJrguLfguYnguK3guIfguKvguKXguLHguIfguILguK3guIfguKDguLLguJ7guKPguKfguKHguJXguLHguYvguKdzbGF2ZSB04LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4Liq4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICLguIjguLPguIHguLHguJQiIOC4hOC4t+C4reC4geC4s+C4q+C4meC4lOC4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC5geC4quC4lOC4h+C5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSAi4LiB4Lil4Li44LmI4LihIiDguIjguLDguJbguLnguIHguJnguLPguKHguLLguYPguIrguYnguYDguJ7guLfguYjguK3guIjguLPguIHguLHguJTguIHguLLguKPguYDguILguYnguLLguJbguLbguIfguJvguKXguLHguYrguIHguK3guLTguJkgKOC5gOC4iuC5iOC4meC4geC4peC4uOC5iOC4oTog4Lic4Li54LmJ4LiU4Li54LmB4Lil4Lij4Liw4Lia4LiaOyDguIHguKXguLjguYjguKEgMTsg4LiB4Lil4Li44LmI4LihMjspICLguYDguKPguLTguYjguKHguJXguYnguJkiIOC4o+C4sOC4muC4uOC4p+C5iOC4suC4luC5ieC4suC4m+C4peC4seC5iuC4geC4reC4tOC4meC4luC4ueC4geC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4q+C4o+C4t+C4reC4q+C4suC4geC4nOC4ueC5ieC5g+C4iuC5ieC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4nuC4t+C5iOC4reC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5hOC4lOC5ieC4lOC5ieC4p+C4ouC4leC4meC5gOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAn4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LiC4Lit4LiH4LmC4Lih4LiU4Li54Lil4LiV4Lix4LmL4Lin4LiB4Li04LiI4LiB4Lij4Lij4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguYPguJnguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lij4Liw4Lia4Li44LiC4LmJ4Lit4LiE4Lin4Liy4Lih4Liq4LmI4Lin4LiZ4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LmC4LiZ4LmJ4LiV4LiX4Li14LmI4LiW4Li54LiB4LmA4Lie4Li04LmI4Lih4LmA4LiC4LmJ4Liy4Lih4Liy4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lij4Liw4Lia4Li44Lir4Lix4Lin4LiC4LmJ4Lit4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LmC4LiZ4LmJ4LiV4LiX4Li14LmI4LiW4Li54LiB4LmA4Lie4Li04LmI4Lih4LmA4LiC4LmJ4Liy4Lih4Liy4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LiX4Li14LmI4Lij4Lix4Lia4Lic4Li04LiU4LiK4Lit4Lia4LiV4Lix4LmL4Lin4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4geC4suC4o+C4muC4o+C4tOC4geC4suC4o+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwgKOC4leC4seC5i+C4pyA6OuC4geC4suC4o+C4muC4o+C4tOC4geC4suC4o+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4mSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LmA4LiI4LmJ4Liy4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguJvguKPguLDguYDguKDguJfguILguK3guIfguJXguLHguYvguKfguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICjguJXguLHguYvguKcgOjrguJvguKPguLDguYDguKDguJfguJXguLHguYvguKfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguYDguJvguLTguJTguYPguIrguYnguIfguLLguJkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC4leC4seC5i+C4p+C4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiK4Li34LmI4Lit4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LiX4Li14LmI4LmA4LiB4Li14LmI4Lii4Lin4LiC4LmJ4Lit4LiH4LiB4Lix4Lia4LiV4Lix4LmL4Lin4LiZ4Li14LmJ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKPguLLguKLguIrguLfguYjguK3guYDguK3guYDguKLguYjguJnguJXguYzguJfguLXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYnguJfguLHguYnguIfguKvguKHguJQgKOC5gOC4reC5gOC4ouC5iOC4meC4leC5jOC4l+C4seC5ieC4h+C4q+C4oeC4lOC4l+C4teC5iOC5hOC4lOC5ieC4o+C4seC4muC5guC4meC5ieC4leC4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4hOC4tOC4py/guJXguLHguYvguKcpIOC5gOC4nuC4t+C5iOC4reC4geC4s+C4q+C4meC4lOC4p+C5iOC4suC5g+C4hOC4o+C4hOC4p+C4o+C4o+C4suC4ouC4h+C4suC4meC5gOC4geC4teC5iOC4ouC4p+C4geC4seC4muC5guC4meC5ieC4leC4meC4teC5ieC5g+C4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4p01hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguJXguLHguKfguYDguKXguLfguK3guIHguKXguLPguJTguLHguJrguITguKfguLLguKHguKrguLPguITguLHguI3guILguK3guIfguJXguLHguYvguKfguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguJ/guLTguKXguJTguYzguIrguLfguYjguK3guYDguKPguLfguYjguK3guIfguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAn4Lij4Liw4Lia4Li44Lib4Lij4Liw4LmA4Lig4LiX4Lia4LiX4LiE4Lin4Liy4Lih4LiX4Li14LmI4LmB4LiV4LiB4LiV4LmI4Liy4LiH4LiB4Lix4LiZ4LiL4Li24LmI4LiH4LiK4Li34LmI4Lit4LiI4Lij4Li04LiH4LiI4Liy4LiB4LiV4Lix4LmL4Lin4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmM4LiI4Liw4LiW4Li54LiB4LmB4LiX4LiZ4LiX4Li14LmI4LiU4LmJ4Lin4Lii4Lir4LiZ4Li24LmI4LiH4LmD4LiZ4LiV4Lix4LmL4LinU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgbm90ZSB0eXBlcyB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC4meC4teC5ieC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4n+C4tOC4peC4lOC5jCBNYXN0ZXIgL1NsYXZlIOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4reC4teC5gOC4oeC4peC5g+C4q+C4oeC5iOC5geC4peC4sOC4leC4seC5i+C4p+C5guC4l+C4o+C4qOC4seC4nuC4l+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfQ05fT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICflrZfmrrUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICfnrqHnkIYlcyVzJXPnmoQg5Li7L+S7jiDnirbmgIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAn5paw5bu65Li75bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICfkuLvlt6XljZXovazkuLrmma7pgJrlt6XljZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAn5LuO5bel5Y2V6L2s5Li65pmu6YCa5bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICclcyVzJXPnmoTku47lt6XljZXvvJolcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAn5Y+W5raI5Li75bel5Y2V6K6+572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICflj5bmtojku47lt6XljZXorr7nva4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ+S4u+W3peWNlSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ+aJgOacieeahOS4u+W3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ+aJgOacieeahOS7juW3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5Li7L+S7juW3peWNleivpuaDheeql+WPo+WFgeiuuOa3u+WKoOWkh+azqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn5L+u5pS55bel5Y2V5Li7L+S7jueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ+WumuS5ieS4u+W3peWNleWKn+iDveeahOWKqOaAgeWtl+auteWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ+WumuS5ieacjeWKoeS6uuWRmOeVjOmdouWcqOW3peWNleS4u+S7juiuvue9rueql+WPo+aYr+WQpumcgOimgeW3peWNlemUgeWumu+8iOWmguaenOW3peWNlei/mOayoeaciemUgeWumu+8jOWImeW3peWNleiiq+mUgeWumuS4lOW9k+WJjeacjeWKoeS6uuWRmOiiq+iHquWKqOiuvue9ruS4uuW3peWNleaJgOacieiAhe+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnmnI3liqHkurrlkZjnlYzpnaLlnKjlt6XljZXkuLvku47orr7nva7nqpflj6Pmt7vliqDlpIfms6jlkI7nmoTpu5jorqTkuIvkuIDkuKrlt6XljZXnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnmnI3liqHkurrlkZjnlYzpnaLlnKjlt6XljZXkuLvku47orr7nva7nqpflj6Pmt7vliqDlpIfms6jlkI7lt6XljZXnmoTpu5jorqTkvJjlhYjnuqfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Zyo5bel5Y2V5Li75LuO6K6+572u56qX5Y+j5re75Yqg5aSH5rOo5ZCO5bel5Y2V55qE6buY6K6k5aSH5rOo57G75Z6L44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlt6XljZXkuLvku47orr7nva7nqpflj6Pmk43kvZznmoTljoblj7Lms6jph4rvvIzku6XnlKjkuo7mnI3liqHkurrlkZjnlYzpnaLnmoTlt6XljZXljoblj7LjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieW3peWNleS4u+S7juiuvue9rueql+WPo+aTjeS9nOeahOWOhuWPsuexu+Wei++8jOS7peeUqOS6juacjeWKoeS6uuWRmOeVjOmdoueahOW3peWNleWOhuWPsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Zyo5bel5Y2V5Li75LuO6K6+572u56qX5Y+j5re75Yqg5aSH5rOo5ZCO55qE5LiL5LiA5Liq5bel5Y2V54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAn5ZCv55So5Li75LuO5Yqf6IO955qE6auY57qn5qih5byP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICflkK/nlKjpq5jnuqfkuLvku47mqKHlvI/kuIvku47lt6XljZXpmo/kuLvlt6XljZXliLDkuIDkuKrmlrDnmoTkuLvlt6XljZXnmoTlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn5ZCv55So5pys5Yqf6IO95ZCO77yM5Y+v5L+u5pS55LiA5Liq5bel5Y2V5Zyo6auY57qn5Li75LuO5qih5byP5LiL55qE5Li75LuO54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ+WQr+eUqOacrOWKn+iDveWQju+8jOWwhuKAnOi9rOWPkeKAneexu+Wei+eahOS4u+W3peWNleS/oeS7tui9rOWPkeWIsOS7juW3peWNleeahOWuouaIt+OAgum7mOiupO+8iOW3suemgeeUqO+8ieS4jei9rOWPkeKAnOi9rOWPkeKAneexu+Wei+eahOS/oeS7tuWIsOS7juW3peWNleOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ+WQr+eUqOacrOWKn+iDveWQju+8jOWcqOmrmOe6p+S4u+S7juaooeW8j+S4i+S/ruaUueS4u+S7jueKtuaAgeWQjuS/neaMgeeItuWtkOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn5ZCv55So5pys5Yqf6IO95ZCO77yM5Zyo6auY57qn5Li75LuO5qih5byP5LiL5Y+W5raI5Li75LuO54q25oCB5ZCO5L+d5oyB54i25a2Q6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn5ZCv55So5pys5Yqf6IO95ZCO77yM5Y+v5Y+W5raI5LiA5Liq5bel5Y2V5Zyo6auY57qn5Li75LuO5qih5byP5LiL55qE5Li75LuO54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS4uy/ku47lt6XljZXor6bmg4Xnqpflj6PvvIzlpoLmnpzmnI3liqHkurrlkZjmt7vliqDkuoblpIfms6jvvIzorr7nva7lt6XljZXnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICfkuLsv5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAn5Li75bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAn5Li75LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICflt6XljZXmibnph4/mk43kvZzlip/og73nmoTkuLvku47lt6XljZXmibnph4/orr7nva7mqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Luq6KGo5p2/5Li75bel5Y2V5qaC6KeI5ZCO56uv55qE5Y+C5pWw44CC4oCcTGltaXTvvIjpmZDliLbvvInlrprkuYnpu5jorqTmmL7npLrnmoTmnaHnm67mlbDvvJvigJxHUk9VUO+8iOe7hO+8ieeUqOS6juWIsOacrOaPkuS7tueahOiuv+mXruadg+mZkOmZkOWItu+8iOWmgiBHcm91cDphZG1pbjtncm91cDE7Z3JvdXAy77yJ77yb4oCcRGVmYXVsdO+8iOm7mOiupO+8ieKAneS7o+ihqOi/meS4quaPkuS7tuaYr+m7mOiupOWQr+eUqOi/mOaYr+mcgOimgeeUqOaIt+aJi+WKqOWQr+eUqO+8m+KAnENhY2hlVFRMTG9jYWzigJ3ooajmmI7mnKzmj5Lku7bnmoTnvJPlrZjov4fmnJ/ml7bpl7TvvIjljZXkvY3vvJrliIbpkp/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICflrprkuYnmnI3liqHkurrlkZjnlYzpnaLku6rooajmnb/ku47lt6XljZXmpoLop4jlkI7nq6/nmoTlj4LmlbDjgILigJxMaW1pdO+8iOmZkOWItu+8ieWumuS5iem7mOiupOaYvuekuueahOadoeebruaVsO+8m+KAnEdST1VQ77yI57uE77yJ55So5LqO5Yiw5pys5o+S5Lu255qE6K6/6Zeu5p2D6ZmQ6ZmQ5Yi277yI5aaCIEdyb3VwOmFkbWluO2dyb3VwMTtncm91cDLvvInvvJvigJxEZWZhdWx077yI6buY6K6k77yJ4oCd5Luj6KGo6L+Z5Liq5o+S5Lu25piv6buY6K6k5ZCv55So6L+Y5piv6ZyA6KaB55So5oi35omL5Yqo5ZCv55So77yb4oCcQ2FjaGVUVExMb2NhbOKAneihqOaYjuacrOaPkuS7tueahOe8k+WtmOi/h+acn+aXtumXtO+8iOWNleS9je+8muWIhumSn++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAn5rOo5YaM5Yiw5bel5Y2V5LqL5Lu25qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqOS4u+S7juW3peWNleivpuaDheeql+WPo+W/hemcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICforr7nva7mnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6Pmt7vliqDlpIfms6jnmoTnmoTpu5jorqTmraPmlofmlofmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+iuvue9ruacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+a3u+WKoOWkh+azqOeahOeahOm7mOiupOS4u+mimOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6K6+572u5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5bel5Y2V55qE6LSf6LSj5Lq644CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn6K6+572u5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5bel5Y2V55qE5pyN5Yqh77yI6ZyA6KaB5r+A5rS75bel5Y2VOjrmnI3liqHvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6K6+572u5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5bel5Y2V55qE5omA5pyJ6ICF44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ+iuvue9ruacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+iuvue9ruW3peWNleeahOexu+Wei++8iOmcgOimgea/gOa0u+W3peWNlTo657G75Z6L77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5bel5Y2V6K+m5oOF6KeG5Zu+5Lit77yM5Li65L+u5pS55Li75LuO5bel5Y2V54q25oCB6I+c5Y2V5pi+56S65LiA5Liq6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6PvvIzmmL7npLrov5nkuKrlt6XljZXnm7jlhbPnmoTmiYDmnInmnI3liqHkurrlkZjliJfooajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j77yM5pi+56S66L+Z5Liq5bel5Y2V5omA5pyJ5Y+v6IO955qE5pyN5Yqh5Lq65ZGY77yI6ZyA6KaB5YW35pyJ6L+Z5Liq6Zif5YiX5oiW5bel5Y2V55qE5aSH5rOo5p2D6ZmQ77yJ5YiX6KGo77yM55So5LqO56Gu5a6a6LCB5bCG5pS25Yiw5YWz5LqO6L+Z5Liq5aSH5rOo55qE6YCa55+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+aYr+WQpuaYvuekuuW3peWNleS8mOWFiOe6p+eahOmAiemhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGRzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5pi+56S65bel5Y2V5qCH6aKY5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICfku47lt6XljZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAn5oyH5a6a5L2/55So5LuO5bel5Y2V55qE5a6i5oi355yf5a6e5aeT5ZCN5pu/5o2i5Li75bel5Y2V55qE55yf56m65aeT5ZCN55qE5L+h5Lu257G75Z6L44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ+aMh+WumuWwhuWcqOezu+e7n+S4reS9v+eUqOeahOS4jeWQjOWkh+azqOexu+Wei+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICfov5nkuKrmqKHlnZfnlKjmnaXmv4DmtLvmlrDlu7rpgq7ku7Yv55S16K+d5bel5Y2V56qX5Y+j55qE5Li75LuO5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICfkuLvku47lt6XljZXjgIInOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZEFjdGlvbicgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZEFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0NoYW5nZUFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1VuZGVmaW5lZCBzdWJhY3Rpb24uJyksCiAgICApOwp9CgpzdWIgX0FkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICROZWVkZWQgKHF3KE9iamVjdFR5cGUgRmllbGRUeXBlIEZpZWxkT3JkZXIpKSB7CiAgICAgICAgJEdldFBhcmFteyROZWVkZWR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTmVlZCAlcycsICROZWVkZWQgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIG9iamVjdCB0eXBlIGFuZCBmaWVsZCB0eXBlIGRpc3BsYXkgbmFtZQogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJE9iamVjdFR5cGVOYW1lCiAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKS0+eyAkR2V0UGFyYW17T2JqZWN0VHlwZX0gfS0+e0Rpc3BsYXlOYW1lfSB8fCAnJzsKICAgIG15ICRGaWVsZFR5cGVOYW1lID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKS0+eyAkR2V0UGFyYW17RmllbGRUeXBlfSB9LT57RGlzcGxheU5hbWV9IHx8ICcnOwoKICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBNb2RlICAgICAgICAgICA9PiAnQWRkJywKICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICApOwp9CgpzdWIgX0FkZEFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJUVycm9yczsKICAgIG15ICVHZXRQYXJhbTsKCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBMYWJlbCBGaWVsZE9yZGVyKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKICAgICAgICBpZiAoICEkR2V0UGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRFcnJvcnN7ICROZWVkZWQgLiAnU2VydmVyRXJyb3InIH0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3sgJE5lZWRlZCAuICdTZXJ2ZXJFcnJvck1lc3NhZ2UnIH0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBpcyBhbHBoYW51bWVyaWMKICAgICAgICBpZiAoICRHZXRQYXJhbXtOYW1lfSAhfiBte1xBICg/OiBbYS16QS1aXSB8IFxkICkrIFx6fXhtcyApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0KICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSgnVGhlIGZpZWxkIGRvZXMgbm90IGNvbnRhaW4gb25seSBBU0NJSSBsZXR0ZXJzIGFuZCBudW1iZXJzLicpOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIGlzIGR1cGxpY2F0ZWQKICAgICAgICBteSAlRHluYW1pY0ZpZWxkc0xpc3QgPSAlewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgICAgICAgICApCiAgICAgICAgfTsKCiAgICAgICAgJUR5bmFtaWNGaWVsZHNMaXN0ID0gcmV2ZXJzZSAlRHluYW1pY0ZpZWxkc0xpc3Q7CgogICAgICAgIGlmICggJER5bmFtaWNGaWVsZHNMaXN0eyAkR2V0UGFyYW17TmFtZX0gfSApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlcmUgaXMgYW5vdGhlciBmaWVsZCB3aXRoIHRoZSBzYW1lIG5hbWUuJyk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEdldFBhcmFte0ZpZWxkT3JkZXJ9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIG9yZGVyIGlzIG51bWVyaWMgYW5kIHBvc2l0aXZlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RmllbGRPcmRlcn0gIX4gbXtcQSAoPzogXGQgKSsgXHp9eG1zICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7RmllbGRPcmRlclNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze0ZpZWxkT3JkZXJTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGUgZmllbGQgbXVzdCBiZSBudW1lcmljLicpOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtIChxdyggT2JqZWN0VHlwZSBPYmplY3RUeXBlTmFtZSBGaWVsZFR5cGUgRmllbGRUeXBlTmFtZSBWYWxpZElEICkpIHsKICAgICAgICAkR2V0UGFyYW17JENvbmZpZ1BhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRDb25maWdQYXJhbSApOwogICAgfQoKICAgICMgdW5jb3JyZWN0YWJsZSBlcnJvcnMKICAgIGlmICggISRHZXRQYXJhbXtWYWxpZElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIFZhbGlkSUQnKSwKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHRvIGFkZCBzY3JlZW4gaWYgZXJyb3JzCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBNb2RlID0+ICdBZGQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgc3BlY2lmaWMgY29uZmlnCiAgICBteSAkRmllbGRDb25maWcgPSB7CiAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgID0+ICcnLAogICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlcyA9PiAxLAogICAgfTsKCiAgICAjIGNyZWF0ZSBhIG5ldyBmaWVsZAogICAgbXkgJEZpZWxkSUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAkR2V0UGFyYW17TGFiZWx9LAogICAgICAgIEZpZWxkT3JkZXIgPT4gJEdldFBhcmFte0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJEdldFBhcmFte0ZpZWxkVHlwZX0sCiAgICAgICAgT2JqZWN0VHlwZSA9PiAkR2V0UGFyYW17T2JqZWN0VHlwZX0sCiAgICAgICAgQ29uZmlnICAgICA9PiAkRmllbGRDb25maWcsCiAgICAgICAgVmFsaWRJRCAgICA9PiAkR2V0UGFyYW17VmFsaWRJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBjcmVhdGUgdGhlIG5ldyBmaWVsZCcpLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICJBY3Rpb249QWRtaW5EeW5hbWljRmllbGQiLAogICAgKTsKfQoKc3ViIF9DaGFuZ2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoT2JqZWN0VHlwZSBGaWVsZFR5cGUpKSB7CiAgICAgICAgJEdldFBhcmFteyROZWVkZWR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTmVlZCAlcycsICROZWVkZWQgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIG9iamVjdCB0eXBlIGFuZCBmaWVsZCB0eXBlIGRpc3BsYXkgbmFtZQogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJE9iamVjdFR5cGVOYW1lCiAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKS0+eyAkR2V0UGFyYW17T2JqZWN0VHlwZX0gfS0+e0Rpc3BsYXlOYW1lfSB8fCAnJzsKICAgIG15ICRGaWVsZFR5cGVOYW1lID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKS0+eyAkR2V0UGFyYW17RmllbGRUeXBlfSB9LT57RGlzcGxheU5hbWV9IHx8ICcnOwoKICAgIG15ICRGaWVsZElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0lEJyApOwoKICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgSUQnKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgZGF0YQogICAgbXkgJER5bmFtaWNGaWVsZERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBJRCA9PiAkRmllbGRJRCwKICAgICk7CgogICAgIyBjaGVjayBmb3IgdmFsaWQgZHluYW1pYyBmaWVsZCBjb25maWd1cmF0aW9uCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZ2V0IGRhdGEgZm9yIGR5bmFtaWMgZmllbGQgJXMnLCAkRmllbGRJRCApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd1NjcmVlbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgICUke0R5bmFtaWNGaWVsZERhdGF9LAogICAgICAgIElEICAgICAgICAgICAgID0+ICRGaWVsZElELAogICAgICAgIE1vZGUgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIE9iamVjdFR5cGVOYW1lID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICBGaWVsZFR5cGVOYW1lICA9PiAkRmllbGRUeXBlTmFtZSwKICAgICk7Cn0KCnN1YiBfQ2hhbmdlQWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlRXJyb3JzOwogICAgbXkgJUdldFBhcmFtOwoKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lIExhYmVsIEZpZWxkT3JkZXIpKSB7CiAgICAgICAgJEdldFBhcmFteyROZWVkZWR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEVycm9yc3sgJE5lZWRlZCAuICdTZXJ2ZXJFcnJvcicgfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3JzeyAkTmVlZGVkIC4gJ1NlcnZlckVycm9yTWVzc2FnZScgfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEZpZWxkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CiAgICBpZiAoICEkRmllbGRJRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIElEJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgZGF0YQogICAgbXkgJER5bmFtaWNGaWVsZERhdGEgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJEZpZWxkSUQsCiAgICApOwoKICAgICMgY2hlY2sgZm9yIHZhbGlkIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZERhdGEpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGdldCBkYXRhIGZvciBkeW5hbWljIGZpZWxkICVzJywgJEZpZWxkSUQgKSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJEdldFBhcmFte05hbWV9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgaXMgbG93ZXJjYXNlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gIX4gbXtcQSAoPzogW2EtekEtWl0gfCBcZCApKyBcen14bXMgKSB7CgogICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9CiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ1RoZSBmaWVsZCBkb2VzIG5vdCBjb250YWluIG9ubHkgQVNDSUkgbGV0dGVycyBhbmQgbnVtYmVycy4nKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBpcyBkdXBsaWNhdGVkCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZHNMaXN0ID0gJXsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgKQogICAgICAgIH07CgogICAgICAgICVEeW5hbWljRmllbGRzTGlzdCA9IHJldmVyc2UgJUR5bmFtaWNGaWVsZHNMaXN0OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRzTGlzdHsgJEdldFBhcmFte05hbWV9IH0gJiYKICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNMaXN0eyAkR2V0UGFyYW17TmFtZX0gfSBuZSAkRmllbGRJRAogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGVyZSBpcyBhbm90aGVyIGZpZWxkIHdpdGggdGhlIHNhbWUgbmFtZS4nKTsKICAgICAgICB9CgogICAgICAgICMgaWYgaXQncyBhbiBpbnRlcm5hbCBmaWVsZCwgaXQncyBuYW1lIHNob3VsZCBub3QgY2hhbmdlCiAgICAgICAgaWYgKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkRGF0YS0+e0ludGVybmFsRmllbGR9ICYmCiAgICAgICAgICAgICREeW5hbWljRmllbGRzTGlzdHsgJEdldFBhcmFte05hbWV9IH0gbmUgJEZpZWxkSUQKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgZm9yIHRoaXMgZmllbGQgc2hvdWxkIG5vdCBjaGFuZ2UuJyk7CiAgICAgICAgICAgICRQYXJhbXtJbnRlcm5hbEZpZWxkfSAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkRGF0YS0+e0ludGVybmFsRmllbGR9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRHZXRQYXJhbXtGaWVsZE9yZGVyfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBvcmRlciBpcyBudW1lcmljIGFuZCBwb3NpdGl2ZQogICAgICAgIGlmICggJEdldFBhcmFte0ZpZWxkT3JkZXJ9ICF+IG17XEEgKD86IFxkICkrIFx6fXhtcyApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze0ZpZWxkT3JkZXJTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tGaWVsZE9yZGVyU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIGZpZWxkIG11c3QgYmUgbnVtZXJpYy4nKTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRDb25maWdQYXJhbSAocXcoIE9iamVjdFR5cGUgT2JqZWN0VHlwZU5hbWUgRmllbGRUeXBlIEZpZWxkVHlwZU5hbWUgVmFsaWRJRCApKSB7CiAgICAgICAgJEdldFBhcmFteyRDb25maWdQYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkQ29uZmlnUGFyYW0gKTsKICAgIH0KCiAgICAjIHVuY29ycmVjdGFibGUgZXJyb3JzCiAgICBpZiAoICEkR2V0UGFyYW17VmFsaWRJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBWYWxpZElEJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJldHVybiB0byBjaGFuZ2Ugc2NyZWVuIGlmIGVycm9ycwogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVFcnJvcnMsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgSUQgICA9PiAkRmllbGRJRCwKICAgICAgICAgICAgTW9kZSA9PiAnQ2hhbmdlJywKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHNwZWNpZmljIGNvbmZpZwogICAgbXkgJEZpZWxkQ29uZmlnID0gewogICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICA9PiAnJywKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXMgPT4gMSwKICAgIH07CgogICAgIyB1cGRhdGUgZHluYW1pYyBmaWVsZCAoRmllbGRUeXBlIGFuZCBPYmplY3RUeXBlIGNhbm5vdCBiZSBjaGFuZ2VkOyB1c2Ugb2xkIHZhbHVlcykKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgIElEICAgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAkR2V0UGFyYW17TGFiZWx9LAogICAgICAgIEZpZWxkT3JkZXIgPT4gJEdldFBhcmFte0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJER5bmFtaWNGaWVsZERhdGEtPntGaWVsZFR5cGV9LAogICAgICAgIE9iamVjdFR5cGUgPT4gJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfSwKICAgICAgICBDb25maWcgICAgID0+ICRGaWVsZENvbmZpZywKICAgICAgICBWYWxpZElEICAgID0+ICRHZXRQYXJhbXtWYWxpZElEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCB1cGRhdGUgdGhlIGZpZWxkICVzJywgJEdldFBhcmFte05hbWV9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gIkFjdGlvbj1BZG1pbkR5bmFtaWNGaWVsZCIsCiAgICApOwp9CgpzdWIgX1Nob3dTY3JlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RGlzcGxheUZpZWxkTmFtZX0gPSAnTmV3JzsKCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ2hhbmdlJyApIHsKICAgICAgICAkUGFyYW17U2hvd1dhcm5pbmd9ICAgICAgPSAnU2hvd1dhcm5pbmcnOwogICAgICAgICRQYXJhbXtEaXNwbGF5RmllbGROYW1lfSA9ICRQYXJhbXtOYW1lfTsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIGdldCBhbGwgZmllbGRzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiBvcmRlciBudW1iZXJzIChpcyBhbHJlYWR5IHNvcnRlZCkuCiAgICBteSBARHluYW1pY2ZpZWxkT3JkZXJMaXN0OwogICAgbXkgJUR5bmFtaWNmaWVsZE5hbWVzTGlzdDsKICAgIGZvciBteSAkRHluYW1pY2ZpZWxkICggQHskRHluYW1pY0ZpZWxkTGlzdH0gKSB7CiAgICAgICAgcHVzaCBARHluYW1pY2ZpZWxkT3JkZXJMaXN0LCAkRHluYW1pY2ZpZWxkLT57RmllbGRPcmRlcn07CiAgICAgICAgJER5bmFtaWNmaWVsZE5hbWVzTGlzdHsgJER5bmFtaWNmaWVsZC0+e0ZpZWxkT3JkZXJ9IH0gPSAkRHluYW1pY2ZpZWxkLT57TGFiZWx9OwogICAgfQoKICAgICMgd2hlbiBhZGRpbmcgd2UgbmVlZCB0byBjcmVhdGUgYW4gZXh0cmEgb3JkZXIgbnVtYmVyIGZvciB0aGUgbmV3IGZpZWxkCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQWRkJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIGxhc3QgZWxlbWVudCBmb3JtIHRoZSBvcmRlciBsaXN0IGFuZCBhZGQgMQogICAgICAgIG15ICRMYXN0T3JkZXJOdW1iZXIgPSAkRHluYW1pY2ZpZWxkT3JkZXJMaXN0Wy0xXTsKICAgICAgICAkTGFzdE9yZGVyTnVtYmVyKys7CgogICAgICAgICMgYWRkIHRoaXMgbmV3IG9yZGVyIG51bWJlciB0byB0aGUgZW5kIG9mIHRoZSBsaXN0CiAgICAgICAgcHVzaCBARHluYW1pY2ZpZWxkT3JkZXJMaXN0LCAkTGFzdE9yZGVyTnVtYmVyOwogICAgfQoKICAgICMgc2hvdyB0aGUgbmFtZXMgb2YgdGhlIG90aGVyIGZpZWxkcyB0byBlYXNlIG9yZGVyaW5nCiAgICBteSAlT3JkZXJOYW1lc0xpc3Q7CiAgICBteSAkQ3VycmVudGx5VGV4dCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudGx5JykgLiAnOiAnOwogICAgZm9yIG15ICRPcmRlck51bWJlciAoIHNvcnQgQER5bmFtaWNmaWVsZE9yZGVyTGlzdCApIHsKICAgICAgICAkT3JkZXJOYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSA9ICRPcmRlck51bWJlcjsKICAgICAgICBpZiAoICREeW5hbWljZmllbGROYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSAmJiAkT3JkZXJOdW1iZXIgbmUgJFBhcmFte0ZpZWxkT3JkZXJ9ICkgewogICAgICAgICAgICAkT3JkZXJOYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSA9ICRPcmRlck51bWJlciAuICcgLSAnCiAgICAgICAgICAgICAgICAuICRDdXJyZW50bHlUZXh0CiAgICAgICAgICAgICAgICAuICREeW5hbWljZmllbGROYW1lc0xpc3R7JE9yZGVyTnVtYmVyfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT3JkZXJTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJU9yZGVyTmFtZXNMaXN0LAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0ZpZWxkT3JkZXInLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0ZpZWxkT3JkZXJ9IHx8IDEsCiAgICAgICAgUG9zc2libGVOb25lICA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICAgICBTb3J0ICAgICAgICAgID0+ICdOdW1lcmljS2V5JywKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdXNzVwYyBWYWxpZGF0ZV9OdW1iZXInLAogICAgKTsKCiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwoKICAgICMgY3JlYXRlIHRoZSBWYWxpZGl0eSBzZWxlY3QKICAgIG15ICRWYWxpZGl0eVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdWYWxpZElEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1ZhbGlkSUR9IHx8IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdXNTBwYycsCiAgICApOwoKICAgICMgY3JlYXRlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdGVtcGxhdGUKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1ZhbHVlVGVtcGxhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFJlYWRvbmx5SW50ZXJuYWxGaWVsZCA9ICcnOwoKICAgICMgSW50ZXJuYWwgZmllbGRzIGNhbiBub3QgYmUgZGVsZXRlZCBhbmQgbmFtZSBzaG91bGQgbm90IGNoYW5nZS4KICAgIGlmICggJFBhcmFte0ludGVybmFsRmllbGR9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdJbnRlcm5hbEZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgICRSZWFkb25seUludGVybmFsRmllbGQgPSAncmVhZG9ubHk9InJlYWRvbmx5Iic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBWYWxpZGl0eVN0cmcgICAgICAgICAgPT4gJFZhbGlkaXR5U3RyZywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkT3JkZXJTdHJnID0+ICREeW5hbWljRmllbGRPcmRlclN0cmcsCiAgICAgICAgICAgIFJlYWRvbmx5SW50ZXJuYWxGaWVsZCA9PiAkUmVhZG9ubHlJbnRlcm5hbEZpZWxkLAogICAgICAgIH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFByZU1hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBwcmV2ZW50IHVzZWQgb25jZSB3YXJuaW5nCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkbyBvbmx5IHVzZSB0aGlzIGluIHBob25lIGFuZCBlbWFpbCB0aWNrZXQKICAgIHJldHVybiBpZiAoICRTZWxmLT57QWN0aW9ufSAhfiAvXkFnZW50VGlja2V0KEVtYWlsfFBob25lKSQvICk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbWFzdGVyL3NsYXZlIGR5bmFtaWMgZmllbGQKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpIHx8ICcnOwoKICAgICMgcmV0dXJuIGlmIG5vIGNvbmZpZyBvcHRpb24gaXMgdXNlZAogICAgcmV0dXJuIGlmICEkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQ7CgogICAgIyBzZXQgZHluYW1pYyBmaWVsZCBhcyBzaG93bgogICAgJENvbmZpZ09iamVjdC0+eyJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0ifS0+e0R5bmFtaWNGaWVsZH0tPnskTWFzdGVyU2xhdmVEeW5hbWljRmllbGR9ID0gMTsKCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojICRvcmlnaW46IG90cnMgLSBjYmNkMjljZDAwZTE5NjU4YjQ4ZGUwMTUzZmQ2OTEwZGYxYmZjZjVhIC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24ucG0KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCiNwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRUaWNrZXRBY3Rpb25Db21tb247CgojIFRoaXMgbW9kdWxlIHVzZXMgQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gYXMgYSBiYXNlLCBmb3IgZWFzeSB1cGRhdGUgYW5kIGZyYW1ld29yayBjb21wYXRpYmlsaXR5CiMgc3BlY2lhbCBtYXJrZXJzIGhhcyBiZWVuIHNldCBhbG9uZyB0aGUgZmlsZSB0byBlYXN5IHNwb3QgdGhlIGRpZmZlcmVuY2VzIGludHJvZHVjZWQgYnkKIyBPVFJTTWFzdGVyU2xhdmUgcGFja2FnZQpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZTsKIyAtLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXI7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBUcnkgdG8gbG9hZCBkcmFmdCBpZiByZXF1ZXN0ZWQuCiAgICBpZiAoCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0Zvcm1EcmFmdH0KICAgICAgICAmJiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnTG9hZEZvcm1EcmFmdCcgKQogICAgICAgICYmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtRHJhZnRJRCcgKQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+TG9hZEZvcm1EcmFmdCgKICAgICAgICAgICAgRm9ybURyYWZ0SUQgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1EcmFmdElEJyApLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBhcnRpY2xlIGZvciB3aG9tIHRoaXMgc2hvdWxkIGJlIGEgcmVwbHksIGlmIGF2YWlsYWJsZQogICAgbXkgJFJlcGx5VG9BcnRpY2xlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JlcGx5VG9BcnRpY2xlJyApIHx8ICcnOwogICAgbXkgJFRpY2tldElEICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1RpY2tldElEJyApICAgICAgIHx8ICcnOwoKICAgICMgY2hlY2sgaWYgUmVwbHlUb0FydGljbGUgcmVhbGx5IGJlbG9uZ3MgdG8gdGhlIHRpY2tldAogICAgbXkgJVJlcGx5VG9BcnRpY2xlQ29udGVudDsKICAgIG15IEBSZXBseVRvQWRyZXNzZXM7CiAgICBpZiAoJFJlcGx5VG9BcnRpY2xlKSB7CgogICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckFydGljbGUoCiAgICAgICAgICAgIFRpY2tldElEICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIEFydGljbGVJRCA9PiAkUmVwbHlUb0FydGljbGUsCiAgICAgICAgKTsKICAgICAgICAlUmVwbHlUb0FydGljbGVDb250ZW50ID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgQXJ0aWNsZUlEICAgICA9PiAkUmVwbHlUb0FydGljbGUsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSAgICAgICAgPSAkUmVwbHlUb0FydGljbGU7CiAgICAgICAgJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9ID0gXCVSZXBseVRvQXJ0aWNsZUNvbnRlbnQ7CgogICAgICAgICMgZ2V0IHNlbmRlciBvZiBvcmlnaW5hbCBub3RlICh0byBpbmZvcm0gc2VuZGVyIGFib3V0IGFuc3dlcikKICAgICAgICBpZiAoICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7Q3JlYXRlQnl9ICkgewogICAgICAgICAgICBteSBAUmVwbHlUb1NlbmRlcklEID0gKCAkUmVwbHlUb0FydGljbGVDb250ZW50e0NyZWF0ZUJ5fSApOwogICAgICAgICAgICAkU2VsZi0+e1JlcGx5VG9TZW5kZXJVc2VySUR9ID0gXEBSZXBseVRvU2VuZGVySUQ7CiAgICAgICAgfQoKICAgICAgICAjIGlmIGFydGljbGUgYmVsb25ncyB0byBvdGhlciB0aWNrZXQsIGRvbid0IHVzZSBpdCBhcyByZXBseQogICAgICAgIGlmICggJFJlcGx5VG9BcnRpY2xlQ29udGVudHtUaWNrZXRJRH0gbmUgJFNlbGYtPntUaWNrZXRJRH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57UmVwbHlUb0FydGljbGV9ID0gIiI7CiAgICAgICAgfQoKICAgICAgICAjIGlmIGFydGljbGUgaXMgbm90IG9mIHR5cGUgbm90ZS1pbnRlcm5hbCwgZG9uJ3QgdXNlIGl0IGFzIHJlcGx5CiAgICAgICAgaWYgKAogICAgICAgICAgICAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkNoYW5uZWxOYW1lR2V0KCkgbmUgJ0ludGVybmFsJwogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkNoYW5uZWxOYW1lR2V0KCkgZXEgJ0ludGVybmFsJwogICAgICAgICAgICAgICAgJiYgJFJlcGx5VG9BcnRpY2xlQ29udGVudHtTZW5kZXJUeXBlfSBuZSAnYWdlbnQnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gPSAiIjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZm9ybSBpZAogICAgJFNlbGYtPntGb3JtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKS0+Rm9ybUlEQ3JlYXRlKCk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkU2VsZi0+e1RpY2tldElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUaWNrZXRJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfQogICAgKTsKCiAgICAjIGVycm9yIHNjcmVlbiwgZG9uJ3Qgc2hvdyB0aWNrZXQKICAgIGlmICggISRBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdZb3UgbmVlZCAlcyBwZXJtaXNzaW9ucyEnLCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEFDTCByZXN0cmljdGlvbnMKICAgIG15ICVQb3NzaWJsZUFjdGlvbnMgPSAoIDEgPT4gJFNlbGYtPntBY3Rpb259ICk7CgogICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlUG9zc2libGVBY3Rpb25zLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICctJywKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBteSAlQWNsQWN0aW9uID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsQWN0aW9uRGF0YSgpOwoKICAgICMgY2hlY2sgaWYgQUNMIHJlc3RyaWN0aW9ucyBleGlzdAogICAgaWYgKCAkQUNMIHx8IElzSGFzaFJlZldpdGhEYXRhKCBcJUFjbEFjdGlvbiApICkgewoKICAgICAgICBteSAlQWNsQWN0aW9uTG9va3VwID0gcmV2ZXJzZSAlQWNsQWN0aW9uOwoKICAgICAgICAjIHNob3cgZXJyb3Igc2NyZWVuIGlmIEFDTCBwcm9oaWJpdHMgdGhpcyBhY3Rpb24KICAgICAgICBpZiAoICEkQWNsQWN0aW9uTG9va3VweyAkU2VsZi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIGZvciBmYWlsZWQgZHJhZnQgbG9hZGluZyByZXF1ZXN0LgogICAgaWYgKAogICAgICAgICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMb2FkRm9ybURyYWZ0JyApCiAgICAgICAgJiYgISRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0xvYWRpbmcgZHJhZnQgZmFpbGVkIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBteSAkTG9hZGVkRm9ybURyYWZ0OwogICAgaWYgKCAkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfSApIHsKICAgICAgICAkTG9hZGVkRm9ybURyYWZ0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZvcm1EcmFmdCcpLT5Gb3JtRHJhZnRHZXQoCiAgICAgICAgICAgIEZvcm1EcmFmdElEID0+ICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9LAogICAgICAgICAgICBHZXRDb250ZW50ICA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgQEFydGljbGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5BcnRpY2xlTGlzdCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIE9ubHlMYXN0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKEBBcnRpY2xlcykgewogICAgICAgICAgICBteSAkTGFzdEFydGljbGUgPSAkQXJ0aWNsZXNbMF07CgogICAgICAgICAgICBteSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lOwogICAgICAgICAgICBpZiAoICRMYXN0QXJ0aWNsZS0+e0NyZWF0ZVRpbWV9ICkgewogICAgICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlU3lzdGVtVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRMYXN0QXJ0aWNsZS0+e0NyZWF0ZVRpbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJExhc3RBcnRpY2xlU3lzdGVtVGltZSA9ICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWVPYmplY3QtPlRvRXBvY2goKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdFN5c3RlbVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkTG9hZGVkRm9ybURyYWZ0LT57Q2hhbmdlVGltZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkRm9ybURyYWZ0U3lzdGVtVGltZSA9ICRGb3JtRHJhZnRTeXN0ZW1UaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CgogICAgICAgICAgICBpZiAoICEkTGFzdEFydGljbGVTeXN0ZW1UaW1lIHx8ICRGb3JtRHJhZnRTeXN0ZW1UaW1lIDw9ICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17Rm9ybURyYWZ0T3V0ZGF0ZWR9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRMb2FkZWRGb3JtRHJhZnQpICkgewoKICAgICAgICAkTG9hZGVkRm9ybURyYWZ0LT57Q2hhbmdlQnlOYW1lfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJExvYWRlZEZvcm1EcmFmdC0+e0NoYW5nZUJ5fSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXMnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGb3JtRHJhZnQgICAgICA9PiAkQ29uZmlnLT57Rm9ybURyYWZ0fSwKICAgICAgICAgICAgRm9ybURyYWZ0SUQgICAgPT4gJFNlbGYtPntMb2FkZWRGb3JtRHJhZnRJRH0sCiAgICAgICAgICAgIEZvcm1EcmFmdFRpdGxlID0+ICRMb2FkZWRGb3JtRHJhZnQgPyAkTG9hZGVkRm9ybURyYWZ0LT57VGl0bGV9IDogJycsCiAgICAgICAgICAgIEZvcm1EcmFmdE1ldGEgID0+ICRMb2FkZWRGb3JtRHJhZnQsCiAgICAgICAgICAgIEZvcm1JRCAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgUmVwbHlUb0FydGljbGUgPT4gJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0sCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgcmlnaHQgaGVhZGVyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdIZWFkZXInIC4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlVGlja2V0LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IGxvY2sgc3RhdGUKICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgaWYgKCAhJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja0dldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKSApIHsKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja1NldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgTmV3VXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyBsb2NrIHN0YXRlCiAgICAgICAgICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHJvcGVydGllc0xvY2snLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRBY2Nlc3NPayApIHsKICAgICAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRUaWNrZXR7TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPldhcm5pbmcoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1NvcnJ5LCB5b3UgbmVlZCB0byBiZSB0aGUgdGlja2V0IG93bmVyIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uJyksCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjaGFuZ2UgdGhlIG93bmVyIGZpcnN0LicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IGJhY2sgbGluawogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldEJhY2snLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0QmFjaycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgIE5ld1N0YXRlSUQgTmV3UHJpb3JpdHlJRCBUaW1lVW5pdHMgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgVGl0bGUgQm9keSBTdWJqZWN0IE5ld1F1ZXVlSUQKICAgICAgICBZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSBOZXdPd25lcklEIE5ld1Jlc3BvbnNpYmxlSUQgVHlwZUlEIFNlcnZpY2VJRCBTTEFJRAogICAgICAgIEV4cGFuZCBSZXBseVRvQXJ0aWNsZSBTdGFuZGFyZFRlbXBsYXRlSUQgQ3JlYXRlQXJ0aWNsZSBGb3JtRHJhZnRJRCBUaXRsZQogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgfQoKICAgICMgQUNMIGNvbXBhdGliaWxpdHkgdHJhbnNsYXRpb24KICAgIG15ICVBQ0xDb21wYXRHZXRQYXJhbSA9ICgKICAgICAgICBTdGF0ZUlEICAgICAgID0+ICRHZXRQYXJhbXtTdGF0ZUlEfSwKICAgICAgICBQcmlvcml0eUlEICAgID0+ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSwKICAgICAgICBRdWV1ZUlEICAgICAgID0+ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICBPd25lcklEICAgICAgID0+ICRHZXRQYXJhbXtOZXdPd25lcklEfSwKICAgICAgICBSZXNwb25zaWJsZUlEID0+ICRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCB2YWx1ZXMgZm9ybSBodHRwIHJlcXVlc3QKICAgIG15ICVEeW5hbWljRmllbGRWYWx1ZXM7CgogICAgIyBkZWZpbmUgdGhlIGR5bmFtaWMgZmllbGRzIHRvIHNob3cgYmFzZWQgb24gdGhlIG9iamVjdCB0eXBlCiAgICBteSAkT2JqZWN0VHlwZSA9IFsnVGlja2V0J107CiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCiAgICAjIGdldCBtYXN0ZXIvc2xhdmUgZHluYW1pYyBmaWVsZAogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykgfHwgJyc7CiAgICBteSAkTWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQnKSB8fCAwOwojIC0tLQoKICAgICMgb25seSBzY3JlZW5zIHRoYXQgYWRkIG5vdGVzIGNhbiBtb2RpZnkgQXJ0aWNsZSBkeW5hbWljIGZpZWxkcwogICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gKSB7CiAgICAgICAgJE9iamVjdFR5cGUgPSBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXTsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICBpZiAoJE1hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkKSB7CiAgICAgICAgICAgICRDb25maWctPntEeW5hbWljRmllbGR9LT57JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSA9IDE7CiAgICAgICAgfQojIC0tLQogICAgfQoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIG15ICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAkT2JqZWN0VHlwZSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMgaW50byBhIHN0cnVjdHVyZSBmb3IgQUNMcwogICAgbXkgJUR5bmFtaWNGaWVsZEFDTFBhcmFtZXRlcnM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZEl0ZW0gKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZEl0ZW07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIWRlZmluZWQgJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkSXRlbX07CgogICAgICAgICREeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkSXRlbSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkSXRlbX07CiAgICB9CiAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IFwlRHluYW1pY0ZpZWxkQUNMUGFyYW1ldGVyczsKCiAgICAjIHRyYW5zZm9ybSBwZW5kaW5nIHRpbWUsIHRpbWUgc3RhbXAgYmFzZWQgb24gdXNlciB0aW1lIHpvbmUKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRHZXRQYXJhbXtZZWFyfQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte01vbnRofQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte0RheX0KICAgICAgICAmJiBkZWZpbmVkICRHZXRQYXJhbXtIb3VyfQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte01pbnV0ZX0KICAgICAgICApCiAgICB7CiAgICAgICAgJUdldFBhcmFtID0gJExheW91dE9iamVjdC0+VHJhbnNmb3JtRGF0ZVNlbGVjdGlvbigKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXdyYXAgYm9keSBpZiBubyByaWNoIHRleHQgaXMgdXNlZAogICAgaWYgKCAkR2V0UGFyYW17Qm9keX0gJiYgISRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICRHZXRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPldyYXBQbGFpblRleHQoCiAgICAgICAgICAgIE1heENoYXJhY3RlcnMgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUnKSwKICAgICAgICAgICAgUGxhaW5UZXh0ICAgICA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1cGxvYWQgY2FjaGUgb2JqZWN0CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgIGlmICgKICAgICAgICAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N0b3JlJwogICAgICAgIHx8ICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9CiAgICAgICAgKQogICAgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N0b3JlJyApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwogICAgICAgIH0KCiAgICAgICAgJEdldFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSAvLz0gMDsKCiAgICAgICAgIyBzdG9yZSBhY3Rpb24KICAgICAgICBteSAlRXJyb3I7CgogICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBhbmQgdmFsaWRhdGUgZHJhZnQgYWN0aW9uLgogICAgICAgIG15ICRGb3JtRHJhZnRBY3Rpb24gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybURyYWZ0QWN0aW9uJyApOwogICAgICAgIGlmICggJEZvcm1EcmFmdEFjdGlvbiAmJiAhJENvbmZpZy0+e0Zvcm1EcmFmdH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdGb3JtRHJhZnQgZnVuY3Rpb25hbGl0eSBkaXNhYmxlZCEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVGb3JtRHJhZnRSZXNwb25zZTsKCiAgICAgICAgIyBDaGVjayBkcmFmdCBuYW1lLgogICAgICAgIGlmICgKICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbgogICAgICAgICAgICAmJiAoICRGb3JtRHJhZnRBY3Rpb24gZXEgJ0FkZCcgfHwgJEZvcm1EcmFmdEFjdGlvbiBlcSAnVXBkYXRlJyApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtRHJhZnRUaXRsZScgKTsKCiAgICAgICAgICAgICMgQSBkcmFmdCBuYW1lIGlzIHJlcXVpcmVkLgogICAgICAgICAgICBpZiAoICEkVGl0bGUgKSB7CgogICAgICAgICAgICAgICAgJUZvcm1EcmFmdFJlc3BvbnNlID0gKAogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgiRHJhZnQgbmFtZSBpcyByZXF1aXJlZCEiKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ2hvc2VuIGRyYWZ0IG5hbWUgbXVzdCBiZSB1bmlxdWUuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEZvcm1EcmFmdExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Rm9ybURyYWZ0JyktPkZvcm1EcmFmdExpc3RHZXQoCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIERSQUZUOgogICAgICAgICAgICAgICAgZm9yIG15ICRGb3JtRHJhZnQgKCBAeyRGb3JtRHJhZnRMaXN0fSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBObyBleGlzdGluZyBkcmFmdCB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUIGlmICRUaXRsZSBuZSAkRm9ybURyYWZ0LT57VGl0bGV9OwoKICAgICAgICAgICAgICAgICAgICAjIFNhbWUgbmFtZSBmb3IgdXBkYXRlIG9uIGV4aXN0aW5nIGRyYWZ0LgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkRm9ybURyYWZ0QWN0aW9uIGVxICdVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gZXEgJEZvcm1EcmFmdC0+e0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBBbm90aGVyIGRyYWZ0IHdpdGggdGhlIGNob3NlbiBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgICAgICAgICAgICAgICAgICVGb3JtRHJhZnRSZXNwb25zZSA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAiRm9ybURyYWZ0IG5hbWUgJXMgaXMgYWxyZWFkeSBpbiB1c2UhIiwgJFRpdGxlICksCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBsYXN0IERSQUZUOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFBlcmZvcm0gZHJhZnQgYWN0aW9uIGluc3RlYWQgb2Ygc2F2aW5nIGZvcm0gZGF0YSBpbiB0aWNrZXQvYXJ0aWNsZS4KICAgICAgICBpZiAoICRGb3JtRHJhZnRBY3Rpb24gJiYgISVGb3JtRHJhZnRSZXNwb25zZSApIHsKCiAgICAgICAgICAgICMgUmVzZXQgRm9ybURyYWZ0SUQgdG8gcHJldmVudCB1cGRhdGluZyBleGlzdGluZyBkcmFmdC4KICAgICAgICAgICAgaWYgKCAkRm9ybURyYWZ0QWN0aW9uIGVxICdBZGQnICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gKSB7CiAgICAgICAgICAgICAgICAkUGFyYW1PYmplY3QtPntRdWVyeX0tPnBhcmFtKAogICAgICAgICAgICAgICAgICAgIC1uYW1lICA9PiAnRm9ybURyYWZ0SUQnLAogICAgICAgICAgICAgICAgICAgIC12YWx1ZSA9PiAnJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGb3JtRHJhZnRBY3Rpb25PazsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbiBlcSAnQWRkJwogICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgICggJEZvcm1EcmFmdEFjdGlvbiBlcSAnVXBkYXRlJyAmJiAkR2V0UGFyYW17Rm9ybURyYWZ0SUR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbk9rID0gJFBhcmFtT2JqZWN0LT5TYXZlRm9ybURyYWZ0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlICAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBPdmVycmlkZVBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlcGx5VG9BcnRpY2xlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJEZvcm1EcmFmdEFjdGlvbk9rKSB7CiAgICAgICAgICAgICAgICAkRm9ybURyYWZ0UmVzcG9uc2V7U3VjY2Vzc30gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJUZvcm1EcmFmdFJlc3BvbnNlID0gKAogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHBlcmZvcm0gcmVxdWVzdGVkIGRyYWZ0IGFjdGlvbiEnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCVGb3JtRHJhZnRSZXNwb25zZSkgewoKICAgICAgICAgICAgIyBidWlsZCBKU09OIG91dHB1dAogICAgICAgICAgICBteSAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlRm9ybURyYWZ0UmVzcG9uc2UsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHN0YXRlIG9iamVjdAogICAgICAgIG15ICRTdGF0ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpOwoKICAgICAgICAjIGNoZWNrIHBlbmRpbmcgdGltZQogICAgICAgIGlmICggJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICBteSAlU3RhdGVEYXRhID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgICAgIElEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgc3RhdGUgdHlwZQogICAgICAgICAgICBpZiAoICRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9ecGVuZGluZy9pICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICAgICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnsnRGF0ZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY3JlYXRlIGRhdGV0aW1lIG9iamVjdAogICAgICAgICAgICAgICAgbXkgJFBlbmRpbmdEYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmQgPT4gMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBjdXJyZW50IHN5c3RlbSBlcG9jaAogICAgICAgICAgICAgICAgbXkgJEN1clN5c3RlbURhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBkYXRlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgISRQZW5kaW5nRGF0ZVRpbWVPYmplY3QKICAgICAgICAgICAgICAgICAgICB8fCAkUGVuZGluZ0RhdGVUaW1lT2JqZWN0IDwgJEN1clN5c3RlbURhdGVUaW1lT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsnRGF0ZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e05vdGV9ICYmICRDb25maWctPntOb3RlTWFuZGF0b3J5fSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgc3ViamVjdAogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17U3ViamVjdH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J1N1YmplY3RJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGJvZHkKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte0JvZHl9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeydCb2R5SW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBvd25lcgogICAgICAgIGlmICggJENvbmZpZy0+e093bmVyfSAmJiAkQ29uZmlnLT57T3duZXJNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3T3duZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld093bmVySW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayByZXNwb25zaWJsZQogICAgICAgIGlmICggJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSAmJiAkQ29uZmlnLT57UmVzcG9uc2libGVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld1Jlc3BvbnNpYmxlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB0aXRsZQogICAgICAgIGlmICggJENvbmZpZy0+e1RpdGxlfSAmJiAhJEdldFBhcmFte1RpdGxlfSApIHsKICAgICAgICAgICAgJEVycm9yeydUaXRsZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHR5cGUKICAgICAgICBpZiAoCiAgICAgICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSApCiAgICAgICAgICAgICYmCiAgICAgICAgICAgICggJENvbmZpZy0+e1RpY2tldFR5cGV9ICkgJiYKICAgICAgICAgICAgKCAhJEdldFBhcmFte1R5cGVJRH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRXJyb3J7J1R5cGVJREludmFsaWQnfSA9ICcgU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBzZXJ2aWNlCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpCiAgICAgICAgICAgICYmICRDb25maWctPntTZXJ2aWNlfQogICAgICAgICAgICAmJiAkR2V0UGFyYW17U0xBSUR9CiAgICAgICAgICAgICYmICEkR2V0UGFyYW17U2VydmljZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRXJyb3J7J1NlcnZpY2VJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbWFuZGF0b3J5IHNlcnZpY2UKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2V9CiAgICAgICAgICAgICYmICRDb25maWctPntTZXJ2aWNlTWFuZGF0b3J5fQogICAgICAgICAgICAmJiAhJEdldFBhcmFte1NlcnZpY2VJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEVycm9yeydTZXJ2aWNlSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG1hbmRhdG9yeSBzbGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2V9CiAgICAgICAgICAgICYmICRDb25maWctPntTTEFNYW5kYXRvcnl9CiAgICAgICAgICAgICYmICEkR2V0UGFyYW17U0xBSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnU0xBSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG1hbmRhdG9yeSBxdWV1ZQogICAgICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSAmJiAkQ29uZmlnLT57UXVldWVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3UXVldWVJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld1F1ZXVlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBtYW5kYXRvcnkgc3RhdGUKICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gJiYgJENvbmZpZy0+e1N0YXRlTWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeydOZXdTdGF0ZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdGltZSB1bml0cywgYnV0IG9ubHkgaWYgdGhlIGN1cnJlbnQgc2NyZWVuIGhhcyBhIG5vdGUKICAgICAgICAjICAgKGFjY291bnRlZCB0aW1lIGNhbiBvbmx5IGJlIHN0b3JlZCBpZiBhbmQgYXJ0aWNsZSBpcyBnZW5lcmF0ZWQpCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e05vdGV9CiAgICAgICAgICAgICYmICRHZXRQYXJhbXtUaW1lVW5pdHN9IGVxICcnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnVGltZVVuaXRzSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGV4cGFuZAogICAgICAgIGlmICggJEdldFBhcmFte0V4cGFuZH0gKSB7CiAgICAgICAgICAgICVFcnJvciA9ICgpOwogICAgICAgICAgICAkRXJyb3J7RXhwYW5kfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBodG1sIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15IEBUaWNrZXRUeXBlRHluYW1pY0ZpZWxkczsKICAgICAgICBteSBAQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRzOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgISRNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZAogICAgICAgICAgICAgICAgJiYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQojIC0tLQoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJXskUG9zc2libGVWYWx1ZXN9OwogICAgICAgICAgICAgICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICAgICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICRQb3NzaWJsZVZhbHVlcy0+eyRffSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVmFsaWRhdGlvblJlc3VsdDsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkICkgewogICAgICAgICAgICAgICAkUG9zc2libGVWYWx1ZXNGaWx0ZXIgPSAkU2VsZi0+X0dldE1hc3RlclNsYXZlRGF0YSgKICAgICAgICAgICAgICAgIFRpY2tldCA9PiBcJVRpY2tldCwKICAgICAgICAgICAgICAgIE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQojIC0tLQoKICAgICAgICAgICAgIyBEbyBub3QgdmFsaWRhdGUgb25seSBpZiBvYmplY3QgdHlwZSBpcyBBcnRpY2xlIGFuZCBDcmVhdGVBcnRpY2xlIHZhbHVlIGlzIG5vdCBkZWZpbmVkLgogICAgICAgICAgICBpZiAoICEoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnQXJ0aWNsZScgJiYgISRHZXRQYXJhbXtDcmVhdGVBcnRpY2xlfSApICkgewoKICAgICAgICAgICAgICAgICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkVmFsaWRhdGlvblJlc3VsdCkgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IHBlcmZvcm0gdmFsaWRhdGlvbiBvbiBmaWVsZCAlcyEnLCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFByb3BhZ2F0ZSB2YWxpZGF0aW9uIGVycm9yIHRvIHRoZSBFcnJvciB2YXJpYWJsZSB0byBiZSBkZXRlY3RlZCBieSB0aGUgZnJvbnRlbmQuCiAgICAgICAgICAgICAgICBpZiAoICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdUaWNrZXQnICkgewoKICAgICAgICAgICAgICAgICMgR2V0IGZpZWxkIGh0bWwuCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgICAgICAgICAgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntFcnJvck1lc3NhZ2V9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSAgICAgICAgICAgID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgICA9PiAkU2VsZi0+X0dldEZpZWxkc1RvVXBkYXRlKCksCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQFRpY2tldFR5cGVEeW5hbWljRmllbGRzLCB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnQXJ0aWNsZScgKSB7CiAgICAgICAgICAgICAgICBteSAkQ2xhc3MgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICAgICAgbXkgJE1hbmRhdG9yeVRvb2x0aXAgPSAwOwoKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzcyAgICAgICAgICAgID0gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJE1hbmRhdG9yeVRvb2x0aXAgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEdldCBmaWVsZCBodG1sLgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFNlcnZlckVycm9yICAgICAgICAgID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnkgICAgICAgICAgICA9PiAoICRDbGFzcyBlcSAnVmFsaWRhdGVfUmVxdWlyZWQnICkgPyAxIDogMCwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgICA9PiAkU2VsZi0+X0dldEZpZWxkc1RvVXBkYXRlKCksCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEFydGljbGVUeXBlRHluYW1pY0ZpZWxkcywgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnlUb29sdGlwID0+ICRNYW5kYXRvcnlUb29sdGlwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc2F2ZSBmb3JtIGlmIGEgZHJhZnQgd2FzIGxvYWRlZC4KICAgICAgICBpZiAoICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9ICkgewogICAgICAgICAgICAlRXJyb3IgPSAoIExvYWRlZEZvcm1EcmFmdCA9PiAxICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGVycm9ycwogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgVGltZVVuaXRzUmVxdWlyZWQgPT4gKAogICAgICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICAgICAgICAgID8gJ1ZhbGlkYXRlX1JlcXVpcmVkJwogICAgICAgICAgICAgICAgICAgIDogJycKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAgICAgVGlja2V0VHlwZUR5bmFtaWNGaWVsZHMgID0+IFxAVGlja2V0VHlwZUR5bmFtaWNGaWVsZHMsCiAgICAgICAgICAgICAgICBBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHMgPT4gXEBBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHMsCgogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdGl0bGUKICAgICAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgPT4gJEdldFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdHlwZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSAmJiAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1R5cGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCAgID0+ICRHZXRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBzZXJ2aWNlCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VydmljZVNldCgKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUFDTENvbXBhdEdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgID0+ICRHZXRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtTTEFJRH0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTTEFTZXQoCiAgICAgICAgICAgICAgICAgICAgU0xBSUQgICAgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkVW5sb2NrT25Bd2F5ID0gMTsKCiAgICAgICAgIyBtb3ZlIHRpY2tldCB0byBhIG5ldyBxdWV1ZSwgYnV0IG9ubHkgaWYgdGhlIHF1ZXVlIHdhcyBjaGFuZ2VkCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnLT57UXVldWV9CiAgICAgICAgICAgICYmICRHZXRQYXJhbXtOZXdRdWV1ZUlEfQogICAgICAgICAgICAmJiAkR2V0UGFyYW17TmV3UXVldWVJRH0gbmUgJFRpY2tldHtRdWV1ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBtb3ZlIHRpY2tldCAoc2VuZCBub3RpZmljYXRpb24gaWYgbm8gbmV3IG93bmVyIGlzIHNlbGVjdGVkKQogICAgICAgICAgICBteSAkQm9keUFzVGV4dCA9ICcnOwogICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgJEJvZHlBc1RleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8IDAsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEJvZHlBc1RleHQgPSAkR2V0UGFyYW17Qm9keX0gfHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkTW92ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFF1ZXVlU2V0KAogICAgICAgICAgICAgICAgUXVldWVJRCAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gJEdldFBhcmFte05ld1VzZXJJRH0sCiAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgICAgICAgPT4gJEJvZHlBc1RleHQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRNb3ZlICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBvd25lcgogICAgICAgIG15IEBOb3RpZnlEb25lOwogICAgICAgIGlmICggJENvbmZpZy0+e093bmVyfSApIHsKICAgICAgICAgICAgbXkgJEJvZHlUZXh0ID0gJExheW91dE9iamVjdC0+UmljaFRleHQyQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtOZXdPd25lcklEfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkR2V0UGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCAgID0+ICRCb2R5VGV4dCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkVW5sb2NrT25Bd2F5ID0gMDsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgb3duZXIgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3T3duZXJJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyByZXNwb25zaWJsZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgICAgICAgICBteSAkQm9keVRleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgTmV3VXNlcklEID0+ICRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgPT4gJEJvZHlUZXh0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgcmVzcG9uc2libGUgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIG5vdGUKICAgICAgICBteSAkQXJ0aWNsZUlEID0gJyc7CiAgICAgICAgbXkgJFJldHVyblVSTDsKCiAgICAgICAgIyBzZXQgcHJpb3JpdHkKICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gJiYgJEdldFBhcmFte05ld1ByaW9yaXR5SUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBQcmlvcml0eUlEID0+ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgc3RhdGUKICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gJiYgJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1bmxvY2sgdGhlIHRpY2tldCBhZnRlciBjbG9zZQogICAgICAgICAgICBteSAlU3RhdGVEYXRhID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgICAgIElEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHVubG9jayBvbiBjbG9zZSBzdGF0ZQogICAgICAgICAgICBpZiAoICRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9eY2xvc2UvaSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgcGVuZGluZyB0aW1lIG9uIHBlbmRpbmcgc3RhdGUKICAgICAgICAgICAgZWxzaWYgKCAkU3RhdGVEYXRhe1R5cGVOYW1lfSA9fiAvXnBlbmRpbmcvaSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBwZW5kaW5nIHRpbWUKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlZGlyZWN0IHBhcmVudCB3aW5kb3cgdG8gbGFzdCBzY3JlZW4gb3ZlcnZpZXcgb24gY2xvc2VkIHRpY2tldHMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15jbG9zZS9pCiAgICAgICAgICAgICAgICAmJiAhJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpSZWRpcmVjdEFmdGVyQ2xvc2VEaXNhYmxlZCcpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRSZXR1cm5VUkwgPSAkU2VsZi0+e0xhc3RTY3JlZW5PdmVydmlld30gfHwgJ0FjdGlvbj1BZ2VudERhc2hib2FyZCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte0NyZWF0ZUFydGljbGV9CiAgICAgICAgICAgICYmICRDb25maWctPntOb3RlfQogICAgICAgICAgICAmJiAoICRHZXRQYXJhbXtTdWJqZWN0fSB8fCAkR2V0UGFyYW17Qm9keX0gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte1N1YmplY3R9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3ViamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1YmplY3QgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRDb25maWctPntTdWJqZWN0fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtTdWJqZWN0fSA9ICRTdWJqZWN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJEdldFBhcmFte1N1YmplY3R9CiAgICAgICAgICAgICAgICAgICAgfHwgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyBzdWJqZWN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHByZSBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCBzdWJtaXQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCVVcGxvYWRTdHVmZikgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudHMsIFwlVXBsb2FkU3R1ZmY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRNaW1lVHlwZSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICRNaW1lVHlwZSA9ICd0ZXh0L2h0bWwnOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHVudXNlZCBpbmxpbmUgaW1hZ2VzCiAgICAgICAgICAgICAgICBteSBATmV3QXR0YWNobWVudERhdGE7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElEID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID1+IC9pbWFnZS9pICkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSBlcSAnaW5saW5lJyApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50SURIVE1MUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3b3JrYXJvdW5kIGZvciBsaW5rIGVuY29kZSBvZiByaWNoIHRleHQgZWRpdG9yLCBzZWUgYnVnIzUwNTMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17Qm9keX0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWdub3JlIGF0dGFjaG1lbnQgaWYgbm90IGxpbmtlZCBpbiBib2R5CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0JvZHl9ICF+IC8oXFEkQ29udGVudElESFRNTFF1b3RlXEV8XFEkQ29udGVudElEXEUpL2k7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGlubGluZSBpbWFnZXMgYW5kIG5vcm1hbCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIHB1c2ggQE5ld0F0dGFjaG1lbnREYXRhLCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAQXR0YWNobWVudHMgPSBATmV3QXR0YWNobWVudERhdGE7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaHRtbCBkb2N1bWVudAogICAgICAgICAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRnJvbSA9ICJcIiRTZWxmLT57VXNlckZ1bGxuYW1lfVwiIDwkU2VsZi0+e1VzZXJFbWFpbH0+IjsKICAgICAgICAgICAgbXkgQE5vdGlmeVVzZXJJRHM7CgogICAgICAgICAgICAjIGdldCBsaXN0IG9mIHVzZXJzIHRoYXQgd2lsbCBiZSBpbmZvcm1lZCB3aXRob3V0IHNlbGVjdGlvbiBpbiBpbmZvcm1lZC9pbnZvbHZlZCBsaXN0CiAgICAgICAgICAgIG15IEBVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24KICAgICAgICAgICAgICAgID0gc3BsaXQoICcsJywgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1VzZXJMaXN0V2l0aG91dFNlbGVjdGlvbicgKSB8fCAiIiApOwoKICAgICAgICAgICAgIyBnZXQgaW5mb3JtIHVzZXIgbGlzdAogICAgICAgICAgICBteSBASW5mb3JtVXNlcklEID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0luZm9ybVVzZXJJRCcgKTsKCiAgICAgICAgICAgICMgZ2V0IGludm9sdmVkIHVzZXIgbGlzdAogICAgICAgICAgICBteSBASW52b2x2ZWRVc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW52b2x2ZWRVc2VySUQnICk7CgogICAgICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlVc2VySURzLCBASW5mb3JtVXNlcklEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE5vdGlmeVVzZXJJRHMsIEBJbnZvbHZlZFVzZXJJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE5vdGlmeVVzZXJJRHMsIEBVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb247CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudFRpY2tldEVtYWlsT3V0Ym91bmQnICkgewogICAgICAgICAgICAgICAgJEFydGljbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6OkVtYWlsJyktPkFydGljbGVTZW5kKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEZyb20sCiAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICAgICAgICAgICAgID0+ICRDb25maWctPntIaXN0b3J5Q29tbWVudH0sCiAgICAgICAgICAgICAgICAgICAgRm9yY2VOb3RpZmljYXRpb25Ub1VzZXJJRCAgICAgICA9PiBcQE5vdGlmeVVzZXJJRHMsCiAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiAgICAgICAgICAgICAgICAgICAgVW5sb2NrT25Bd2F5ICAgICAgICAgICAgICAgICAgICA9PiAkVW5sb2NrT25Bd2F5LAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgICAgICAgICAgICAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEFydGljbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6OkludGVybmFsJyktPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICAgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgICAgICAgICBNaW1lVHlwZSAgICAgICAgICAgICAgICAgICAgICAgID0+ICRNaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnLT57SGlzdG9yeVR5cGV9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlDb21tZW50fSwKICAgICAgICAgICAgICAgICAgICBGb3JjZU5vdGlmaWNhdGlvblRvVXNlcklEICAgICAgID0+IFxATm90aWZ5VXNlcklEcywKICAgICAgICAgICAgICAgICAgICBFeGNsdWRlTXV0ZU5vdGlmaWNhdGlvblRvVXNlcklEID0+IFxATm90aWZ5RG9uZSwKICAgICAgICAgICAgICAgICAgICBVbmxvY2tPbkF3YXkgICAgICAgICAgICAgICAgICAgID0+ICRVbmxvY2tPbkF3YXksCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCAgICAgICAgICAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggISRBcnRpY2xlSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0aW1lIGFjY291bnRpbmcKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17VGltZVVuaXRzfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEFjY291bnRUaW1lKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBUaW1lVW5pdCAgPT4gJEdldFBhcmFte1RpbWVVbml0c30sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIHByZSBzdWJtaXR0ZWQgYXR0YWNobWVudHMKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0gKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGR5bmFtaWMgZmllbGRzCiAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJE1hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkCiAgICAgICAgICAgICAgICAmJiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiMgLS0tCgogICAgICAgICAgICAjIHNldCB0aGUgb2JqZWN0IElEIChUaWNrZXRJRCBvciBBcnRpY2xlSUQpIGRlcGVuZGluZyBvbiB0aGUgZmllbGQgY29uZmlncmF0aW9uCiAgICAgICAgICAgIG15ICRPYmplY3RJRCA9ICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnQXJ0aWNsZScgPyAkQXJ0aWNsZUlEIDogJFNlbGYtPntUaWNrZXRJRH07CgogICAgICAgICAgICAjIHNldCB0aGUgdmFsdWUKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBJZiBmb3JtIHdhcyBjYWxsZWQgYmFzZWQgb24gYSBkcmFmdCwKICAgICAgICAjICAgZGVsZXRlIGRyYWZ0IHNpbmNlIGl0cyBjb250ZW50IGhhcyBub3cgYmVlbiB1c2VkLgogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte0Zvcm1EcmFmdElEfQogICAgICAgICAgICAmJiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZvcm1EcmFmdCcpLT5Gb3JtRHJhZnREZWxldGUoCiAgICAgICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkR2V0UGFyYW17Rm9ybURyYWZ0SUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgZGVsZXRlIGRyYWZ0IScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBsb2FkIG5ldyBVUkwgaW4gcGFyZW50IHdpbmRvdyBhbmQgY2xvc2UgcG9wdXAKICAgICAgICAkUmV0dXJuVVJMIHx8PSAiQWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kU2VsZi0+e1RpY2tldElEfTtBcnRpY2xlSUQ9JEFydGljbGVJRCI7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Qb3B1cENsb3NlKAogICAgICAgICAgICBVUkwgPT4gJFJldHVyblVSTCwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhVcGRhdGUnICkgewogICAgICAgIG15ICVUaWNrZXQgICAgICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyICAgPSAkVGlja2V0e0N1c3RvbWVyVXNlcklEfTsKICAgICAgICBteSAkRWxlbWVudENoYW5nZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CgogICAgICAgIG15ICRTZXJ2aWNlSUQ7CgogICAgICAgICMgZ2V0IHNlcnZpY2UgdmFsdWUgZnJvbSBwYXJhbSBpZiBmaWVsZCBpcyB2aXNpYmxlIGluIHRoZSBzY3JlZW4KICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJENvbmZpZy0+e1NlcnZpY2V9ICkgewogICAgICAgICAgICAkU2VydmljZUlEID0gJEdldFBhcmFte1NlcnZpY2VJRH0gfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSB1c2UgdGlja2V0IHNlcnZpY2UgdmFsdWUgc2luY2UgaXQgY2FuJ3QgYmUgY2hhbmdlZAogICAgICAgIGVsc2lmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKICAgICAgICAgICAgJFNlcnZpY2VJRCA9ICRUaWNrZXR7U2VydmljZUlEfSB8fCAnJzsKICAgICAgICB9CgogICAgICAgIG15ICRRdWV1ZUlEID0gJEdldFBhcmFte05ld1F1ZXVlSUR9IHx8ICRUaWNrZXR7UXVldWVJRH07CiAgICAgICAgbXkgJFN0YXRlSUQgPSAkR2V0UGFyYW17TmV3U3RhdGVJRH0gfHwgJFRpY2tldHtTdGF0ZUlEfTsKCiAgICAgICAgIyBnZXQgbGlzdCB0eXBlCiAgICAgICAgbXkgJFRyZWVWaWV3ID0gMDsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgICAgICRUcmVlVmlldyA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkT3duZXJzID0gJFNlbGYtPl9HZXRPd25lcnMoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUXVldWVJRCAgPT4gJFF1ZXVlSUQsCiAgICAgICAgICAgIFN0YXRlSUQgID0+ICRTdGF0ZUlELAogICAgICAgICAgICBBbGxVc2VycyA9PiAkR2V0UGFyYW17T3duZXJBbGx9LAogICAgICAgICk7CiAgICAgICAgbXkgJE9sZE93bmVycyA9ICRTZWxmLT5fR2V0T2xkT3duZXJzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFF1ZXVlSUQgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgQWxsVXNlcnMgPT4gJEdldFBhcmFte093bmVyQWxsfSwKICAgICAgICApOwogICAgICAgIG15ICRSZXNwb25zaWJsZVVzZXJzID0gJFNlbGYtPl9HZXRSZXNwb25zaWJsZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBRdWV1ZUlEICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIEFsbFVzZXJzID0+ICRHZXRQYXJhbXtPd25lckFsbH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUHJpb3JpdGllcyA9ICRTZWxmLT5fR2V0UHJpb3JpdGllcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgbXkgJFNlcnZpY2VzID0gJFNlbGYtPl9HZXRTZXJ2aWNlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkQ3VzdG9tZXJVc2VyLAogICAgICAgICAgICBRdWV1ZUlEICAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgPT4gJFN0YXRlSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkVHlwZXMgPSAkU2VsZi0+X0dldFR5cGVzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRDdXN0b21lclVzZXIsCiAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICAgICA9PiAkU3RhdGVJRCwKICAgICAgICApOwogICAgICAgIG15ICROZXdRdWV1ZXMgPSAkU2VsZi0+X0dldFF1ZXVlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgcmVzZXQgcHJldmlvdXMgU2VydmljZUlEIHRvIHJlc2V0IFNMQS1MaXN0IGlmIG5vIHNlcnZpY2UgaXMgc2VsZWN0ZWQKICAgICAgICBpZiAoICFkZWZpbmVkICRTZXJ2aWNlSUQgfHwgISRTZXJ2aWNlcy0+eyRTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICAkU2VydmljZUlEID0gJyc7CiAgICAgICAgfQogICAgICAgIG15ICRTTEFzID0gJFNlbGYtPl9HZXRTTEFzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRDdXN0b21lclVzZXIsCiAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICAgICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgU2VydmljZUlEICAgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICApOwogICAgICAgIG15ICROZXh0U3RhdGVzID0gJFNlbGYtPl9HZXROZXh0U3RhdGVzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRDdXN0b21lclVzZXIgfHwgJycsCiAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICAgICA9PiAkU3RhdGVJRCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBEeW5hbWljIEZpZWxkcyBQb3NzaWJsZSBWYWx1ZXMgdmlhIEFKQVgKICAgICAgICBteSBARHluYW1pY0ZpZWxkQUpBWDsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzQUNMUmVkdWNpYmxlOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgUXVldWVJRCAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXN9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICkgfHwgJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgIHB1c2goCiAgICAgICAgICAgICAgICBARHluYW1pY0ZpZWxkQUpBWCwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN0YW5kYXJkVGVtcGxhdGVzID0gJFNlbGYtPl9HZXRTdGFuZGFyZFRlbXBsYXRlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBRdWV1ZUlEID0+ICRRdWV1ZUlEIHx8ICcnLAogICAgICAgICk7CgogICAgICAgIG15IEBUZW1wbGF0ZUFKQVg7CgogICAgICAgICMgdXBkYXRlIHRpY2tldCBib2R5IGFuZCBhdHRhY2hlbWVudHMgaWYgbmVlZGVkLgogICAgICAgIGlmICggJEVsZW1lbnRDaGFuZ2VkIGVxICdTdGFuZGFyZFRlbXBsYXRlSUQnICkgewogICAgICAgICAgICBteSBAVGlja2V0QXR0YWNobWVudHM7CiAgICAgICAgICAgIG15ICRUZW1wbGF0ZVRleHQ7CgogICAgICAgICAgICAjIHJlbW92ZSBhbGwgYXR0YWNobWVudHMgZnJvbSB0aGUgVXBsb2FkIGNhY2hlCiAgICAgICAgICAgIG15ICRSZW1vdmVTdWNjZXNzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkUmVtb3ZlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkZvcm0gYXR0YWNobWVudHMgY291bGQgbm90IGJlIGRlbGV0ZWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSB0ZW1wbGF0ZSB0ZXh0IGFuZCBzZXQgbmV3IGF0dGFjaG1lbnRzIGlmIGEgdGVtcGxhdGUgaXMgc2VsZWN0ZWQKICAgICAgICAgICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJEdldFBhcmFte1N0YW5kYXJkVGVtcGxhdGVJRH0gKSApIHsKICAgICAgICAgICAgICAgIG15ICRUZW1wbGF0ZUdlbmVyYXRvciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpOwoKICAgICAgICAgICAgICAgICMgc2V0IHRlbXBsYXRlIHRleHQsIHJlcGxhY2Ugc21hcnQgdGFncyAobGltaXRlZCBhcyB0aWNrZXQgaXMgbm90IGNyZWF0ZWQpCiAgICAgICAgICAgICAgICAkVGVtcGxhdGVUZXh0ID0gJFRlbXBsYXRlR2VuZXJhdG9yLT5UZW1wbGF0ZSgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRHZXRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgaWYgUmVwbHlUb0FydGljbGUgaXMgZ2l2ZW4sIGdldCB0aGlzIGFydGljbGUgdG8gZ2VuZXJhdGUKICAgICAgICAgICAgICAgICMgdGhlIHF1b3RlZCBhcnRpY2xlIGNvbnRlbnQKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGFydGljbGUgdG8gcXVvdGUKICAgICAgICAgICAgICAgICAgICBteSAkQm9keSA9ICRMYXlvdXRPYmplY3QtPkFydGljbGVRdW90ZSgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZENhY2hlT2JqZWN0ID0+ICRVcGxvYWRDYWNoZU9iamVjdCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHByZXBhcmUgcXVvdGVkIGJvZHkgY29udGVudAogICAgICAgICAgICAgICAgICAgICRCb2R5ID0gJFNlbGYtPl9HZXRRdW90ZWRSZXBseUJvZHkoCiAgICAgICAgICAgICAgICAgICAgICAgICV7ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSB9LAogICAgICAgICAgICAgICAgICAgICAgICBCb2R5ID0+ICRCb2R5LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wbGF0ZVRleHQgPSAkVGVtcGxhdGVUZXh0IC4gJzxicj48YnI+JyAuICRCb2R5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRlbXBsYXRlVGV4dCA9ICRUZW1wbGF0ZVRleHQgLiAiXG5cbiIgLiAkQm9keTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgU3RkQXR0YWNobWVudE9iamVjdAogICAgICAgICAgICAgICAgbXkgJFN0ZEF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RkQXR0YWNobWVudCcpOwoKICAgICAgICAgICAgICAgICMgYWRkIHN0ZC4gYXR0YWNobWVudHMgdG8gdGlja2V0CiAgICAgICAgICAgICAgICBteSAlQWxsU3RkQXR0YWNobWVudHMgPSAkU3RkQXR0YWNobWVudE9iamVjdC0+U3RkQXR0YWNobWVudFN0YW5kYXJkVGVtcGxhdGVNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkVGVtcGxhdGVJRCA9PiAkR2V0UGFyYW17U3RhbmRhcmRUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgKCBzb3J0IGtleXMgJUFsbFN0ZEF0dGFjaG1lbnRzICkgewogICAgICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50c0RhdGEgPSAkU3RkQXR0YWNobWVudE9iamVjdC0+U3RkQXR0YWNobWVudEdldCggSUQgPT4gJF8gKTsKICAgICAgICAgICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAlQXR0YWNobWVudHNEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZW5kIGEgbGlzdCBvZiBhdHRhY2htZW50cyBpbiB0aGUgdXBsb2FkIGNhY2hlIGJhY2sgdG8gdGhlIGNsaWVudHNpZGUgSmF2YVNjcmlwdAogICAgICAgICAgICAgICAgIyB3aGljaCByZW5kZXJzIHRoZW4gdGhlIGxpc3Qgb2YgY3VycmVudGx5IHVwbG9hZGVkIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICAgICBAVGlja2V0QXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBUaWNrZXRBdHRhY2htZW50cykgewogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57RmlsZXNpemV9ID0gJExheW91dE9iamVjdC0+SHVtYW5SZWFkYWJsZURhdGFTaXplKAogICAgICAgICAgICAgICAgICAgICAgICBTaXplID0+ICRBdHRhY2htZW50LT57RmlsZXNpemV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEBUZW1wbGF0ZUFKQVggPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVXNlVGVtcGxhdGVOb3RlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICcwJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFRlbXBsYXRlVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJ1RpY2tldEF0dGFjaG1lbnRzJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcQFRpY2tldEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgIEtlZXBEYXRhID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgICAgIFsKCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdOZXdPd25lcklEJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJE93bmVycywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte05ld093bmVySUR9LAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRSZXNwb25zaWJsZVVzZXJzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdOZXdTdGF0ZUlEJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJE5leHRTdGF0ZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gJENvbmZpZy0+e1N0YXRlRGVmYXVsdH0gPyAwIDogMSwKICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ05ld1ByaW9yaXR5SUQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkUHJpb3JpdGllcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte05ld1ByaW9yaXR5SUR9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlcnZpY2VzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU0xBSUQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkU0xBcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1N0YW5kYXJkVGVtcGxhdGVJRCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTdGFuZGFyZFRlbXBsYXRlcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte1N0YW5kYXJkVGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkVHlwZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnTmV3UXVldWVJRCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICROZXdRdWV1ZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQER5bmFtaWNGaWVsZEFKQVgsCiAgICAgICAgICAgICAgICBAVGVtcGxhdGVBSkFYLAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICRCb2R5ID0gJyc7CgogICAgICAgICMgaWYgUmVwbHlUb0FydGljbGUgaXMgZ2l2ZW4sIGdldCB0aGlzIGFydGljbGUgdG8gZ2VuZXJhdGUKICAgICAgICAjIHRoZSBxdW90ZWQgYXJ0aWNsZSBjb250ZW50CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IGFydGljbGUgdG8gcXVvdGUKICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUXVvdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgVXBsb2FkQ2FjaGVPYmplY3QgPT4gJFVwbG9hZENhY2hlT2JqZWN0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBwcmVwYXJlIHF1b3RlZCBib2R5IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPSAkU2VsZi0+X0dldFF1b3RlZFJlcGx5Qm9keSgKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQm9keSA9PiAkQm9keSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgaWYgYSBib2R5IGNvbnRlbnQgd2FzIHByZSBkZWZpbmVkLCBhZGQgdGhpcyBiZWZvcmUgdGhlIHF1b3RlZCBhcnRpY2xlIGNvbnRlbnQKICAgICAgICBpZiAoICRHZXRQYXJhbXtCb2R5fSApIHsKCiAgICAgICAgICAgICMgbWFrZSBzdXJlIGJvZHkgaXMgcmljaCB0ZXh0CiAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJSaWNoVGV4dCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEJvZHkgPSAkR2V0UGFyYW17Qm9keX0gLiAkQm9keTsKICAgICAgICB9CgogICAgICAgICMgZmlsbHVwIGNvbmZpZ3VyZWQgZGVmYXVsdCB2YXJzCiAgICAgICAgaWYgKCAkQm9keSBlcSAnJyAmJiAkQ29uZmlnLT57Qm9keX0gKSB7CiAgICAgICAgICAgICRCb2R5ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJENvbmZpZy0+e0JvZHl9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBtYWtlIHN1cmUgYm9keSBpcyByaWNoIHRleHQKICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICRCb2R5ID0gJExheW91dE9iamVjdC0+QXNjaWkyUmljaFRleHQoCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRCb2R5LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzZXQgQm9keSB2YXIgdG8gY2FsY3VsYXRlZCBjb250ZW50CiAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJEJvZHk7CgogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CiAgICAgICAgICAgIG15ICRUaWNrZXRTdWJqZWN0UmUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U3ViamVjdFJlJykgfHwgJ1JlJzsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJFRpY2tldFN1YmplY3RSZSAuICc6ICcgLiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH17U3ViamVjdH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggIWRlZmluZWQgJEdldFBhcmFte1N1YmplY3R9ICYmICRDb25maWctPntTdWJqZWN0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJENvbmZpZy0+e1N1YmplY3R9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFRpY2tldFR5cGVEeW5hbWljRmllbGRzOwogICAgICAgIG15IEBBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHM7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJE1hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkCiAgICAgICAgICAgICAgICAmJiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiMgLS0tCgogICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXNGaWx0ZXI7CgogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc0FDTFJlZHVjaWJsZSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UG9zc2libGVWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaGFzIFBvc3NpYmxlVmFsdWVzIHByb3BlcnR5IGluIGl0cyBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQb3NzaWJsZVZhbHVlcykgKSB7CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyRQb3NzaWJsZVZhbHVlc307CiAgICAgICAgICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcyBmaWx0ZXIgZnJvbSBBQ0xzCiAgICAgICAgICAgICAgICAgICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgJUZpbHRlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkICkgewogICAgICAgICAgICAgICAkUG9zc2libGVWYWx1ZXNGaWx0ZXIgPSAgJFNlbGYtPl9HZXRNYXN0ZXJTbGF2ZURhdGEoCiAgICAgICAgICAgICAgICBUaWNrZXQgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgICAgICBNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KIyAtLS0KCiAgICAgICAgICAgICMgdG8gc3RvcmUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIGRhdGFiYXNlIChvciB1bmRlZmluZWQpCiAgICAgICAgICAgIG15ICRWYWx1ZTsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdUaWNrZXQnICkgewoKICAgICAgICAgICAgICAgICMgT25seSBnZXQgdmFsdWVzIGZvciBUaWNrZXQgZmllbGRzIChhbGwgc2NyZWVucyBiYXNlZCBvbiBBZ2VudFRpY2tlQWN0aW9uQ29tbW9uCiAgICAgICAgICAgICAgICAjIGdlbmVyYXRlcyBhIG5ldyBhcnRpY2xlLCB0aGVuIGFydGljbGUgZmllbGRzIHdpbGwgYmUgYWx3YXlzIGVtcHR5IGF0IHRoZSBiZWdpbm5pbmcpLgogICAgICAgICAgICAgICAgIyBWYWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIGZyb20gVGlja2V0LgogICAgICAgICAgICAgICAgJFZhbHVlID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAgICAgIyBHZXQgZmllbGQgaHRtbC4KICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5ICAgICAgICAgICAgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRlICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVwZGF0YWJsZUZpZWxkcyAgICAgID0+ICRTZWxmLT5fR2V0RmllbGRzVG9VcGRhdGUoKSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBAVGlja2V0VHlwZUR5bmFtaWNGaWVsZHMsIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdBcnRpY2xlJyApIHsKICAgICAgICAgICAgICAgIG15ICRDbGFzcyAgICAgICAgICAgID0gJyc7CiAgICAgICAgICAgICAgICBteSAkTWFuZGF0b3J5VG9vbHRpcCA9IDA7CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyICkgewogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3MgPSAnVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzICAgICAgICAgICAgPSAnVmFsaWRhdGVfRGVwZW5kaW5nUmVxdWlyZWRBTkQgVmFsaWRhdGVfRGVwZW5kaW5nX0NyZWF0ZUFydGljbGUnOwogICAgICAgICAgICAgICAgICAgICAgICAkTWFuZGF0b3J5VG9vbHRpcCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgR2V0IGZpZWxkIGh0bWwuCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSAgICAgICAgICAgID0+ICggJENsYXNzIGVxICdWYWxpZGF0ZV9SZXF1aXJlZCcgKSA/IDEgOiAwLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRlICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVwZGF0YWJsZUZpZWxkcyAgICAgID0+ICRTZWxmLT5fR2V0RmllbGRzVG9VcGRhdGUoKSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBAQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRzLCB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBGaWVsZCAgICAgICAgICAgID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeVRvb2x0aXAgPT4gJE1hbmRhdG9yeVRvb2x0aXAsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByaW50IGZvcm0gLi4uCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgICAgIFRpbWVVbml0c1JlcXVpcmVkID0+ICgKICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICAgICAgPyAnVmFsaWRhdGVfUmVxdWlyZWQnCiAgICAgICAgICAgICAgICA6ICcnCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFRpY2tldFR5cGVEeW5hbWljRmllbGRzICA9PiBcQFRpY2tldFR5cGVEeW5hbWljRmllbGRzLAogICAgICAgICAgICBBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHMgPT4gXEBBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHMsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyApIHsKICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIERlZmluZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gc2hvdyBiYXNlZCBvbiB0aGUgb2JqZWN0IHR5cGUuCiAgICBteSAkT2JqZWN0VHlwZSA9IFsnVGlja2V0J107CgogICAgIyBPbmx5IHNjcmVlbnMgdGhhdCBhZGQgbm90ZXMgY2FuIG1vZGlmeSBBcnRpY2xlIGR5bmFtaWMgZmllbGRzLgogICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gKSB7CiAgICAgICAgJE9iamVjdFR5cGUgPSBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXTsKICAgIH0KCiAgICAjIEdldCBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4uCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgICMgV2lkZ2V0IFRpY2tldCBBY3Rpb25zCiAgICBpZiAoCiAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApCiAgICAgICAgfHwKICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgICAgICYmICRDb25maWctPntTZXJ2aWNlfSApICAgICB8fAogICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHx8CiAgICAgICAgJENvbmZpZy0+e1RpdGxlfSAgICB8fAogICAgICAgICRDb25maWctPntRdWV1ZX0gICAgfHwKICAgICAgICAkQ29uZmlnLT57T3duZXJ9ICAgIHx8CiAgICAgICAgJENvbmZpZy0+e1N0YXRlfSAgICB8fAogICAgICAgICRDb25maWctPntQcmlvcml0eX0gfHwKICAgICAgICBzY2FsYXIgQHsgJFBhcmFte1RpY2tldFR5cGVEeW5hbWljRmllbGRzfSB9ID4gMAogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnV2lkZ2V0VGlja2V0QWN0aW9ucycsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE5hbWVzID0gJFNlbGYtPl9HZXRGaWVsZHNUb1VwZGF0ZSgKICAgICAgICBPbmx5RHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdEeW5hbWljRmllbGROYW1lcycsCiAgICAgICAgVmFsdWUgPT4gJER5bmFtaWNGaWVsZE5hbWVzLAogICAgKTsKCiAgICAjIHR5cGVzCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpUeXBlJykgJiYgJENvbmZpZy0+e1RpY2tldFR5cGV9ICkgewogICAgICAgIG15ICVUeXBlID0gJFRpY2tldE9iamVjdC0+VGlja2V0VHlwZUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtUeXBlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgQ2xhc3MgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkIE1vZGVybml6ZSAnIC4gKCAkUGFyYW17RXJyb3JzfS0+e1R5cGVJREludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIERhdGEgID0+IFwlVHlwZSwKICAgICAgICAgICAgTmFtZSAgPT4gJ1R5cGVJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUeXBlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2VydmljZXMKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSAmJiAkQ29uZmlnLT57U2VydmljZX0gKSB7CiAgICAgICAgbXkgJFNlcnZpY2VzID0gJFNlbGYtPl9HZXRTZXJ2aWNlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXNldCBwcmV2aW91cyBTZXJ2aWNlSUQgdG8gcmVzZXQgU0xBLUxpc3QgaWYgbm8gc2VydmljZSBpcyBzZWxlY3RlZAogICAgICAgIGlmICggISRQYXJhbXtTZXJ2aWNlSUR9IHx8ICEkU2VydmljZXMtPnsgJFBhcmFte1NlcnZpY2VJRH0gfSApIHsKICAgICAgICAgICAgJFBhcmFte1NlcnZpY2VJRH0gPSAnJzsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtTZXJ2aWNlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkU2VydmljZXMsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ1NlcnZpY2VJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gIk1vZGVybml6ZSAiCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1NlcnZpY2VNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte1NlcnZpY2VJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+ICRUcmVlVmlldywKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdUcmVlVmlldycsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICBNYXggICAgICAgICAgPT4gMjAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTZXJ2aWNlTWFuZGF0b3J5ID0+ICRDb25maWctPntTZXJ2aWNlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICVTTEEgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTTEFMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgJFBhcmFte1NMQVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTTEEsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U0xBSUR9LAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICJNb2Rlcm5pemUgIgogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTTEFNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte1NlcnZpY2VJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICBNYXggICAgICAgICAgPT4gMjAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTTEEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFNMQU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U0xBTWFuZGF0b3J5fSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSApIHsKCiAgICAgICAgIyBmZXRjaCBhbGwgcXVldWVzCiAgICAgICAgbXkgJU1vdmVRdWV1ZXMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRNb3ZlTGlzdCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBUeXBlICAgICA9PiAnbW92ZV9pbnRvJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBtb3ZlIHF1ZXVlcwogICAgICAgICRQYXJhbXtRdWV1ZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkFnZW50UXVldWVMaXN0T3B0aW9uKAogICAgICAgICAgICBEYXRhICAgICA9PiB7ICVNb3ZlUXVldWVzLCAnJyA9PiAnLScgfSwKICAgICAgICAgICAgTXVsdGlwbGUgPT4gMCwKICAgICAgICAgICAgU2l6ZSAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgPT4gJ05ld1F1ZXVlSUQgTW9kZXJuaXplICcKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57UXVldWVNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte05ld1F1ZXVlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ05ld1F1ZXVlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgICA9PiAkUGFyYW17TmV3UXVldWVJRH0sCiAgICAgICAgICAgIFRyZWVWaWV3ICAgICAgID0+ICRUcmVlVmlldywKICAgICAgICAgICAgQ3VycmVudFF1ZXVlSUQgPT4gJFBhcmFte1F1ZXVlSUR9LAogICAgICAgICAgICBPbkNoYW5nZVN1Ym1pdCA9PiAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdRdWV1ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUXVldWVNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1F1ZXVlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkVXNlck9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwogICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgogICAgaWYgKCAkQ29uZmlnLT57T3duZXJ9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9mIG93biBncm91cHMKICAgICAgICBteSAlU2hvd25Vc2VyczsKICAgICAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkR0lEID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgICAgICBteSAlTWVtYmVyTGlzdCA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnb3duZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgICAgICRTaG93blVzZXJzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdOZXdPd25lcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG9sZCBvd25lcgogICAgICAgIG15IEBPbGRVc2VySW5mbyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyTGlzdCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKICAgICAgICBteSBAT2xkT3duZXJzOwogICAgICAgIG15ICVPbGRPd25lcnNTaG93bjsKICAgICAgICBteSAlU2Vlbk9sZE93bmVyOwogICAgICAgIGlmIChAT2xkVXNlckluZm8pIHsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAxOwogICAgICAgICAgICBVU0VSOgogICAgICAgICAgICBmb3IgbXkgJFVzZXIgKCByZXZlcnNlIEBPbGRVc2VySW5mbyApIHsKCiAgICAgICAgICAgICAgICAjIHNraXAgaWYgb2xkIG93bmVyIGlzIGFscmVhZHkgaW4gdGhlIGxpc3QKICAgICAgICAgICAgICAgIG5leHQgVVNFUiBpZiAkU2Vlbk9sZE93bmVyeyAkVXNlci0+e1VzZXJJRH0gfTsKICAgICAgICAgICAgICAgICRTZWVuT2xkT3duZXJ7ICRVc2VyLT57VXNlcklEfSB9ID0gMTsKICAgICAgICAgICAgICAgIG15ICRLZXkgICA9ICRVc2VyLT57VXNlcklEfTsKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICIkQ291bnRlcjogJFVzZXItPntVc2VyRnVsbG5hbWV9IjsKICAgICAgICAgICAgICAgIHB1c2ggQE9sZE93bmVycywgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICRPbGRPd25lcnNTaG93bnskS2V5fSA9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRPbGRPd25lclNlbGVjdGVkSUQgPSAnJzsKICAgICAgICBpZiAoICRQYXJhbXtPbGRPd25lcklEfSApIHsKICAgICAgICAgICAgJE9sZE93bmVyU2VsZWN0ZWRJRCA9ICRQYXJhbXtPbGRPd25lcklEfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkT2xkVXNlckluZm9bMF0tPntVc2VySUR9ICkgewogICAgICAgICAgICAkT2xkT3duZXJTZWxlY3RlZElEID0gJE9sZFVzZXJJbmZvWzBdLT57VXNlcklEfSAuICcxJzsKICAgICAgICB9CgogICAgICAgIG15ICRPbGRPd25lckFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ09sZE93bmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJU9sZE93bmVyc1Nob3duLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJE9sZE93bmVyQUNMKSB7CiAgICAgICAgICAgICVPbGRPd25lcnNTaG93biA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgc3RyaW5nCiAgICAgICAgJFBhcmFte093bmVyU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte05ld093bmVySUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdOZXdPd25lcklEJywKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplICcKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57T3duZXJNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte05ld093bmVySW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBGaWx0ZXJzICAgICAgPT4gewogICAgICAgICAgICAgICAgT2xkT3duZXJzID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQcmV2aW91cyBPd25lcicpLAogICAgICAgICAgICAgICAgICAgIFZhbHVlcyA9PiBcJU9sZE93bmVyc1Nob3duLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3duZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE93bmVyTWFuZGF0b3J5ID0+ICRDb25maWctPntPd25lck1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHsKCiAgICAgICAgIyBnZXQgdXNlciBvZiBvd24gZ3JvdXBzCiAgICAgICAgbXkgJVNob3duVXNlcnM7CiAgICAgICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkVXNlck9iamVjdC0+VXNlckxpc3QoCiAgICAgICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICVBbGxHcm91cHNNZW1iZXJzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdJRCA9ICRRdWV1ZU9iamVjdC0+R2V0UXVldWVHcm91cElEKCBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ3Jlc3BvbnNpYmxlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCByZXNwb25zaWJsZQogICAgICAgICRQYXJhbXtSZXNwb25zaWJsZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1Jlc3BvbnNpYmxlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdSZXNwb25zaWJsZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTaXplICAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSZXNwb25zaWJsZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUmVzcG9uc2libGVNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1Jlc3BvbnNpYmxlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1N0YXRlfSApIHsKCiAgICAgICAgbXkgJVN0YXRlOwogICAgICAgIG15ICVTdGF0ZUxpc3QgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZUxpc3QoCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRQYXJhbXtOZXdTdGF0ZUlEfSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3RhdGVEZWZhdWx0fSApIHsKICAgICAgICAgICAgICAgICRTdGF0ZXtTZWxlY3RlZFZhbHVlfSA9ICRDb25maWctPntTdGF0ZURlZmF1bHR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU3RhdGV7U2VsZWN0ZWRJRH0gPSAkUGFyYW17TmV3U3RhdGVJRH07CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIG5leHQgc3RhdGVzIHN0cmluZwogICAgICAgICRQYXJhbXtTdGF0ZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgID0+IFwlU3RhdGVMaXN0LAogICAgICAgICAgICBOYW1lICA9PiAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgIENsYXNzID0+ICdNb2Rlcm5pemUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTdGF0ZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3U3RhdGVJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gJENvbmZpZy0+e1N0YXRlRGVmYXVsdH0gPyAwIDogMSwKICAgICAgICAgICAgJVN0YXRlLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdGF0ZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U3RhdGVNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRDb25maWctPntTdGF0ZVR5cGV9ICkgKSB7CgogICAgICAgICAgICBTVEFURVRZUEU6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlICggQHsgJENvbmZpZy0+e1N0YXRlVHlwZX0gfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRSBpZiAhJFN0YXRlVHlwZTsKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFIGlmICRTdGF0ZVR5cGUgIX4gL3BlbmRpbmcvaTsKCiAgICAgICAgICAgICAgICAjIGdldCB1c2VkIGNhbGVuZGFyCiAgICAgICAgICAgICAgICBteSAkQ2FsZW5kYXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDYWxlbmRhckdldCgKICAgICAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkUGFyYW17RGF0ZVN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdExvbmcnLAogICAgICAgICAgICAgICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDUsCiAgICAgICAgICAgICAgICAgICAgRGlmZlRpbWUgICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlBlbmRpbmdEaWZmVGltZScpCiAgICAgICAgICAgICAgICAgICAgICAgIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0RhdGVJbnZhbGlkfSB8fCAnICcsCiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURhdGVJbkZ1dHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIENhbGVuZGFyICAgICAgICAgICAgID0+ICRDYWxlbmRhciwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdGVQZW5kaW5nJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGxhc3QgU1RBVEVUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHByaW9yaXR5CiAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gKSB7CgogICAgICAgIG15ICVQcmlvcml0eTsKICAgICAgICBteSAlUHJpb3JpdHlMaXN0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlMaXN0KAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH0gKSB7CiAgICAgICAgICAgICRQcmlvcml0eUxpc3R7Jyd9ID0gJy0nOwogICAgICAgIH0KICAgICAgICBpZiAoICEkUGFyYW17TmV3UHJpb3JpdHlJRH0gKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH0gKSB7CiAgICAgICAgICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRWYWx1ZX0gPSAkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFByaW9yaXR5e1NlbGVjdGVkSUR9ID0gJFBhcmFte05ld1ByaW9yaXR5SUR9OwogICAgICAgIH0KICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRJRH0gfHw9ICRQYXJhbXtQcmlvcml0eUlEfTsKICAgICAgICAkUGFyYW17UHJpb3JpdHlTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICA9PiBcJVByaW9yaXR5TGlzdCwKICAgICAgICAgICAgTmFtZSAgPT4gJ05ld1ByaW9yaXR5SUQnLAogICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgJVByaW9yaXR5LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByaW9yaXR5JywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgVGlja2V0IHR5cGUgZHluYW1pYyBmaWVsZHMuCiAgICBmb3IgbXkgJFRpY2tldFR5cGVEeW5hbWljRmllbGQgKCBAeyAkUGFyYW17VGlja2V0VHlwZUR5bmFtaWNGaWVsZHN9IH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFR5cGVEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+ICRUaWNrZXRUeXBlRHluYW1pY0ZpZWxkLAogICAgICAgICk7CiAgICB9CgogICAgIyBFbmQgV2lkZ2V0IFRpY2tldCBBY3Rpb25zCgogICAgIyBXaWRnZXQgQXJ0aWNsZQogICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gKSB7CgogICAgICAgICRQYXJhbXtXaWRnZXRTdGF0dXN9ID0gJ0NvbGxhcHNlZCc7CgogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9CiAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICB8fCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfQogICAgICAgICAgICB8fCAkUGFyYW17Q3JlYXRlQXJ0aWNsZX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFBhcmFte1dpZGdldFN0YXR1c30gPSAnRXhwYW5kZWQnOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnLT57Tm90ZU1hbmRhdG9yeX0KICAgICAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRQYXJhbXtTdWJqZWN0UmVxdWlyZWR9ID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgICAgICAgICAgJFBhcmFte0JvZHlSZXF1aXJlZH0gICAgPSAnVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBhcmFte1N1YmplY3RSZXF1aXJlZH0gPSAnVmFsaWRhdGVfRGVwZW5kaW5nUmVxdWlyZWRBTkQgVmFsaWRhdGVfRGVwZW5kaW5nX0NyZWF0ZUFydGljbGUnOwogICAgICAgICAgICAkUGFyYW17Qm9keVJlcXVpcmVkfSAgICA9ICdWYWxpZGF0ZV9EZXBlbmRpbmdSZXF1aXJlZEFORCBWYWxpZGF0ZV9EZXBlbmRpbmdfQ3JlYXRlQXJ0aWNsZSc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBjdXN0b21lciB2aXNpYmlsaXR5IG9mIHRoaXMgbm90ZSB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgYXJ0aWNsZSBmb3Igd2hvbSB0aGlzIGlzIHRoZSByZXBseQogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgIWRlZmluZWQgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSA9ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fS0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhZGVmaW5lZCAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICkgewogICAgICAgICAgICAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ID0gJENvbmZpZy0+e0lzVmlzaWJsZUZvckN1c3RvbWVyRGVmYXVsdH07CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgYXR0YWNobWVudHMKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9CiAgICAgICAgICAgICAgICAmJiAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9fiAvaW1hZ2UvaSApCiAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtBdHRhY2htZW50TGlzdH0gfSwgJEF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnV2lkZ2V0QXJ0aWNsZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIHVzZXIgaWRzIG9mIGFnZW50cywgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhpcyBkaWFsb2cKICAgICAgICAjIGJhc2VkIG9uIHF1ZXVlIHJpZ2h0cwogICAgICAgIG15ICVTaG93blVzZXJzOwogICAgICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkR0lEID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgVHlwZSAgICA9PiAnbm90ZScsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGVtYWlsIHBhcnNlciBvYmplY3QKICAgICAgICBteSAkRW1haWxQYXJzZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXItPm5ldygKICAgICAgICAgICAgTW9kZSAgPT4gJ1N0YW5kYWxvbmUnLAogICAgICAgICAgICBEZWJ1ZyA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgYW5kIHJldHJpZXZlIGludm9sdmVkIGFuZCBpbmZvcm1lZCBhZ2VudHMgb2YgUmVwbHlUbyBOb3RlCiAgICAgICAgbXkgQFJlcGx5VG9Vc2VyczsKICAgICAgICBteSAlUmVwbHlUb1VzZXJzSGFzaDsKICAgICAgICBteSAlUmVwbHlUb1VzZXJJRHM7CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKICAgICAgICAgICAgbXkgQFJlcGx5VG9QYXJ0cyA9ICRFbWFpbFBhcnNlck9iamVjdC0+U3BsaXRBZGRyZXNzTGluZSgKICAgICAgICAgICAgICAgIExpbmUgPT4gJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9LT57VG99IHx8ICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUkVQTFlUT1BBUlQ6CiAgICAgICAgICAgIGZvciBteSAkU2luZ2xlUmVwbHlUb1BhcnQgKEBSZXBseVRvUGFydHMpIHsKICAgICAgICAgICAgICAgIG15ICRSZXBseVRvQWRkcmVzcyA9ICRFbWFpbFBhcnNlck9iamVjdC0+R2V0RW1haWxBZGRyZXNzKAogICAgICAgICAgICAgICAgICAgIEVtYWlsID0+ICRTaW5nbGVSZXBseVRvUGFydCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBSRVBMWVRPUEFSVCBpZiAhJFJlcGx5VG9BZGRyZXNzOwogICAgICAgICAgICAgICAgcHVzaCBAUmVwbHlUb1VzZXJzLCAkUmVwbHlUb0FkZHJlc3M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXBseVRvVXNlcnNIYXNoeyRffSsrIGZvciBAUmVwbHlUb1VzZXJzOwoKICAgICAgICAgICAgIyBnZXQgdXNlciBpZHMgb2YgYXZhaWxhYmxlIHVzZXJzCiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVTaG93blVzZXJzICkgewogICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVXNlckVtYWlsID0gJFVzZXJEYXRhe1VzZXJFbWFpbH07CiAgICAgICAgICAgICAgICBpZiAoICRSZXBseVRvVXNlcnNIYXNoeyRVc2VyRW1haWx9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXBseVRvVXNlcklEc3skVXNlcklEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIG9yaWdpbmFsIG5vdGUgc2VuZGVyIHRvIGxpc3Qgb2YgdXNlciBpZHMKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IEB7ICRTZWxmLT57UmVwbHlUb1NlbmRlclVzZXJJRH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHNlbmRlciByZXBsaWVzIHRvIGhpbXNlbGYsIGRvIG5vdCBpbmNsdWRlIHNlbmRlciBpbiBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRVc2VySUQgbmUgJFNlbGYtPntVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXBseVRvVXNlcklEc3skVXNlcklEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIHVzZXIgaWQgb2YgYWN0aXZlIHVzZXIKICAgICAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3sgJFNlbGYtPntVc2VySUR9IH07CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gfHwgJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFkZGl0aW9uYWxBZ2VudHMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICAgICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICAgICAjIGdldCBhbGwgYWdlbnRzIGZvciAiaW52b2x2ZWQgYWdlbnRzIgogICAgICAgIGlmICggJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewoKICAgICAgICAgICAgbXkgQFVzZXJJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJbnZvbHZlZEFnZW50c0xpc3QoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBJbnZvbHZlZEFnZW50czsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAxOwoKICAgICAgICAgICAgIyBnZXQgaW52b2x2ZWQgdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgICAgIFVTRVI6CiAgICAgICAgICAgIGZvciBteSAkVXNlciAoIHJldmVyc2UgQFVzZXJJRHMgKSB7CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gIiRDb3VudGVyOiAkVXNlci0+e1VzZXJGdWxsbmFtZX0iOwogICAgICAgICAgICAgICAgaWYgKCAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlIC49ICIgJFVzZXItPntPdXRPZk9mZmljZU1lc3NhZ2V9IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZEFnZW50cywgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRVc2VyLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAjIGFkZCBpbnZvbHZlZCB1c2VyIGFzIHNlbGVjdGVkIGVudHJpZXMsIGlmIGF2YWlsYWJsZSBpbiBSZXBseVRvQWRkcmVzc2VzIGxpc3QKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZFVzZXJJRCwgJFVzZXItPntVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVwbHlUb1VzZXJJRHN7ICRVc2VyLT57VXNlcklEfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkSW52b2x2ZWRBZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okludm9sdmVkQWdlbnRNYXhTaXplJykgfHwgMzsKICAgICAgICAgICAgJFBhcmFte0ludm9sdmVkQWdlbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcQEludm9sdmVkQWdlbnRzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQEludm9sdmVkVXNlcklELAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW52b2x2ZWRVc2VySUQnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEludm9sdmVkQWdlbnRTaXplLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBibG9jayBpcyBjYWxsZWQgYmVsb3cgImluZm9ybSBhZ2VudHMiCiAgICAgICAgfQoKICAgICAgICAjIGFnZW50IGxpc3QKICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CgogICAgICAgICAgICAjIGdldCBpbmZvcm0gdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbmZvcm1Vc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBlbWFpbCBhZGRyZXNzIG9mIGFsbCB1c2VycyBhbmQgY29tcGFyZSB0byByZXBseXRvLWFkZHJlc3NlcwogICAgICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEluZm9ybVVzZXJJRCwgJFVzZXJJRDsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3skVXNlcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRJbmZvcm1BZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkluZm9ybUFnZW50TWF4U2l6ZScpCiAgICAgICAgICAgICAgICB8fCAzOwogICAgICAgICAgICAkUGFyYW17T3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQEluZm9ybVVzZXJJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0luZm9ybVVzZXJJRCcsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICA9PiAkSW5mb3JtQWdlbnRTaXplLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50JywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGludm9sdmVkCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW52b2x2ZWRBZ2VudH0gKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ludm9sdmVkQWdlbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGxpc3Qgb2YgYWdlbnRzLCB0aGF0IHJlY2VpdmUgdGhpcyBub3RlIChSZXBseVRvTm90ZSkKICAgICAgICAjIGF0IGxlYXN0IHNlbmRlciBvZiBvcmlnaW5hbCBub3RlIGFuZCBhbGwgcmVjZXBpZW50cyBvZiB0aGUgb3JpZ2luYWwgbm90ZQogICAgICAgICMgdGhhdCBjb3VsZG4ndCBiZSBzZWxlY3RlZCB3aXRoIGludm9sdmVkL2luZm9ybSBhZ2VudHMKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgbXkgJFVzZXJzSGFzaFNpemUgPSBrZXlzICVSZXBseVRvVXNlcklEczsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICAgICAgPSAwOwogICAgICAgICAgICAkUGFyYW17VXNlckxpc3RXaXRob3V0U2VsZWN0aW9ufSA9IGpvaW4oICcsJywga2V5cyAlUmVwbHlUb1VzZXJJRHMgKTsKCiAgICAgICAgICAgIGlmICggJFVzZXJzSGFzaFNpemUgPiAwICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlUmVwbHlUb1VzZXJJRHMgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlVXNlckRhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgYSBzZXBhcmF0b3IgKEluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yKSwKICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCBsYXN0IGVudHJ5CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ291bnRlciA8ICRVc2Vyc0hhc2hTaXplICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVVc2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewoKICAgICAgICAgICAgIyB1c2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgICAgICRQYXJhbXtSaWNoVGV4dFdpZHRofSAgPSAkQ29uZmlnLT57UmljaFRleHRXaWR0aH0gIHx8IDA7CgogICAgICAgICAgICAjIHNldCB1cCByaWNoIHRleHQgZWRpdG9yCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9CiAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1YmplY3RMYWJlbE1hbmRhdG9yeScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHRMYWJlbE1hbmRhdG9yeScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1YmplY3RMYWJlbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHRMYWJlbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHRleHQgdGVtcGxhdGUgc3RyaW5nCiAgICAgICAgbXkgJVN0YW5kYXJkVGVtcGxhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YW5kYXJkVGVtcGxhdGUnKS0+U3RhbmRhcmRUZW1wbGF0ZUxpc3QoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIFR5cGUgID0+ICdOb3RlJywKICAgICAgICApOwoKICAgICAgICBteSAkUXVldWVTdGFuZGFyZFRlbXBsYXRlcyA9ICRTZWxmLT5fR2V0U3RhbmRhcmRUZW1wbGF0ZXMoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gfHwgJycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkQ29uZmlnLT57UXVldWV9ICYmIElzSGFzaFJlZldpdGhEYXRhKCBcJVN0YW5kYXJkVGVtcGxhdGVzICkgKQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJFF1ZXVlU3RhbmRhcmRUZW1wbGF0ZXMgICAgfHwge30sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdTdGFuZGFyZFRlbXBsYXRlSUQnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U3RhbmRhcmRUZW1wbGF0ZUlEfSB8fCAnJywKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMjAwLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YW5kYXJkVGVtcGxhdGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyB0aW1lIGFjY291bnRpbmcgYm94CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFjY291bnRUaW1lJykgKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRzTGFiZWxNYW5kYXRvcnknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaW1lVW5pdHNMYWJlbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0cycsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCBBcnRpY2xlIHR5cGUgZHluYW1pYyBmaWVsZHMuCiAgICAgICAgZm9yIG15ICRBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZCAoIEB7ICRQYXJhbXtBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHN9IH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXJ0aWNsZVR5cGVEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQXJ0aWNsZVR5cGVEeW5hbWljRmllbGQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZC0+e01hbmRhdG9yeVRvb2x0aXB9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkQXJ0aWNsZVR5cGVEeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgRW5kIFdpZGdldCBBcnRpY2xlCgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgKTsKfQoKc3ViIF9HZXROZXh0U3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJU5leHRTdGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFN0YXRlTGlzdCgKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuIFwlTmV4dFN0YXRlczsKfQoKc3ViIF9HZXRSZXNwb25zaWJsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVNob3duVXNlcnM7CiAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIHNob3cgYWxsIHVzZXJzCiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAlU2hvd25Vc2VycyA9ICVBbGxHcm91cHNNZW1iZXJzOwogICAgfQoKICAgICMgc2hvdyBvbmx5IHVzZXJzIHdpdGggcmVzcG9uc2libGUgb3IgcncgcGVtaXNzaW9ucyBpbiB0aGUgcXVldWUKICAgIGVsc2lmICggJFBhcmFte1F1ZXVlSUR9ICYmICEkUGFyYW17QWxsVXNlcnN9ICkgewogICAgICAgIG15ICRHSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+R2V0UXVldWVHcm91cElEKAogICAgICAgICAgICBRdWV1ZUlEID0+ICRQYXJhbXtOZXdRdWV1ZUlEfSB8fCAkUGFyYW17UXVldWVJRH0KICAgICAgICApOwogICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdyZXNwb25zaWJsZScsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIHdvcmtmbG93CiAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ1Jlc3BvbnNpYmxlJywKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHsgJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpIH0gaWYgJEFDTDsKCiAgICByZXR1cm4gXCVTaG93blVzZXJzOwp9CgpzdWIgX0dldE93bmVycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVNob3duVXNlcnM7CiAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIHNob3cgYWxsIHVzZXJzCiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAlU2hvd25Vc2VycyA9ICVBbGxHcm91cHNNZW1iZXJzOwogICAgfQoKICAgICMgc2hvdyBvbmx5IHVzZXJzIHdpdGggb3duZXIgb3IgcncgcGVtaXNzaW9ucyBpbiB0aGUgcXVldWUKICAgIGVsc2lmICggJFBhcmFte1F1ZXVlSUR9ICYmICEkUGFyYW17QWxsVXNlcnN9ICkgewogICAgICAgIG15ICRHSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+R2V0UXVldWVHcm91cElEKAogICAgICAgICAgICBRdWV1ZUlEID0+ICRQYXJhbXtOZXdRdWV1ZUlEfSB8fCAkUGFyYW17UXVldWVJRH0KICAgICAgICApOwogICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdvd25lcicsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIHdvcmtmbG93CiAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ05ld093bmVyJywKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHsgJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpIH0gaWYgJEFDTDsKCiAgICByZXR1cm4gXCVTaG93blVzZXJzOwp9CgpzdWIgX0dldE9sZE93bmVycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgQE9sZFVzZXJJbmZvID0gJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJMaXN0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApOwogICAgbXkgJVVzZXJIYXNoOwogICAgaWYgKEBPbGRVc2VySW5mbykgewogICAgICAgIG15ICRDb3VudGVyID0gMTsKICAgICAgICBVU0VSOgogICAgICAgIGZvciBteSAkVXNlciAoIHJldmVyc2UgQE9sZFVzZXJJbmZvICkgewoKICAgICAgICAgICAgbmV4dCBVU0VSIGlmICRVc2VySGFzaHsgJFVzZXItPntVc2VySUR9IH07CgogICAgICAgICAgICAkVXNlckhhc2h7ICRVc2VyLT57VXNlcklEfSB9ID0gIiRDb3VudGVyOiAkVXNlci0+e1VzZXJGdWxsbmFtZX0iOwogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIHdvcmtmbG93CiAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ09sZE93bmVyJywKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlVXNlckhhc2gsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiB7ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKSB9IGlmICRBQ0w7CgogICAgcmV0dXJuIFwlVXNlckhhc2g7Cn0KCnN1YiBfR2V0U2VydmljZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBzZXJ2aWNlCiAgICBteSAlU2VydmljZTsKCiAgICAjIGdldCBvcHRpb25zIGZvciBkZWZhdWx0IHNlcnZpY2VzIGZvciB1bmtub3duIGN1c3RvbWVycwogICAgbXkgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6U2VydmljZTo6RGVmYXVsdDo6VW5rbm93bkN1c3RvbWVyJyk7CgogICAgIyBjaGVjayBpZiBubyBDdXN0b21lclVzZXJJRCBpcyBzZWxlY3RlZAogICAgIyBpZiAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgPSAwIGxlYXZlIEN1c3RvbWVyVXNlcklEIGVtcHR5LCBpdCB3aWxsIG5vdCBnZXQgYW55IHNlcnZpY2VzCiAgICAjIGlmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9IDEgc2V0IEN1c3RvbWVyVXNlcklEIHRvIGdldCBkZWZhdWx0IHNlcnZpY2VzCiAgICBpZiAoICEkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICYmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciApIHsKICAgICAgICAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ID0gJzxERUZBVUxUPic7CiAgICB9CgogICAgIyBnZXQgc2VydmljZSBsaXN0CiAgICBpZiAoICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJVNlcnZpY2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFNlcnZpY2VMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiBcJVNlcnZpY2U7Cn0KCnN1YiBfR2V0U0xBcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaWYgbm9uIHNldCBjdXN0b21lcnMgY2FuIGdldCBkZWZhdWx0IHNlcnZpY2VzIHRoZW4gdGhleSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIGdldCB0aGUgU0xBcwogICAgIyAgZm9yIHRob3NlIHNlcnZpY2VzICh0aGlzIHdvcmtzIGR1cmluZyB0aWNrZXQgY3JlYXRpb24pLgogICAgIyBpZiBubyBDdXN0b21lclVzZXJJRCBpcyBzZXQsIFRpY2tldFNMQUxpc3Qgd2lsbCBjb21wbGFpbiBkdXJpbmcgQUpBWCB1cGRhdGVzIGFzIFVzZXJJRCBpcyBub3QKICAgICMgIHBhc3NlZC4gU2VlIGJ1ZyAxMTE0Ny4KCiAgICAjIGdldCBvcHRpb25zIGZvciBkZWZhdWx0IHNlcnZpY2VzIGZvciB1bmtub3duIGN1c3RvbWVycwogICAgbXkgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6U2VydmljZTo6RGVmYXVsdDo6VW5rbm93bkN1c3RvbWVyJyk7CgogICAgIyBjaGVjayBpZiBubyBDdXN0b21lclVzZXJJRCBpcyBzZWxlY3RlZAogICAgIyBpZiAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgPSAwIGxlYXZlIEN1c3RvbWVyVXNlcklEIGVtcHR5LCBpdCB3aWxsIG5vdCBnZXQgYW55IHNlcnZpY2VzCiAgICAjIGlmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9IDEgc2V0IEN1c3RvbWVyVXNlcklEIHRvIGdldCBkZWZhdWx0IHNlcnZpY2VzCiAgICBpZiAoICEkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICYmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciApIHsKICAgICAgICAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ID0gJzxERUZBVUxUPic7CiAgICB9CgogICAgbXkgJVNMQTsKICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gKSB7CiAgICAgICAgJVNMQSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U0xBTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gXCVTTEE7Cn0KCnN1YiBfR2V0UHJpb3JpdGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVQcmlvcml0aWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRQcmlvcml0eUxpc3QoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIGlmICggISRDb25maWctPntQcmlvcml0eURlZmF1bHR9ICkgewogICAgICAgICRQcmlvcml0aWVzeycnfSA9ICctJzsKICAgIH0KICAgIHJldHVybiBcJVByaW9yaXRpZXM7Cn0KCnN1YiBfR2V0RmllbGRzVG9VcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAVXBkYXRhYmxlRmllbGRzOwoKICAgICMgc2V0IHRoZSBmaWVsZHMgdGhhdCBjYW4gYmUgdXBkYXRlYWJsZSB2aWEgQUpBWFVwZGF0ZQogICAgaWYgKCAhJFBhcmFte09ubHlEeW5hbWljRmllbGRzfSApIHsKICAgICAgICBAVXBkYXRhYmxlRmllbGRzID0gcXcoCiAgICAgICAgICAgIFR5cGVJRCBTZXJ2aWNlSUQgU0xBSUQgTmV3T3duZXJJRCBOZXdSZXNwb25zaWJsZUlEIE5ld1N0YXRlSUQKICAgICAgICAgICAgTmV3UHJpb3JpdHlJRAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWZpbmUgdGhlIGR5bmFtaWMgZmllbGRzIHRvIHNob3cgYmFzZWQgb24gdGhlIG9iamVjdCB0eXBlCiAgICBteSAkT2JqZWN0VHlwZSA9IFsnVGlja2V0J107CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCiAgICAjIGdldCBtYXN0ZXIvc2xhdmUgZHluYW1pYyBmaWVsZAogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykgfHwgJyc7CiAgICBteSAkTWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ01hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQnKSB8fCAwOwoKICAgIGlmICgkTWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWQpIHsKICAgICAgICAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gPSAxOwogICAgfQojIC0tLQoKICAgICMgb25seSBzY3JlZW5zIHRoYXQgYWRkIG5vdGVzIGNhbiBtb2RpZnkgQXJ0aWNsZSBkeW5hbWljIGZpZWxkcwogICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gKSB7CiAgICAgICAgJE9iamVjdFR5cGUgPSBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXTsKICAgIH0KCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0FDTFJlZHVjaWJsZTsKCiAgICAgICAgcHVzaCBAVXBkYXRhYmxlRmllbGRzLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICB9CgogICAgcmV0dXJuIFxAVXBkYXRhYmxlRmllbGRzOwp9CgpzdWIgX0dldFF1b3RlZFJlcGx5Qm9keSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyByZXdyYXAgYm9keSBpZiBleGlzdHMKICAgICAgICBpZiAoICRQYXJhbXtCb2R5fSApIHsKICAgICAgICAgICAgJFBhcmFte0JvZHl9ID1+IHMvXHQvIC9nOwogICAgICAgICAgICBteSAkUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlF1b3RlJykgfHwgJycsCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFF1b3RlKSB7CgogICAgICAgICAgICAgICAgIyBxdW90ZSB0ZXh0CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAiPGJsb2NrcXVvdGUgdHlwZT1cImNpdGVcIj4kUGFyYW17Qm9keX08L2Jsb2NrcXVvdGU+XG4iOwoKICAgICAgICAgICAgICAgICMgY2xlYW51cCBub3QgY29tcGF0LiB0YWdzCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50Q2xlYW51cCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkUmVzcG9uc2VGb3JtYXQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9CiAgICAgICAgICAgICAgICAgICAgLT5Gb3JtYXRUaW1lU3RyaW5nKCAkUGFyYW17Q3JlYXRlVGltZX0sICdEYXRlRm9ybWF0JywgJ05vU2Vjb25kcycgKTsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdCAuPSAnIC0gJyAuICRQYXJhbXtGcm9tfSAuICcgJzsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdAogICAgICAgICAgICAgICAgICAgIC49ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnd3JvdGUnKSAuICc6JzsKCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkUmVzcG9uc2VGb3JtYXQgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxici8+IiAuICRQYXJhbXtCb2R5fTsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtDcmVhdGVUaW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RhdGUnKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICI6ICRQYXJhbXtDcmVhdGVUaW1lfTxici8+IiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgKHF3KFN1YmplY3QgUmVwbHlUbyBSZXBseS1UbyBDYyBUbyBGcm9tKSkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFteyRffSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRfKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17JF99PGJyLz4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRnJvbSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMlJpY2hUZXh0KAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17RnJvbX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRNZXNzYWdlRnJvbSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTWVzc2FnZSBmcm9tJyk7CiAgICAgICAgICAgICAgICBteSAkRW5kTWVzc2FnZSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0VuZCBtZXNzYWdlJyk7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxici8+LS0tLSAkTWVzc2FnZUZyb20gJEZyb20gLS0tPGJyLz48YnIvPiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gLj0gIjxici8+LS0tLSAkRW5kTWVzc2FnZSAtLS08YnIvPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBwcmVwYXJlIGJvZHksIHN1YmplY3QsIFJlcGx5VG8gLi4uCiAgICAgICAgIyByZXdyYXAgYm9keSBpZiBleGlzdHMKICAgICAgICBpZiAoICRQYXJhbXtCb2R5fSApIHsKICAgICAgICAgICAgJFBhcmFte0JvZHl9ID1+IHMvXHQvIC9nOwogICAgICAgICAgICBteSAkUXVvdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlF1b3RlJyk7CiAgICAgICAgICAgIGlmICgkUXVvdGUpIHsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9fiBzL1xuL1xuJFF1b3RlIC9nOwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIlxuJFF1b3RlICIgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICAgICAgbXkgJFJlc3BvbnNlRm9ybWF0ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAgICAgICAgIC0+Rm9ybWF0VGltZVN0cmluZyggJFBhcmFte0NyZWF0ZVRpbWV9LCAnRGF0ZUZvcm1hdCcsICdOb1NlY29uZHMnICk7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQgLj0gJyAtICcgLiAkUGFyYW17RnJvbX0gLiAnICc7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQKICAgICAgICAgICAgICAgICAgICAuPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3dyb3RlJykgLiAiOlxuIjsKCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkUmVzcG9uc2VGb3JtYXQgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAiXG4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17Q3JlYXRlVGltZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEYXRlJykgLgogICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17Q3JlYXRlVGltZX1cbiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yIChxdyhTdWJqZWN0IFJlcGx5VG8gUmVwbHktVG8gQ2MgVG8gRnJvbSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkXykgLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogJFBhcmFteyRffVxuIiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJE1lc3NhZ2VGcm9tID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdNZXNzYWdlIGZyb20nKTsKICAgICAgICAgICAgICAgIG15ICRFbmRNZXNzYWdlICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRW5kIG1lc3NhZ2UnKTsKCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAiXG4tLS0tICRNZXNzYWdlRnJvbSAkUGFyYW17RnJvbX0gLS0tXG5cbiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gLj0gIlxuLS0tLSAkRW5kTWVzc2FnZSAtLS1cbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtCb2R5fTsKfQoKc3ViIF9HZXRTdGFuZGFyZFRlbXBsYXRlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNyZWF0ZSB0ZW1wbGF0ZXMKICAgIG15ICVUZW1wbGF0ZXM7CgogICAgIyBjaGVjayBuZWVkZWQKICAgIHJldHVybiBcJVRlbXBsYXRlcyBpZiAhJFBhcmFte1F1ZXVlSUR9ICYmICEkUGFyYW17VGlja2V0SUR9OwoKICAgIG15ICRRdWV1ZUlEID0gJFBhcmFte1F1ZXVlSUR9IHx8ICcnOwogICAgaWYgKCAhJFBhcmFte1F1ZXVlSUR9ICYmICRQYXJhbXtUaWNrZXRJRH0gKSB7CgogICAgICAgICMgZ2V0IFF1ZXVlSUQgZnJvbSB0aGUgdGlja2V0CiAgICAgICAgbXkgJVRpY2tldCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0R2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUXVldWVJRCA9ICRUaWNrZXR7UXVldWVJRH0gfHwgJyc7CiAgICB9CgogICAgIyBmZXRjaCBhbGwgc3RkLiB0ZW1wbGF0ZXMKICAgIG15ICVTdGFuZGFyZFRlbXBsYXRlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5RdWV1ZVN0YW5kYXJkVGVtcGxhdGVNZW1iZXJMaXN0KAogICAgICAgIFF1ZXVlSUQgICAgICAgPT4gJFF1ZXVlSUQsCiAgICAgICAgVGVtcGxhdGVUeXBlcyA9PiAxLAogICAgKTsKCiAgICAjIHJldHVybiBlbXB0eSBoYXNoIGlmIHRoZXJlIGFyZSBubyB0ZW1wbGF0ZXMgZm9yIHRoaXMgc2NyZWVuCiAgICByZXR1cm4gXCVUZW1wbGF0ZXMgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RhbmRhcmRUZW1wbGF0ZXN7Tm90ZX0gKTsKCiAgICAjIHJldHVybiBqdXN0IHRoZSB0ZW1wbGF0ZXMgZm9yIHRoaXMgc2NyZWVuCiAgICByZXR1cm4gJFN0YW5kYXJkVGVtcGxhdGVze05vdGV9Owp9CgpzdWIgX0dldFR5cGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdHlwZQogICAgbXkgJVR5cGU7CiAgICBpZiAoICRQYXJhbXtRdWV1ZUlEfSB8fCAkUGFyYW17VGlja2V0SUR9ICkgewogICAgICAgICVUeXBlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRUeXBlTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiBcJVR5cGU7Cn0KCnN1YiBfR2V0UXVldWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBHZXQgUXVldWVzLgogICAgbXkgJVF1ZXVlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0TW92ZUxpc3QoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVHlwZSAgICAgPT4gJ21vdmVfaW50bycsCiAgICApOwogICAgcmV0dXJuIFwlUXVldWVzOwp9CiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCnN1YiBfR2V0TWFzdGVyU2xhdmVEYXRhIHsKICAgIG15ICgkU2VsZiwgJVBhcmFtKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRVbnNldE1hc3RlclNsYXZlICA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OlVuc2V0TWFzdGVyU2xhdmUnKSB8fCAwOwogICAgbXkgJFVwZGF0ZU1hc3RlclNsYXZlID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6VXBkYXRlTWFzdGVyU2xhdmUnKSB8fCAwOwoKICAgIG15ICVUaWNrZXQgPSAleyAkUGFyYW17VGlja2V0fSB9OwogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJFBhcmFte01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfTsKCiAgICBteSAkRmllbGRWYWx1ZSA9ICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB9IHx8ICcnOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJURhdGEgPSAoCiAgICAgICAgJycgPT4gJy0nLAogICAgKTsKCiAgICBpZiAoICRGaWVsZFZhbHVlIG5lICdNYXN0ZXInICkgewogICAgICAgICREYXRhe01hc3Rlcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05ldyBNYXN0ZXIgVGlja2V0Jyk7CiAgICB9CiAgICBpZiAoICRVbnNldE1hc3RlclNsYXZlICYmICRGaWVsZFZhbHVlIGVxICdNYXN0ZXInICkgewogICAgICAgICREYXRhe1Vuc2V0TWFzdGVyfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVW5zZXQgTWFzdGVyIFRpY2tldCcpOwogICAgfQogICAgaWYgKCAkVW5zZXRNYXN0ZXJTbGF2ZSAmJiAkRmllbGRWYWx1ZSA9fiBte15TbGF2ZU9mOiguKj8pJH14bXMgKSB7CiAgICAgICAgJERhdGF7VW5zZXRTbGF2ZX0gID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdVbnNldCBTbGF2ZSBUaWNrZXQnKTsKICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkVGlja2V0SG9vayAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9vaycpOwogICAgbXkgJFRpY2tldEhvb2tEaXZpZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyk7CgogICAgaWYgKCAkVXBkYXRlTWFzdGVyU2xhdmUgKSB7CiAgICAgICAgbXkgQFRpY2tldElEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCgogICAgICAgICAgICAjIG1hc3RlciBzbGF2ZSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfJyAuICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9PiB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJ01hc3RlcicsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBTdGF0ZVR5cGUgID0+ICdPcGVuJywKICAgICAgICAgICAgTGltaXQgICAgICA9PiA2MCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJ3JvJywKICAgICAgICApOwoKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICVDdXJyZW50VGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJUN1cnJlbnRUaWNrZXQ7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgJEZpZWxkVmFsdWUgZXEgIlNsYXZlT2Y6JEN1cnJlbnRUaWNrZXR7VGlja2V0TnVtYmVyfSI7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgJEZpZWxkVmFsdWUgJiYgJFRpY2tldHtUaWNrZXRJRH0gZXEgJEN1cnJlbnRUaWNrZXR7VGlja2V0SUR9OwoKICAgICAgICAgICAgJERhdGF7IlNsYXZlT2Y6JEN1cnJlbnRUaWNrZXR7VGlja2V0TnVtYmVyfSJ9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJ1NsYXZlIG9mICVzJXMlczogJXMnLAogICAgICAgICAgICAgICAgJFRpY2tldEhvb2ssCiAgICAgICAgICAgICAgICAkVGlja2V0SG9va0RpdmlkZXIsCiAgICAgICAgICAgICAgICAkQ3VycmVudFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgJEN1cnJlbnRUaWNrZXR7VGl0bGV9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVEYXRhOwp9CiMgLS0tCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldEJ1bGs6Ok1hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbWFzdGVyL3NsYXZlIGR5bmFtaWMgZmllbGQKICAgICRTZWxmLT57TWFzdGVyU2xhdmVEeW5hbWljRmllbGR9ICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykgICAgfHwgJyc7CiAgICAkU2VsZi0+e01hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkfSA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkFkdmFuY2VkRW5hYmxlZCcpIHx8IDA7CgogICAgaWYgKCAkU2VsZi0+e01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZENvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIERpc3BsYXkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZCBvciBpZiBhZHZhbmNlZCBtb2RlIGlzIG5vdCBlbmFibGUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8KICAgIHJldHVybiBpZiAhJFNlbGYtPntNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH07CiAgICByZXR1cm4gaWYgISRTZWxmLT57TWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWR9OwoKICAgIG15ICRTZXJ2ZXJFcnJvcjsKICAgIG15ICRFcnJvck1lc3NhZ2U7CiAgICBpZiAoIGV4aXN0cyAkUGFyYW17RXJyb3JzfS0+eyAkU2VsZi0+e0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSB9ICkgewogICAgICAgICRTZXJ2ZXJFcnJvciAgPSAxOwogICAgICAgICRFcnJvck1lc3NhZ2UgPSAkUGFyYW17RXJyb3JzfS0+eyAkU2VsZi0+e0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSB9OwogICAgfQoKICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciA9ICRTZWxmLT5fR2V0TWFzdGVyU2xhdmVEYXRhKAogICAgICAgICVQYXJhbSwKICAgICAgICBNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9PiAkU2VsZi0+e01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSwKICAgICk7CgogICAgIyBnZXQgZmllbGQgSFRNTAogICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgIFNlcnZlckVycm9yICAgICAgICAgID0+ICRTZXJ2ZXJFcnJvciB8fCAnJywKICAgICAgICBFcnJvck1lc3NhZ2UgICAgICAgICA9PiAkRXJyb3JNZXNzYWdlIHx8ICcnLAogICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksCiAgICAgICAgTWFuZGF0b3J5ICAgICAgICAgICAgPT4gMCwKICAgICk7CgogICAgIyBpbmRlbnRhdGlvbiBoZXJlIGlzIG9uIHB1cnBvc2Ugc28gdGhlIEhUTUwgd2lsbCBsb29rIGFjY29yZGluZyB0byB0aGUgZnJhbWV3b3JrCiAgICBteSAkSFRNTFN0cmluZyA9IDw8IkVPRiI7CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpFT0YKCiAgICByZXR1cm4gJEhUTUxTdHJpbmc7Cn0KCnN1YiBWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaWYgdGhlcmUgaXMgbm8gY29uZmlndXJlZCBkeW5hbWljIGZpZWxkIG9yIGlmIGFkdmFuY2VkIG1vZGUgaXMgbm90IGVuYWJsZSwgdGhlcmUgaXMgbm90aGluZyB0byBkbwogICAgcmV0dXJuIGlmICEkU2VsZi0+e01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZH07CgogICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyID0gJFNlbGYtPl9HZXRNYXN0ZXJTbGF2ZURhdGEoCiAgICAgICAgJVBhcmFtLAogICAgICAgIE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0+ICRTZWxmLT57TWFzdGVyU2xhdmVEeW5hbWljRmllbGR9LAogICAgKTsKCiAgICBteSAkVmFsaWRhdGlvblJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVWYWxpZGF0ZSgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwKICAgICAgICBNYW5kYXRvcnkgICAgICAgICAgICA9PiAwLAogICAgKTsKCiAgICBpZiAoICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICkgewogICAgICAgIHJldHVybiAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEVycm9yS2V5ICAgPT4gJFNlbGYtPntEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICAgICAgICAgICAgICBFcnJvclZhbHVlID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgU3RvcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZCBvciBpZiBhZHZhbmNlZCBtb2RlIGlzIG5vdCBlbmFibGUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8KICAgIHJldHVybiAxIGlmICEkU2VsZi0+e01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfTsKICAgIHJldHVybiAxIGlmICEkU2VsZi0+e01hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkfTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvcm0gdGhlIHdlYiByZXF1ZXN0CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICApOwoKICAgICMgc2V0IHRoZSB2YWx1ZQogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfR2V0TWFzdGVyU2xhdmVEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZ2V0IG1hc3RlciBzbGF2ZSBjb25maWcKICAgIG15ICRVbnNldE1hc3RlclNsYXZlICA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OlVuc2V0TWFzdGVyU2xhdmUnKSAgfHwgMDsKICAgIG15ICRVcGRhdGVNYXN0ZXJTbGF2ZSA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OlVwZGF0ZU1hc3RlclNsYXZlJykgfHwgMDsKCiAgICBteSAlRGF0YSA9ICgKICAgICAgICAnJyAgICAgPT4gJy0nLAogICAgICAgIE1hc3RlciA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05ldyBNYXN0ZXIgVGlja2V0JyksCiAgICApOwoKICAgIGlmICgkVW5zZXRNYXN0ZXJTbGF2ZSkgewogICAgICAgICREYXRhe1Vuc2V0TWFzdGVyfSA9IFRyYW5zbGF0YWJsZSgnVW5zZXQgTWFzdGVyIFRpY2tldHMnKTsKICAgICAgICAkRGF0YXtVbnNldFNsYXZlfSAgPSBUcmFuc2xhdGFibGUoJ1Vuc2V0IFNsYXZlIFRpY2tldHMnKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBpZiAoJFVwZGF0ZU1hc3RlclNsYXZlKSB7CgogICAgICAgIG15IEBUaWNrZXRJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAoKICAgICAgICAgICAgIyBtYXN0ZXIgc2xhdmUgZHluYW1pYyBmaWVsZAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TWFzdGVyU2xhdmVEeW5hbWljRmllbGR9ID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAnTWFzdGVyJywKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIFN0YXRlVHlwZSAgPT4gJ09wZW4nLAogICAgICAgICAgICBMaW1pdCAgICAgID0+IDYwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBQZXJtaXNzaW9uID0+ICdybycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRpY2tldEhvb2sgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2snKTsKICAgICAgICBteSAkVGlja2V0SG9va0RpdmlkZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9va0RpdmlkZXInKTsKCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewoKICAgICAgICAgICAgIyBnZXQgZWFjaCB0aWNrZXQgZnJvbSB0aGUgc2VhcmNoIHJlc3VsdHMKICAgICAgICAgICAgbXkgJUN1cnJlbnRUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJUN1cnJlbnRUaWNrZXQ7CgogICAgICAgICAgICAkRGF0YXsiU2xhdmVPZjokQ3VycmVudFRpY2tldHtUaWNrZXROdW1iZXJ9In0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAnU2xhdmUgb2YgJXMlcyVzOiAlcycsCiAgICAgICAgICAgICAgICAkVGlja2V0SG9vaywKICAgICAgICAgICAgICAgICRUaWNrZXRIb29rRGl2aWRlciwKICAgICAgICAgICAgICAgICRDdXJyZW50VGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgICAgICAkQ3VycmVudFRpY2tldHtUaXRsZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIFwlRGF0YTsKCn0KMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5PYmplY3RUeXBlTmFtZSkgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5Nb2RlKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiRmllbGQiKSB8IGh0bWwgJV08L2gxPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWRtaW5EeW5hbWljRmllbGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIGJhY2sgdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUiIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlslIERhdGEuTW9kZSB8IGh0bWwgJV1BY3Rpb24iIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik9iamVjdFR5cGUiIHZhbHVlPSJbJSBEYXRhLk9iamVjdFR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGaWVsZFR5cGUiIHZhbHVlPSJbJSBEYXRhLkZpZWxkVHlwZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IklEIiB2YWx1ZT0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iIC8+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJHZW5lcmFsIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGF5b3V0R3JpZCBDb2x1bW5zV2l0aFNwYWNpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5hbWUiIGNsYXNzPSJXNTBwYyBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0gWyUgRGF0YS5TaG93V2FybmluZyB8IGh0bWwgJV0gIFZhbGlkYXRlX0FscGhhbnVtZXJpYyIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIyMDAiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJOYW1lIiBbJSBEYXRhLlJlYWRvbmx5SW50ZXJuYWxGaWVsZCB8IGh0bWwgJV0gLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLCBhbmQgdGhlIHZhbHVlIHNob3VsZCBiZSBhbHBoYWJldGljIGFuZCBudW1lcmljIGNoYXJhY3RlcnMgb25seS4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLk5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0IGFscGhhYmV0aWMgYW5kIG51bWVyaWMgY2hhcmFjdGVycy4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJXYXJuaW5nIEhpZGRlbiI+WyUgVHJhbnNsYXRlKCJDaGFuZ2luZyB0aGlzIHZhbHVlIHdpbGwgcmVxdWlyZSBtYW51YWwgY2hhbmdlcyBpbiB0aGUgc3lzdGVtLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkxhYmVsIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkxhYmVsIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IkxhYmVsIiBjbGFzcz0iVzUwcGMgWyUgRGF0YS5MYWJlbFNlcnZlckVycm9yIHwgaHRtbCAlXSBWYWxpZGF0ZV9SZXF1aXJlZCIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIyMDAiIHZhbHVlPSJbJSBEYXRhLkxhYmVsIHwgaHRtbCAlXSIgbmFtZT0iTGFiZWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTGFiZWxFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxhYmVsU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbFNlcnZlckVycm9yTWVzc2FnZSkgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJUaGlzIGlzIHRoZSBuYW1lIHRvIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIHRoZSBmaWVsZCBpcyBhY3RpdmUuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iRmllbGRPcmRlciI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJGaWVsZCBvcmRlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGRPcmRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRmllbGRPcmRlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIG51bWVyaWMuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJGaWVsZE9yZGVyU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoRGF0YS5GaWVsZE9yZGVyU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIlRoaXMgaXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoaXMgZmllbGQgd2lsbCBiZSBzaG93biBvbiB0aGUgc2NyZWVucyB3aGVyZSBpcyBhY3RpdmUuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZGl0eVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkZpZWxkVHlwZU5hbWUiPlslIFRyYW5zbGF0ZSgiRmllbGQgdHlwZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJGaWVsZFR5cGVOYW1lIiByZWFkb25seSBjbGFzcz0iVzUwcGMiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMjAwIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdIiBuYW1lPSJGaWVsZFR5cGVOYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iT2JqZWN0VHlwZU5hbWUiPlslIFRyYW5zbGF0ZSgiT2JqZWN0IHR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iT2JqZWN0VHlwZU5hbWUiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIyMDAiIHZhbHVlPSJbJSBUcmFuc2xhdGUoRGF0YS5PYmplY3RUeXBlTmFtZSkgfCBodG1sICVdIiBuYW1lPSJPYmplY3RUeXBlTmFtZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRlcm5hbEZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbnRlcm5hbEZpZWxkIj5bJSBUcmFuc2xhdGUoIkludGVybmFsIGZpZWxkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IkludGVybmFsRmllbGQiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIxIiB2YWx1ZT0iWyUgRGF0YS5JbnRlcm5hbEZpZWxkIHwgaHRtbCAlXSIgbmFtZT0iSW50ZXJuYWxGaWVsZCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcHJvdGVjdGVkIGFuZCBjYW4ndCBiZSBkZWxldGVkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkludGVybmFsRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWRtaW5EeW5hbWljRmllbGQiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojICRvcmlnaW46IG90cnMgLSBlYjllYTM2MjliNTU5MzFlMmEwNDZiNmQwZTg3MTM3ZDM5YTI0YzcyIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudFRpY2tldEFjdGlvbkNvbW1vbi50dAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQoKIyBUaGlzIG1vZHVsZSB1c2VzIEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGFzIGEgYmFzZSwgZm9yIGVhc3kgdXBkYXRlIGFuZCBmcmFtZXdvcmsgY29tcGF0aWJpbGl0eQojIHNwZWNpYWwgbWFya2VycyBoYXMgYmVlbiBzZXQgYWxvbmcgdGhlIGZpbGUgdG8gZWFzeSBzcG90IHRoZSBkaWZmZXJlbmNlcyBpbnRyb2R1Y2VkIGJ5CiMgT1RSU01hc3RlclNsYXZlIHBhY2thZ2UKIyAtLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlByb3BlcnRpZXMiKSAlXQoKPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9ImNvbXBvc2UiIGlkPSJDb21wb3NlIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdG9yZSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVGlja2V0SUQiIHZhbHVlPSJbJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVwbHlUb0FydGljbGUiIHZhbHVlPSJbJSBEYXRhLlJlcGx5VG9BcnRpY2xlIHwgaHRtbCAlXSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRXhwYW5kIiBpZD0iRXhwYW5kIiB2YWx1ZT0iIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkZvcm1EcmFmdFRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtRHJhZnRUaXRsZSB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkZvcm1EcmFmdElEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtRHJhZnRJRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkZvcm1EcmFmdEFjdGlvbiIgaWQ9IkZvcm1EcmFmdEFjdGlvbiIgLz4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyQWdlbnRUaWNrZXRGcmVlVGV4dCIpICVdClslIFRyYW5zbGF0ZSgiQ2hhbmdlIEZyZWUgVGV4dCBvZiAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRGcmVlVGV4dCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0T3duZXIiKSAlXQpbJSBUcmFuc2xhdGUoIkNoYW5nZSBPd25lciBvZiAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRPd25lciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0Q2xvc2UiKSAlXQpbJSBUcmFuc2xhdGUoIkNsb3NlICVzJXMlcyIsIENvbmZpZygnVGlja2V0OjpIb29rJyksIENvbmZpZygnVGlja2V0OjpIb29rRGl2aWRlcicpLCBEYXRhLlRpY2tldE51bWJlcikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZ2VudFRpY2tldENsb3NlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyQWdlbnRUaWNrZXROb3RlIikgJV0KWyUgVHJhbnNsYXRlKCJBZGQgTm90ZSB0byAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXROb3RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyQWdlbnRUaWNrZXRQZW5kaW5nIikgJV0KWyUgVHJhbnNsYXRlKCJTZXQgUGVuZGluZyBUaW1lIGZvciAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRQZW5kaW5nIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyQWdlbnRUaWNrZXRQcmlvcml0eSIpICVdClslIFRyYW5zbGF0ZSgiQ2hhbmdlIFByaW9yaXR5IG9mICVzJXMlcyIsIENvbmZpZygnVGlja2V0OjpIb29rJyksIENvbmZpZygnVGlja2V0OjpIb29rRGl2aWRlcicpLCBEYXRhLlRpY2tldE51bWJlcikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZ2VudFRpY2tldFByaW9yaXR5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyQWdlbnRUaWNrZXRSZXNwb25zaWJsZSIpICVdClslIFRyYW5zbGF0ZSgiQ2hhbmdlIFJlc3BvbnNpYmxlIG9mICVzJXMlcyIsIENvbmZpZygnVGlja2V0OjpIb29rJyksIENvbmZpZygnVGlja2V0OjpIb29rRGl2aWRlcicpLCBEYXRhLlRpY2tldE51bWJlcikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZ2VudFRpY2tldFJlc3BvbnNpYmxlIikgJV0KIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSIpICVdClslIFRyYW5zbGF0ZSgiTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyIsIENvbmZpZygnVGlja2V0OjpIb29rJyksIENvbmZpZygnVGlja2V0OjpIb29rRGl2aWRlcicpLCBEYXRhLlRpY2tldE51bWJlcikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZ2VudFRpY2tldE1hc3RlclNsYXZlIikgJV0KIyAtLS0KICAgICAgICAgICAgICAgICAmbWRhc2g7IFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgIDwvaDE+CiAgICAgICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0QmFjayIpICVdCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgIDwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldEJhY2siKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcm9wZXJ0aWVzTG9jayIpICVdCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgdGlja2V0IGhhcyBiZWVuIGxvY2tlZCIpIHwgaHRtbCAlXS4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJVbmRvQ2xvc2VQb3B1cCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0TG9jaztTdWJhY3Rpb249VW5sb2NrO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgJV07WyUgRW52KCJDaGFsbGVuZ2VUb2tlblBhcmFtIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVuZG8gJiBjbG9zZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJQcm9wZXJ0aWVzTG9jayIpICVdCgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICBbJSBJTkNMVURFICJGb3JtRWxlbWVudHMvRHJhZnROb3RpZmljYXRpb25zLnR0IiAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJXaWRnZXRUaWNrZXRBY3Rpb25zIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIEV4cGFuZGVkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGlja2V0IFNldHRpbmdzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRpdGxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVGl0bGUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzc1cGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZUludmFsaWQgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaXRsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUeXBlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVHlwZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlR5cGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlR5cGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlR5cGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVldWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlF1ZXVlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOZXdRdWV1ZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UXVldWVJRCI+WyUgVHJhbnNsYXRlKCJRdWV1ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlF1ZXVlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3UXVldWVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3UXVldWVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJRdWV1ZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXVlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNlcnZpY2VNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlNlcnZpY2VJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VydmljZUlEIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2VydmljZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNlcnZpY2VJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2VNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJTZXJ2aWNlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2VydmljZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNlcnZpY2VJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNlcnZpY2VJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZU1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTTEEiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNMQU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU0xBSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIExldmVsIEFncmVlbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTTEFJRCI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIExldmVsIEFncmVlbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TTEFTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNMQU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNMQUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNMQUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlNMQSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU0xBIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNMQU1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlNMQUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiU2VydmljZSBMZXZlbCBBZ3JlZW1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TTEFTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTTEFJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNMQUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlNMQSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNMQU1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPd25lciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuT3duZXJNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld093bmVySUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXcgT3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3T3duZXJJRCI+WyUgVHJhbnNsYXRlKCJOZXcgT3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT3duZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk93bmVyTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3T3duZXJJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJQbGVhc2Ugc2V0IGEgbmV3IG93bmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld093bmVySURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiT3duZXIgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPd25lciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPd25lck1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld093bmVySUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXcgT3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Pd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld093bmVySURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUGxlYXNlIHNldCBhIG5ldyBvd25lciEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdPd25lcklEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIk93bmVyIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3duZXJNYW5kYXRvcnkiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVzcG9uc2libGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlJlc3BvbnNpYmxlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOZXdSZXNwb25zaWJsZUlEIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiTmV3IFJlc3BvbnNpYmxlIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UmVzcG9uc2libGVJRCI+WyUgVHJhbnNsYXRlKCJOZXcgUmVzcG9uc2libGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzcG9uc2libGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlJlc3BvbnNpYmxlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3UmVzcG9uc2libGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJQbGVhc2Ugc2V0IGEgbmV3IHJlc3BvbnNpYmxlISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdSZXNwb25zaWJsZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlJlc3BvbnNpYmxlIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSZXNwb25zaWJsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zaWJsZU1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld1Jlc3BvbnNpYmxlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXcgUmVzcG9uc2libGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXNwb25zaWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1Jlc3BvbnNpYmxlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUGxlYXNlIHNldCBhIG5ldyByZXNwb25zaWJsZSEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdSZXNwb25zaWJsZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlJlc3BvbnNpYmxlIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzcG9uc2libGVNYW5kYXRvcnkiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlN0YXRlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOZXdTdGF0ZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiTmV4dCBzdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTdGF0ZUlEIj5bJSBUcmFuc2xhdGUoIk5leHQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlN0YXRlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3U3RhdGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdTdGF0ZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlN0YXRlIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0ZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0ZVBlbmRpbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJQZW5kaW5nIGRhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5EYXRlU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJEYXlTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiRGF0ZSBpbnZhbGlkISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkhvdXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiRGF0ZSBpbnZhbGlkISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkZvciBhbGwgcGVuZGluZyogc3RhdGVzLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRlUGVuZGluZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcmlvcml0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld1ByaW9yaXR5SUQiPlslIFRyYW5zbGF0ZSgiUHJpb3JpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUHJpb3JpdHlTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQcmlvcml0eSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRUeXBlRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93IFJvd19EeW5hbWljRmllbGRfWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFR5cGVEeW5hbWljRmllbGQiKSAlXQoKIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93IFJvd19EeW5hbWljRmllbGRfWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJXaWRnZXRUaWNrZXRBY3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldEFydGljbGUiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFslIERhdGEuV2lkZ2V0U3RhdHVzIHwgaHRtbCAlXSIgaWQ9IldpZGdldEFydGljbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBBcnRpY2xlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBJRiBEYXRhLldpZGdldFN0YXR1cyA9PSAnRXhwYW5kZWQnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQ3JlYXRlQXJ0aWNsZSIgbmFtZT0iQ3JlYXRlQXJ0aWNsZSIgdmFsdWU9IjEiIC8+ClslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNyZWF0ZUFydGljbGUiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIGFuIEFydGljbGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJDcmVhdGVBcnRpY2xlIiBuYW1lPSJDcmVhdGVBcnRpY2xlIiB2YWx1ZT0iMSIgWyUgSUYgRGF0YS5DcmVhdGVBcnRpY2xlICVdIGNoZWNrZWQ9ImNoZWNrZWQiWyUgRU5EICVdIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFkZGl0aW9uYWxBZ2VudHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5mb3JtVXNlcklEIj5bJSBUcmFuc2xhdGUoIkluZm9ybSBhZ2VudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvcm1BZ2VudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkludm9sdmVkQWdlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW52b2x2ZWRVc2VySUQiPlslIFRyYW5zbGF0ZSgiSW5mb3JtIGludm9sdmVkIGFnZW50cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbnZvbHZlZEFnZW50U3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnZvbHZlZEFnZW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGVyZSB5b3UgY2FuIHNlbGVjdCBhZGRpdGlvbmFsIGFnZW50cyB3aGljaCBzaG91bGQgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiByZWdhcmRpbmcgdGhlIG5ldyBhcnRpY2xlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWRkaXRpb25hbEFnZW50cyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRleHQgd2lsbCBhbHNvIGJlIHJlY2VpdmVkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVXNlckxpc3RXaXRob3V0U2VsZWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5Vc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24gIHwgaHRtbCAlXSIgLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlVzZXJFbWFpbCAlXSI+WyUgRGF0YS5Vc2VyRnVsbG5hbWUgJV08L3NwYW4+WyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IiKSAlXSxbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3ViamVjdCI+WyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJqZWN0TGFiZWwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU3ViamVjdCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1YmplY3RMYWJlbE1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJTdWJqZWN0IiBuYW1lPSJTdWJqZWN0IiB2YWx1ZT0iWyUgRGF0YS5TdWJqZWN0IHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlIFslIERhdGEuU3ViamVjdEludmFsaWQgJV0gWyUgRGF0YS5TdWJqZWN0UmVxdWlyZWQgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTdWJqZWN0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1YmplY3RTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0T3B0aW9ucyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPcHRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+Cgo8IS0tIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0JlZ2luIC0tPgo8IS0tIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0VuZCAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE9wdGlvbnMiKSAlXQoKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhbmRhcmRUZW1wbGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGFuZGFyZFRlbXBsYXRlSUQiPlslIFRyYW5zbGF0ZSgiVGV4dCBUZW1wbGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhbmRhcmRUZW1wbGF0ZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJTZXR0aW5nIGEgdGVtcGxhdGUgd2lsbCBvdmVyd3JpdGUgYW55IHRleHQgb3IgYXR0YWNobWVudC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YW5kYXJkVGVtcGxhdGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHRMYWJlbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSaWNoVGV4dCI+WyUgVHJhbnNsYXRlKCJUZXh0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJSaWNoVGV4dExhYmVsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHRMYWJlbE1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJSaWNoVGV4dCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJpY2hUZXh0TGFiZWxNYW5kYXRvcnkiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0RmllbGQiIGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IlJpY2hUZXh0IiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGUgWyUgRGF0YS5Cb2R5SW52YWxpZCAlXSBbJSBEYXRhLkJvZHlSZXF1aXJlZCAlXSIgbmFtZT0iQm9keSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuQm9keSB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0F0dGFjaG1lbnRMaXN0LnR0IiAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSXNWaXNpYmxlRm9yQ3VzdG9tZXIiPlslIFRyYW5zbGF0ZSgiSXMgdmlzaWJsZSBmb3IgY3VzdG9tZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IklzVmlzaWJsZUZvckN1c3RvbWVyIiBpZD0iSXNWaXNpYmxlRm9yQ3VzdG9tZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuSXNWaXNpYmxlRm9yQ3VzdG9tZXIgJV1jaGVja2VkPSJjaGVja2VkIiBbJSBFTkQgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHNMYWJlbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaW1lVW5pdHMiPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHNMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0c0xhYmVsTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpbWVVbml0cyI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpbWUgdW5pdHMiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGltZVVuaXRzIikpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzTGFiZWxNYW5kYXRvcnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaW1lVW5pdHMiIGlkPSJUaW1lVW5pdHMiIHZhbHVlPSJbJSBEYXRhLlRpbWVVbml0cyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9UaW1lVW5pdHMgWyUgRGF0YS5UaW1lVW5pdHNSZXF1aXJlZCB8IGh0bWwgJV0gWyUgRGF0YS5UaW1lVW5pdHNJbnZhbGlkIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpbWVVbml0c0Vycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJJbnZhbGlkIHRpbWUhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpbWVVbml0c1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFydGljbGVUeXBlRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkFydGljbGVUeXBlRHluYW1pY0ZpZWxkRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJEeW5hbWljRmllbGRfWyUgRGF0YS5OYW1lICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZCIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJXaWRnZXRBcnRpY2xlIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0ic3VibWl0UmljaFRleHQiIGFjY2Vzc2tleT0iZyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIChnKSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0RyYWZ0QnV0dG9ucy50dCIgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJQcm9wZXJ0aWVzIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpCYXNlU2VsZWN0KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpNYXN0ZXJTbGF2ZQoKPWhlYWQxIFNZTk9QU0lTCgpEeW5hbWljRmllbGRzIE1hc3RlclNsYXZlIERyaXZlciBkZWxlZ2F0ZQoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKClRoaXMgbW9kdWxlIGltcGxlbWVudHMgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgTDxLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kPi4KUGxlYXNlIGxvb2sgdGhlcmUgZm9yIGEgZGV0YWlsZWQgcmVmZXJlbmNlIG9mIHRoZSBmdW5jdGlvbnMuCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQtPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBmaWVsZCBiZWhhdmlvcnMKICAgICRTZWxmLT57QmVoYXZpb3JzfSA9IHsKICAgICAgICAnSXNBQ0xSZWR1Y2libGUnICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICAnSXNOb3RpZmljYXRpb25FdmVudENvbmRpdGlvbicgPT4gMSwKICAgICAgICAnSXNTb3J0YWJsZScgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnSXNGaWx0cmFibGUnICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnSXNTdGF0c0NvbmRpdGlvbicgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUnICAgPT4gMCwKICAgIH07CgogICAgIyBnZXQgdGhlIER5bmFtaWMgRmllbGQgQmFja2VuZCBjdXN0b20gZXh0ZW5zaW9ucwogICAgbXkgJER5bmFtaWNGaWVsZERyaXZlckV4dGVuc2lvbnMKICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RXh0ZW5zaW9uOjpEcml2ZXI6Ok1hc3RlclNsYXZlJyk7CgogICAgRVhURU5TSU9OOgogICAgZm9yIG15ICRFeHRlbnNpb25LZXkgKCBzb3J0IGtleXMgJXskRHluYW1pY0ZpZWxkRHJpdmVyRXh0ZW5zaW9uc30gKSB7CgogICAgICAgICMgc2tpcCBpbnZhbGlkIGV4dGVuc2lvbnMKICAgICAgICBuZXh0IEVYVEVOU0lPTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGREcml2ZXJFeHRlbnNpb25zLT57JEV4dGVuc2lvbktleX0gKTsKCiAgICAgICAgIyBjcmVhdGUgYSBleHRlbnNpb24gY29uZmlnIHNob3J0Y3V0CiAgICAgICAgbXkgJEV4dGVuc2lvbiA9ICREeW5hbWljRmllbGREcml2ZXJFeHRlbnNpb25zLT57JEV4dGVuc2lvbktleX07CgogICAgICAgICMgY2hlY2sgaWYgZXh0ZW5zaW9uIGhhcyBhIG5ldyBtb2R1bGUKICAgICAgICBpZiAoICRFeHRlbnNpb24tPntNb2R1bGV9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiBtb2R1bGUgY2FuIGJlIGxvYWRlZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZUJhc2VDbGFzcyggJEV4dGVuc2lvbi0+e01vZHVsZX0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkaWUgIkNhbid0IGxvYWQgZHluYW1pYyBmaWVsZHMgYmFja2VuZCBtb2R1bGUiCiAgICAgICAgICAgICAgICAgICAgLiAiICRFeHRlbnNpb24tPntNb2R1bGV9ISAkQCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgZXh0ZW5zaW9uIGNvbnRhaW5zIG1vcmUgYmVoYXZpb3JzCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJEV4dGVuc2lvbi0+e0JlaGF2aW9yc30gKSApIHsKCiAgICAgICAgICAgICV7ICRTZWxmLT57QmVoYXZpb3JzfSB9ID0gKAogICAgICAgICAgICAgICAgJXsgJFNlbGYtPntCZWhhdmlvcnN9IH0sCiAgICAgICAgICAgICAgICAleyAkRXh0ZW5zaW9uLT57QmVoYXZpb3JzfSB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+X0hhbmRsZUxpbmtzKAogICAgICAgIEZpZWxkTmFtZSAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSwKICAgICAgICBGaWVsZFZhbHVlID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgVGlja2V0SUQgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlcmUgd2FzIGFuIGVycm9yIGhhbmRsaW5nIHRoZSBsaW5rcyBmb3IgbWFzdGVyL3NsYXZlLCB2YWx1ZSBjb3VsZCBub3QgYmUgc2V0IiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfSAhfiAvXig/OlVuc2V0TWFzdGVyfFVuc2V0U2xhdmUpJC8gPyAkUGFyYW17VmFsdWV9IDogJyc7CgogICAgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKS0+VmFsdWVTZXQoCiAgICAgICAgRmllbGRJRCAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntJRH0sCiAgICAgICAgT2JqZWN0SUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBWYWx1ZSAgICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlVGV4dCA9PiAkVmFsdWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU3VjY2VzczsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlVmFsaWRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgZmllbGQgdmFsdWUgZnJvbSB0aGUgaHR0cCByZXF1ZXN0CiAgICBteSAkVmFsdWUgPSAkU2VsZi0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW17UGFyYW1PYmplY3R9LAoKICAgICAgICAjIG5vdCBuZWNlc3NhcnkgZm9yIHRoaXMgRHJpdmVyIGJ1dCBwbGFjZSBpdCBmb3IgY29uc2lzdGVuY3kgcmVhc29ucwogICAgICAgIFJldHVyblZhbHVlU3RydWN0dXJlID0+IDEsCiAgICApOwoKICAgIG15ICRTZXJ2ZXJFcnJvcjsKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgIyBwZXJmb3JtIG5lY2Vzc2FyeSB2YWxpZGF0aW9ucwogICAgaWYgKCAkUGFyYW17TWFuZGF0b3J5fSAmJiAhJFZhbHVlICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IDEsCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSAkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICMgdXNlIFBvc3NpYmxlVmFsdWVzRmlsdGVyIGlmIHNlbnQKICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte1Bvc3NpYmxlVmFsdWVzRmlsdGVyfSApIHsKICAgICAgICAgICAgJFBvc3NpYmxlVmFsdWVzID0gJFBhcmFte1Bvc3NpYmxlVmFsdWVzRmlsdGVyfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgZ2V0IHBvc3NpYmxlIHZhbHVlcyBsaXN0CiAgICAgICAgICAgICRQb3NzaWJsZVZhbHVlcyA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgdmFsaWRhdGUgaWYgdmFsdWUgaXMgaW4gcG9zc2libGUgdmFsdWVzIGxpc3QgKGJ1dCBsZXQgcGFzcyBlbXB0eSB2YWx1ZXMpCiAgICAgICAgaWYgKCAkVmFsdWUgJiYgISRQb3NzaWJsZVZhbHVlcy0+eyRWYWx1ZX0gKSB7CiAgICAgICAgICAgICRTZXJ2ZXJFcnJvciAgPSAxOwogICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ1RoZSBmaWVsZCBjb250ZW50IGlzIGludmFsaWQnOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSByZXN1bHRpbmcgc3RydWN0dXJlCiAgICBteSAkUmVzdWx0ID0gewogICAgICAgIFNlcnZlckVycm9yICA9PiAkU2VydmVyRXJyb3IsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRFcnJvck1lc3NhZ2UsCiAgICB9OwoKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgUG9zc2libGVWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRvIHN0b3JlIHRoZSBwb3NzaWJsZSB2YWx1ZXMKICAgIG15ICVQb3NzaWJsZVZhbHVlcyA9ICgKICAgICAgICAnJyA9PiAnLScsCiAgICApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGZpbmQgYWxsIGN1cnJlbnQgb3BlbiBtYXN0ZXIgc2xhdmUgdGlja2V0cwogICAgbXkgQFRpY2tldElEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKCiAgICAgICAgIyBtYXN0ZXIgc2xhdmUgZHluYW1pYyBmaWVsZAogICAgICAgICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0gPT4gewogICAgICAgICAgICBFcXVhbHMgPT4gJ01hc3RlcicsCiAgICAgICAgfSwKCiAgICAgICAgU3RhdGVUeXBlICA9PiAnT3BlbicsCiAgICAgICAgTGltaXQgICAgICA9PiA2MCwKICAgICAgICBVc2VySUQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VySUR9LAogICAgICAgIFBlcm1pc3Npb24gPT4gJ3JvJywKICAgICk7CgogICAgIyBzZXQgZHluYW1pYyBmaWVsZCBwb3NzaWJsZSB2YWx1ZXMKICAgICRQb3NzaWJsZVZhbHVlc3tNYXN0ZXJ9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZXcgTWFzdGVyIFRpY2tldCcpOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkVGlja2V0SG9vayAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9vaycpOwogICAgbXkgJFRpY2tldEhvb2tEaXZpZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyk7CgogICAgVElDS0VUOgogICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgIG15ICVDdXJyZW50VGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG5leHQgVElDS0VUIGlmICElQ3VycmVudFRpY2tldDsKCiAgICAgICAgIyBzZXQgZHluYW1pYyBmaWVsZCBwb3NzaWJsZSB2YWx1ZXMKICAgICAgICAkUG9zc2libGVWYWx1ZXN7IlNsYXZlT2Y6JEN1cnJlbnRUaWNrZXR7VGlja2V0TnVtYmVyfSJ9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAnU2xhdmUgb2YgJXMlcyVzOiAlcycsCiAgICAgICAgICAgICRUaWNrZXRIb29rLAogICAgICAgICAgICAkVGlja2V0SG9va0RpdmlkZXIsCiAgICAgICAgICAgICRDdXJyZW50VGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgICRDdXJyZW50VGlja2V0e1RpdGxlfSwKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHRoZSBwb3NzaWJsZSB2YWx1ZXMgaGFzaCBhcyBhIHJlZmVyZW5jZQogICAgcmV0dXJuIFwlUG9zc2libGVWYWx1ZXM7Cn0KCnN1YiBfSGFuZGxlTGlua3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEZpZWxkTmFtZSBGaWVsZFZhbHVlIFRpY2tldElEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15ICRGaWVsZE5hbWUgPSAkUGFyYW17RmllbGROYW1lfTsKCiAgICBteSAlVGlja2V0ID0gJFBhcmFte1RpY2tldH0KICAgICAgICA/ICV7ICRQYXJhbXtUaWNrZXR9IH0KICAgICAgICA6ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgbXkgJE9sZFZhbHVlID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkTmFtZSB9OwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IG1hc3RlciBzbGF2ZSBjb25maWcKICAgIG15ICRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCcpICB8fCAwOwogICAgbXkgJE1hc3RlclNsYXZlRm9sbG93VXBkYXRlZE1hc3RlciAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpGb2xsb3dVcGRhdGVkTWFzdGVyJykgICAgICAgIHx8IDA7CiAgICBteSAkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZSA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OktlZXBQYXJlbnRDaGlsZEFmdGVyVXBkYXRlJykgfHwgMDsKCiAgICBteSAkTmV3VmFsdWUgPSAkUGFyYW17RmllbGRWYWx1ZX07CgogICAgIyBnZXQgbGluayBvYmplY3QKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAjIHNldCBhIG5ldyBtYXN0ZXIgdGlja2V0CiAgICAjIGNoZWNrIGlmIGl0IGlzIGFscmVhZHkgYSBtYXN0ZXIgdGlja2V0CiAgICBpZiAoCiAgICAgICAgJE5ld1ZhbHVlIGVxICdNYXN0ZXInCiAgICAgICAgJiYgKCAhJE9sZFZhbHVlIHx8ICRPbGRWYWx1ZSBuZSAkTmV3VmFsdWUgKQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBjaGVjayBpZiBpdCB3YXMgYSBzbGF2ZSB0aWNrZXQgYmVmb3JlIGFuZCBpZiB3ZSBoYXZlIHRvIGRlbGV0ZQogICAgICAgICMgdGhlIG9sZCBwYXJlbnQgY2hpbGQgbGluayAoTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0KQogICAgICAgIGlmICgKICAgICAgICAgICAgJE9sZFZhbHVlCiAgICAgICAgICAgICYmICRPbGRWYWx1ZSA9fiAvXlNsYXZlT2Y6KC4qPykkLwogICAgICAgICAgICAmJiAhJE1hc3RlclNsYXZlS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkU291cmNlS2V5ID0gJFRpY2tldE9iamVjdC0+VGlja2V0SURMb29rdXAoCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkxICAgID0+ICRTb3VyY2VLZXksCiAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgS2V5MiAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgYSBuZXcgc2xhdmUgdGlja2V0CiAgICAjIGNoZWNrIGlmIGl0J3MgYWxyZWFkeSB0aGUgc2xhdmUgb2YgdGhlIHdpc2hlZCBtYXN0ZXIgdGlja2V0CiAgICBlbHNpZiAoCiAgICAgICAgJE5ld1ZhbHVlID1+IC9eU2xhdmVPZjooLio/KSQvCiAgICAgICAgJiYgKCAhJE9sZFZhbHVlIHx8ICRPbGRWYWx1ZSBuZSAkTmV3VmFsdWUgKQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkU291cmNlS2V5ID0gJFRpY2tldE9iamVjdC0+VGlja2V0SURMb29rdXAoCiAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSAlTGlua3MgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICAgICAgICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgS2V5MSAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnUGFyZW50Q2hpbGQnLCAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsICAgICAgICAgICAjIChvcHRpb25hbCkgZGVmYXVsdCBCb3RoIChTb3VyY2V8VGFyZ2V0fEJvdGgpCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSBAU2xhdmVUaWNrZXRJRHM7CgogICAgICAgIExJTktFRFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkTGlua2VkVGlja2V0SUQgKCBzb3J0IGtleXMgJUxpbmtzICkgewogICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICEkTGlua3N7JExpbmtlZFRpY2tldElEfTsKCiAgICAgICAgICAgICMganVzdCB0YWtlIHRpY2tldCB3aXRoIHNsYXZlIGF0dHJpYnV0ZXMgZm9yIGFjdGlvbgogICAgICAgICAgICBteSAlTGlua2VkVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkTGlua2VkVGlja2V0VmFsdWUgPSAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRmllbGROYW1lIH07CgogICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICEkTGlua2VkVGlja2V0VmFsdWU7CiAgICAgICAgICAgIG5leHQgTElOS0VEVElDS0VUSUQgaWYgJExpbmtlZFRpY2tldFZhbHVlICF+IC9eU2xhdmVPZjooLio/KSQvOwoKICAgICAgICAgICAgIyByZW1lbWJlciBsaW5rZWQgdGlja2V0IGlkCiAgICAgICAgICAgIHB1c2ggQFNsYXZlVGlja2V0SURzLCAkTGlua2VkVGlja2V0SUQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRPbGRWYWx1ZSAmJiAkT2xkVmFsdWUgZXEgJ01hc3RlcicgKSB7CgogICAgICAgICAgICBpZiAoICRNYXN0ZXJTbGF2ZUZvbGxvd1VwZGF0ZWRNYXN0ZXIgJiYgQFNsYXZlVGlja2V0SURzICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRMaW5rZWRUaWNrZXRJRCAoQFNsYXZlVGlja2V0SURzKSB7CiAgICAgICAgICAgICAgICAgICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRTb3VyY2VLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJE1hc3RlclNsYXZlS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkTGlua2VkVGlja2V0SUQgKEBTbGF2ZVRpY2tldElEcykgewogICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlKAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkxICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleTIgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICRPbGRWYWx1ZQogICAgICAgICAgICAmJiAkT2xkVmFsdWUgPX4gL15TbGF2ZU9mOiguKj8pJC8KICAgICAgICAgICAgJiYgISRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVXBkYXRlCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJRExvb2t1cCgKICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlKAogICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIEtleTEgICAgPT4gJFNvdXJjZUtleSwKICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkyICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJE5ld1ZhbHVlID1+IC9eKD86VW5zZXRNYXN0ZXJ8VW5zZXRTbGF2ZSkkLyAmJiAkT2xkVmFsdWUgKSB7CgogICAgICAgIGlmICggJE5ld1ZhbHVlIGVxICdVbnNldE1hc3RlcicgJiYgISRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgKSB7CiAgICAgICAgICAgIG15ICVMaW5rcyA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAnVGFyZ2V0JywgICAgICAgICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IEJvdGggKFNvdXJjZXxUYXJnZXR8Qm90aCkKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBTbGF2ZVRpY2tldElEczsKCiAgICAgICAgICAgIExJTktFRFRJQ0tFVElEOgogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICggc29ydCBrZXlzICVMaW5rcyApIHsKICAgICAgICAgICAgICAgIG5leHQgTElOS0VEVElDS0VUSUQgaWYgISRMaW5rc3skTGlua2VkVGlja2V0SUR9OwoKICAgICAgICAgICAgICAgICMganVzdCB0YWtlIHRpY2tldCB3aXRoIHNsYXZlIGF0dHJpYnV0ZXMgZm9yIGFjdGlvbgogICAgICAgICAgICAgICAgbXkgJUxpbmtlZFRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRUaWNrZXRWYWx1ZSA9ICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZE5hbWUgfTsKICAgICAgICAgICAgICAgIG5leHQgTElOS0VEVElDS0VUSUQgaWYgISRMaW5rZWRUaWNrZXRWYWx1ZTsKICAgICAgICAgICAgICAgIG5leHQgTElOS0VEVElDS0VUSUQgaWYgJExpbmtlZFRpY2tldFZhbHVlICF+IC9eU2xhdmVPZjooLio/KSQvOwoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGlja2V0IGlkCiAgICAgICAgICAgICAgICBwdXNoIEBTbGF2ZVRpY2tldElEcywgJExpbmtlZFRpY2tldElEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEIChAU2xhdmVUaWNrZXRJRHMpIHsKICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgS2V5MiAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgKICAgICAgICAgICAgJE5ld1ZhbHVlIGVxICdVbnNldFNsYXZlJwogICAgICAgICAgICAmJiAhJE1hc3RlclNsYXZlS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldAogICAgICAgICAgICAmJiAkT2xkVmFsdWUgPX4gL15TbGF2ZU9mOiguKj8pJC8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJFNvdXJjZUtleSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldElETG9va3VwKAogICAgICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICQxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExpbmtPYmplY3QtPkxpbmtEZWxldGUoCiAgICAgICAgICAgICAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIEtleTIgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1BhcmVudENoaWxkJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgU2VhcmNoRmllbGRSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRha2UgY29uZmlnIGZyb20gZmllbGQgY29uZmlnCiAgICBteSAkRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ307CiAgICBteSAkRmllbGROYW1lICAgPSAnU2VhcmNoX0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfTsKICAgIG15ICRGaWVsZExhYmVsICA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TGFiZWx9OwoKICAgIG15ICRWYWx1ZTsKCiAgICBteSBARGVmYXVsdFZhbHVlOwoKICAgIGlmICggZGVmaW5lZCAkUGFyYW17RGVmYXVsdFZhbHVlfSApIHsKICAgICAgICBARGVmYXVsdFZhbHVlID0gc3BsaXQgLzsvLCAkUGFyYW17RGVmYXVsdFZhbHVlfTsKICAgIH0KCiAgICAjIHNldCB0aGUgZmllbGQgdmFsdWUKICAgIGlmIChARGVmYXVsdFZhbHVlKSB7CiAgICAgICAgJFZhbHVlID0gXEBEZWZhdWx0VmFsdWU7CiAgICB9CgogICAgIyBnZXQgdGhlIGZpZWxkIHZhbHVlLCB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQgYWZ0ZXIgdGhlIHByb2ZpbGUgaXMgbG9hZGVkCiAgICBteSAkRmllbGRWYWx1ZXMgPSAkU2VsZi0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAlUGFyYW0sCiAgICApOwoKICAgIGlmICggZGVmaW5lZCAkRmllbGRWYWx1ZXMgKSB7CiAgICAgICAgJFZhbHVlID0gJEZpZWxkVmFsdWVzOwogICAgfQoKICAgICMgY2hlY2sgYW5kIHNldCBjbGFzcyBpZiBuZWNlc3NhcnkKICAgIG15ICRGaWVsZENsYXNzID0gJ0R5bmFtaWNGaWVsZE11bHRpU2VsZWN0IE1vZGVybml6ZSc7CgogICAgIyBzZXQgVHJlZVZpZXcgY2xhc3MKICAgIGlmICggJEZpZWxkQ29uZmlnLT57VHJlZVZpZXd9ICkgewogICAgICAgICRGaWVsZENsYXNzIC49ICcgRHluYW1pY0ZpZWxkV2l0aFRyZWVWaWV3JzsKICAgIH0KCiAgICBteSAkTGFuZ3VhZ2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyk7CgogICAgIyBzZXQgUG9zc2libGVWYWx1ZXMgKG1hc3RlciBzaG91bGQgYmUgYWx3YXlzIGFuIG9wdGlvbikKICAgIG15ICRTZWxlY3Rpb25EYXRhID0gewogICAgICAgIE1hc3RlciA9PiAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgnTWFzdGVyIFRpY2tldCcpLAogICAgfTsKCiAgICAjIGdldCBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICBteSAkSGlzdG9yaWNhbFZhbHVlcyA9ICRTZWxmLT5IaXN0b3JpY2FsVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRIaXN0b3JpY2FsVmFsdWVzKSApIHsKCiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICAgICBteSAkVGlja2V0SG9vayAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9vaycpOwogICAgICAgIG15ICRUaWNrZXRIb29rRGl2aWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rRGl2aWRlcicpOwoKICAgICAgICAjIFJlY3JlYXRlIHRoZSBkaXNwbGF5IHZhbHVlIGZyb20gdGhlIGFscmVhZHkgc2V0IHRpY2tldHMuCiAgICAgICAgVkFMVUU6CiAgICAgICAgZm9yIG15ICRWYWx1ZUtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKCiAgICAgICAgICAgIGlmICggJFZhbHVlS2V5ID1+IG17U2xhdmVPZjooLiopfWdteCApIHsKICAgICAgICAgICAgICAgIG15ICRUaWNrZXROdW1iZXIgPSAkMTsKCiAgICAgICAgICAgICAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJRExvb2t1cCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBWQUxVRSBpZiAhJVRpY2tldDsKCiAgICAgICAgICAgICAgICAkSGlzdG9yaWNhbFZhbHVlcy0+eyRWYWx1ZUtleX0gPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnU2xhdmUgb2YgJXMlcyVzOiAlcycsCiAgICAgICAgICAgICAgICAgICAgJFRpY2tldEhvb2ssCiAgICAgICAgICAgICAgICAgICAgJFRpY2tldEhvb2tEaXZpZGVyLAogICAgICAgICAgICAgICAgICAgICRUaWNrZXR7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICAkVGlja2V0e1RpdGxlfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgaGlzdG9yaWMgdmFsdWVzIHRvIGN1cnJlbnQgdmFsdWVzIChpZiB0aGV5IGRvbid0IGV4aXN0IGFueW1vcmUpCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRIaXN0b3JpY2FsVmFsdWVzKSApIHsKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNlbGVjdGlvbkRhdGEtPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICRTZWxlY3Rpb25EYXRhLT57JEtleX0gPSAkSGlzdG9yaWNhbFZhbHVlcy0+eyRLZXl9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1c2UgUG9zc2libGVWYWx1ZXNGaWx0ZXIgaWYgZGVmaW5lZAogICAgJFNlbGVjdGlvbkRhdGEgPSAkUGFyYW17UG9zc2libGVWYWx1ZXNGaWx0ZXJ9IC8vICRTZWxlY3Rpb25EYXRhOwoKICAgIG15ICRIVE1MU3RyaW5nID0gJFBhcmFte0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkU2VsZWN0aW9uRGF0YSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJEZpZWxkTmFtZSwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFZhbHVlLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAkRmllbGRDbGFzcywKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICBIVE1MUXVvdGUgICAgPT4gMSwKICAgICk7CgogICAgIyBjYWxsIEVkaXRMYWJlbFJlbmRlciBvbiB0aGUgY29tbW9uIERyaXZlcgogICAgbXkgJExhYmVsU3RyaW5nID0gJFNlbGYtPkVkaXRMYWJlbFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZE5hbWUsCiAgICApOwoKICAgIG15ICREYXRhID0gewogICAgICAgIEZpZWxkID0+ICRIVE1MU3RyaW5nLAogICAgICAgIExhYmVsID0+ICRMYWJlbFN0cmluZywKICAgIH07CgogICAgcmV0dXJuICREYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6Ok1hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDaGVja0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDb21tdW5pY2F0aW9uQ2hhbm5lbCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCik7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgKHF3KERhdGEgRXZlbnQgQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICEkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIERhdGEtPntUaWNrZXRJRH0hIgogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgZ2V0IHRpY2tldCBhdHRyaWJ1dGVzCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbWFzdGVyL3NsYXZlIGR5bmFtaWMgZmllbGQKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgY2hlY2sgaWYgaXQncyBhIG1hc3Rlci9zbGF2ZSB0aWNrZXQKICAgIHJldHVybiAxIGlmICEkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgfTsKICAgIHJldHVybiAxIGlmICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB9ICF+IC9eKG1hc3Rlcnx5ZXMpJC9pOwoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBmaW5kIHNsYXZlcwogICAgbXkgJUxpbmtzID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgICAgICBLZXkxICAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgICAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgICAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsCiAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSBAVGlja2V0SURzOwogICAgVElDS0VUSUQ6CiAgICBmb3IgbXkgJFRpY2tldElEICggc29ydCBrZXlzICVMaW5rcyApIHsKICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkTGlua3N7JFRpY2tldElEfTsKCiAgICAgICAgIyBqdXN0IHRha2UgdGlja2V0IHdpdGggc2xhdmUgYXR0cmlidXRlcyBmb3IgYWN0aW9uCiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkVGlja2V0VmFsdWUgPSAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgfTsKCiAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJFRpY2tldFZhbHVlOwogICAgICAgIG5leHQgVElDS0VUSUQgaWYgJFRpY2tldFZhbHVlICF+IC9eU2xhdmVPZjooLio/KSQvOwoKICAgICAgICAjIHJlbWVtYmVyIHRpY2tldCBpZAogICAgICAgIHB1c2ggQFRpY2tldElEcywgJFRpY2tldElEOwogICAgfQoKICAgICMgbm8gc2xhdmVzCiAgICBpZiAoICFAVGlja2V0SURzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIFNsYXZlcyBvZiB0aWNrZXQgJFRpY2tldHtUaWNrZXRJRH0hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwoKICAgICMgYXV0byByZXNwb25zZSBhY3Rpb24KICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnQXJ0aWNsZVNlbmQnICkgewogICAgICAgIG15IEBBcnRpY2xlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMSBpZiAhQEFydGljbGVzOwoKICAgICAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJEFydGljbGVzWy0xXS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlc1stMV0tPntBcnRpY2xlSUR9LAogICAgICAgICk7CiAgICAgICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgICAgIFRpY2tldElEICA9PiAkQXJ0aWNsZXNbLTFdLT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVzWy0xXS0+e0FydGljbGVJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgc2VuZCBtYWlsIGlzIG9mIHR5cGUgZm9yd2FyZAogICAgICAgIG15ICRJc0ZvcndhcmQgPSAkU2VsZi0+X0FydGljbGVIaXN0b3J5VHlwZUdpdmVuKAogICAgICAgICAgICBUaWNrZXRJRCAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCAgID0+ICRBcnRpY2xle0FydGljbGVJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlID0+ICdGb3J3YXJkJywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGUgU3lzQ29uZmlnIGlzIGRpc2FibGVkIGFuZCB0aGUgbmV3IGFydGljbGUgaXMgYW4gZm9yd2FyZCBhcnRpY2xlCiAgICAgICAgIyB0aGVuIHdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGUgZm9yd2FyZCBmb3IgdGhlIHNsYXZlIHRpY2tldHMKICAgICAgICBteSAkRm9yd2FyZFNsYXZlcyA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkZvcndhcmRTbGF2ZXMnKTsKCiAgICAgICAgcmV0dXJuIDEgaWYgJElzRm9yd2FyZCAmJiAhJEZvcndhcmRTbGF2ZXM7CgogICAgICAgICMgZG8gbm90IHNlbmQgaW50ZXJuYWwgY29tbXVuaWNhdGlvbnMgdG8gZW5kIGN1c3RvbWVycyBvZiBzbGF2ZSB0aWNrZXRzCiAgICAgICAgcmV0dXJuIDEgaWYgISRBcnRpY2xle0lzVmlzaWJsZUZvckN1c3RvbWVyfTsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IEFydGljbGVTZW5kJywKICAgICAgICApOwoKICAgICAgICAjIGp1c3QgYSBmbGFnIGZvciBrbm93IHdoZW4gdGhlIGZpcnN0IHNsYXZlIHRpY2tldCBpcyBwcmVzZW50CiAgICAgICAgbXkgJEZpcnN0U2xhdmVUaWNrZXQgPSAxOwogICAgICAgIG15ICRUbXBBcnRpY2xlQm9keTsKCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlU2VuZCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRDaGVja1N1Y2Nlc3M7CgogICAgICAgICAgICBteSAlVGlja2V0U2xhdmUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHRyeSB0byBnZXQgdGhlIGN1c3RvbWVyIGRhdGEgb2YgdGhlIHNsYXZlIHRpY2tldAogICAgICAgICAgICBteSAlQ3VzdG9tZXI7CiAgICAgICAgICAgIGlmICggJFRpY2tldFNsYXZle0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICVDdXN0b21lciA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkVGlja2V0U2xhdmV7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENoZWNrSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDaGVja0l0ZW0nKTsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgY3VzdG9tZXIgZW1haWwgaXMgdmFsaWQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEN1c3RvbWVye1VzZXJFbWFpbH0KICAgICAgICAgICAgICAgICYmICEkQ2hlY2tJdGVtT2JqZWN0LT5DaGVja0VtYWlsKCBBZGRyZXNzID0+ICRDdXN0b21lcntVc2VyRW1haWx9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEN1c3RvbWVye1VzZXJFbWFpbH0gPSAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB3ZSBjYW4ndCBmaW5kIGEgdmFsaWQgVXNlckVtYWlsIGluIEN1c3RvbWVyRGF0YQogICAgICAgICAgICAjIHdlIGhhdmUgdG8gZ2V0IHRoZSBsYXN0IEFydGljbGUgd2l0aCBTZW5kZXJUeXBlICdjdXN0b21lcicKICAgICAgICAgICAgIyBhbmQgZ2V0IHRoZSBVc2VyRW1haWwKICAgICAgICAgICAgaWYgKCAhJEN1c3RvbWVye1VzZXJFbWFpbH0gKSB7CiAgICAgICAgICAgICAgICBteSAkQXJ0aWNsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKCiAgICAgICAgICAgICAgICBteSBAQXJ0aWNsZXMgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIEFydGljbGVTZW5kZXJUeXBlID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRDb21tdW5pY2F0aW9uQ2hhbm5lbE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb21tdW5pY2F0aW9uQ2hhbm5lbCcpOwoKICAgICAgICAgICAgICAgIG15IEBNSU1FQmFzZUNoYW5uZWxzOwogICAgICAgICAgICAgICAgZm9yIG15ICRDaGFubmVsIChxdyhFbWFpbCBJbnRlcm5hbCBQaG9uZSkpIHsKICAgICAgICAgICAgICAgICAgICBteSAlQ29tbXVuaWNhdGlvbkNoYW5uZWwgPSAkQ29tbXVuaWNhdGlvbkNoYW5uZWxPYmplY3QtPkNoYW5uZWxHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENoYW5uZWxOYW1lID0+ICRDaGFubmVsLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQE1JTUVCYXNlQ2hhbm5lbHMsICRDb21tdW5pY2F0aW9uQ2hhbm5lbHtDaGFubmVsSUR9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIEFSVElDTEU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFydGljbGUgKCByZXZlcnNlIEBBcnRpY2xlcyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGdyZXAgeyAkQXJ0aWNsZS0+e0NvbW11bmljYXRpb25DaGFubmVsSUR9ID09ICRfIH0gQE1JTUVCYXNlQ2hhbm5lbHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSggJXskQXJ0aWNsZX0gKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVBcnRpY2xlRGF0YSA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEFydGljbGV9LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXJ0aWNsZURhdGF7RnJvbX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ3VzdG9tZXJ7VXNlckVtYWlsfSA9ICRBcnRpY2xlRGF0YXtGcm9tfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgQVJUSUNMRTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBpZiBjdXN0b21lciBlbWFpbCBpcyB2YWxpZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJ7VXNlckVtYWlsfQogICAgICAgICAgICAgICAgJiYgISRDaGVja0l0ZW1PYmplY3QtPkNoZWNrRW1haWwoIEFkZHJlc3MgPT4gJEN1c3RvbWVye1VzZXJFbWFpbH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJ7VXNlckVtYWlsfSA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHdlIHN0aWxsIGhhdmUgbm8gVXNlckVtYWlsLCBkcm9wIGFuIGVycm9yCiAgICAgICAgICAgIGlmICggISRDdXN0b21lcntVc2VyRW1haWx9ICkgewogICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiTWFzdGVyVGlja2V0OiBubyBjdXN0b21lciBlbWFpbCBmb3VuZCwgc2VuZCBubyBtYXN0ZXIgbWVzc2FnZSB0byBjdXN0b21lci4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnU3lzdGVtIHdhcyB1bmFibGUgdG8gYWRkIGEgbmV3IGhpc3RvcnkgZW50cnkgKG5vIGN1c3RvbWVyIGVtYWlsIGZvdW5kJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBUSUNLRVRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgdGhlIG5ldyBUbyBmb3IgQXJ0aWNsZVNlbmQKICAgICAgICAgICAgJEFydGljbGV7VG99ID0gJEN1c3RvbWVye1VzZXJFbWFpbH07CgogICAgICAgICAgICAjIHJlYnVpbGQgc3ViamVjdAogICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpTdWJqZWN0Q2xlYW5BbGxOdW1iZXJzJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdWJqZWN0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0U3ViamVjdEJ1aWxkKAogICAgICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICRUaWNrZXRTbGF2ZXtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgU3ViamVjdCAgICAgID0+ICRBcnRpY2xle1N1YmplY3R9IHx8ICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBleGNoYW5nZSBDdXN0b21lciBmcm9tIE1hc3RlclRpY2tldCBmb3IgdGhlIG9uZSBpbnRvIHRoZSBTbGF2ZVRpY2tldAogICAgICAgICAgICBteSAkUmVwbGFjZU9uTm90ZVR5cGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdSZXBsYWNlQ3VzdG9tZXJSZWFsTmFtZU9uU2xhdmVBcnRpY2xlVHlwZXMnKTsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgZGVmaW5lZCAkUmVwbGFjZU9uTm90ZVR5cGVzLT57ICRBcnRpY2xle0FydGljbGVUeXBlfSB9ICYmCiAgICAgICAgICAgICAgICAkUmVwbGFjZU9uTm90ZVR5cGVzLT57ICRBcnRpY2xle0FydGljbGVUeXBlfSB9IGVxICcxJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoJEZpcnN0U2xhdmVUaWNrZXQpIHsKICAgICAgICAgICAgICAgICAgICAkRmlyc3RTbGF2ZVRpY2tldCA9IDA7CiAgICAgICAgICAgICAgICAgICAgJFRtcEFydGljbGVCb2R5ICAgPSAkQXJ0aWNsZXtCb2R5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICMgZ2V0IGJvZHkgZnJvbSB0ZW1wb3JhbCBpbiBvZGVyIHRvIGdldCBpdAogICAgICAgICAgICAgICAgICAgICMgd2l0aG91dCBjaGFuZ2VzIGZyb20gcHJldmlvdXMgc2xhdmUgdGlja2V0cwogICAgICAgICAgICAgICAgICAgICRBcnRpY2xle0JvZHl9ID0gJFRtcEFydGljbGVCb2R5OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRTZWFyY2ggPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lck5hbWUoCiAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRBcnRpY2xle0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgICAgICBteSAkUmVwbGFjZSA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyTmFtZSgKICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRpY2tldFNsYXZle0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgICAgICBpZiAoICRTZWFyY2ggJiYgJFJlcGxhY2UgKSB7CiAgICAgICAgICAgICAgICAgICAgJEFydGljbGV7Qm9keX0gPX4gc3sgXFEkU2VhcmNoXEUgfXskUmVwbGFjZX14bXNnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNlbmQgYXJ0aWNsZSBhZ2FpbgogICAgICAgICAgICAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVTZW5kKAogICAgICAgICAgICAgICAgJUFydGljbGUsCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAkU3ViamVjdCwKICAgICAgICAgICAgICAgIENjICAgICAgICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgQmNjICAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnU2VuZEFuc3dlcicsCiAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAiU2VudCBhbnN3ZXIgdG8gJyRBcnRpY2xle1RvfScgYmFzZWQgb24gbWFzdGVyIHRpY2tldC4iLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYXJ0aWNsZSBjcmVhdGUKICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnQXJ0aWNsZUNyZWF0ZScgKSB7CgogICAgICAgIG15ICRBcnRpY2xlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwogICAgICAgIG15IEBBcnRpY2xlcyAgICAgID0gJEFydGljbGVPYmplY3QtPkFydGljbGVMaXN0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDEgaWYgIUBBcnRpY2xlczsKCiAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJEFydGljbGVzWy0xXS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlc1stMV0tPntBcnRpY2xlSUR9LAogICAgICAgICk7CiAgICAgICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgICAgIFRpY2tldElEICA9PiAkQXJ0aWNsZXNbLTFdLT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVzWy0xXS0+e0FydGljbGVJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJNYXN0ZXJUaWNrZXRBY3Rpb246IEFydGljbGVDcmVhdGUiLAogICAgICAgICk7CgogICAgICAgIG15ICRDaGFubmVsTmFtZSA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+Q2hhbm5lbE5hbWVHZXQoKTsKCiAgICAgICAgIyBkbyBub3QgcHJvY2VzcyBlbWFpbCBhcnRpY2xlcyAoYWxyZWFkeSBkb25lIGluIEFydGljbGVTZW5kIGV2ZW50ISkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRBcnRpY2xle1NlbmRlclR5cGV9IGVxICdhZ2VudCcKICAgICAgICAgICAgJiYgJEFydGljbGV7SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9CiAgICAgICAgICAgICYmICRDaGFubmVsTmFtZSBlcSAnRW1haWwnCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlLCBidXQgb25seSBmb3Igbm90ZXMKICAgICAgICBpZiAoICRDaGFubmVsTmFtZSBuZSAnSW50ZXJuYWwnICkgewoKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IEFydGljbGVDcmVhdGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBhcnRpY2xlIGNyZWF0ZQogICAgICAgICAgICAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgICAgICAlQXJ0aWNsZSwKICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICdBZGROb3RlJywKICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICdBZGRlZCBhcnRpY2xlIGJhc2VkIG9uIG1hc3RlciB0aWNrZXQuJywKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBzdGF0ZSBhY3Rpb24KICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0U3RhdGVVcGRhdGUiLAogICAgICAgICk7CgogICAgICAgICMgcGVyZm9ybSBhY3Rpb24gb24gbGlua2VkIHRpY2tldHMKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRDaGVja1N1Y2Nlc3MgPSAkU2VsZi0+X0xvb3BDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0U3RhdGVVcGRhdGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHNhbWUgc3RhdGUKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U3RhdGVTZXQoCiAgICAgICAgICAgICAgICBTdGF0ZUlEICA9PiAkVGlja2V0e1N0YXRlSUR9LAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIHNldCBwZW5kaW5nIHRpbWUKICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0UGVuZGluZ1RpbWVVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UGVuZGluZ1RpbWVVcGRhdGUiLAogICAgICAgICk7CgogICAgICAgICMgcGVyZm9ybSBhY3Rpb24gb24gbGlua2VkIHRpY2tldHMKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRDaGVja1N1Y2Nlc3MgPSAkU2VsZi0+X0xvb3BDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UGVuZGluZ1RpbWVVcGRhdGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHBlbmRpbmcgdGltZQogICAgICAgICAgICBteSAkVGltZVN0YW1wID0gJzAwMDAtMDAtMDAgMDA6MDA6MDAnOwogICAgICAgICAgICBpZiAoICRUaWNrZXR7UmVhbFRpbGxUaW1lTm90VXNlZH0gKSB7CiAgICAgICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVwb2NoID0+ICRUaWNrZXR7UmVhbFRpbGxUaW1lTm90VXNlZH0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRQZW5kaW5nVGltZVNldCgKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICRUaW1lU3RhbXAsCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBwcmlvcml0eSBhY3Rpb24KICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0UHJpb3JpdHlVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UHJpb3JpdHlVcGRhdGUiLAogICAgICAgICk7CgogICAgICAgICMgcGVyZm9ybSBhY3Rpb24gb24gbGlua2VkIHRpY2tldHMKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRDaGVja1N1Y2Nlc3MgPSAkU2VsZi0+X0xvb3BDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UHJpb3JpdHlVcGRhdGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHNhbWUgc3RhdGUKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gJFRpY2tldHtQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgb3duZXIgYWN0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldE93bmVyVXBkYXRlJyApIHsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldE93bmVyVXBkYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldE93bmVyVXBkYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIE5ld1VzZXJJRCAgICAgICAgICA9PiAkVGlja2V0e093bmVySUR9LAogICAgICAgICAgICAgICAgU2VuZE5vTm90aWZpY2F0aW9uID0+IDAsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgcmVzcG9uc2libGUgYWN0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFJlc3BvbnNpYmxlVXBkYXRlJyApIHsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFJlc3BvbnNpYmxlU2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIE5ld1VzZXJJRCAgICAgICAgICA9PiAkVGlja2V0e1Jlc3BvbnNpYmxlSUR9LAogICAgICAgICAgICAgICAgU2VuZE5vTm90aWZpY2F0aW9uID0+IDAsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgdW5sb2NrL2xvY2sgYWN0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldExvY2tVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0TG9ja1VwZGF0ZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRMb2NrVXBkYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICBMb2NrICAgICAgICAgICAgICAgPT4gJFRpY2tldHtMb2NrfSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9Mb29wQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldElEIFN0cmluZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSBATGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICBteSAkQ3VycmVudERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgZm9yIG15ICREYXRhICggcmV2ZXJzZSBATGluZXMgKSB7CiAgICAgICAgaWYgKCAkRGF0YS0+e0hpc3RvcnlUeXBlfSBlcSAnTWlzYycgJiYgJERhdGEtPntOYW1lfSBlcSAkUGFyYW17U3RyaW5nfSApIHsKICAgICAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJERhdGEtPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICREYXRlVGltZU9iamVjdC0+QWRkKAogICAgICAgICAgICAgICAgU2Vjb25kcyA9PiAxNSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkRGF0ZVRpbWVPYmplY3QgPiAkQ3VycmVudERhdGVUaW1lT2JqZWN0ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldExvb3A6IHN0b3BwZWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9BcnRpY2xlSGlzdG9yeVR5cGVHaXZlbigpCgpDaGVjayBpZiBoaXN0b3J5IHR5cGUgZm9yIGFydGljbGUgaXMgZ2l2ZW4KCiAgICBteSAkSXNIaXN0b3J5VHlwZSA9ICRFdmVudE9iamVjdC0+X0FydGljbGVIaXN0b3J5VHlwZUdpdmVuKAogICAgICAgIFRpY2tldElEICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBBcnRpY2xlSUQgICA9PiAkQXJ0aWNsZUlELAogICAgICAgIEhpc3RvcnlUeXBlID0+ICdGb3J3YXJkJywKICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgKTsKClJldHVybnMKCiAgIG15ICRJc0hpc3RvcnlUeXBlID0gMTsKCj1jdXQKCnN1YiBfQXJ0aWNsZUhpc3RvcnlUeXBlR2l2ZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldElEIEFydGljbGVJRCBIaXN0b3J5VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15ICRUaWNrZXRJRCAgICA9ICRQYXJhbXtUaWNrZXRJRH07CiAgICBteSAkQXJ0aWNsZUlEICAgPSAkUGFyYW17QXJ0aWNsZUlEfTsKICAgIG15ICRIaXN0b3J5VHlwZSA9ICRQYXJhbXtIaXN0b3J5VHlwZX07CiAgICBteSAkVXNlcklEICAgICAgPSAkUGFyYW17VXNlcklEfTsKCiAgICBteSBATGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBteSAkTWF0Y2hlZCA9IDA7CgogICAgcmV0dXJuICRNYXRjaGVkIGlmICFJc0FycmF5UmVmV2l0aERhdGEoIFxATGluZXMgKTsKCiAgICBISVNUT1JZREFUQToKICAgIGZvciBteSAkSGlzdG9yeURhdGEgKCByZXZlcnNlIEBMaW5lcyApIHsKICAgICAgICBuZXh0IEhJU1RPUllEQVRBIGlmICRIaXN0b3J5RGF0YS0+e0FydGljbGVJRH0gIT0gJEFydGljbGVJRDsKICAgICAgICBuZXh0IEhJU1RPUllEQVRBIGlmICRIaXN0b3J5RGF0YS0+e0hpc3RvcnlUeXBlfSBuZSAkSGlzdG9yeVR5cGU7CgogICAgICAgICRNYXRjaGVkID0gMTsKCiAgICAgICAgbGFzdCBISVNUT1JZREFUQTsKICAgIH0KCiAgICByZXR1cm4gJE1hdGNoZWQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRQYXJhbU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcgPT4gewogICAgICAgIFVzZXJJRCA9PiAxLAogICAgfSwKKTsKbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBnZXQgbWFzdGVyL3NsYXZlIGR5bmFtaWMgZmllbGQgZGF0YQpteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICBOYW1lID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKKTsKCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGZpbmQgYWxsIGN1cnJlbnQgb3BlbiBtYXN0ZXIgc2xhdmUgdGlja2V0cwpteSBAVGlja2V0SURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgUmVzdWx0ID0+ICdBUlJBWScsCgogICAgIyBtYXN0ZXIgc2xhdmUgZHluYW1pYyBmaWVsZAogICAgJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICBFcXVhbHMgPT4gJ01hc3RlcicsCiAgICB9LAoKICAgIFN0YXRlVHlwZSAgPT4gJ09wZW4nLAogICAgVXNlcklEICAgICA9PiAxLAogICAgUGVybWlzc2lvbiA9PiAncm8nLAopOwoKIyBzZXQgdGlja2V0cyB0byByZW1vdmVkIHNvIHRoZXkgYXJlIG5vdCBmb25kIGxhdGVyIGluIHRoZSB0ZXN0IGNhc2VzCiMgICAgdGhlIHRpY2tldHMgd2lsbCBiZSByZXN0b3JlZCBhdXRvbWF0aWNhbGx5IGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QKIyAgICBkdWUgdG8gdGhlIFJlc3RvcmVEYXRhYmFzZSBvcHRpb24gaW4gaGVscGVyIG9iamVjdApmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgICAgIFN0YXRlICAgID0+ICdyZW1vdmVkJywKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU3VjY2VzcywKICAgICAgICAiVGVtcG9yYXJ5IHNldCBNYXN0ZXIgVGlja2V0OiAkVGlja2V0SUQgdG8gcmVtb3ZlZCIsCiAgICApOwp9CgojIGRlZmluZSB0ZXN0cwpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdNYXN0ZXJTbGF2ZSAtIFBvc3NpYmxlIFZhbHVlcyBGaWx0ZXInLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+IHsKICAgICAgICAgICAgICAgIE1hc3RlciA9PiAnTmV3IE1hc3RlciBUaWNrZXQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAnPHNlbGVjdCBjbGFzcz0iRHluYW1pY0ZpZWxkVGV4dCBNb2Rlcm5pemUiIGlkPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIG5hbWU9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgc2l6ZT0iMSI+CiAgPG9wdGlvbiB2YWx1ZT0iTWFzdGVyIj5OZXcgTWFzdGVyIFRpY2tldDwvb3B0aW9uPgo8L3NlbGVjdD4KJywKICAgICAgICAgICAgTGFiZWwgPT4gJzxsYWJlbCBpZD0iTGFiZWxEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIGZvcj0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIj4KTWFzdGVyIFRpY2tldDoKPC9sYWJlbD4KJwogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVW5zZXRNYXN0ZXJTbGF2ZSAtIFBvc3NpYmxlIFZhbHVlcyBGaWx0ZXInLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+IHsKICAgICAgICAgICAgICAgIE1hc3RlciAgICAgID0+ICdOZXcgTWFzdGVyIFRpY2tldCcsCiAgICAgICAgICAgICAgICBVbnNldE1hc3RlciA9PiAnVW5zZXQgTWFzdGVyIFRpY2tldHMnLAogICAgICAgICAgICAgICAgVW5zZXRTbGF2ZSAgPT4gJ1Vuc2V0IFNsYXZlIFRpY2tldHMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAnPHNlbGVjdCBjbGFzcz0iRHluYW1pY0ZpZWxkVGV4dCBNb2Rlcm5pemUiIGlkPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIG5hbWU9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgc2l6ZT0iMSI+CiAgPG9wdGlvbiB2YWx1ZT0iTWFzdGVyIj5OZXcgTWFzdGVyIFRpY2tldDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9IlVuc2V0TWFzdGVyIj5VbnNldCBNYXN0ZXIgVGlja2V0czwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9IlVuc2V0U2xhdmUiPlVuc2V0IFNsYXZlIFRpY2tldHM8L29wdGlvbj4KPC9zZWxlY3Q+CicsCiAgICAgICAgICAgIExhYmVsID0+ICc8bGFiZWwgaWQ9IkxhYmVsRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBmb3I9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSI+Ck1hc3RlciBUaWNrZXQ6CjwvbGFiZWw+CicKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01hc3RlclNsYXZlOiBObyB2YWx1ZSAnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgID0+ICdNeUNsYXNzJywKICAgICAgICAgICAgVXNlRGVmYXVsdFZhbHVlICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICBGaWVsZCA9PiA8PCJFT0YiIC4gJzwvc2VsZWN0PicsCjxzZWxlY3QgY2xhc3M9IkR5bmFtaWNGaWVsZFRleHQgTW9kZXJuaXplIE15Q2xhc3MiIGlkPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIG5hbWU9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgc2l6ZT0iMSI+CiAgPG9wdGlvbiB2YWx1ZT0iIj4tPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iTWFzdGVyIj5OZXcgTWFzdGVyIFRpY2tldDwvb3B0aW9uPgpFT0YKICAgICAgICAgICAgTGFiZWwgPT4gJzxsYWJlbCBpZD0iTGFiZWxEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIGZvcj0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIj4KTWFzdGVyIFRpY2tldDoKPC9sYWJlbD4KJwogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWFzdGVyU2xhdmU6IE5vIHZhbHVlIC8gRGVmYXVsdCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ015Q2xhc3MnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgRmllbGQgPT4gPDwiRU9GIiAuICc8L3NlbGVjdD4nLAo8c2VsZWN0IGNsYXNzPSJEeW5hbWljRmllbGRUZXh0IE1vZGVybml6ZSBNeUNsYXNzIiBpZD0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBuYW1lPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIHNpemU9IjEiPgogIDxvcHRpb24gdmFsdWU9IiIgc2VsZWN0ZWQ9InNlbGVjdGVkIj4tPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iTWFzdGVyIj5OZXcgTWFzdGVyIFRpY2tldDwvb3B0aW9uPgpFT0YKICAgICAgICAgICAgTGFiZWwgPT4gJzxsYWJlbCBpZD0iTGFiZWxEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIGZvcj0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIj4KTWFzdGVyIFRpY2tldDoKPC9sYWJlbD4KJwogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWFzdGVyU2xhdmU6IFZhbHVlIGRpcmVjdCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ01hc3RlcicsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICA9PiAnTXlDbGFzcycsCiAgICAgICAgICAgIFVzZURlZmF1bHRWYWx1ZSAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgRmllbGQgPT4gPDwiRU9GIiAuICc8L3NlbGVjdD4nLAo8c2VsZWN0IGNsYXNzPSJEeW5hbWljRmllbGRUZXh0IE1vZGVybml6ZSBNeUNsYXNzIiBpZD0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBuYW1lPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIHNpemU9IjEiPgogIDxvcHRpb24gdmFsdWU9IiI+LTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Ik1hc3RlciIgc2VsZWN0ZWQ9InNlbGVjdGVkIj5OZXcgTWFzdGVyIFRpY2tldDwvb3B0aW9uPgpFT0YKICAgICAgICAgICAgTGFiZWwgPT4gJzxsYWJlbCBpZD0iTGFiZWxEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIGZvcj0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIj4KTWFzdGVyIFRpY2tldDoKPC9sYWJlbD4KJwogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWFzdGVyU2xhdmU6IE1hbmRhdG9yeScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ01hc3RlcicsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICA9PiAnTXlDbGFzcycsCiAgICAgICAgICAgIFVzZURlZmF1bHRWYWx1ZSAgICA9PiAwLAogICAgICAgICAgICBNYW5kYXRvcnkgICAgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAnPHNlbGVjdCBjbGFzcz0iRHluYW1pY0ZpZWxkVGV4dCBNb2Rlcm5pemUgTXlDbGFzcyBWYWxpZGF0ZV9SZXF1aXJlZCIgaWQ9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgbmFtZT0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBzaXplPSIxIj4KICA8b3B0aW9uIHZhbHVlPSIiPi08L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJNYXN0ZXIiIHNlbGVjdGVkPSJzZWxlY3RlZCI+TmV3IE1hc3RlciBUaWNrZXQ8L29wdGlvbj4KPC9zZWxlY3Q+CjxkaXYgaWQ9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICA8cD4KICAgICAgICBUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLgogICAgPC9wPgo8L2Rpdj4KJywKICAgICAgICAgICAgTGFiZWwgPT4gJzxsYWJlbCBpZD0iTGFiZWxEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIGZvcj0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+Ck1hc3RlciBUaWNrZXQ6CjwvbGFiZWw+CicKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01hc3RlclNsYXZlOiBTZXJ2ZXIgRXJyb3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ015Q2xhc3MnLAogICAgICAgICAgICBVc2VEZWZhdWx0VmFsdWUgICAgPT4gMCwKICAgICAgICAgICAgU2VydmVyRXJyb3IgICAgICAgID0+IDEsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICA9PiAnVGhpcyBpcyBhbiBlcnJvci4nCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICBGaWVsZCA9PgogICAgICAgICAgICAgICAgJzxzZWxlY3QgY2xhc3M9IkR5bmFtaWNGaWVsZFRleHQgTW9kZXJuaXplIE15Q2xhc3MgU2VydmVyRXJyb3IiIGlkPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIG5hbWU9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgc2l6ZT0iMSI+CiAgPG9wdGlvbiB2YWx1ZT0iIj4tPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iTWFzdGVyIiBzZWxlY3RlZD0ic2VsZWN0ZWQiPk5ldyBNYXN0ZXIgVGlja2V0PC9vcHRpb24+Cjwvc2VsZWN0Pgo8ZGl2IGlkPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgPHA+CiAgICAgICAgVGhpcyBpcyBhbiBlcnJvci4KICAgIDwvcD4KPC9kaXY+CicsCiAgICAgICAgICAgIExhYmVsID0+ICc8bGFiZWwgaWQ9IkxhYmVsRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBmb3I9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSI+Ck1hc3RlciBUaWNrZXQ6CjwvbGFiZWw+CicKICAgICAgICB9LAogICAgfSwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBleGVjdXRlIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICRGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgICMgaGVyZWRvY3MgYWx3YXlzIGhhdmUgdGhlIG5ld2xpbmUsIGV2ZW4gaWYgaXQgaXMgbm90IGV4cGVjdGVkCiAgICBpZiAoICRGaWVsZEhUTUwtPntGaWVsZH0gIX4gbXtcbiR9ICkgewogICAgICAgIGNob21wICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfS0+e0ZpZWxkfTsKICAgIH0KCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgJEZpZWxkSFRNTCwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gfCBFZGl0RmllbGRSZW5kZXIoKSIsCiAgICApOwp9CgojIENsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UuCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKbXkgJENvbmZpZ09iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkIGRhdGEKbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpOwpteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgTmFtZSA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQsCik7CgojIGdldCByYW5kb20gSUQKbXkgJFJhbmRvbUlEID0gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiMgY3JlYXRlIHRlc3QgdGlja2V0cwpteSBAVGlja2V0SURzOwpteSBAVGlja2V0TnVtYmVyczsKZm9yIG15ICRUaWNrZXQgKCAxIC4uIDMgKSB7CiAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICBteSAkVGlja2V0SUQgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgIFRpdGxlICAgICAgICA9PiAnVW5pdCB0ZXN0IHRpY2tldCAnIC4gJFJhbmRvbUlEIC4gJyAnIC4gJFRpY2tldCwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFRpY2tldElELAogICAgICAgICJUaWNrZXRDcmVhdGUoKSBUaWNrZXQgSUQgJFRpY2tldElEIC0gVE46ICRUaWNrZXROdW1iZXIiLAogICAgKTsKICAgIHB1c2ggQFRpY2tldElEcywgICAgICRUaWNrZXRJRDsKICAgIHB1c2ggQFRpY2tldE51bWJlcnMsICRUaWNrZXROdW1iZXI7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IG1hc3Rlci9zbGF2ZSB0aWNrZXQgdmFsdWUgc2V0CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgc2V0IGZpcnN0IHRlc3QgdGlja2V0IGFzIG1hc3RlciB0aWNrZXQKbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ01hc3RlcicsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBNYXN0ZXJUaWNrZXQiLAopOwoKIyBzZXQgc2Vjb25kIHRlc3QgdGlja2V0IGFzIHNsYXZlIHRpY2tldAokU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgRmllbGRJRCAgICAgICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElEc1sxXSwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAiU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzFdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKKTsKCiMgdmVyaWZ5IHRoZXJlIGlzIHBhcmVudC1jaGlsZCBsaW5rIGJldHdlZW4gbWFzdGVyL3NsYXZlIHRpY2tldHMKbXkgJUxpbmtLZXlMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgS2V5MSAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgIFR5cGUgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgRGlyZWN0aW9uID0+ICdCb3RoJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApID8gMSA6IDAsCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIGFuZCAkVGlja2V0SURzWzFdIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IFVuc2V0TWFzdGVyfFVuc2V0U2xhdmUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBlbmFibGUgdGhlIE1hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IHN5c2NvbmZpZwokU3VjY2VzcyA9ICRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCcsCiAgICBWYWx1ZSA9PiAxCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0KCkgc3lzY29uZmlnIEtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgLSBlbmFibGVkIiwKKTsKCiMgc2V0IHNlY29uZCB0aWNrZXQgYXMgc2xhdmUgdGlja2V0IGFnYWluCiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFnYWluIGFzIFNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAopOwoKIyB2ZXJpZnkgdGhlcmUgaXMgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiBtYXN0ZXIvc2xhdmUgdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1swXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApID8gMSA6IDAsCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIGFuZCAkVGlja2V0SURzWzFdIiwKKTsKCiMgVW5zZXRNYXN0ZXIgdmFsdWUgZnJvbSBmaXJzdCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1Vuc2V0TWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMF0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFVuc2V0TWFzdGVyIiwKKTsKCiMgVW5zZXRTbGF2ZSB2YWx1ZSBmcm9tIHNlY29uZCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMV0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1Vuc2V0U2xhdmUnLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgVW5zZXRTbGF2ZSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBzdGlsbCBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIHR3byB0aWNrZXRzCiVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnVGFyZ2V0JywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgIElzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICkgPyAxIDogMCwKICAgICJMaW5rS2V5TGlzdCgpIE1hc3Rlci9TbGF2ZSBsaW5rIGZvdW5kIC0gVGlja2V0IElEICRUaWNrZXRJRHNbMF0gYW5kICRUaWNrZXRJRHNbMV0gLSBLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IHN5c2NvbmZpZyBlbmFibGVkIiwKKTsKCiMgZGlzYWJsZSB0aGUgTWFzdGVyU2xhdmU6OktlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgc3lzY29uZmlnCiRTdWNjZXNzID0gJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0JywKICAgIFZhbHVlID0+IDAKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJTZXQoKSBzeXNjb25maWcgS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCAtIGRpc2FibGVkIiwKKTsKCiMgcmVtb3ZlIHBhcmVudC1jaGlsZCBsaW5rIGJldHdlZW4gdHdvIHRpY2tldHMKJFN1Y2Nlc3MgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZUFsbCgKICAgIE9iamVjdCA9PiAnVGlja2V0JywKICAgIEtleSAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVXNlcklEID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiTGlua0RlbGV0ZUFsbCgpIHBhcmVudC1jaGlsZCBsaW5rIGZvciB0aWNrZXQgSUQgJFRpY2tldElEc1swXSAtIHJlbW92ZWQiLAopOwoKIyBzZXQgZmlyc3QgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldAokU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgRmllbGRJRCAgICAgICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElEc1swXSwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAnTWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMF0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIE1hc3RlclRpY2tldCIsCik7CgojIHNldCBzZWNvbmQgdGVzdCB0aWNrZXQgYXMgc2xhdmUgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAopOwoKIyB2ZXJpZnkgdGhlcmUgaXMgc3RpbGwgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiB0d28gdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1swXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApID8gMSA6IDAsCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIGFuZCAkVGlja2V0SURzWzFdIiwKKTsKCiMgVW5zZXRNYXN0ZXIgdmFsdWUgZnJvbSBmaXJzdCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1Vuc2V0TWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMF0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFVuc2V0TWFzdGVyIiwKKTsKCiMgVW5zZXRTbGF2ZSB2YWx1ZSBmcm9tIHNlY29uZCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMV0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1Vuc2V0U2xhdmUnLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgVW5zZXRTbGF2ZSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBubyBtb3JlIHBhcmVudC1jaGlsZCBsaW5rIGJldHdlZW4gdHdvIHRpY2tldHMKJUxpbmtLZXlMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgS2V5MSAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgIFR5cGUgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgRGlyZWN0aW9uID0+ICdUYXJnZXQnLAogICAgVXNlcklEICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgIUlzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICksCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayByZW1vdmVkIC0gVGlja2V0IElEICRUaWNrZXRJRHNbMF0gYW5kICRUaWNrZXRJRHNbMV0gLSBLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IHN5c2NvbmZpZyBkaXNhYmxlZCIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCB1cGRhdGUgTWFzdGVyfFNsYXZlIGZpZWxkCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZW5hYmxlIHRoZSBNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVcGRhdGUgc3lzY29uZmlnCiRTdWNjZXNzID0gJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZScsCiAgICBWYWx1ZSA9PiAxCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0KCkgc3lzY29uZmlnIEtlZXBQYXJlbnRDaGlsZEFmdGVyVXBkYXRlIC0gZW5hYmxlZCIsCik7CgojIHNldCBmaXJzdCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgc2V0IHNlY29uZCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJNYXN0ZXIiLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgc2V0IHRoaXJkIHRlc3QgdGlja2V0IGFzIHNsYXZlIG9mIHNlY29uZCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMl0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMV0iLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1syXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgU2xhdmVPZjokVGlja2V0TnVtYmVyc1sxXSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIHR3byB0aWNrZXRzCiVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnVGFyZ2V0JywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgIElzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICkgPyAxIDogMCwKICAgICJMaW5rS2V5TGlzdCgpIE1hc3Rlci9TbGF2ZSBsaW5rIGZvdW5kIC0gVGlja2V0IElEICRUaWNrZXRJRHNbMV0gYW5kICRUaWNrZXRJRHNbMl0iLAopOwoKIyBzZXQgc2Vjb25kIHRpY2tldCBhcyBzbGF2ZSBvZiBmaXJzdCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMV0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIsCik7CgojIHZlcmlmeSB0aGVyZSBwYXJlbnQtY2hpbGQtcGFyZW50IGxpbmsgYmV0d2VlbiB0aHJlZSB0aWNrZXRzCiVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnQm90aCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApLAogICAgIkxpbmtLZXlMaXN0KCkgTWFzdGVyL1NsYXZlIGxpbmsgZm91bmQgLSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSwgJFRpY2tldElEc1sxXSBhbmQgJFRpY2tldElEc1syXSAtIEtlZXBQYXJlbnRDaGlsZEFmdGVyVXBkYXRlIHN5c2NvbmZpZyBlbmFibGVkIiwKKTsKCiMgQ2xlYW51cCBpcyBkb25lIGJ5IFJlc3RvcmVEYXRhYmFzZS4KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBlbmFibGUgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQnLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3QgY2hlY2sgc2VydmljZSBhbmQgdHlwZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OlNlcnZpY2UnLAogICAgICAgICAgICBWYWx1ZSA9PiAwCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpUeXBlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBzZW5kIGVtYWlscwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTZW5kbWFpbE1vZHVsZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdLZXJuZWw6OlN5c3RlbTo6RW1haWw6OlRlc3QnLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0ZXN0IGN1c3RvbWVyIGZvciB0ZXN0aW5nCiAgICAgICAgbXkgJFRlc3RDdXN0b21lckxvZ2luUGhvbmUgPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFRpY2tldFBob25lIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0UGhvbmUiKTsKCiAgICAgICAgbXkgJE1hc3RlclRpY2tldFN1YmplY3QgPSAiTWFzdGVyIFRpY2tldCI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRnJvbUN1c3RvbWVyIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRUZXN0Q3VzdG9tZXJMb2dpblBob25lKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgibGkudWktbWVudS1pdGVtOnZpc2libGUiKS5sZW5ndGgnICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnbGkudWktbWVudS1pdGVtOm50aC1jaGlsZCgxKSBhJykudHJpZ2dlcignY2xpY2snKSIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNEZXN0JykudmFsKCcyfHxSYXcnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCRNYXN0ZXJUaWNrZXRTdWJqZWN0KTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSaWNoVGV4dCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gYm9keSB0ZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykudmFsKCdNYXN0ZXInKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBnZXQgbWFzdGVyIHRlc3QgcGhvbmUgdGlja2V0IGRhdGEKICAgICAgICBteSAoICRNYXN0ZXJUaWNrZXRJRCwgJE1hc3RlclRpY2tldE51bWJlciApID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICRUZXN0Q3VzdG9tZXJMb2dpblBob25lLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTWFzdGVyVGlja2V0SUQsCiAgICAgICAgICAgICJNYXN0ZXIgVGlja2V0SUQgLSAkTWFzdGVyVGlja2V0SUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRNYXN0ZXJUaWNrZXROdW1iZXIsCiAgICAgICAgICAgICJNYXN0ZXIgVGlja2V0TnVtYmVyIC0gJE1hc3RlclRpY2tldE51bWJlciIsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgbmV3IHRlc3QgY3VzdG9tZXIgZm9yIHRlc3RpbmcKICAgICAgICBteSAkVGVzdEN1c3RvbWVyTG9naW5zRW1haWwgPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRUaWNrZXRFbWFpbCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldEVtYWlsIik7CgogICAgICAgICMgY3JlYXRlIHNsYXZlIHRlc3QgZW1haWwgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNEZXN0JykudmFsKCcyfHxSYXcnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RvQ3VzdG9tZXIiLCAnY3NzJyApLT5zZW5kX2tleXMoJFRlc3RDdXN0b21lckxvZ2luc0VtYWlsKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgibGkudWktbWVudS1pdGVtOnZpc2libGUiKS5sZW5ndGgnICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCdsaS51aS1tZW51LWl0ZW06bnRoLWNoaWxkKDEpIGEnKS50cmlnZ2VyKCdjbGljaycpIiwKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdTbGF2ZSBUaWNrZXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSaWNoVGV4dCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gYm9keSB0ZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykudmFsKCdTbGF2ZU9mOiRNYXN0ZXJUaWNrZXROdW1iZXInKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGdldCBzbGF2ZSB0ZXN0IGVtYWlsIHRpY2tldCBkYXRhCiAgICAgICAgbXkgKCAkU2xhdmVUaWNrZXRJRCwgJFNsYXZlVGlja2V0TnVtYmVyICkgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgID0+ICdIQVNIJywKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJFRlc3RDdXN0b21lckxvZ2luc0VtYWlsLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2xhdmVUaWNrZXRJRCwKICAgICAgICAgICAgIlNsYXZlIFRpY2tldElEIC0gJFNsYXZlVGlja2V0SUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTbGF2ZVRpY2tldE51bWJlciwKICAgICAgICAgICAgIlNsYXZlIFRpY2tldE51bWJlciAtICRTbGF2ZVRpY2tldE51bWJlciIsCiAgICAgICAgKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byB0aWNrZXQgem9vbSBwYWdlIG9mIGNyZWF0ZWQgbWFzdGVyIHRlc3QgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRNYXN0ZXJUaWNrZXRJRCIpOwoKICAgICAgICAjIHZlcmlmeSBtYXN0ZXItc2xhdmUgdGlja2V0IGxpbmsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRTbGF2ZVRpY2tldE51bWJlciApID4gLTEsCiAgICAgICAgICAgICJTbGF2ZSB0aWNrZXQgbnVtYmVyOiAkU2xhdmVUaWNrZXROdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBoaXN0b3J5IHZpZXcgb2YgY3JlYXRlZCBtYXN0ZXIgdGVzdCB0aWNrZXQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldEhpc3Rvcnk7VGlja2V0SUQ9JE1hc3RlclRpY2tldElEIik7CgogICAgICAgICMgdmVyaWZ5IGR5bmFtaWMgZmllbGQgbWFzdGVyIHRpY2tldCB1cGRhdGUKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdDaGFuZ2VkIGR5bmFtaWMgZmllbGQgTWFzdGVyU2xhdmUgZnJvbSAiIiB0byAiTWFzdGVyIi4nICkgPiAtMSwKICAgICAgICAgICAgIk1hc3RlciBkeW5hbWljIGZpZWxkIHVwZGF0ZSB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIHRpY2tldCB6b29tIHBhZ2Ugb2YgY3JlYXRlZCBzbGF2ZSB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kU2xhdmVUaWNrZXRJRCIpOwoKICAgICAgICAjIHZlcmlmeSBzbGF2ZS1tYXN0ZXIgdGlja2V0IGxpbmsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRNYXN0ZXJUaWNrZXROdW1iZXIgKSA+IC0xLAogICAgICAgICAgICAiTWFzdGVyIHRpY2tldCBudW1iZXI6ICRNYXN0ZXJUaWNrZXROdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBoaXN0b3J5IHZpZXcgb2YgY3JlYXRlZCBzbGF2ZSB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0SGlzdG9yeTtUaWNrZXRJRD0kU2xhdmVUaWNrZXRJRCIpOwoKICAgICAgICAjIHZlcmlmeSBkeW5hbWljIGZpZWxkIHNsYXZlIHRpY2tldCB1cGRhdGUKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdDaGFuZ2VkIGR5bmFtaWMgZmllbGQgTWFzdGVyU2xhdmUgZnJvbSAiIiB0byAiU2xhdmVPZjonICkgPiAtMSwKICAgICAgICAgICAgIlNsYXZlIGR5bmFtaWMgZmllbGQgdXBkYXRlIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCB0aWNrZXRzCiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoICRNYXN0ZXJUaWNrZXRJRCwgJFNsYXZlVGlja2V0SUQgKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJUaWNrZXQgSUQgJFRpY2tldElEIC0gZGVsZXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgICAgICBUeXBlID0+ICdUaWNrZXQnLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBlbmFibGUgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQnLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZW5hYmxlIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OlVwZGF0ZU1hc3RlclNsYXZlJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBjaGVjayBSaWNoVGV4dAogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdGcm9udGVuZDo6UmljaFRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IHNlbmQgZW1haWxzCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbDo6VGVzdCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgSW52b3ZlZEFnZW50IGFuZCBJbmZvcm1BZ2VudCBhcmUgZGlzYWJsZWQsIG90aGVyd2lzZSBpdCB1c2VzIHBhcnQgb2YgdGhlIHZpc2libGUKICAgICAgICAjIHNjcmVlbiBtYWtpbmcgdGhlIHN1Ym1pdCBidXR0b24gbm90IHZpc2libGUgYW5kIHRoZW4gbm90IGNsaWNrLWFibGUKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0ludm9sdmVkQWdlbnQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNJbmZvcm1BZ2VudCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRlc3QgdXNlciBJRAogICAgICAgIG15ICRUZXN0VXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgICAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICAgICAjIGNyZWF0ZSB0d28gdGVzdCB0aWNrZXRzCiAgICAgICAgbXkgQFRpY2tldElEczsKICAgICAgICBteSBAVGlja2V0TnVtYmVyczsKICAgICAgICBmb3IgbXkgJFRpY2tldENyZWF0ZSAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgICAgICBteSAkVGlja2V0SUQgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgICAgICAgICAgVE4gICAgICAgICAgID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NlbGVuaXVtIHRlc3QgVGlja2V0JywKICAgICAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICA9PiAnU2VsZW5pdW1DdXN0b21lcicsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ1NlbGVuaXVtQ3VzdG9tZXJAbG9jYWxob3N0LmNvbScsCiAgICAgICAgICAgICAgICBPd25lcklEICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgLSBjcmVhdGVkIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQFRpY2tldElEcywgICAgICRUaWNrZXRJRDsKICAgICAgICAgICAgcHVzaCBAVGlja2V0TnVtYmVycywgJFRpY2tldE51bWJlcjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byB0aWNrZXQgem9vbSBwYWdlIG9mIGZpcnN0IGNyZWF0ZWQgdGVzdCB0aWNrZXQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFRpY2tldElEc1swXSIpOwoKICAgICAgICAjIGNsaWNrIG9uIE1hc3RlclNsYXZlIGFuZCBzd2l0Y2ggd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50VGlja2V0TWFzdGVyU2xhdmU7VGlja2V0SUQ9JFRpY2tldElEc1swXScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5XaWRnZXRTaW1wbGUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICMgb3BlbiBjb2xsYXBzZWQgd2lkZ2V0cywgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcuV2lkZ2V0U2ltcGxlLkNvbGxhcHNlZCAuV2lkZ2V0QWN0aW9uID4gYScpLnRyaWdnZXIoJ2NsaWNrJyk7IgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiLldpZGdldFNpbXBsZS5FeHBhbmRlZCIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBwYWdlCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KER5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSBTdWJqZWN0IFJpY2hUZXh0IEZpbGVVcGxvYWQgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZmlyc3QgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldAogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLnZhbCgnTWFzdGVyJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSaWNoVGV4dCIsICAgICAgICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gTWFzdGVyIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBzd2l0Y2ggd2luZG93IGJhY2sgdG8gYWdlbnQgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgZmlyc3QgY3JlYXRlZCB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwoKICAgICAgICAjIGV4cGFuZCBNaXNjZWxsYW5lb3VzIGRyb3Bkb3duIG1lbnUKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNuYXYtTWlzY2VsbGFuZW91cyB1bCIpLmNzcyh7ICJoZWlnaHQiOiAiYXV0byIsICJvcGFjaXR5IjogIjEwMCIgfSk7JwogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gJ0hpc3RvcnknIGFuZCBzd2l0Y2ggd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50VGlja2V0SGlzdG9yeTtUaWNrZXRJRD0kVGlja2V0SURzWzBdJyApXSIpCiAgICAgICAgICAgIC0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgd2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiLldpZGdldFNpbXBsZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyB2ZXJpZnkgZHluYW1pYyBmaWVsZCBtYXN0ZXIgdGlja2V0IHVwZGF0ZQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0NoYW5nZWQgZHluYW1pYyBmaWVsZCBNYXN0ZXJTbGF2ZSBmcm9tICIiIHRvICJNYXN0ZXIiLicgKSA+IC0xLAogICAgICAgICAgICAiTWFzdGVyIGR5bmFtaWMgZmllbGQgdXBkYXRlIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY2xvc2UgaGlzdG9yeSB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5DYW5jZWxDbG9zZVBvcHVwIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBzd2l0Y2ggd2luZG93IGJhY2sgdG8gYWdlbnQgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgZmlyc3QgY3JlYXRlZCB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIHRpY2tldCB6b29tIHBhZ2Ugb2Ygc2Vjb25kIGNyZWF0ZWQgdGVzdCB0aWNrZXQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFRpY2tldElEc1sxXSIpOwoKICAgICAgICAjIGNsaWNrIG9uIE1hc3RlclNsYXZlIGFuZCBzd2l0Y2ggd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50VGlja2V0TWFzdGVyU2xhdmU7VGlja2V0SUQ9JFRpY2tldElEc1sxXScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLnZhbCgnU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjUmljaFRleHQiLCAgICAgICAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIFNsYXZlIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CgogICAgICAgICMgZXhwYW5kIE1pc2NlbGxhbmVvdXMgZHJvcGRvd24gbWVudQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI25hdi1NaXNjZWxsYW5lb3VzIHVsIikuY3NzKHsgImhlaWdodCI6ICJhdXRvIiwgIm9wYWNpdHkiOiAiMTAwIiB9KTsnCiAgICAgICAgKTsKCiAgICAgICAgIyBjbGljayBvbiAnSGlzdG9yeScgYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRUaWNrZXRIaXN0b3J5O1RpY2tldElEPSRUaWNrZXRJRHNbMV0nICldIikKICAgICAgICAgICAgLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuV2lkZ2V0U2ltcGxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIHZlcmlmeSBkeW5hbWljIGZpZWxkIHNsYXZlIHRpY2tldCB1cGRhdGUKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLAogICAgICAgICAgICAgICAgJ0NoYW5nZWQgZHluYW1pYyBmaWVsZCBNYXN0ZXJTbGF2ZSBmcm9tICIiIHRvICJTbGF2ZU9mOicgLiAkVGlja2V0TnVtYmVyc1swXQogICAgICAgICAgICAgICAgKSA+IC0xLAogICAgICAgICAgICAiU2xhdmUgZHluYW1pYyBmaWVsZCB1cGRhdGUgdmFsdWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjbG9zZSBoaXN0b3J5IHdpbmRvdwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkNhbmNlbENsb3NlUG9wdXAiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB3aW5kb3cgYmFjayB0byBhZ2VudCB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBmaXJzdCBjcmVhdGVkIHRlc3QgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCB0aWNrZXRzCiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnVGlja2V0JywKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBlbmFibGUgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQnLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZW5hYmxlIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OlVwZGF0ZU1hc3RlclNsYXZlJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBzZW5kIGVtYWlscwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTZW5kbWFpbE1vZHVsZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdLZXJuZWw6OlN5c3RlbTo6RW1haWw6OlRlc3QnLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0ZXN0IHVzZXIgSUQKICAgICAgICBteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBjcmVhdGUgdGhyZWUgdGVzdCB0aWNrZXRzCiAgICAgICAgbXkgQFRpY2tldElEczsKICAgICAgICBteSBAVGlja2V0TnVtYmVyczsKICAgICAgICBteSAkVGlja2V0VGl0bGUgPSAnTWFzdGVyU2xhdmUgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgZm9yIG15ICRUaWNrZXRDcmVhdGUgKCAxIC4uIDMgKSB7CiAgICAgICAgICAgIG15ICRUaWNrZXROdW1iZXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGVOdW1iZXIoKTsKICAgICAgICAgICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICRUaWNrZXRUaXRsZSwKICAgICAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICA9PiAnU2VsZW5pdW1DdXN0b21lcicsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGNyZWF0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAVGlja2V0SURzLCAgICAgJFRpY2tldElEOwogICAgICAgICAgICBwdXNoIEBUaWNrZXROdW1iZXJzLCAkVGlja2V0TnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50VGlja2V0U2VhcmNoCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRTZWFyY2giKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS5sZW5ndGgiICk7CgogICAgICAgICMgc2VhcmNoIHRlc3QgY3JlYXRlZCB0aWNrZXRzIGJ5IHRpdGxlCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNBdHRyaWJ1dGUnKS52YWwoJ1RpdGxlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJUaXRsZSIsICduYW1lJyApLT5zZW5kX2tleXMoJFRpY2tldFRpdGxlKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBpZD0nU2VhcmNoRm9ybVN1Ym1pdCddW1xAdmFsdWU9J1J1biBzZWFyY2gnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgc2VsZWN0IGZpcnN0IHRlc3QgY3JlYXRlZCB0aWNrZXQKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQHZhbHVlPSckVGlja2V0SURzWzBdJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNsaWNrIG9uIGJ1bGsgYW5kIHN3aXRjaCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIkJ1bGsiLCAnbGlua190ZXh0JyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBvcHVwIGlzIGNvbXBsZXRlbHkgbG9hZGVkLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoQ29yZSkgPT0gIm9iamVjdCIgJiYgdHlwZW9mKENvcmUuQXBwKSA9PSAib2JqZWN0IiAmJiBDb3JlLkFwcC5QYWdlTG9hZENvbXBsZXRlJywKICAgICAgICApOwoKICAgICAgICAjIHNldCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykudmFsKCdNYXN0ZXInKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwb3B1cCBpcyBjb21wbGV0ZWx5IGxvYWRlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZWxlY3Qgc2Vjb25kIGFuZCB0aGlyZCB0ZXN0IGNyZWF0ZWQgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nJFRpY2tldElEc1sxXSddIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQHZhbHVlPSckVGlja2V0SURzWzJdJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNsaWNrIG9uIGJ1bGsgYW5kIHN3aXRjaCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIkJ1bGsiLCAnbGlua190ZXh0JyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBvcHVwIGlzIGNvbXBsZXRlbHkgbG9hZGVkLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoQ29yZSkgPT0gIm9iamVjdCIgJiYgdHlwZW9mKENvcmUuQXBwKSA9PSAib2JqZWN0IiAmJiBDb3JlLkFwcC5QYWdlTG9hZENvbXBsZXRlJywKICAgICAgICApOwoKICAgICAgICAjIHNldCB0ZXN0IHRpY2tldHMgYXMgc2xhdmUgdGlja2V0cwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLnZhbCgnU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gbWFzdGVyIHRpY2tldCB6b29tIHZpZXcKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFRpY2tldElEc1swXSIpOwoKICAgICAgICAjIHZlcmlmeSBtYXN0ZXItc2xhdmUgdGlja2V0IGxpbmsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUaWNrZXROdW1iZXJzWzFdICkgPiAtMSwKICAgICAgICAgICAgIlNsYXZlIHRpY2tldCBudW1iZXI6ICRUaWNrZXROdW1iZXJzWzFdIC0gZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGlja2V0TnVtYmVyc1syXSApID4gLTEsCiAgICAgICAgICAgICJTbGF2ZSB0aWNrZXQgbnVtYmVyOiAkVGlja2V0TnVtYmVyc1syXSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgdGlja2V0cwogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgLSBkZWxldGVkIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgICAgIFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgKTsKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJFRpY2tldE9iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cm15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkVXNlck9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7Cm15ICRDdXN0b21lclVzZXJPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIHN0YXJ0IFJlc3RvcmVEYXRhYnNlCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBlbmFibGUgY29uZmlnIE1hc3RlclNsYXZlOjpGb3J3YXJkU2xhdmVzCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6Rm9yd2FyZFNsYXZlcycsCiAgICBWYWx1ZSA9PiAxLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tNWFJlY29yZCcsCiAgICBWYWx1ZSA9PiAwLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBnZXQgcmFuZG9tIElECm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIGdldCBtYXN0ZXIvc2xhdmUgZHluYW1pYyBmaWVsZCBkYXRhCm15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKTsKbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgIE5hbWUgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAopOwoKIyBjcmVhdGUgbmV3IHVzZXIKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyT2JqZWN0LT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgIExhbmd1YWdlID0+ICdlbicKKTsKJFNlbGYtPlRydWUoCiAgICAkVGVzdFVzZXJMb2dpbiwKICAgICJVc2VyQWRkKCkgJFRlc3RVc2VyTG9naW4iLAopOwoKIyBjcmVhdGUgbmV3IGN1c3RvbWVyIHVzZXIKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICBMYW5ndWFnZSA9PiAnZW4nLAopOwokU2VsZi0+VHJ1ZSgKICAgICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAiQ3VzdG9tZXJVc2VyQWRkKCkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiIsCik7CgojIGNyZWF0ZSBmaXJzdCB0ZXN0IHRpY2tldApteSAkTWFzdGVyVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7Cm15ICRNYXN0ZXJUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUTiAgICAgICAgICAgPT4gJE1hc3RlclRpY2tldE51bWJlciwKICAgIFRpdGxlICAgICAgICA9PiAnTWFzdGVyIHVuaXQgdGVzdCB0aWNrZXQgJyAuICRSYW5kb21JRCwKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJObyAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICwKICAgIE93bmVySUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkTWFzdGVyVGlja2V0SUQsCiAgICAiVGlja2V0Q3JlYXRlKCkgVGlja2V0IElEICRNYXN0ZXJUaWNrZXRJRCIsCik7CgpteSAkRW1haWxCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgIENoYW5uZWxOYW1lID0+ICdFbWFpbCcsCik7CgojIGNyZWF0ZSBhcnRpY2xlIGZvciB0ZXN0IHRpY2tldApteSAkQXJ0aWNsZUlEID0gJEVtYWlsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ01hc3RlciBBcnRpY2xlJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICdVbml0IHRlc3QgTWFzdGVyVGlja2V0JywKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdFbWFpbEN1c3RvbWVyJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdVbml0IHRlc3QgYXJ0aWNsZScsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIEFydGljbGUgSUQgJEFydGljbGVJRCIsCik7CgpteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICBJRCA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAopOwoKIyBzZXQgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldApteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAnTWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRNYXN0ZXJUaWNrZXRJRCBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgY3JlYXRlIHNlY29uZCB0ZXN0IHRpY2tldApteSAkU2xhdmVUaWNrZXROdW1iZXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGVOdW1iZXIoKTsKbXkgJFNsYXZlVGlja2V0SUQgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVE4gICAgICAgICAgID0+ICRTbGF2ZVRpY2tldE51bWJlciwKICAgIFRpdGxlICAgICAgICA9PiAnU2xhdmUgdW5pdCB0ZXN0IHRpY2tldCAnIC4gJFJhbmRvbUlELAogICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICBDdXN0b21lcklEICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgIEN1c3RvbWVyVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luIC4gJ0Bsb2NhbHVuaXR0ZXN0LmNvbScsCiAgICBPd25lcklEICAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTbGF2ZVRpY2tldElELAogICAgIlRpY2tldENyZWF0ZSgpIFRpY2tldCBJRCAkU2xhdmVUaWNrZXRJRCIsCik7CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFNsYXZlVGlja2V0SUQsCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JE1hc3RlclRpY2tldE51bWJlciIsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IEFydGljbGVTZW5kCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY3JlYXRlIG1hc3RlciB0aWNrZXQgYXJ0aWNsZSBhbmQgZm9yd2FyZCBpdApteSAkTWFzdGVyTmV3U3ViamVjdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN1YmplY3RCdWlsZCgKICAgIFRpY2tldE51bWJlciA9PiAkTWFzdGVyVGlja2V0TnVtYmVyLAogICAgU3ViamVjdCAgICAgID0+ICdNYXN0ZXIgQXJ0aWNsZScsCiAgICBBY3Rpb24gICAgICAgPT4gJ0ZvcndhcmQnLAopOwpteSAkRm9yd2FyZEFydGljbGVJRCA9ICRFbWFpbEJhY2tlbmRPYmplY3QtPkFydGljbGVTZW5kKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJE1hc3RlclRpY2tldElELAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIEEgPGN1c3RvbWVyLWFAZXhhbXBsZS5jb20+JywKICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICRNYXN0ZXJOZXdTdWJqZWN0LAogICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ1VuaXQgdGVzdCBmb3J3YXJkZWQgYXJ0aWNsZScsCiAgICBDaGFyc2V0ICAgICAgICAgICAgICA9PiAnaXNvLTg4NTktMTUnLAogICAgTWltZVR5cGUgICAgICAgICAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ0ZvcndhcmQnLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ0ZvcndhcmRlZCBhcnRpY2xlJywKICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDAsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkFydGljbGVTZW5kKCkgRm9yd2FyZGVkIE1hc3RlclRpY2tldCBBcnRpY2xlIElEICRGb3J3YXJkQXJ0aWNsZUlEIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpteSBATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CgpteSAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBhcnRpY2xlIGlzIGNyZWF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IEFydGljbGVTZW5kJywKICAgICJNYXN0ZXJUaWNrZXQgQXJ0aWNsZVNlbmQgZXZlbnQgLSAiLAopOwoKIyBnZXQgc2xhdmUgdGlja2V0IGhpc3RvcnkKbXkgQFNsYXZlSGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKbXkgJFNsYXZlTGFzdEhpc3RvcnlFbnRyeSA9ICRTbGF2ZUhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgYXJ0aWNsZSB0cmllZCB0byBzZW5kCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZUxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXQ6IG5vIGN1c3RvbWVyIGVtYWlsIGZvdW5kLCBzZW5kIG5vIG1hc3RlciBtZXNzYWdlIHRvIGN1c3RvbWVyLicsCiAgICAiU2xhdmVUaWNrZXQgQXJ0aWNsZVNlbmQgZXZlbnQgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgQXJ0aWNsZUNyZWF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCm15ICRJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JDaGFubmVsKAogICAgQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJywKKTsKCiMgY3JlYXRlIG5vdGUgYXJ0aWNsZSBmb3IgbWFzdGVyIHRpY2tldApteSAkQXJ0aWNsZUlEQ3JlYXRlID0gJEludGVybmFsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDAsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ05vdGUgYXJ0aWNsZScsCiAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAnVW5pdCB0ZXN0IE1hc3RlclRpY2tldCcsCiAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnQWRkTm90ZScsCiAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnVW5pdCB0ZXN0IGFydGljbGUnLAogICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkQXJ0aWNsZUlEQ3JlYXRlLAogICAgIkFydGljbGVDcmVhdGUoKSBOb3RlIEFydGljbGUgSUQgJEFydGljbGVJRENyZWF0ZSBjcmVhdGVkIGZvciBNYXN0ZXJUaWNrZXQgSUQgJE1hc3RlclRpY2tldElEIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CigkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSkgPSBncmVwIHsgJF8tPntOYW1lfSBlcSAnTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlQ3JlYXRlJyB9IEBNYXN0ZXJIaXN0b3J5TGluZXM7CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IGFydGljbGUgaXMgY3JlYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogQXJ0aWNsZUNyZWF0ZScsCiAgICAiTWFzdGVyVGlja2V0IEFydGljbGVDcmVhdGUgZXZlbnQgLSAiLAopOwoKIyBnZXQgc2xhdmUgdGlja2V0IGhpc3RvcnkKQFNsYXZlSGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKKCRTbGF2ZUxhc3RIaXN0b3J5RW50cnkpID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJ0FkZGVkIGFydGljbGUgYmFzZWQgb24gbWFzdGVyIHRpY2tldC4nIH0gQFNsYXZlSGlzdG9yeUxpbmVzOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IGFydGljbGUgaXMgY3JlYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkU2xhdmVMYXN0SGlzdG9yeUVudHJ5LT57TmFtZX0sCiAgICAnQWRkZWQgYXJ0aWNsZSBiYXNlZCBvbiBtYXN0ZXIgdGlja2V0LicsCiAgICAiU2xhdmVUaWNrZXQgQXJ0aWNsZUNyZWF0ZSBldmVudCAtICIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBldmVudCBUaWNrZXRTdGF0ZVVwZGF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGNoYW5nZSBtYXN0ZXIgdGlja2V0IHN0YXRlIHRvICdvcGVuJwokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgU3RhdGUgICAgPT4gJ29wZW4nLAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUaWNrZXRTdGF0ZVNldCgpIE1hc3RlclRpY2tldCBzdGF0ZSB1cGRhdGVkIC0gJ29wZW4nIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IHN0YXRlIGlzIHVwZGF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFN0YXRlVXBkYXRlJywKICAgICJNYXN0ZXJUaWNrZXQgVGlja2V0U3RhdGVVcGRhdGUgZXZlbnQgLSAiLAopOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IHN0YXRlIGlzIHVwZGF0ZWQKbXkgJVNsYXZlVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZVRpY2tldERhdGF7U3RhdGV9LAogICAgJ29wZW4nLAogICAgIlNsYXZlVGlja2V0IHN0YXRlIHVwZGF0ZWQgLSAnb3BlbicgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgVGlja2V0UGVuZGluZ1RpbWVVcGRhdGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBjaGFuZ2UgcGVuZGluZyB0aW1lIGZvciBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVuZGluZ1RpbWVTZXQoCiAgICBZZWFyICAgICA9PiAwMDAwLAogICAgTW9udGggICAgPT4gMDAsCiAgICBEYXkgICAgICA9PiAwMCwKICAgIEhvdXIgICAgID0+IDAwLAogICAgTWludXRlICAgPT4gMDAsCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldFBlbmRpbmdUaW1lU2V0KCkgTWFzdGVyVGlja2V0IHBlbmRpbmcgdGltZSB1cGRhdGVkIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IHBlbmRpbmcgdGltZSBpcyB1cGRhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5LT57TmFtZX0sCiAgICAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZScsCiAgICAiTWFzdGVyVGlja2V0IFRpY2tldFBlbmRpbmdUaW1lVXBkYXRlIGV2ZW50IC0gIiwKKTsKCiMgZ2V0IHNsYXZlIHRpY2tldCBoaXN0b3J5CkBTbGF2ZUhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTbGF2ZUxhc3RIaXN0b3J5RW50cnkgPSAkU2xhdmVIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IHBlbmRpbmcgdGltZSBpcyB1cGRhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZUxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICclJTAwLTAwLTAwIDAwOjAwJywKICAgICJTbGF2ZVRpY2tldCBwZW5kaW5nIHRpbWUgdXBkYXRlIC0gIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IFRpY2tldFByaW9yaXR5VXBkYXRlCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY2hhbmdlIG1hc3RlciB0aWNrZXQgcHJpb3JpdHkgdG8gJzIgbG93JwokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFByaW9yaXR5U2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgUHJpb3JpdHkgPT4gJzIgbG93JywKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVGlja2V0UHJpb3JpdHlTZXQoKSBNYXN0ZXJUaWNrZXQgcHJpb3JpdHkgdXBkYXRlZCAtICcyIGxvdyciLAopOwoKIyBnZXQgbWFzdGVyIHRpY2tldCBoaXN0b3J5CkBNYXN0ZXJIaXN0b3J5TGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJE1hc3Rlckxhc3RIaXN0b3J5RW50cnkgPSAkTWFzdGVySGlzdG9yeUxpbmVzWy0xXTsKCiMgdmVyaWZ5IG1hc3RlciB0aWNrZXQgcHJpb3JpdHkgaXMgdXBkYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UHJpb3JpdHlVcGRhdGUnLAogICAgIk1hc3RlclRpY2tldCBUaWNrZXRQcmlvcml0eVVwZGF0ZSBldmVudCAtICIsCik7CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgcHJpb3JpdHkgaXMgdXBkYXRlZAolU2xhdmVUaWNrZXREYXRhID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgPT4gJFNsYXZlVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+SXNEZWVwbHkoCiAgICAkU2xhdmVUaWNrZXREYXRhe1ByaW9yaXR5fSwKICAgICcyIGxvdycsCiAgICAiU2xhdmVUaWNrZXQgcHJpb3JpdHkgdXBkYXRlZCAtICcyIGxvdycgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgVGlja2V0T3duZXJVcGRhdGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBjaGFuZ2UgbWFzdGVyIHRpY2tldCBvd25lcgokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgTmV3VXNlciAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldE93bmVyU2V0KCkgTWFzdGVyVGlja2V0IG93bmVyIHVwZGF0ZWQgLSAkVGVzdFVzZXJMb2dpbiIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBvd25lciBpcyB1cGRhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5LT57TmFtZX0sCiAgICAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRPd25lclVwZGF0ZScsCiAgICAiTWFzdGVyVGlja2V0IFRpY2tldE93bmVyVXBkYXRlIGV2ZW50IC0gIiwKKTsKCiMgdmVyaWZ5IHNsYXZlIHRpY2tldCBvd25lciBpcyB1cGRhdGVkCiVTbGF2ZVRpY2tldERhdGEgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICBUaWNrZXRJRCA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZVRpY2tldERhdGF7T3duZXJ9LAogICAgJFRlc3RVc2VyTG9naW4sCiAgICAiU2xhdmVUaWNrZXQgb3duZXIgdXBkYXRlZCAtICIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBldmVudCBUaWNrZXRSZXNwb25zaWJsZVVwZGF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIHNldCBuZXcgcmVzcG9uc2libGUgdXNlciBmb3IgbWFzdGVyIHRpY2tldAokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFJlc3BvbnNpYmxlU2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgTmV3VXNlciAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldFJlc3BvbnNpYmxlU2V0KCkgTWFzdGVyVGlja2V0IHJlc3BvbnNpYmxlIHVwZGF0ZWQgLSAkVGVzdFVzZXJMb2dpbiIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCByZXNwb25zaWJsZSB1c2VyIGlzIHVwZGF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlJywKICAgICJNYXN0ZXJUaWNrZXQgVGlja2V0UmVzcG9uc2libGVVcGRhdGUgZXZlbnQgLSAiLAopOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IG93bmVyIGlzIHVwZGF0ZWQKJVNsYXZlVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPklzRGVlcGx5KAogICAgJFNsYXZlVGlja2V0RGF0YXtSZXNwb25zaWJsZX0sCiAgICAkVGVzdFVzZXJMb2dpbiwKICAgICJTbGF2ZVRpY2tldCByZXNwb25zaWJsZSB1cGRhdGVkIC0gIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IFRpY2tldExvY2tVcGRhdGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBsb2NrIG1hc3RlciB0aWNrZXQKJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRMb2NrU2V0KAogICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUaWNrZXRMb2NrU2V0KCkgTWFzdGVyVGlja2V0IGlzIGxvY2tlZCIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBpcyBsb2NrZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldExvY2tVcGRhdGUnLAogICAgIk1hc3RlclRpY2tldCBUaWNrZXRMb2NrVXBkYXRlIGV2ZW50IC0gIiwKKTsKCiMgdmVyaWZ5IHNsYXZlIHRpY2tldCBpcyBsb2NrZWQKJVNsYXZlVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPklzRGVlcGx5KAogICAgJFNsYXZlVGlja2V0RGF0YXtMb2NrfSwKICAgICdsb2NrJywKICAgICJTbGF2ZVRpY2tldCBsb2NrIHVwZGF0ZWQgLSAiLAopOwoKIyBjbGVhbnVwIGlzIGRvbmUgYnkgUmVzdG9yZURhdGFiYXNlCgoxOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwpDb3JlLkFnZW50LkFkbWluID0gQ29yZS5BZ2VudC5BZG1pbiB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlIENvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4KICogQGF1dGhvciBPVFJTIEFHCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIGZ1bmN0aW9ucyBmb3IgU3lzdGVtQ29uZmlndXJhdGlvbiBtb2R1bGUuCiAqLwogQ29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAkKCcuU2hvd1dhcm5pbmcnKS5iaW5kKCdjaGFuZ2Uga2V5dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgncC5XYXJuaW5nJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgfSk7CiAgICBDb3JlLkFnZW50LkFkbWluLkR5bmFtaWNGaWVsZC5WYWxpZGF0aW9uSW5pdCgpOwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZSB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwovLyAtLQovLyAkb3JpZ2luOiBvdHJzIC0gZTk0NzA2ZTlkMzdjMmQ2YWY5MDhiM2RmYTZmNjgyY2Q3YjQyODE3NCAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5UaWNrZXRBY3Rpb25Db21tb24uanMKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIENvcmUgPSBDb3JlIHx8IHt9OwpDb3JlLkFnZW50ID0gQ29yZS5BZ2VudCB8fCB7fTsKCi8vIC0tLQovLyBPVFJTTWFzdGVyU2xhdmUKLy8gLS0tCi8vLyoqCi8vICogQG5hbWVzcGFjZSBDb3JlLkFnZW50LlRpY2tldEFjdGlvbkNvbW1vbgovLyAqIEBtZW1iZXJvZiBDb3JlLkFnZW50Ci8vICogQGF1dGhvciBPVFJTIEFHCi8vICogQGRlc2NyaXB0aW9uCi8vICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIEFnZW50VGlja2V0QWN0aW9uQ29tbW9uLgovLyAqLwovL0NvcmUuQWdlbnQuVGlja2V0QWN0aW9uQ29tbW9uID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewovKioKICogQG5hbWVzcGFjZSBDb3JlLkFnZW50LlRpY2tldE1hc3RlclNsYXZlCiAqIEBtZW1iZXJvZiBDb3JlLkFnZW50CiAqIEBhdXRob3IgT1RSUyBBRwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIFRpY2tldE1hc3RlclNsYXZlLgogKi8KQ29yZS5BZ2VudC5UaWNrZXRNYXN0ZXJTbGF2ZSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKLy8gLS0tCgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0CiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UaWNrZXRBY3Rpb25Db21tb24KICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIG1vZHVsZSBmdW5jdGlvbmFsaXR5LgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgRHluYW1pY0ZpZWxkTmFtZXMgPSBDb3JlLkNvbmZpZy5HZXQoJ0R5bmFtaWNGaWVsZE5hbWVzJyksCiAgICAgICAgICAgIEZpZWxkcyA9IFsnVHlwZUlEJywgJ1NlcnZpY2VJRCcsICdTTEFJRCcsICdOZXdPd25lcklEJywgJ05ld1Jlc3BvbnNpYmxlSUQnLCAnTmV3U3RhdGVJRCcsICdOZXdQcmlvcml0eUlEJ10sCiAgICAgICAgICAgIE1vZGlmaWVkRmllbGRzOwoKICAgICAgICAvLyBCaW5kIGV2ZW50cyB0byBzcGVjaWZpYyBmaWVsZHMKICAgICAgICAkLmVhY2goRmllbGRzLCBmdW5jdGlvbihJbmRleCwgVmFsdWUpIHsKICAgICAgICAgICAgTW9kaWZpZWRGaWVsZHMgPSBDb3JlLkRhdGEuQ29weU9iamVjdChGaWVsZHMpLmNvbmNhdChEeW5hbWljRmllbGROYW1lcyk7CiAgICAgICAgICAgIE1vZGlmaWVkRmllbGRzLnNwbGljZShJbmRleCwgMSk7CgogICAgICAgICAgICBGaWVsZFVwZGF0ZShWYWx1ZSwgTW9kaWZpZWRGaWVsZHMpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBCaW5kIGV2ZW50IHRvIFF1ZXVlIGZpZWxkLgogICAgICAgICQoJyNOZXdRdWV1ZUlEJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJCgnI0NvbXBvc2UnKSwgJ0FKQVhVcGRhdGUnLCAnTmV3UXVldWVJRCcsIFsnVHlwZUlEJywgJ1NlcnZpY2VJRCcsICdOZXdPd25lcklEJywgJ05ld1Jlc3BvbnNpYmxlSUQnLCAnTmV3U3RhdGVJRCcsICdOZXdQcmlvcml0eUlEJywgJ1N0YW5kYXJkVGVtcGxhdGVJRCddLmNvbmNhdChEeW5hbWljRmllbGROYW1lcykpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBCaW5kIGV2ZW50IHRvIFN0YW5kYXJkVGVtcGxhdGUgZmllbGQuCiAgICAgICAgJCgnI1N0YW5kYXJkVGVtcGxhdGVJRCcpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuQWdlbnQuVGlja2V0QWN0aW9uLkNvbmZpcm1UZW1wbGF0ZU92ZXJ3cml0ZSgnUmljaFRleHQnLCAkKHRoaXMpLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29tcG9zZScpLCAnQUpBWFVwZGF0ZScsICdTdGFuZGFyZFRlbXBsYXRlSUQnLCBbJ1JpY2hUZXh0RmllbGQnXSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIC8vIEJpbmQgY2xpY2sgZXZlbnQgdG8gQ3JlYXRlQXJ0aWNsZSBjaGVja2JveCBhbmQgdG9nZ2xlIHdpZGdldC4KICAgICAgICAkKCcjQ3JlYXRlQXJ0aWNsZSwgI1dpZGdldEFydGljbGUgLldpZGdldEFjdGlvbi5Ub2dnbGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNXaWRnZXRBcnRpY2xlIC5WYWxpZGF0ZV9EZXBlbmRpbmdSZXF1aXJlZEFORC5WYWxpZGF0ZV9EZXBlbmRpbmdfQ3JlYXRlQXJ0aWNsZScpLmVhY2goZnVuY3Rpb24gKEluZGV4LCBFbGVtZW50KSB7CiAgICAgICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKEVsZW1lbnQpOwogICAgICAgICAgICAgICAgdmFyIENsb3Nlc3RDbGFzcyA9ICdGaWVsZCc7CiAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQuYXR0cignaWQnKSA9PT0gJ1JpY2hUZXh0JykgewogICAgICAgICAgICAgICAgICAgIENsb3Nlc3RDbGFzcyA9ICdSaWNoVGV4dEZpZWxkJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkKCcjQ3JlYXRlQXJ0aWNsZScpLnByb3AoJ2NoZWNrZWQnKSAmJiAkKCcjV2lkZ2V0QXJ0aWNsZScpLmhhc0NsYXNzKCdFeHBhbmRlZCcpKSB7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuY2xvc2VzdCgnLicgKyBDbG9zZXN0Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgIC5wcmV2KCdsYWJlbCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnTWFuZGF0b3J5JykKICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmQoJzxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5jbG9zZXN0KCcuJyArIENsb3Nlc3RDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgLnByZXYoJ2xhYmVsJykKICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdNYW5kYXRvcnknKQogICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc3BhbicpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuVW5IaWdobGlnaHRFcnJvcihFbGVtZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRpY2tldCBhY3Rpb24gcG9wdXAuCiAgICAgICAgQ29yZS5BZ2VudC5UaWNrZXRBY3Rpb24uSW5pdCgpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBGaWVsZFVwZGF0ZQogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuVGlja2V0QWN0aW9uQ29tbW9uCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBWYWx1ZSAtIEZpZWxkSUQKICAgICAqIEBwYXJhbSB7QXJyYXl9IE1vZGlmaWVkRmllbGRzIC0gRmllbGRzCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgQ3JlYXRlIG9uIGNoYW5nZSBldmVudCBoYW5kbGVyCiAgICAgKi8KICAgIGZ1bmN0aW9uIEZpZWxkVXBkYXRlIChWYWx1ZSwgTW9kaWZpZWRGaWVsZHMpIHsKICAgICAgICAkKCcjJyArIFZhbHVlKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29tcG9zZScpLCAnQUpBWFVwZGF0ZScsIFZhbHVlLCBNb2RpZmllZEZpZWxkcyk7CiAgICAgICAgfSk7CiAgICB9CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKLy8gLS0tCi8vIE9UUlNNYXN0ZXJTbGF2ZQovLyAtLS0KLy99KENvcmUuQWdlbnQuVGlja2V0QWN0aW9uQ29tbW9uIHx8IHt9KSk7Cn0oQ29yZS5BZ2VudC5UaWNrZXRNYXN0ZXJTbGF2ZSB8fCB7fSkpOwovLyAtLS0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgdmFyOjpwYWNrYWdlc2V0dXA6Ok9UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCik7Cgo9aGVhZDEgTkFNRQoKT1RSU01hc3RlclNsYXZlLnBtIC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIFNZTk9QU0lTCgpGdW5jdGlvbnMgZm9yIGluc3RhbGxpbmcgdGhlIE9UUlNNYXN0ZXJTbGF2ZSBwYWNrYWdlLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6Ok9UUlNNYXN0ZXJTbGF2ZScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEZvcmNlIGEgcmVsb2FkIG9mIFpaWkF1dG8ucG0gdG8gZ2V0IHRoZSBmcmVzaCBjb25maWd1cmF0aW9uIHZhbHVlcy4KICAgIGZvciBteSAkTW9kdWxlICggc29ydCBrZXlzICVJTkMgKSB7CiAgICAgICAgaWYgKCAkTW9kdWxlID1+IG0vWlpaQUE/dXRvXC5wbSQvICkgewogICAgICAgICAgICBkZWxldGUgJElOQ3skTW9kdWxlfTsKICAgICAgICB9CiAgICB9CgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgICAgIE9iamVjdHMgPT4gWydLZXJuZWw6OkNvbmZpZyddLAogICAgKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkcyBsaXN0CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZHNMaXN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgKTsKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57RHluYW1pY0ZpZWxkc0xpc3R9ICkgKSB7CiAgICAgICAgJFNlbGYtPntEeW5hbWljRmllbGRzTGlzdH0gPSBbXTsKICAgIH0KCiAgICAjIGNyZWF0ZSBhIGR5bmFtaWMgZmllbGQgbG9va3VwIHRhYmxlIChieSBuYW1lKQogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZHNMaXN0fSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZC0+e05hbWV9OwogICAgICAgICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfS0+eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGQ7CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBDb2RlSW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlSW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVJbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB3ZSBnb3QgYW4gaW5zdGFsbGVkIHZlcnNpb24gb2YgTWFzdGVyU2xhdmUsIG1pZ3JhdGUgdGhlIGRhdGEKICAgICMgb3RoZXJ3aXNlIHNldCB0aGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEID0gJFNlbGYtPl9DaGVja01hc3RlclNsYXZlRGF0YSgpOwogICAgaWYgKCRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEKSB7CgogICAgICAgICRTZWxmLT5fTWlncmF0ZU9UUlNNYXN0ZXJTbGF2ZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgICAgIE1hc3RlclNsYXZlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5fU2V0RHluYW1pY0ZpZWxkcygpOwogICAgfQoKICAgICMgc2V0IGRhc2hib2FyZCBjb25maWcgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1NldERhc2hib2FyZENvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlUmVpbnN0YWxsKCkKCnJ1biB0aGUgY29kZSByZWluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVJlaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVSZWluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVwZ3JhZGUoKQoKcnVuIHRoZSBjb2RlIHVwZ3JhZGUgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGUoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5fU2V0RHluYW1pY0ZpZWxkcygpOwoKICAgICMgc2V0IGRhc2hib2FyZCBjb25maWcgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1NldERhc2hib2FyZENvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZTEyNSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0IGZvciB2ZXJzaW9ucyBwcmlvciB0byAxLjIuNQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGUxMjUoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZTEyNSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdXBncmFkZS9taWdyYXRlIG9ubHkgaW4gY2FzZSB0aGVyZSBpcyBhIGluc3RhbGxlZAogICAgIyB2ZXJzaW9uIG9mIE9UUlNNYXN0ZXJTbGF2ZSB2ZXJzaW9uIDwgMS4yLjUKICAgICRTZWxmLT5fTWlncmF0ZU9UUlNNYXN0ZXJTbGF2ZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzkxKCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiA0LjAuOTEuCgpteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzkxIHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hhbmdlIGNvbmZpZ3VyYXRpb25zIHRvIG1hdGNoIHRoZSBuZXcgbW9kdWxlIGxvY2F0aW9uLgogICAgJFNlbGYtPl9NaWdyYXRlQ29uZmlncygpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+X1JlbW92ZUR5bmFtaWNGaWVsZHMoKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9TZXREeW5hbWljRmllbGRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBuYW1lcyBmcm9tIFN5c0NvbmZpZwogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykgfHwgJ01hc3RlclNsYXZlJzsKCiAgICAjIHNldCBhdHRyaWJ1dGVzIG9mIG5ldyBkeW5hbWljIGZpZWxkcwogICAgbXkgJU5ld0R5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJ01hc3RlciBUaWNrZXQnLAogICAgICAgICAgICBGaWVsZFR5cGUgID0+ICdNYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXMgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2V0IE1heEZpZWxkT3JkZXIgKG5lZWRlZCBmb3IgYWRkaW5nIG5ldyBkeW5hbWljIGZpZWxkcykKICAgIG15ICRNYXhGaWVsZE9yZGVyID0gMDsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntEeW5hbWljRmllbGRzTGlzdH0gKSApIHsKICAgICAgICAkTWF4RmllbGRPcmRlciA9IDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZHNMaXN0fSB9ICkgewogICAgICAgICAgICBpZiAoIGludCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRPcmRlcn0gPiBpbnQgJE1heEZpZWxkT3JkZXIgKSB7CiAgICAgICAgICAgICAgICAkTWF4RmllbGRPcmRlciA9ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZE9yZGVyfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIGZvciBteSAkTmV3RmllbGROYW1lICggc29ydCBrZXlzICVOZXdEeW5hbWljRmllbGRzICkgewoKICAgICAgICAjIGNoZWNrIGlmIGR5bmFtaWMgZmllbGQgYWxyZWFkeSBleGlzdHMKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0R5bmFtaWNGaWVsZExvb2t1cH0tPnskTmV3RmllbGROYW1lfSApICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9LT57JE5ld0ZpZWxkTmFtZX07CgogICAgICAgICAgICBteSAkVXBkYXRlOwoKICAgICAgICAgICAgIyB1cGRhdGUgZmllbGQgY29uZmlndXJhdGlvbiBpZiBpdCB3YXMgb3RoZXIgdGhhbiBNYXN0ZXJTbGF2ZSAoZS5nLiBEcm9wZG93bikKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBuZSAnTWFzdGVyU2xhdmUnICkgewogICAgICAgICAgICAgICAgbXkgJElEID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfTsKICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZENvbmZpZ30gPSAoICV7JER5bmFtaWNGaWVsZENvbmZpZ30sICV7ICROZXdEeW5hbWljRmllbGRzeyROZXdGaWVsZE5hbWV9IH0gKTsKICAgICAgICAgICAgICAgICRVcGRhdGUgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIGR5bmFtaWMgZmllbGQgZXhpc3RzIG1ha2Ugc3VyZSBpcyB2YWxpZAogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntWYWxpZElEfSBuZSAnMScgKSB7CiAgICAgICAgICAgICAgICAkVXBkYXRlID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRVcGRhdGUpIHsKCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAleyREeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSZW9yZGVyID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBzZXQgZHluYW1pYyBmaWVsZCAnJE5ld0ZpZWxkTmFtZScgdG8gdmFsaWQhIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ludGVybmFsRmllbGR9IG5lICcxJyApIHsKCiAgICAgICAgICAgICAgICAjIHVwZGF0ZSBJbnRlcm5hbEZpZWxkIHZhbHVlIG1hbnVhbGx5IHNpbmNlIEFQSSBkb2VzIG5vdCBzdXBwb3J0CiAgICAgICAgICAgICAgICAjIGludGVybmFsX2ZpZWxkIHVwZGF0ZQogICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICAgICAgVVBEQVRFIGR5bmFtaWNfZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgU0VUIGludGVybmFsX2ZpZWxkID0gMQogICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHNldCBkeW5hbWljIGZpZWxkICckTmV3RmllbGROYW1lJyBhcyBpbnRlcm5hbCEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjbGVhbiBkeW5hbWljIGZpZWxkIGNhY2hlCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgY3JlYXRlIGl0CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRNYXhGaWVsZE9yZGVyKys7CiAgICAgICAgICAgIG15ICRJRCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEFkZCgKICAgICAgICAgICAgICAgICV7ICROZXdEeW5hbWljRmllbGRzeyROZXdGaWVsZE5hbWV9IH0sCiAgICAgICAgICAgICAgICBGaWVsZE9yZGVyID0+ICRNYXhGaWVsZE9yZGVyLAogICAgICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJElEICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGFkZCBkeW5hbWljIGZpZWxkICckTmV3RmllbGROYW1lJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGVuYWJsZSBkeW5hbWljIGZpZWxkIGZvciB0aWNrZXQgem9vbQogICAgIyBnZXQgb2xkIGNvbmZpZ3VyYXRpb24KICAgIG15ICRXaW5kb3dDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbScpOwogICAgbXkgJUR5bmFtaWNGaWVsZHMgPSAleyAkV2luZG93Q29uZmlnLT57RHluYW1pY0ZpZWxkfSB8fCB7fSB9OwoKICAgICREeW5hbWljRmllbGRzeyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gPQogICAgICAgIGRlZmluZWQgJER5bmFtaWNGaWVsZHN7JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfQogICAgICAgID8gJER5bmFtaWNGaWVsZHN7JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfQogICAgICAgIDogMTsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgcmV0dXJuIDAgaWYgISRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ09UUlNNYXN0ZXJTbGF2ZSAtIGRlcGxveSBBZ2VudFRpY2tldFpvb20gZHluYW1pYyBmaWVsZHMnLAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbSMjI0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcJUR5bmFtaWNGaWVsZHMsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX01pZ3JhdGVPVFJTTWFzdGVyU2xhdmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG5hbWVzIGZyb20gU3lzQ29uZmlnCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKQogICAgICAgIHx8ICdNYXN0ZXJTbGF2ZSc7CgogICAgIyBjaGVjayBpZiB0aGVyZSBpc24ndCBhbHJlYWR5IGEgZHluYW1pYyBmaWVsZCB3aXRoIHRoZSBkZXN0aW5lZCBuYW1lCiAgICByZXR1cm4gMSBpZiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9LT57JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSApOwoKICAgIG15ICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjaGVjayBpZiB3ZSBnb3QgYSBEeW5hbWljRmllbGRJRAogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkSUR9ICkgewogICAgICAgICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEID0gJFBhcmFte0R5bmFtaWNGaWVsZElEfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGlmIG5vdDogZ2V0IHRoZSBtaWdyYXRlZCBmaWVsZCBJRCBieSBzZWFyY2hpbmcgZm9yIHBvc3NpYmxlIGRhdGEKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIGRmdi5maWVsZF9pZCBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2ICIKICAgICAgICAgICAgICAgIC4gIldIRVJFIGRmdi52YWx1ZV90ZXh0IExJS0UgJ1NsYXZlT2Y6JScgT1IgZGZ2LnZhbHVlX3RleHQgPSAnTWFzdGVyJyIsCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEID0gJFJvd1swXTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB3ZSBmb3VuZCBhIHZhbGlkIElECiAgICByZXR1cm4gMCBpZiAhJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQ7CgogICAgaWYgKCAkUGFyYW17TWFzdGVyU2xhdmV9ICkgewogICAgICAgICRTZWxmLT5fTWlncmF0ZU1hc3RlclNsYXZlRGF0YSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAjIHRyeSB0byBnZXQgdGhlIGR5bmFtaWMgZmllbGQgIGRhdGEgKGZvciBmaWVsZCBvcmRlciBldGMuKQogICAgbXkgJE9sZER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBJRCA9PiAkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCwKICAgICk7CgogICAgcmV0dXJuIDAgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRPbGREeW5hbWljRmllbGQpOwoKICAgICMgdXBkYXRlIHRoZSBuYW1lIG9mIHRoZSBkeW5hbWljIGZpZWxkIHRvIE1hc3RlclNsYXZlIGFuZCBzdG9yZSBpdAogICAgIyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbgogICAgcmV0dXJuIDAgaWYgISREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAleyRPbGREeW5hbWljRmllbGR9LAogICAgICAgIE5hbWUgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAogICAgICAgIExhYmVsICAgICAgPT4gJ01hc3RlciBUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ01hc3RlclNsYXZlJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgICAgICAgPT4gJycsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXMgPT4gMSwKICAgICAgICB9LAogICAgICAgIEludGVybmFsRmllbGQgPT4gMSwKICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgUmVvcmRlciAgICAgICA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICk7CgogICAgIyB1cGRhdGUgSW50ZXJuYWxGaWVsZCB2YWx1ZSBtYW51YWxseSBzaW5jZSBBUEkgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcm5hbF9maWVsZCB1cGRhdGUKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZHluYW1pY19maWVsZAogICAgICAgICAgICBTRVQgaW50ZXJuYWxfZmllbGQgPSAxCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRC0+e0lEfSBdLAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHNldCBkeW5hbWljIGZpZWxkICckTWFzdGVyU2xhdmVEeW5hbWljRmllbGQnIGFzIGludGVybmFsISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNsZWFuIGR5bmFtaWMgZmllbGQgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICApOwoKICAgICMgYWN0aXZhdGUgdGhlIER5bmFtaWNGaWVsZCBpbiB0aWNrZXQgZGV0YWlscyBibG9jawogICAgbXkgJEtleVN0cmluZyAgICAgICA9ICJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20iOwogICAgbXkgJEV4aXN0aW5nU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgkS2V5U3RyaW5nKSB8fCB7fTsKICAgIG15ICVWYWx1ZXNUb1NldCAgICAgPSAleyAkRXhpc3RpbmdTZXR0aW5nLT57RHluYW1pY0ZpZWxkfSB8fCB7fSB9OwogICAgJFZhbHVlc1RvU2V0e01hc3RlclNsYXZlfSA9IDE7CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ09UUlNNYXN0ZXJTbGF2ZSAtIGRlcGxveSBkeW5hbWljIGZpZWxkcy4nLAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEtleVN0cmluZyAuICIjIyNEeW5hbWljRmllbGQiLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gXCVWYWx1ZXNUb1NldCwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfQ2hlY2tNYXN0ZXJTbGF2ZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgaWYgbm90OiBnZXQgdGhlIG1pZ3JhdGVkIGZpZWxkIElEIGJ5IHNlYXJjaGluZyBmb3IgcG9zc2libGUgZGF0YQogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICJTRUxFQ1QgZGZ2LmZpZWxkX2lkIEZST00gZHluYW1pY19maWVsZF92YWx1ZSBkZnYgV0hFUkUgZGZ2LnZhbHVlX3RleHQgPSAnU2xhdmUnIiwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQ7Cn0KCnN1YiBfTWlncmF0ZU1hc3RlclNsYXZlRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtEeW5hbWljRmllbGRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIER5bmFtaWNGaWVsZElEIGZvciBNYXN0ZXJTbGF2ZSBkYXRhIG1pZ3JhdGlvbiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYWxsIHRoZSBzbGF2ZSB0aWNrZXQgaWRzIHdlIGhhdmUgdG8gdXBkYXRlCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICIKICAgICAgICAgICAgU0VMRUNUIGRmdi5vYmplY3RfaWQKICAgICAgICAgICAgRlJPTSBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdgogICAgICAgICAgICBXSEVSRSBkZnYudmFsdWVfdGV4dCA9ICdTbGF2ZScKICAgICAgICAgICAgICAgIEFORCBkZnYuZmllbGRfaWQgPSA/IiwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17RHluYW1pY0ZpZWxkSUR9IF0sCiAgICAgICAgTGltaXQgPT4gNTAsCiAgICApOwoKICAgIG15IEBEeW5hbWljRmllbGREYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQER5bmFtaWNGaWVsZERhdGEsICRSb3dbMF0gKTsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGR5bmFtaWMgZmllbGQgZGF0YSBmb3Igc2V0dGluZyBuZXcgdmFsdWUKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBJRCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICMgbG9vcCBvdmVyIHRoZSB0aWNrZXQgaWRzIHdlIGhhdmUgdG8gdXBkYXRlCiAgICBPTERTTEFWRVNUWUxFOgogICAgZm9yIG15ICRUaWNrZXRJRCAoQER5bmFtaWNGaWVsZERhdGEpIHsKCiAgICAgICAgIyBnZXQgbGlua2VkIG9iamVjdHMKICAgICAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgICAgIE9iamVjdCAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgS2V5ICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICBEaXJlY3Rpb24gPT4gJ1NvdXJjZScsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgd2hhdCB0aWNrZXRzIG1pZ2h0IGJlIHRoZSBtYXN0ZXIKICAgICAgICBteSBAUGFyZW50VGlja2V0SURzID0ga2V5cyAleyAkTGlua0xpc3RXaXRoRGF0YS0+e1RpY2tldH0tPntQYXJlbnRDaGlsZH0tPntTb3VyY2V9IH07CgogICAgICAgIG15ICRUaWNrZXROdW1iZXI7CgogICAgICAgICMgaWYgd2UgZ290IG1vcmUgdGhhbiBvbmUgcG9zc2libGUgbWFzdGVyIHRpY2tldCwgdHJ5IHRvIGRldGVybWluZSB3aGljaAogICAgICAgICMgb25lIGlzIHRoZSBtYXN0ZXIgd2UgYXJlIGxvb2tpbmcgZm9yCiAgICAgICAgaWYgKCQjUGFyZW50VGlja2V0SURzKSB7CgogICAgICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgPT4gIgogICAgICAgICAgICAgICAgICAgIFNFTEVDVCBkZnYub2JqZWN0X2lkCiAgICAgICAgICAgICAgICAgICAgRlJPTSBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdgogICAgICAgICAgICAgICAgICAgIFdIRVJFIGRmdi52YWx1ZV90ZXh0ID0gJ01hc3RlcicKICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdi5maWVsZF9pZCA9ID8KICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdi5vYmplY3RfaWQgSU4gKCIKICAgICAgICAgICAgICAgICAgICAuIGpvaW4oICcsJywgbWFwIHsgJERCT2JqZWN0LT5RdW90ZSgkXykgfSBAUGFyZW50VGlja2V0SURzICkKICAgICAgICAgICAgICAgICAgICAuICcpJywKICAgICAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtEeW5hbWljRmllbGRJRH0gXSwKICAgICAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAUGFyZW50VGlja2V0SURzOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgIHB1c2goIEBQYXJlbnRUaWNrZXRJRHMsICRSb3dbMF0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCQjUGFyZW50VGlja2V0SURzKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGRldGVybWluZSBNYXN0ZXJUaWNrZXQgZm9yIFRpY2tldElEICRUaWNrZXRJRCAoUG9zc2libGUgTWFzdGVyczogIgogICAgICAgICAgICAgICAgICAgICAgICAuIGpvaW4gJywgJywgQFBhcmVudFRpY2tldElEcwogICAgICAgICAgICAgICAgICAgICAgICAuICIpISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVGlja2V0TnVtYmVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXROdW1iZXJMb29rdXAoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyZW50VGlja2V0SURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRUaWNrZXROdW1iZXIKICAgICAgICAgICAgICAgID0gJExpbmtMaXN0V2l0aERhdGEtPntUaWNrZXR9LT57UGFyZW50Q2hpbGR9LT57U291cmNlfS0+eyAkUGFyZW50VGlja2V0SURzWzBdIH0tPntUaWNrZXROdW1iZXJ9OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgdG8gdmFsaWQKICAgICAgICAjIGRhdGEgZm9yIE9UUlNNYXN0ZXJTbGF2ZQogICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAnU2xhdmVPZjonIC4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBtaWdyYXRpbmcgTWFzdGVyU2xhdmUgRHluYW1pY0ZpZWxkICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17RHluYW1pY0ZpZWxkSUR9CiAgICAgICAgICAgICAgICAgICAgLiAiJyBmb3IgVGlja2V0SUQgJyIKICAgICAgICAgICAgICAgICAgICAuICRUaWNrZXRJRAogICAgICAgICAgICAgICAgICAgIC4gIichIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRvIHNvbWUgcmVjdXJzaW9uIGlmIHdlIGdvdCBtb3JlIHRoYW4gNTAgc2xhdmUgdGlja2V0cyBpbiB0aGlzIHJ1bgogICAgIyBkb2luZyB0aGlzIHRvIGhhdmUgYSBiZXR0ZXIgcGVyZm9ybWFuY2UKICAgIGlmICggNTAgPT0gc2NhbGFyIEBEeW5hbWljRmllbGREYXRhICkgewogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9NaWdyYXRlTWFzdGVyU2xhdmVEYXRhKAogICAgICAgICAgICBEeW5hbWljRmllbGRJRCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgbWlncmF0aW5nIE1hc3RlclNsYXZlIGRhdGEhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9SZW1vdmVEeW5hbWljRmllbGRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBuYW1lcyBmcm9tIFN5c0NvbmZpZwogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykgfHwgJ01hc3RlclNsYXZlJzsKCiAgICAjIGNoZWNrIGlmIGR5bmFtaWMgZmllbGQgYWxyZWFkeSBleGlzdHMKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfS0+eyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gKSApIHsKCiAgICAgICAgIyBnZXQgdGhlIGZpZWxkIElECiAgICAgICAgbXkgJER5bmFtaWNGaWVsZElEID0gJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9LT57JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfS0+e0lEfTsKCiAgICAgICAgIyBkZWxldGUgYWxsIGZpZWxkIHZhbHVlcwogICAgICAgIG15ICRWYWx1ZXNEZWxldGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyktPkFsbFZhbHVlc0RlbGV0ZSgKICAgICAgICAgICAgRmllbGRJRCA9PiAkRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MpIHsKCiAgICAgICAgICAgICMgZGVsZXRlIGZpZWxkCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGREZWxldGUoCiAgICAgICAgICAgICAgICBJRCAgICAgID0+ICREeW5hbWljRmllbGRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFJlb3JkZXIgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRlbGV0ZSBkeW5hbWljIGZpZWxkICckTWFzdGVyU2xhdmVEeW5hbWljRmllbGQnISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRlbGV0ZSB2YWx1ZXMgZm9yIGR5bmFtaWMgZmllbGQgJyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAjIGRpc2FibGUgU3lzQ29uZmlnIHNldHRpbmdzCiAgICByZXR1cm4gaWYgISRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ09UUlNNYXN0ZXJTbGF2ZSAtICMgZGlzYWJsZSBTeXNDb25maWcgc2V0dGluZ3MuJywKICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdEeW5hbWljRmllbGRzOjpEcml2ZXIjIyNNYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWUgID0+ICdNYXN0ZXIgLyBTbGF2ZScsCiAgICAgICAgICAgICAgICAgICAgTW9kdWxlICAgICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6Ok1hc3RlclNsYXZlJywKICAgICAgICAgICAgICAgICAgICBDb25maWdEaWFsb2cgPT4gJ0FkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUnLAogICAgICAgICAgICAgICAgICAgIERpc2FibGVkQWRkICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIElzVmFsaWQgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1ByZUFwcGxpY2F0aW9uTW9kdWxlIyMjQWdlbnRQcmVNYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAnS2VybmVsOjpNb2R1bGVzOjpBZ2VudFByZU1hc3RlclNsYXZlJywKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBkaXNjYXJkIGNvbmZpZyBvYmplY3QgYW5kIGR5bmFtaWMgZmllbGQgYmFja2VuZCB0byBwcmV2ZW50IGVycm9yIG1lc3NhZ2VzIGR1ZSBtaXNzaW5nIGRyaXZlcgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgICAgIE9iamVjdHMgPT4gWyAnS2VybmVsOjpDb25maWcnLCAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcgXSwKICAgICk7CgogICAgIyBkaXNhYmxlIGR5bmFtaWMgZmllbGQgZm9yIHRpY2tldCB6b29tCiAgICAjIGdldCBvbGQgY29uZmlndXJhdGlvbgogICAgbXkgJFdpbmRvd0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tJyk7CiAgICBteSAlRHluYW1pY0ZpZWxkcyA9ICV7ICRXaW5kb3dDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9IH07CgogICAgaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGRzeyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgJER5bmFtaWNGaWVsZHN7JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSA9IDA7CiAgICB9CgogICAgcmV0dXJuIGlmICEkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdPVFJTTWFzdGVyU2xhdmUgLSBkZXBsb3kgZHluYW1pYyBmaWVsZHMuJywKICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gXCVEeW5hbWljRmllbGRzLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9TZXREYXNoYm9hcmRDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG5hbWVzIGZyb20gU3lzQ29uZmlnCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKSB8fCAnTWFzdGVyU2xhdmUnOwoKICAgICMgaWYgTWFzdGVyU2xhdmUgZHluYW1pYyBmaWVsZCBpcyAnTWFzdGVyU2xhdmUnIHRoZSBjb25maWcgaXMgYWxyZWFkeSBzZXQsIG5vdGhpbmcgZWxzZSB0byBkbwogICAgcmV0dXJuIDEgaWYgKCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgZXEgJ01hc3RlclNsYXZlJyApOwoKICAgICMgb3RoZXJ3aXNlIHNldCB0aGUgbmV3IGNvbmZpZwogICAgIyBhdHRyaWJ1dGVzIGNvbW1vbiBmb3IgYm90aCBNYXN0ZXIgYW5kIFNsYXZlIHdpZGdldHMKICAgIG15ICVDb21tb25Db25maWcgPSAoCiAgICAgICAgTW9kdWxlICAgICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZFRpY2tldEdlbmVyaWMnLAogICAgICAgIEZpbHRlciAgICAgICAgPT4gJ0FsbCcsCiAgICAgICAgVGltZSAgICAgICAgICA9PiAnQWdlJywKICAgICAgICBMaW1pdCAgICAgICAgID0+IDEwLAogICAgICAgIFBlcm1pc3Npb24gICAgPT4gJ3J3JywKICAgICAgICBCbG9jayAgICAgICAgID0+ICdDb250ZW50TGFyZ2UnLAogICAgICAgIEdyb3VwICAgICAgICAgPT4gJycsCiAgICAgICAgRGVmYXVsdCAgICAgICA9PiAxLAogICAgICAgIENhY2hlVFRMTG9jYWwgPT4gMC41LAogICAgKTsKCiAgICAjIGF0dHJpYnV0ZXMgZm9yIE1hc3RlciB3aWRnZXQKICAgIG15ICVNYXN0ZXJDb25maWcgPSAoCiAgICAgICAgVGl0bGUgICAgICAgPT4gJ01hc3RlciBUaWNrZXRzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQWxsIG1hc3RlciB0aWNrZXRzJywKICAgICAgICBBdHRyaWJ1dGVzICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgLiAnX0VxdWFscz1NYXN0ZXI7JywKICAgICk7CgogICAgIyBhdHRyaWJ1dGVzIGZvciBTbGF2ZSB3aWRnZXQKICAgIG15ICVTbGF2ZUNvbmZpZyA9ICgKICAgICAgICBUaXRsZSAgICAgICA9PiAnU2xhdmUgVGlja2V0cycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FsbCBzbGF2ZSB0aWNrZXRzJywKICAgICAgICBBdHRyaWJ1dGVzICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgLiAnX0xpa2U9U2xhdmUqOycsCiAgICApOwoKICAgICMgZ2V0IFN5c0NvbmZpZyBvYmplY3QKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgIyB3cml0ZSBjb25maWd1cmF0aW9ucwogICAgcmV0dXJuIGlmICEkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdPVFJTTWFzdGVyU2xhdmUgLSBkZXBsb3kgZHluYW1pYyBmaWVsZHMgZm9yIGRhc2hib2FyZC4nLAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQjIyMwOTAwLVRpY2tldE1hc3RlcicsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUNvbW1vbkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAlTWFzdGVyQ29uZmlnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIElzVmFsaWQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQjIyMwOTEwLVRpY2tldFNsYXZlJywKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IHsKICAgICAgICAgICAgICAgICAgICAlQ29tbW9uQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICVTbGF2ZUNvbmZpZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBJc1ZhbGlkID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfTWlncmF0ZUNvbmZpZ3MgewoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBtaWdyYXRlIG1hc3RlciBzbGF2ZSB0aWNrZXQgbWVudSBTeXNDb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3IgbWFzdGVyIHNsYXZlIFN5c0NvbmZpZwogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKCiAgICBpZiAoICRTZXR0aW5nLT57JzQ4MC1NYXN0ZXJTbGF2ZSd9LT57TW9kdWxlfSApIHsKCiAgICAgICAgIyB1cGRhdGUgbW9kdWxlIGxvY2F0aW9uCiAgICAgICAgJFNldHRpbmctPnsnNDgwLU1hc3RlclNsYXZlJ30tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51OjpHZW5lcmljIjsKCiAgICAgICAgIyBzZXQgbmV3IHNldHRpbmcKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgQ29tbWVudHMgPT4gJ09UUlNNYXN0ZXJTbGF2ZSAtIGRlcGxveSBtZW51IG1vZHVsZSBzZXR0aW5ncy4nLAogICAgICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM0ODAtTWFzdGVyU2xhdmUnLAogICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLT57JzQ4MC1NYXN0ZXJTbGF2ZSd9LAogICAgICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBtaWdyYXRlIG1hc3RlciBzbGF2ZSBkYXNoYm9hcmQgU3lzQ29uZmlnCiAgICAjIGdldCBzZXR0aW5nIGNvbnRlbnQgZm9yIG1hc3RlciBzbGF2ZSBTeXNDb25maWcKICAgICRTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdEYXNoYm9hcmRCYWNrZW5kJyk7CgogICAgQkFDS0VORDoKICAgIGZvciBteSAkQmFja2VuZCAocXcoMDkwMC1UaWNrZXRNYXN0ZXIgMDkxMC1UaWNrZXRTbGF2ZSkpIHsKICAgICAgICBuZXh0IEJBQ0tFTkQgaWYgISRTZXR0aW5nLT57JEJhY2tlbmR9LT57TW9kdWxlfTsKCiAgICAgICAgIyB1cGRhdGUgbW9kdWxlIGxvY2F0aW9uCiAgICAgICAgJFNldHRpbmctPnskQmFja2VuZH0tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OlRpY2tldEdlbmVyaWMiOwoKICAgICAgICAjIHNldCBuZXcgc2V0dGluZwogICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICBDb21tZW50cyA9PiAnT1RSU01hc3RlclNsYXZlIC0gZGVwbG95IGRhc2hib2FyZCBiYWNrZW5kIHNldHRpbmdzLicsCiAgICAgICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAiRGFzaGJvYXJkQmFja2VuZCMjIyRCYWNrZW5kIiwKICAgICAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkU2V0dGluZy0+eyRCYWNrZW5kfSwKICAgICAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTcxMTE1MDMwMDQ4KzAxJzAwJykKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPi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YmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE3LTExLTE1VDAzOjAwOjQ4KzAxOjAwPC9kYzpkYXRlPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8iIHJkZjphYm91dD0iIj4KPHBkZjpQcm9kdWNlcj5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC9wZGY6UHJvZHVjZXI+CjxwZGY6UERGVmVyc2lvbj4xLjQ8L3BkZjpQREZWZXJzaW9uPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHJkZjphYm91dD0iIj4KPHhtcDpDcmVhdG9yVG9vbD5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMTctMTEtMTVUMDM6MDA6NDgrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDE3LTExLTE1VDAzOjAwOjQ4KzAxOjAwPC94bXA6Q3JlYXRlRGF0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8Hk3oqIi7P2XmmB4POeb74HN+HF67D5TWyYpWDU+QnN73lfpZbjXbuX7b0G58rEAnDDmBnm/NF+CPy26CAVze3f1bTvE//0N+nC5LAplbmRzdHJlYW0KZW5kb2JqCjUxIDAgb2JqCjE3NTgKZW5kb2JqCjUyIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDUwIDAgUgo+PgplbmRvYmoKNTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NzkuNjI5IDExNy4xOSA2ODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMS4zMiA2NzkuNjI5IDU0MC4wIDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NjcuNjI5IDE1My44NTggNjc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NiAwIFIKL0ggL0kKCj4+CmVuZG9iago1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY2Ny42MjkgNTM5Ljk5OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY1NS42MjkgMTc2LjI2NiA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjU1LjYyOSA1MzkuOTk4IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA0MTEuMzQ2IG51bGxdCj4+CmVuZG9iago2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NDMuNjI5IDE5OC45OTYgNjUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY0My42MjkgNTM5Ljk5OCA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMTA5Ljg5MiBudWxsXQo+PgplbmRvYmoKNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjMxLjYyOSAyNTEuNDQ2IDY0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA2MzEuNjI5IDUzOS45OTcgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDY1Ny4yIG51bGxdCj4+CmVuZG9iago2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MTkuNjI5IDIwOS4wNzUgNjI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYxOS42MjkgNTM5Ljk5OCA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNjA1LjIgbnVsbF0KPj4KZW5kb2JqCjcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYwNy42MjkgMzEzLjQ1IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4OCA2MDcuNjI5IDU0MC4zNDggNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU5NS42MjkgMjA0Ljk3NiA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTk1LjYyOSA1MzkuOTk4IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzQgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTgzLjYyOSAxNzMuNDA4IDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1ODMuNjI5IDUzOS45OTggNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzEuNjI5IDE2NC45MTMgNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODA3IDU3MS42MjkgNTQwLjE2NyA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM0IDAgUiAvWFlaIDcyLjAgNTU4LjAgbnVsbF0KPj4KZW5kb2JqCjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU1OS42MjkgMjA5LjU1MiA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTU5LjYyOSA1MzkuOTk4IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzQgMCBSIC9YWVogNzIuMCA0ODkuNiBudWxsXQo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQ3LjYyOSAyMjEuNzk0IDU1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NDcuNjI5IDUzOS45OTggNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDUzNS42MjkgMTQ5LjM5IDU0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1MzUuNjI5IDUzOS45OTggNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDY3OC44IG51bGxdCj4+CmVuZG9iago5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjMuNjI5IDE5OS4wMDYgNTMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUyMy42MjkgNTM5Ljk5OCA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNjAyLjQgbnVsbF0KPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUxMS42MjkgMTk0LjY0MSA1MjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTExLjYyOSA1MzkuOTk4IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0OTkuNjI5IDE2MS43ODQgNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0OTkuNjI5IDUzOS45OTggNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA2NjcuOTE1IG51bGxdCj4+CmVuZG9iagoxMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDg3LjYyOSAzNzUuNjU3IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQ4Ny42MjkgNTM5Ljk5NyA0OTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA2MDYuNDE0IG51bGxdCj4+CmVuZG9iagoxMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDc1LjYyOSAzMzQuMjY0IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDQ3NS42MjkgNTQwLjY5NyA0ODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA0OTYuOTEzIG51bGxdCj4+CmVuZG9iagoxMDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDYzLjYyOSAzMjguMzY3IDQ3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDQ2My42MjkgNTQwLjY5NyA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCAzODcuNDEyIG51bGxdCj4+CmVuZG9iagoxMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDUxLjYyOSAzMTYuOTg5IDQ2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQ1MS42MjkgNTM5Ljk5OCA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCAzMjUuOTExIG51bGxdCj4+CmVuZG9iagoxMTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDM5LjYyOSAzOTMuMDE4IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQzOS42MjkgNTM5Ljk5NyA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCAyNjQuNDEgbnVsbF0KPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MjcuNjI5IDM1My43MDUgNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggNDI3LjYyOSA1NDAuMzQ4IDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDIwMi45MDkgbnVsbF0KPj4KZW5kb2JqCjEyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MTUuNjI5IDUwNS43NCA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDAzLjYyOSAxNDguNjQgNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42NCA0MDMuNjI5IDU0MC4wIDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDEyNy4wMDggbnVsbF0KPj4KZW5kb2JqCjEyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTEuNjI5IDUwNy4zNjcgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4wNDYgMzkxLjYyOSA1NDAuNDA2IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iagoxMjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzc5LjYyOSA1MDAuODY3IDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjI0IDM3OS42MjkgNTM5Ljk4NCAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA2MzAuNDA2IG51bGxdCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzY3LjYyOSA0NjcuODkzIDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg3IDM2Ny42MjkgNTQwLjM0NyAzNzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA1NTIuODEyIG51bGxdCj4+CmVuZG9iagoxMzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzU1LjYyOSAyODUuMDA2IDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM1NS42MjkgNTM5Ljk5OCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA0ODkuNjE4IG51bGxdCj4+CmVuZG9iagoxMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzQzLjYyOSAyNjIuNTA1IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM0My42MjkgNTM5Ljk5OCAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA0MjYuNDI0IG51bGxdCj4+CmVuZG9iagoxMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzMxLjYyOSAzMDIuMjg4IDM0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDMzMS42MjkgNTM5Ljk5NyAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAzNTEuMjMgbnVsbF0KPj4KZW5kb2JqCjE0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMTkuNjI5IDI2OC4wNDMgMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzE5LjYyOSA1MzkuOTk4IDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDI2NC4wMzYgbnVsbF0KPj4KZW5kb2JqCjE0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMDcuNjI5IDMzMC4xNTggMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDcgMzA3LjYyOSA1NDAuMjA3IDMxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDE4OC44NDIgbnVsbF0KPj4KZW5kb2JqCjE0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyOTUuNjI5IDMzNy4zOTkgMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggMjk1LjYyOSA1NDAuMjA4IDMwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDExMy42NDggbnVsbF0KPj4KZW5kb2JqCjE1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyODMuNjI5IDI4NS42MTQgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjgzLjYyOSA1MzkuOTk3IDI5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDY5Ni4wIG51bGxdCj4+CmVuZG9iagoxNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjcxLjYyOSAyOTIuODU1IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDI3MS42MjkgNTM5Ljk5NyAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA2MjAuNTI4IG51bGxdCj4+CmVuZG9iagoxNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjU5LjYyOSAzNjYuODgyIDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDI1OS42MjkgNTM5Ljk5NyAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA1NTcuMDU2IG51bGxdCj4+CmVuZG9iagoxNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjQ3LjYyOSAzNjcuNjE5IDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDI0Ny42MjkgNTM5Ljk5NyAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA0ODEuNTg0IG51bGxdCj4+CmVuZG9iagoxNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjM1LjYyOSAzMzUuOTc2IDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg3IDIzNS42MjkgNTQwLjM0NyAyNDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA0MTguMTEyIG51bGxdCj4+CmVuZG9iagoxNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjIzLjYyOSA0NTEuNTA5IDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDIyMy42MjkgNTQwLjY5NyAyMzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCAzMjguMjQgbnVsbF0KPj4KZW5kb2JqCjE2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyMTEuNjI5IDQyMC4zMjMgMjIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgMjExLjYyOSA1NDAuNjk3IDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDI2NC43NjggbnVsbF0KPj4KZW5kb2JqCjE3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxOTkuNjI5IDM4NC4wNjYgMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzggMTk5LjYyOSA1NDAuNjk4IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDE4OS4yOTYgbnVsbF0KPj4KZW5kb2JqCjE3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxODcuNjI5IDQ0NC41MjcgMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgMTg3LjYyOSA1NDAuNjk3IDE5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDExMy44MjQgbnVsbF0KPj4KZW5kb2JqCjE3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNzUuNjI5IDQxOC42MSAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxNzUuNjI5IDU0MC42OTcgMTg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNjk2LjAgbnVsbF0KPj4KZW5kb2JqCjE4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNjMuNjI5IDQyMi40NDUgMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC41MDcgMTYzLjYyOSA1NDAuODY3IDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDYwOS42NDEgbnVsbF0KPj4KZW5kb2JqCjE4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNTEuNjI5IDQzMi4xMTYgMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgMTUxLjYyOSA1NDAuNjk3IDE2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDUzNS4yODIgbnVsbF0KPj4KZW5kb2JqCjE4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMzkuNjI5IDM4My45MjcgMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgMTM5LjYyOSA1NDAuNjk3IDE0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDQ3Mi45MjMgbnVsbF0KPj4KZW5kb2JqCjE5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMjcuNjI5IDQzNS44ODEgMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgMTI3LjYyOSA1NDAuNjk3IDEzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDM5OC41NjQgbnVsbF0KPj4KZW5kb2JqCjE5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMTUuNjI5IDM5MS45NTUgMTI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgMTE1LjYyOSA1NDAuNjk3IDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDMyNC4yMDUgbnVsbF0KPj4KZW5kb2JqCjE5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMDMuNjI5IDQ0NC44MTYgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgMTAzLjYyOSA1NDAuNjk3IDExMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDI2MS44NDYgbnVsbF0KPj4KZW5kb2JqCjE5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA5MS42MjkgNDE0LjIwOCAxMDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5r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dHJlYW0KZW5kb2JqCjIwNSAwIG9iagoyMzc3NQplbmRvYmoKMjA2IDAgb2JqClsKNTQgMCBSCjU1IDAgUgo1NyAwIFIKNTggMCBSCjYwIDAgUgo2MSAwIFIKNjMgMCBSCjY0IDAgUgo2NiAwIFIKNjcgMCBSCjY5IDAgUgo3MCAwIFIKNzIgMCBSCjczIDAgUgo3NSAwIFIKNzYgMCBSCjc4IDAgUgo3OSAwIFIKODEgMCBSCjgyIDAgUgo4NCAwIFIKODUgMCBSCjg3IDAgUgo4OCAwIFIKOTAgMCBSCjkxIDAgUgo5MyAwIFIKOTQgMCBSCjk2IDAgUgo5NyAwIFIKOTkgMCBSCjEwMCAwIFIKMTAyIDAgUgoxMDMgMCBSCjEwNSAwIFIKMTA2IDAgUgoxMDggMCBSCjEwOSAwIFIKMTExIDAgUgoxMTIgMCBSCjExNCAwIFIKMTE1IDAgUgoxMTcgMCBSCjExOCAwIFIKMTIwIDAgUgoxMjEgMCBSCjEyMiAwIFIKMTI0IDAgUgoxMjUgMCBSCjEyNyAwIFIKMTI4IDAgUgoxMzAgMCBSCjEzMSAwIFIKMTMzIDAgUgoxMzQgMCBSCjEzNiAwIFIKMTM3IDAgUgoxMzkgMCBSCjE0MCAwIFIKMTQyIDAgUgoxNDMgMCBSCjE0NSAwIFIKMTQ2IDAgUgoxNDggMCBSCjE0OSAwIFIKMTUxIDAgUgoxNTIgMCBSCjE1NCAwIFIKMTU1IDAgUgoxNTcgMCBSCjE1OCAwIFIKMTYwIDAgUgoxNjEgMCBSCjE2MyAwIFIKMTY0IDAgUgoxNjYgMCBSCjE2NyAwIFIKMTY5IDAgUgoxNzAgMCBSCjE3MiAwIFIKMTczIDAgUgoxNzUgMCBSCjE3NiAwIFIKMTc4IDAgUgoxNzkgMCBSCjE4MSAwIFIKMTgyIDAgUgoxODQgMCBSCjE4NSAwIFIKMTg3IDAgUgoxODggMCBSCjE5MCAwIFIKMTkxIDAgUgoxOTMgMCBSCjE5NCAwIFIKMTk2IDAgUgoxOTcgMCBSCjE5OSAwIFIKMjAwIDAgUgoyMDIgMCBSCjIwMyAwIFIKXQplbmRvYmoKMjA3IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYx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ZW5kb2JqCjIzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDcwOS4wMDUgNTQwLjY5NyA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEwIDAgUiAvWFlaIDcyLjAgNjk2LjAgbnVsbF0KPj4KZW5kb2JqCjIzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2OTcuMDA1IDQyNy4zNjUgNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNjk3LjAwNSA1NDAuNjk3IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTAgMCBSIC9YWVogNzIuMCA2MDcuNTAxIG51bGxdCj4+CmVuZG9iagoyNDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjg1LjAwNSA0MTkuOTg0IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDY4NS4wMDUgNTQwLjY5NyA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEwIDAgUiAvWFlaIDcyLjAgNTMxLjAwMiBudWxsXQo+PgplbmRvYmoKMjQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY3My4wMDUgMzk3LjEzNSA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA2NzMuMDA1IDU0MC42OTcgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxMCAwIFIgL1hZWiA3Mi4wIDQ1NC41MDMgbnVsbF0KPj4KZW5kb2JqCjI0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NjEuMDA1IDM4Ni43MDYgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNjYxLjAwNSA1NDAuNjk3IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTAgMCBSIC9YWVogNzIuMCAzNzguMDA0IG51bGxdCj4+CmVuZG9iagoyNTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjQ5LjAwNSA0MjMuMDcyIDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDY0OS4wMDUgNTQwLjY5NyA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEwIDAgUiAvWFlaIDcyLjAgMzAxLjUwNSBudWxsXQo+PgplbmRvYmoKMjU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYzNy4wMDUgNDA5LjU2NSA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzOCA2MzcuMDA1IDU0MC42OTggNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxMCAwIFIgL1hZWiA3Mi4wIDIyNS4wMDYgbnVsbF0KPj4KZW5kb2JqCjI1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MjUuMDA1IDM5Ny41NTMgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNjI1LjAwNSA1NDAuNjk3IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTAgMCBSIC9YWVogNzIuMCAxNDguNTA3IG51bGxdCj4+CmVuZG9iagoyNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjEzLjAwNSA0MTMuMDIzIDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNjg3IDYxMy4wMDUgNTQxLjA0NyA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEzIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjI2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MDEuMDA1IDM4MS42NjEgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45NzggNjAxLjAwNSA1NDAuNjk4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTMgMCBSIC9YWVogNzIuMCA2NDkuNiBudWxsXQo+PgplbmRvYmoKMjY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU4OS4wMDUgMzgxLjUgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNTg5LjAwNSA1NDAuMzQ4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTMgMCBSIC9YWVogNzIuMCA1ODUuMiBudWxsXQo+PgplbmRvYmoKMjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3Ny4wMDUgMzg3LjE1OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA1NzcuMDA1IDU0MC4zNDggNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxNiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1NjUuMDA1IDEyNS4yNzYgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTY1LjAwNSA1MzkuOTk4IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTYgMCBSIC9YWVogNzIuMCA2MDYuNzI5IG51bGxdCj4+CmVuZG9iagoyNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTUzLjAwNSAyMzQuMDUxIDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI3IDU1My4wMDUgNTQwLjM0NyA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE2IDAgUiAvWFlaIDcyLjAgNDQ2LjE3NiBudWxsXQo+PgplbmRvYmoKMjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU0MS4wMDUgMjI4LjAzOCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA1NDEuMDA1IDU0MC4zNDggNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxNiAwIFIgL1hZWiA3Mi4wIDI5MS40NzcgbnVsbF0KPj4KZW5kb2JqCjI4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjkuMDA1IDMzOS42MTEgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNTI5LjAwNSA1NDAuMzQ4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTkgMCBSIC9YWVogNzIuMCA2NDMuMDgzIG51bGxdCj4+CmVuZG9iagoyODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTE3LjAwNSAyODQuMDMxIDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUxNy4wMDUgNTM5Ljk5OCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjI4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDUwNS4wMDUgMjYxLjcwMyA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1MDUuMDA1IDUzOS45OTggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0OTMuMDA1IDEzMC4xMjkgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDkzLjAwNSA1MzkuOTk4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDgxLjAwNSAxMTkuMDYgNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDgxLjAwNSA1MzkuOTk4IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKMjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ2OS4wMDUgMTcxLjkyIDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ2OS4wMDUgNTM5Ljk5OCA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNjI0LjQgbnVsbF0KPj4KZW5kb2JqCjI5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NTcuMDA1IDE2Ny44MzMgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDU3LjAwNSA1MzkuOTk4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMzAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDQ1LjAwNSAxNTQuNjY1IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ0NS4wMDUgNTM5Ljk5OCA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9B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ZW5kb2JqCjMxOSAwIG9iago8PCAvTGVuZ3RoIDMyMSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicm277///739//6P///4dhFFAdNAAAW7oKWQplbmRzdHJlYW0KZW5kb2JqCjMyMSAwIG9iagoyNwplbmRvYmoKMzIyIDAgb2JqCjw8CiAgL1R5cGUgL0ZvbnQKICAvU3VidHlwZSAvVHlwZTAKICAvQmFzZUZvbnQgL0VBQUFBQitEZWphVnVTYW5zCiAgL0VuY29kaW5nIC9JZGVudGl0eS1ICiAgL1RvVW5pY29kZSAzMjMgMCBSCiAgL0Rlc2NlbmRhbnRGb250cyBbMzI0IDAgUl0KPj4KZW5kb2JqCjMyNCAwIG9iago8PCAvVHlwZSAvRm9udAovQmFzZUZvbnQgL0VBQUFBQitEZWphVnVTYW5zIAovQ0lEVG9HSURNYXAgL0lkZW50aXR5IAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+Ci9Gb250RGVzY3JpcHRvciAzMTcgMCBSCi9EVyAwCi9XIFsgMCBbNjAwIDMxNyAzNjAgNjAzIDQxMSA2MTUgMzUyIDYxMiA1NDkgMzE3IDg2MiA2MzYgNTc1IDM5MiA2MzMgNTU3IDI3NyA1MjAgNjg2IDYxMSA2MzQgNjM2IDY4NCA1OTEgNjMzIDYzNCAyNzcgNTc5IDYzNiA2OTQgNjM0IDk3NCAyNzQgNTkxIDYzNCA4MTcgNjM0IDc4NyA2MzYgNjEwIDYzMyAyOTQgNjk4IDY1NSAzMzYgODM3IDYzNiA3NzAgNjM0IDYzNiA2MzYgNjM2IDYzNiA2MzYgNzQ4IDYzMSA3MzEgNzUxIDI3NyAzMTcgNjEwIDUzMCA1ODkgMzkwIDM5MCA1OTEgNTAwIDQ1OSA1MjQgOTg4IDMzNiA4MzcgNjg0IDc3NCAzMzYgNjg1IDgzNyA4MzcgNjM2IDUwMCA2ODUgXSBdCj4+CmVuZG9iagozMjMgMCBvYmoKPDwgL0xlbmd0aCAzMjUgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4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ago8PCAvVHlwZSAvUGFnZXMKL0NvdW50IDIxCi9LaWRzIFsxMyAwIFIgMjA3IDAgUiAzMDcgMCBSIDI1IDAgUiAyOCAwIFIgMzEgMCBSIDM0IDAgUiA0MCAwIFIgNDMgMCBSIDQ2IDAgUiA0OSAwIFIgNTIgMCBSIDIxMCAwIFIgMjEzIDAgUiAyMTYgMCBSIDIxOSAwIFIgMjIyIDAgUiAyMjUgMCBSIDIyOCAwIFIgMjMxIDAgUiAyMzQgMCBSIF0gPj4KZW5kb2JqCjMzNSAwIG9iago8PAogIC9UeXBlIC9DYXRhbG9nCiAgL1BhZ2VzIDE1IDAgUgogIC9MYW5nIChlbikKICAvTWV0YWRhdGEgNSAwIFIKICAvUGFnZUxhYmVscyAzMzYgMCBSCj4+CmVuZG9iagoxNCAwIG9iago8PAogIC9Gb250IDw8CiAgL0YxNiAzMTMgMCBSCiAgL0YxNSAzMjIgMCBSCiAgL0YxOSAzMzEgMCBSCj4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8CiAgL0ltMSA3IDAgUgogIC9JbTIgOSAwIFIKICAvSW0zIDE2IDAgUgogIC9JbTQgMTggMCBSCj4+CiAgL0NvbG9yU3BhY2UgPDwgL0RlZmF1bHRSR0IgNCAwIFIgPj4KPj4KZW5kb2JqCjMzNiAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+PiAxIDw8IC9TIC9yIC9TdCAyID4+IDIgPDwgL1MgL3IgL1N0IDMgPj4gMyA8PCAvUyAvciAvU3QgNCA+PiA0IDw8IC9TIC9EID4+IDEyIDw8IC9TIC9EIC9TdCA5ID4+XSA+PgplbmRvYmoKeHJlZgowIDMzNwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDE0NSAwMDAwMCBuIAowMDAwMDAyNjgzIDAwMDAwIG4gCjAwMDAwMDI3MDMgMDAwMDAgbiAKMDAwMDAwMjczNiAwMDAwMCBuIAowMDAwMDAzNjgzIDAwMDAwIG4gCjAwMDAwMDM3MDIgMDAwMDAgbiAKMDAwMDA1MjIyNyAwMDAwMCBuIAowMDAwMDUyMjQ4IDAwMDAwIG4gCjAwMDAxMDU1MDggMDAwMDAgbiAKMDAwMDEwNTUzMCAwMDAwMCBuIAowMDAwMTA2MDU4IDAwMDAwIG4gCjAwMDAxMDYwNzggMDAwMDAgbiAKMDAwMDI2MDQxNCAwMDAwMCBuIAowMDAwMjYwMDkzIDAwMDAwIG4gCjAwMDAxMDYyNzIgMDAwMDAgbiAKMDAwMDExMjQ0MyAwMDAwMCBuIAowMDAwMTEyNDY0IDAwMDAwIG4gCjAwMDAxMTk2NDQgMDAwMDAgbiAKMDAwMDExOTY2NSAwMDAwMCBuIAowMDAwMTE5NzUwIDAwMDAwIG4gCjAwMDAxMTk4ODggMDAwMDAgbiAKMDAwMDEyMDc2NyAwMDAwMCBuIAowMDAwMTIwNzg3IDAwMDAwIG4gCjAwMDAxMjA4MTQgMDAwMDAgbiAKMDAwMDEyMTAyNSAwMDAwMCBuIAowMDAwMTIyNjc0IDAwMDAwIG4gCjAwMDAxMjI2OTUgMDAwMDAgbiAKMDAwMDEyMjg4OSAwMDAwMCBuIAowMDAwMTI0MDk2IDAwMDAwIG4gCjAwMDAxMjQxMTcgMDAwMDAgbiAKMDAwMDEyNDMxMSAwMDAwMCBuIAowMDAwMTI1MTU1IDAwMDAwIG4gCjAwMDAxMjUxNzUgMDAwMDAgbiAKMDAwMDEyNTM2OSAwMDAwMCBuIAowMDAwMTI1NDY0IDAwMDAwIG4gCjAwMDAxMjU2MDAgMDAwMDAgbiAKMDAwMDEyNjg3OCAwMDAwMCBuIAowMDAwMTI2ODk5IDAwMDAwIG4gCjAwMDAxMjY5MjYgMDAwMDAgbiAKMDAwMDEyNzEzNyAwMDAwMCBuIAowMDAwMTI5MTE5IDAwMDAwIG4gCjAwMDAxMjkxNDAgMDAwMDAgbiAKMDAwMDEyOTMzNCAwMDAwMCBuIAowMDAwMTMxMDIyIDAwMDAwIG4gCjAwMDAxMzEwNDMgMDAwMDAgbiAKMDAwMDEzMTIzNyAwMDAwMCBuIAowMDAwMTMzMDQ1IDAwMDAwIG4gCjAwMDAxMzMwNjYgMDAwMDAgbiAKMDAwMDEzMzI2MCAwMDAwMCBuIAowMDAwMTM1MDk0IDAwMDAwIG4gCjAwMDAxMzUxMTUgMDAwMDAgbiAKMDAwMDEzNTMwOSAwMDAwMCBuIAowMDAwMTM1Mzg3IDAwMDAwIG4gCjAwMDAxMzU1MjMgMDAwMDAgbiAKMDAwMDEzNTY2MCAwMDAwMCBuIAowMDAwMTM1NzM4IDAwMDAwIG4gCjAwMDAxMzU4NzUgMDAwMDAgbiAKMDAwMDEzNjAxNSAwMDAwMCBuIAowMDAwMTM2MDkzIDAwMDAwIG4gCjAwMDAxMzYyMzEgMDAwMDAgbiAKMDAwMDEzNjM3MSAwMDAwMCBuIAowMDAwMTM2NDUxIDAwMDAwIG4gCjAwMDAxMzY1ODkgMDAwMDAgbiAKMDAwMDEzNjcyOSAwMDAwMCBuIAowMDAwMTM2ODA5IDAwMDAwIG4gCjAwMDAxMzY5NDcgMDAwMDAgbiAKMDAwMDEzNzA4NyAwMDAwMCBuIAowMDAwMTM3MTY1IDAwMDAwIG4gCjAwMDAxMzczMDMgMDAwMDAgbiAKMDAwMDEzNzQ0MyAwMDAwMCBuIAowMDAwMTM3NTIxIDAwMDAwIG4gCjAwMDAxMzc2NTggMDAwMDAgbiAKMDAwMDEzNzc5OCAwMDAwMCBuIAowMDAwMTM3ODc2IDAwMDAwIG4gCjAwMDAxMzgwMTMgMDAwMDAgbiAKMDAwMDEzODE1MyAwMDAwMCBuIAowMDAwMTM4MjMxIDAwMDAwIG4gCjAwMDAxMzgzNjkgMDAwMDAgbiAKMDAwMDEzODUwOSAwMDAwMCBuIAowMDAwMTM4NTg3IDAwMDAwIG4gCjAwMDAxMzg3MjUgMDAwMDAgbiAKMDAwMDEzODg2NSAwMDAwMCBuIAowMDAwMTM4OTQzIDAwMDAwIG4gCjAwMDAxMzkwODEgMDAwMDAgbiAKMDAwMDEzOTIyMSAwMDAwMCBuIAowMDAwMTM5Mjk5IDAwMDAwIG4gCjAwMDAxMzk0MzcgMDAwMDAgbiAKMDAwMDEzOTU3NyAwMDAwMCBuIAowMDAwMTM5NjU1IDAwMDAwIG4gCjAwMDAxMzk3OTEgMDAwMDAgbiAKMDAwMDEzOTkzMSAwMDAwMCBuIAowMDAwMTQwMDA5IDAwMDAwIG4gCjAwMDAxNDAxNDcgMDAwMDAgbiAKMDAwMDE0MDI4NyAwMDAwMCBuIAowMDAwMTQwMzY1IDAwMDAwIG4gCjAwMDAxNDA1MDMgMDAwMDAgbiAKMDAwMDE0MDY0MyAwMDAwMCBuIAowMDAwMTQwNzIxIDAwMDAwIG4gCjAwMDAxNDA4NTggMDAwMDAgbiAKMDAwMDE0MDk5OSAwMDAwMCBuIAowMDAwMTQxMDgwIDAwMDAwIG4gCjAwMDAxNDEyMjAgMDAwMDAgbiAKMDAwMDE0MTM2MiAwMDAwMCBuIAowMDAwMTQxNDQzIDAwMDAwIG4gCjAwMDAxNDE1ODMgMDAwMDAgbiAKMDAwMDE0MTcyNSAwMDAwMCBuIAowMDAwMTQxODA2IDAwMDAwIG4gCjAwMDAxNDE5NDYgMDAwMDAgbiAKMDAwMDE0MjA4OCAwMDAwMCBuIAowMDAwMTQyMTY5IDAwMDAwIG4gCjAwMDAxNDIzMDkgMDAwMDAgbiAKMDAwMDE0MjQ1MSAwMDAwMCBuIAowMDAwMTQyNTMyIDAwMDAwIG4gCjAwMDAxNDI2NzIgMDAwMDAgbiAKMDAwMDE0MjgxNCAwMDAwMCBuIAowMDAwMTQyODk0IDAwMDAwIG4gCjAwMDAxNDMwMzQgMDAwMDAgbiAKMDAwMDE0MzE3NiAwMDAwMCBuIAowMDAwMTQzMjU3IDAwMDAwIG4gCjAwMDAxNDMzOTYgMDAwMDAgbiAKMDAwMDE0MzUzNSAwMDAwMCBuIAowMDAwMTQzNjc0IDAwMDAwIG4gCjAwMDAxNDM3NTUgMDAwMDAgbiAKMDAwMDE0Mzg5NSAwMDAwMCBuIAowMDAwMTQ0MDM3IDAwMDAwIG4gCjAwMDAxNDQxMTYgMDAwMDAgbiAKMDAwMDE0NDI1NiAwMDAwMCBuIAowMDAwMTQ0Mzk4IDAwMDAwIG4gCjAwMDAxNDQ0NzkgMDAwMDAgbiAKMDAwMDE0NDYxOSAwMDAwMCBuIAowMDAwMTQ0NzYxIDAwMDAwIG4gCjAwMDAxNDQ4NDIgMDAwMDAgbiAKMDAwMDE0NDk4MiAwMDAwMCBuIAowMDAwMTQ1MTI0IDAwMDAwIG4gCjAwMDAxNDUyMDUgMDAwMDAgbiAKMDAwMDE0NTM0NSAwMDAwMCBuIAowMDAwMTQ1NDg3IDAwMDAwIG4gCjAwMDAxNDU1NjggMDAwMDAgbiAKMDAwMDE0NTcwOCAwMDAwMCBuIAowMDAwMTQ1ODUwIDAwMDAwIG4gCjAwMDAxNDU5MzAgMDAwMDAgbiAKMDAwMDE0NjA3MCAwMDAwMCBuIAowMDAwMTQ2MjEyIDAwMDAwIG4gCjAwMDAxNDYyOTMgMDAwMDAgbiAKMDAwMDE0NjQzMyAwMDAwMCBuIAowMDAwMTQ2NTc1IDAwMDAwIG4gCjAwMDAxNDY2NTYgMDAwMDAgbiAKMDAwMDE0Njc5NiAwMDAwMCBuIAowMDAwMTQ2OTM4IDAwMDAwIG4gCjAwMDAxNDcwMTkgMDAwMDAgbiAKMDAwMDE0NzE1OSAwMDAwMCBuIAowMDAwMTQ3MzAxIDAwMDAwIG4gCjAwMDAxNDczODAgMDAwMDAgbiAKMDAwMDE0NzUyMCAwMDAwMCBuIAowMDAwMTQ3NjYyIDAwMDAwIG4gCjAwMDAxNDc3NDMgMDAwMDAgbiAKMDAwMDE0Nzg4MyAwMDAwMCBuIAowMDAwMTQ4MDI1IDAwMDAwIG4gCjAwMDAxNDgxMDYgMDAwMDAgbiAKMDAwMDE0ODI0NiAwMDAwMCBuIAowMDAwMTQ4Mzg4IDAwMDAwIG4gCjAwMDAxNDg0NjkgMDAwMDAgbiAKMDAwMDE0ODYwOSAwMDAwMCBuIAowMDAwMTQ4NzUxIDAwMDAwIG4gCjAwMDAxNDg4MzIgMDAwMDAgbiAKMDAwMDE0ODk3MiAwMDAwMCBuIAowMDAwMTQ5MTE0IDAwMDAwIG4gCjAwMDAxNDkxOTQgMDAwMDAgbiAKMDAwMDE0OTMzNCAwMDAwMCBuIAowMDAwMTQ5NDc2IDAwMDAwIG4gCjAwMDAxNDk1NTcgMDAwMDAgbiAKMDAwMDE0OTY5NyAwMDAwMCBuIAowMDAwMTQ5ODM5IDAwMDAwIG4gCjAwMDAxNDk5MjAgMDAwMDAgbiAKMDAwMDE1MDA2MCAwMDAwMCBuIAowMDAwMTUwMjAyIDAwMDAwIG4gCjAwMDAxNTAyODMgMDAwMDAgbiAKMDAwMDE1MDQyMiAwMDAwMCBuIAowMDAwMTUwNTY0IDAwMDAwIG4gCjAwMDAxNTA2NDMgMDAwMDAgbiAKMDAwMDE1MDc4MyAwMDAwMCBuIAowMDAwMTUwOTI1IDAwMDAwIG4gCjAwMDAxNTEwMDYgMDAwMDAgbiAKMDAwMDE1MTE0NiAwMDAwMCBuIAowMDAwMTUxMjg4IDAwMDAwIG4gCjAwMDAxNTEzNjkgMDAwMDAgbiAKMDAwMDE1MTUwOSAwMDAwMCBuIAowMDAwMTUxNjUxIDAwMDAwIG4gCjAwMDAxNTE3MzIgMDAwMDAgbiAKMDAwMDE1MTg3MiAwMDAwMCBuIAowMDAwMTUyMDE0IDAwMDAwIG4gCjAwMDAxNTIwOTUgMDAwMDAgbiAKMDAwMDE1MjIzNSAwMDAwMCBuIAowMDAwMTUyMzc3IDAwMDAwIG4gCjAwMDAxNTI0NTggMDAwMDAgbiAKMDAwMDE1MjU5OCAwMDAwMCBuIAowMDAwMTUyNzQwIDAwMDAwIG4gCjAwMDAxNTI4MjEgMDAwMDAgbiAKMDAwMDE1Mjk2MCAwMDAwMCBuIAowMDAwMTUzMTAxIDAwMDAwIG4gCjAwMDAxNTMxODIgMDAwMDAgbiAKMDAwMDE1MzMyMCAwMDAwMCBuIAowMDAwMTUzNDYwIDAwMDAwIG4gCjAwMDAxNzczMTMgMDAwMDAgbiAKMDAwMDE3NzMzNiAwMDAwMCBuIAowMDAwMTc4MTM0IDAwMDAwIG4gCjAwMDAxNzgzNDggMDAwMDAgbiAKMDAwMDE4MDE5MCAwMDAwMCBuIAowMDAwMTgwMjEyIDAwMDAwIG4gCjAwMDAxODA0MDggMDAwMDAgbiAKMDAwMDE4MTM2OCAwMDAwMCBuIAowMDAwMTgxMzg5IDAwMDAwIG4gCjAwMDAxODE1ODUgMDAwMDAgbiAKMDAwMDE4MzY2OCAwMDAwMCBuIAowMDAwMTgzNjkwIDAwMDAwIG4gCjAwMDAxODM4ODYgMDAwMDAgbiAKMDAwMDE4NTg3NSAwMDAwMCBuIAowMDAwMTg1ODk3IDAwMDAwIG4gCjAwMDAxODYwOTMgMDAwMDAgbiAKMDAwMDE4NzEyNyAwMDAwMCBuIAowMDAwMTg3MTQ4IDAwMDAwIG4gCjAwMDAxODczNDQgMDAwMDAgbiAKMDAwMDE4ODcyNSAwMDAwMCBuIAowMDAwMTg4NzQ3IDAwMDAwIG4gCjAwMDAxODg5NDMgMDAwMDAgbiAKMDAwMDE4OTYzNSAwMDAwMCBuIAowMDAwMTg5NjU2IDAwMDAwIG4gCjAwMDAxODk4NTIgMDAwMDAgbiAKMDAwMDE5MTg4OSAwMDAwMCBuIAowMDAwMTkxOTExIDAwMDAwIG4gCjAwMDAxOTIxMDcgMDAwMDAgbiAKMDAwMDE5MzA2OSAwMDAwMCBuIAowMDAwMTkzMDkwIDAwMDAwIG4gCjAwMDAxOTMyODYgMDAwMDAgbiAKMDAwMDE5MzM2NyAwMDAwMCBuIAowMDAwMTkzNTA3IDAwMDAwIG4gCjAwMDAxOTM2NDkgMDAwMDAgbiAKMDAwMDE5MzcyOSAwMDAwMCBuIAowMDAwMTkzODY5IDAwMDAwIG4gCjAwMDAxOTQwMTEgMDAwMDAgbiAKMDAwMDE5NDA5MyAwMDAwMCBuIAowMDAwMTk0MjMzIDAwMDAwIG4gCjAwMDAxOTQzNzUgMDAwMDAgbiAKMDAwMDE5NDQ1NyAwMDAwMCBuIAowMDAwMTk0NTk3IDAwMDAwIG4gCjAwMDAxOTQ3MzkgMDAwMDAgbiAKMDAwMDE5NDgyMSAwMDAwMCBuIAowMDAwMTk0OTYxIDAwMDAwIG4gCjAwMDAxOTUxMDMgMDAwMDAgbiAKMDAwMDE5NTE4NSAwMDAwMCBuIAowMDAwMTk1MzI1IDAwMDAwIG4gCjAwMDAxOTU0NjcgMDAwMDAgbiAKMDAwMDE5NTU0OSAwMDAwMCBuIAowMDAwMTk1Njg5IDAwMDAwIG4gCjAwMDAxOTU4MzEgMDAwMDAgbiAKMDAwMDE5NTkxMyAwMDAwMCBuIAowMDAwMTk2MDUzIDAwMDAwIG4gCjAwMDAxOTYxOTUgMDAwMDAgbiAKMDAwMDE5NjI3NyAwMDAwMCBuIAowMDAwMTk2NDE3IDAwMDAwIG4gCjAwMDAxOTY1NTkgMDAwMDAgbiAKMDAwMDE5NjYzOSAwMDAwMCBuIAowMDAwMTk2Nzc5IDAwMDAwIG4gCjAwMDAxOTY5MjEgMDAwMDAgbiAKMDAwMDE5NzAwMSAwMDAwMCBuIAowMDAwMTk3MTM5IDAwMDAwIG4gCjAwMDAxOTcyODEgMDAwMDAgbiAKMDAwMDE5NzM2MSAwMDAwMCBuIAowMDAwMTk3NTAxIDAwMDAwIG4gCjAwMDAxOTc2NDMgMDAwMDAgbiAKMDAwMDE5NzcyMyAwMDAwMCBuIAowMDAwMTk3ODYyIDAwMDAwIG4gCjAwMDAxOTgwMDQgMDAwMDAgbiAKMDAwMDE5ODA4NiAwMDAwMCBuIAowMDAwMTk4MjI2IDAwMDAwIG4gCjAwMDAxOTgzNjggMDAwMDAgbiAKMDAwMDE5ODQ1MCAwMDAwMCBuIAowMDAwMTk4NTkwIDAwMDAwIG4gCjAwMDAxOTg3MzIgMDAwMDAgbiAKMDAwMDE5ODgxNCAwMDAwMCBuIAowMDAwMTk4OTU0IDAwMDAwIG4gCjAwMDAxOTkwOTYgMDAwMDAgbiAKMDAwMDE5OTE3OCAwMDAwMCBuIAowMDAwMTk5MzE4IDAwMDAwIG4gCjAwMDAxOTk0NjAgMDAwMDAgbiAKMDAwMDE5OTU0MCAwMDAwMCBuIAowMDAwMTk5Njc5IDAwMDAwIG4gCjAwMDAxOTk4MjEgMDAwMDAgbiAKMDAwMDE5OTkwMSAwMDAwMCBuIAowMDAwMjAwMDQwIDAwMDAwIG4gCjAwMDAyMDAxODIgMDAwMDAgbiAKMDAwMDIwMDI2MiAwMDAwMCBuIAowMDAwMjAwNDAwIDAwMDAwIG4gCjAwMDAyMDA1NDIgMDAwMDAgbiAKMDAwMDIwMDYyMiAwMDAwMCBuIAowMDAwMjAwNzYxIDAwMDAwIG4gCjAwMDAyMDA5MDMgMDAwMDAgbiAKMDAwMDIwMDk4MyAwMDAwMCBuIAowMDAwMjAxMTIzIDAwMDAwIG4gCjAwMDAyMDEyNjUgMDAwMDAgbiAKMDAwMDIwMTM0NSAwMDAwMCBuIAowMDAwMjAxNDg0IDAwMDAwIG4gCjAwMDAyMDE2MjYgMDAwMDAgbiAKMDAwMDIxMzE0MCAwMDAwMCBuIAowMDAwMjEzMTYzIDAwMDAwIG4gCjAwMDAyMTM1NTIgMDAwMDAgbiAKMDAwMDIxMzc2NiAwMDAwMCBuIAowMDAwMjE0MDMxIDAwMDAwIG4gCjAwMDAyMjgzNjYgMDAwMDAgbiAKMDAwMDIyODM0MyAwMDAwMCBuIAowMDAwMjI4NDY2IDAwMDAwIG4gCjAwMDAyMjg0ODYgMDAwMDAgbiAKMDAwMDIyOTEzNyAwMDAwMCBuIAowMDAwMjI4NjUxIDAwMDAwIG4gCjAwMDAyMjk3MTkgMDAwMDAgbiAKMDAwMDIyOTc0MCAwMDAwMCBuIAowMDAwMjMwMDAwIDAwMDAwIG4gCjAwMDAyNDY2MDcgMDAwMDAgbiAKMDAwMDI0NjU4NCAwMDAwMCBuIAowMDAwMjQ2NzEyIDAwMDAwIG4gCjAwMDAyNDY3MzIgMDAwMDAgbiAKMDAwMDI0NzQzOSAwMDAwMCBuIAowMDAwMjQ2ODkyIDAwMDAwIG4gCjAwMDAyNDgwOTIgMDAwMDAgbiAKMDAwMDI0ODExMyAwMDAwMCBuIAowMDAwMjQ4Mzc1IDAwMDAwIG4gCjAwMDAyNTg4ODAgMDAwMDAgbiAKMDAwMDI1ODg1NyAwMDAwMCBuIAowMDAwMjU4OTc5IDAwMDAwIG4gCjAwMDAyNTg5OTkgMDAwMDAgbiAKMDAwMDI1OTU3MCAwMDAwMCBuIAowMDAwMjU5MTYzIDAwMDAwIG4gCjAwMDAyNjAwNzIgMDAwMDAgbiAKMDAwMDI2MDMwNSAwMDAwMCBuIAowMDAwMjYwNjQ0IDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAzMzUgMCBSCiAgL0luZm8gMSAwIFIKICAvSUQgWzw1NjAxQkREODVEMjA2MTVGODA1NDMxQTIyRjg2QjdCOD4gPDU2MDFCREQ4NUQyMDYxNUY4MDU0MzFBMjJGODZCN0I4Pl0KICAvU2l6ZSAzMzcKPj4Kc3RhcnR4cmVmCjI2MDc4NAolJUVPRgo=