OTRSMasterSlave
5.0.20
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
- Code cleanup.
- Updated framework files to OTRS 5.0.33.
- Fixed: CheckMXRecord fails with MasterSlave Module for slave ticket (bug#14146).
- Updated framework files to OTRS 5.0.31.
- Updated framework files to OTRS 5.0.30.
- Updated license information.
- Updated framework files to OTRS 5.0.29.
- Fixed: Master / Slave dynamic field add screen is not modern (bug#13740).
- Code cleanup.
- Updated framework files to OTRS 5.0.28.
- Updated framework files to OTRS 5.0.27.
- Fixed bug#10415 - RichTextWidth and RichTextHeight settings missing.
- Fixed bug#13257 - Legacy default subject in AgentTicketMasterSlave screen.
Build for OTRS 5 patch level 26.
Build for OTRS 5 patch level 24.
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 5.0.23.
-Updated framework files to OTRS 5.0.21.
-Follow-up for Hardcoded TicketHook and TicketHookDivider (bug#12634).
Build for OTRSMasterSlave 5 patch level 9.
Build for OTRS 5 patch level 18.
Build for OTRSMasterSlave 5 patch level 7.
Build for OTRS 5 patch level 16.
Build for OTRS 5 patch level 15.
Build for OTRS 5 patch level 14.
Build for OTRSMasterSlave 5 patch level 3.
Build for OTRSMasterSlave 5 patch level 2
Build for OTRSMasterSlave 5.
Build for OTRSMasterSlave 5 beta1.
Includes "Ticket Master/Slave" feature.
Enthält "Ticket Master/Slave" Funktionalität.
A „mester/alárendelt jegy” funkciót tartalmazza.
5.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();
2018-12-11 01:50:26
opms.otrs.com
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkNoYW5nZXMiPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPk1hc3RlclNsYXZlPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTWFzdGVyU2xhdmU6OkFkdmFuY2VkRW5hYmxlZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9Ik1hc3RlclNsYXZlOjpVbnNldE1hc3RlclNsYXZlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9Ik1hc3RlclNsYXZlOjpVcGRhdGVNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTWFzdGVyU2xhdmU6OkZvbGxvd1VwZGF0ZWRNYXN0ZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Ok1hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJNYXN0ZXJTbGF2ZTo6Rm9yd2FyZFNsYXZlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlICdmb3J3YXJkJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlICdmb3J3YXJkJyB0byB0aGUgc2xhdmUgdGlja2V0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Ok1hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9Ik1hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Ok1hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjI01hc3RlclNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Ok1hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6Ok1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KEFydGljbGVDcmVhdGV8QXJ0aWNsZVNlbmR8VGlja2V0U3RhdGVVcGRhdGV8VGlja2V0UHJpb3JpdHlVcGRhdGV8VGlja2V0UGVuZGluZ1RpbWVVcGRhdGV8VGlja2V0TG9ja1VwZGF0ZXxUaWNrZXRPd25lclVwZGF0ZXxUaWNrZXRSZXNwb25zaWJsZVVwZGF0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQcmVBcHBsaWNhdGlvbk1vZHVsZSMjI0FnZW50UHJlTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPktlcm5lbDo6TW9kdWxlczo6QWdlbnRQcmVNYXN0ZXJTbGF2ZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFRpY2tldE1hc3RlclNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpY2tldCBNYXN0ZXJTbGF2ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+TWFzdGVyU2xhdmU8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+VGlja2V0PC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5Db3JlLkFnZW50LlRpY2tldEFjdGlvbi5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM0ODAtTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50VGlja2V0TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFRpY2tldE1hc3RlclNsYXZlO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUG9wdXBUeXBlIj5UaWNrZXRBY3Rpb248L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+TWFzdGVyU2xhdmU8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjUmVxdWlyZWRMb2NrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc24ndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNUaWNrZXRUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1NlcnZpY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNPd25lciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNPd25lck1hbmRhdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIGlmIHRpY2tldCBvd25lciBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1Jlc3BvbnNpYmxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNTdGF0ZVR5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5vcGVuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Y2xvc2VkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+cGVuZGluZyByZW1pbmRlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnBlbmRpbmcgYXV0bzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjU3RhdGVEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxWYWxpZGF0ZU1vZHVsZT5LZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnOjpTdGF0ZVZhbGlkYXRlPC9WYWxpZGF0ZU1vZHVsZT4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5wZW5kaW5nIHJlbWluZGVyPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI05vdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI05vdGVNYW5kYXRvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyBpZiBub3RlIG11c3QgYmUgZmlsbGVkIGluIGJ5IHRoZSBhZ2VudC4gQ2FuIGJlIG92ZXJ3cml0dGVuIGJ5IFRpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjU3ViamVjdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0JvZHkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxUZXh0QXJlYT48L1RleHRBcmVhPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNSaWNoVGV4dFdpZHRoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHdpZHRoIGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5cZCslPyQiPjYyMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNSaWNoVGV4dEhlaWdodCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlxkKyU/JCI+MTAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0ludm9sdmVkQWdlbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0luZm9ybUFnZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0FydGljbGVUeXBlRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5ub3RlLWludGVybmFsPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0FydGljbGVUeXBlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBub3RlIHR5cGVzIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBzeXN0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtaW50ZXJuYWwiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtZXh0ZXJuYWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtcmVwb3J0Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1ByaW9yaXR5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1ByaW9yaXR5RGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxWYWxpZGF0ZU1vZHVsZT5LZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnOjpQcmlvcml0eVZhbGlkYXRlPC9WYWxpZGF0ZU1vZHVsZT4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4zIG5vcm1hbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNUaXRsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld01hc3RlclNsYXZlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNIaXN0b3J5VHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+QWRkTm90ZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNIaXN0b3J5Q29tbWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdNYXN0ZXJTbGF2ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+JSVNYXN0ZXJTbGF2ZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkRhc2hib2FyZEJhY2tlbmQjIyMwOTAwLVRpY2tldE1hc3RlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkRhc2hib2FyZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OlRpY2tldEdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPk1hc3RlciBUaWNrZXRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BbGwgbWFzdGVyIHRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dHJpYnV0ZXMiPkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZV9FcXVhbHM9TWFzdGVyO1N0YXRlVHlwZT1vcGVuO1N0YXRlVHlwZT1uZXc7PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGaWx0ZXIiPkFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGltZSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW1pdCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBlcm1pc3Npb24iPnJ3PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudExhcmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYWNoZVRUTExvY2FsIj4wLjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHRDb2x1bW5zIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2UiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyTmFtZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJJRCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFc2NhbGF0aW9uUmVzcG9uc2VUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVzY2FsYXRpb25Tb2x1dGlvblRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXNjYWxhdGlvblRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXNjYWxhdGlvblVwZGF0ZVRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0TnVtYmVyIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXIiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVuZGluZ1RpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVzcG9uc2libGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJEYXNoYm9hcmRCYWNrZW5kIyMjMDkxMC1UaWNrZXRTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RGFzaGJvYXJkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6VGlja2V0R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U2xhdmUgVGlja2V0czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+QWxsIHNsYXZlIHRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dHJpYnV0ZXMiPkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZV9MaWtlPVNsYXZlKjtTdGF0ZVR5cGU9b3BlbjtTdGF0ZVR5cGU9bmV3OzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRmlsdGVyIj5BbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWUiPkFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGltaXQiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5ydzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRMYXJnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVExMb2NhbCI+MC41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Q29sdW1ucyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lck5hbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VySUQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXNjYWxhdGlvblJlc3BvbnNlVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFc2NhbGF0aW9uU29sdXRpb25UaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVzY2FsYXRpb25UaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVzY2FsYXRpb25VcGRhdGVUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldE51bWJlciI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVyIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBlbmRpbmdUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJlc3BvbnNpYmxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUmVwbGFjZUN1c3RvbWVyUmVhbE5hbWVPblNsYXZlQXJ0aWNsZVR5cGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3TWFzdGVyU2xhdmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZW1haWwtZXh0ZXJuYWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImVtYWlsLWludGVybmFsIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJlbWFpbC1ub3RpZmljYXRpb24tZXh0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJlbWFpbC1ub3RpZmljYXRpb24taW50Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwaG9uZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZmF4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJzbXMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IndlYnJlcXVlc3QiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtaW50ZXJuYWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtZXh0ZXJuYWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtcmVwb3J0Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQUNMS2V5c0xldmVsMzo6QWN0aW9ucyMjIzg4OC1PVFJTTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciAnQWN0aW9uJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEFDTDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50VGlja2V0TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgoKICAgIDxDb25maWdJdGVtIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkRyaXZlciMjI01hc3RlclNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBiYWNrZW5kIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5NYXN0ZXJTbGF2ZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkR5bmFtaWNGaWVsZHM6OkRyaXZlcjo6UmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk1hc3RlciAvIFNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzYWJsZWRBZGQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk1hc3RlclNsYXZlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+YWRtaW48L0dyb3VwPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkFkbWluPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZSBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIERyb3AtZG93biBCYWNrZW5kIEdVSTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+Q29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+Q29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGQuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QnVsa01vZHVsZSMjIzAxMC1NYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+TWFzdGVyU2xhdmU8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldEJ1bGtNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6VGlja2V0QnVsazo6TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3Ryc19jb25maWc+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNzX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG92b2x1amUgcMWZaWTDoXbDoW7DrSBwb3puw6FtZWsgcMWZaSB6b2JyYXplbsOtIE5hZMWZw616ZW7DqWhvIC8gUG9kxZnDrXplbsOpaG8gdiBkZXRhaWx1IHRpa2V0dSAtIEFnZW50VGlja2V0Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ1ptxJtuYSBzdGF2dSBOYWTFmcOtemVuw70vUG9kxZnDrXplbsO9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ1VyxI11amUsIHpkYSBqZSB2ecW+YWRvdsOhbm8gdXphbWtudXTDrSB0aWtldHUgcMWZaSB6b2JyYXplbsOtIE5hZMWZw616ZW7DqWhvIC8gUG9kxZnDrXplbsOpaG8gdiBkZXRhaWx1IHRpa2V0dSB2IEFnZW50VGlja2V0Wm9vbS4gKE5lbsOtLWxpIHRpa2V0IHphdMOtbSB1emVtxI1lbiwgYnVkZSB1emFtxI1lbiBhIHN0w6F2YWrDrWPDrSBhZ2VudCBidWRlIGF1dG9tYXRpY2t5IHVyxI1lbiBqYWtvIHZsYXN0bsOtay4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgZGVmYXVsdG7DrSBuw6FzbGVkdWrDrSBzdGF2IHRpa2V0dSBwbyBwxZlpZMOhbsOtIHBvem7DoW1reSAtIHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IEFnZW50VGlja2V0Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGRlZmF1bHRuw60gcHJpb3JpdHUgdGlrZXR1IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBBZ2VudFRpY2tldFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgZGVmYXVsdG7DrSB0eXAgcG96bsOhbWt5IHYgcG9obGVkdSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IEFnZW50VGlja2V0Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUga29tZW50w6HFmSBoaXN0b3JpZSBwcm8gYWtjaSB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSwga29tZW50w6HFmSBqZSBwb3XFvml0IHYgaGlzdG9yaWkgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgdHlwIGhpc3RvcmllIHBybyBha2NpIHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9LCB0eXAgamUgcG91xb5pdCB2IGhpc3RvcmlpIHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGRhbMWhw60gc3RhdiB0aWtldHUgcG8gcMWZaWTDoW7DrSBwb3puw6Fta3kgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2t1ZCBqZSBwxZlpZMOhbmEgcG96bsOhbWthIGFnZW50ZW0sIHVyxI3DrSBzdGF2IHRpa2V0dSB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IC0gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG5hc3RhdmVuw60gbsOhc3TEm25reSB2IHDFmWVobGVkdSBuYWTFmcOtemVuw71jaCB0aWtldMWvIHYgcm96aHJhbsOtIGFnZW50YS4gIkxpbWl0IiBqZSBtbm/FvnN0dsOtIHN0YW5kYXJkbsSbIHZpZGl0ZWxuw71jaCB2c3R1cMWvLiAiR3JvdXAiIHNlIHBvdcW+w612w6EgayBvbWV6ZW7DrSBwxZnDrXN0dXB1IGsgcGx1Z2ludSAobmFwxZkuOiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgdXLEjXVqZSwgemRhIGplIHBsdWdpbiBwb3ZvbGVuIHN0YW5kYXJkbsSbIG5lYm8gemRhIGplaiBtdXPDrSB1xb5pdmF0ZWwgcG92b2xpdCBtYW51w6FsbsSbLiAiQ2FjaGVUVExMb2NhbCIgamUgY2FjaG92YWPDrSDEjWFzIHBsdWdpbnUgLSAgdiBtaW51dMOhY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG5hc3RhdmVuw60gbsOhc3TEm25reSBwcm8gcMWZZWhsZWQgcG9kxZnDrXplbsO9Y2ggdGlrZXTFryB2IHJvemhyYW7DrSBhZ2VudGEuICJMaW1pdCIgamUgbW5vxb5zdHbDrSBzdGFuZGFyZG7EmyB2aWRpdGVsbsO9Y2ggdnN0dXDFry4gIkdyb3VwIiBzZSBwb3XFvsOtdsOhIGsgb21lemVuw60gcMWZw61zdHVwdSBrIHBsdWdpbnUgKG5hcMWZLjogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIHVyxI11amUsIHpkYSBqZSBwbHVnaW4gcG92b2xlbiBzdGFuZGFyZG7EmyBuZWJvIHpkYSBqZWogbXVzw60gdcW+aXZhdGVsIHBvdm9saXQgbWFudcOhbG7Emy4gIkNhY2hlVFRMTG9jYWwiIGplIGNhY2hvdmFjw60gxI1hcyBwbHVnaW51IC0gdiBtaW51dMOhY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdSZWdpc3RyYWNlIG1vZHVsdSB1ZMOhbG9zdMOtIHRpa2V0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBrIHXFvsOtdsOhbsOtIHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGRlZmF1bHRuw60gdGV4dCB0xJtsYSBwb3puw6Fta3kgcMWZaWRhbsOpIHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGRlZmF1bHRuw60gc3ViamVrdCBwb3puw6FtZWsgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgem9kcG92xJtkbsOpaG8gYWdlbnRhIHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnVXLEjXVqZSBzZXJ2aXMgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4gKE11c8OtIGLDvXQgYWt0aXZvdsOhbiBUaWNrZXQ6OlNlcnZpY2UuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIHZsYXN0bsOta2EgdGlrZXR1IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ1VyxI11amUgdHlwIHRpa2V0dSB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLiAoTXVzw60gYsO9dCBha3Rpdm92w6FuIFRpY2tldDo6VHlwZS4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6dWplIGxpbmsgdiBtZW51LCAga3RlcsO9IHNsb3XFvsOtIGtlIHptxJtuxJsgc3RhdHVzdSB0aWtldHUgdiBuYWTFmcOtemVuw70gLyBwb2TFmcOtemVuw70sIHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6dWplIHNlem5hbSB2xaFlY2ggYWdlbnTFrywga3RlxZnDrSBzZSBwb2TDrWxlbGkgbmEgdGlrZXR1LCAgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXp1amUgc2V6bmFtIG1vxb5uw71jaCBhZ2VudMWvICh2xaFpY2huaSBhZ2VudGkgbW9ob3Vjw60gcMWZaWRhdCBwb3puw6Fta3UgayBmcm9udMSbL3Rpa2V0dSksIGFieSBieWxvIG1vxb5ubyB1csSNaXQsIGtkbyBidWRlIG8gcG96bsOhbWNlIGluZm9ybW92w6FuIC0gdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DqWhvL1BvZMWZw616ZW7DqWhvIHphem9vbW92YW7DqWhvIHRpa2V0dSB2IGFnZW50c2vDqW0gcHJvc3TFmWVkw60uICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ01hc3Rlci9TbGF2ZSBXZXJ0IGZlc3RsZWdlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICdOZXVlcyBNYXN0ZXIgVGlja2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdBdWZoZWJlbiBkZXMgTWFzdGVyIFRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnQXVmaGViZW4gZGVzIFNsYXZlIFRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnQXVmaGViZW4gZGVyIE1hc3RlciBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdBdWZoZWJlbiBkZXIgU2xhdmUgVGlja2V0cyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnQWxsZSBNYXN0ZXIgVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ0FsbGUgU2xhdmUgVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJsYXVidCBkYXMgaGluenVmw7xnZW4gdm9uIE5vdGl6ZW4gaW4gZGVyIE1hc3RlclNsYXZlIEFuc2ljaHQgZGVzIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnRGVuIE1hc3RlclNsYXZlIFN0YXR1cyBkZXMgVGlja2V0cyDDpG5kZXJuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10LCBvYiBkaWVzZXIgU2NyZWVuIGltIEFnZW50ZW4tSW50ZXJmYWNlIGRhcyBTcGVycmVuIGRlcyBUaWNrZXRzIHZvcmF1c3NldHp0LiBEYXMgVGlja2V0IHdpcmQgKGZhbGxzIG7DtnRpZykgZ2VzcGVycnQgdW5kIGRlciBha3R1ZWxsZSBBZ2VudCB3aXJkIGFscyBCZXNpdHplciBnZXNldHp0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gRm9sZ2VzdGF0dXMgZsO8ciBUaWNrZXRzLCBmw7xyIGRpZSBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZSBlaW5lIE5vdGl6IGhpbnp1Z2Vmw7xndCB3dXJkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkaWUgc3RhbmRhcmRtw6TDn2lnZSBUaWNrZXQgUHJpb3JpdMOkdCBmw7xyIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiBzdGFuZGFyZG3DpMOfaWdlbiBUeXAgZWluZXIgTm90aXogZsO8ciBUaWNrZXRzIGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIEhpc3RvcmllbiBLb21tZW50YXIgdm9uIFRpY2tldCBBa3Rpb25lbiBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtLCB3ZWxjaGVyIGbDvHIgZGllIFRpY2tldCBIaXN0b3JpZSBpbSBBZ2VudGVuIEludGVyZmFjZSB2ZXJ3ZW5kZXQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiBIaXN0b3JpZW4gVHlwIHZvbiBUaWNrZXQgQWt0aW9uZW4gaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSwgd2VsY2hlciBmw7xyIGRpZSBUaWNrZXQgSGlzdG9yaWUgaW0gQWdlbnRlbiBJbnRlcmZhY2UgdmVyd2VuZGV0IHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gRm9sZ2VzdGF0dXMgZsO8ciBUaWNrZXRzLCBmw7xyIGRpZSBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZSBlaW5lIE5vdGl6IGhpbnp1Z2Vmw7xndCB3dXJkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICdEZWFrdGl2aWVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVkJ30gPSAnQWt0aXZpZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VybcO2Z2xpY2h0IGRhcyDDhG5kZXJuIGRlcyBUSWNrZXQgU3RhdHVzLCBiZWltIEhpbnp1ZsO8Z2VuIGVpbmVyIE5vdGl6IGlubmVyaGFsYiBkZXMgTWFzdGVyU2xhdmUgQmlsZHNjaGlybXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWFzdGVyIC8gU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01hc3RlclNsYXZlIE1vZHVsIGbDvHIgZGllIEZ1bmt0aW9uIHZvbiBTYW1tZWxha3Rpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdFaW5zdGVsbHVuZyBkZXIgw5xiZXJzaWNodHNzZWl0ZW5wYXJhbWV0ZXIgZsO8ciBNYXN0ZXIgVGlja2V0cyBpbiBkZXIgQWdlbnRlbm9iZXJmbMOkY2hlLiAiTGltaXQiIGdpYnQgZGllIEFuemFobCBkZXIgc3RhbmRhcmRtw6TDn2lnIGRhcmdlc3RlbGx0ZW4gRWludHLDpGdlIGFuLiAiR3JvdXAiIHdpcmQgdmVyd2VuZGV0LCB1bSBkZW4gWnVncmlmZiBhdWYgZGFzIFBsdWdpbiB6dSBiZWdyZW56ZW4gKGJzcHcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBiZXN0aW1tdCwgb2IgZGFzIFBsdWdpbiBzdGFuZGFyZG3DpMOfaWcgYWt0aXZpZXJ0IGlzdCBvZGVyIG9iIGRlciBCZW51dHplciBlcyBzZWxic3QgYWt0aXZpZXJlbiBtdXNzLiAiQ2FjaGVUVExMb2NhbCIgaXN0IGRpZSBDYWNoaW5nLVplaXQgZGVzIFBsdWdpbnMsIGFuZ2VnZWJlbiBpbiBNaW51dGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ0VpbnN0ZWxsdW5nIGRlciDDnGJlcnNpY2h0c3NlaXRlbnBhcmFtZXRlciBmw7xyIFNsYXZlIFRpY2tldHMgaW4gZGVyIEFnZW50ZW5vYmVyZmzDpGNoZS4gIkxpbWl0IiBnaWJ0IGRpZSBBbnphaGwgZGVyIHN0YW5kYXJkbcOkw59pZyBkYXJnZXN0ZWxsdGVuIEVpbnRyw6RnZSBhbi4gIkdyb3VwIiB3aXJkIHZlcndlbmRldCwgdW0gZGVuIFp1Z3JpZmYgYXVmIGRhcyBQbHVnaW4genUgYmVncmVuemVuIChic3B3LiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgYmVzdGltbXQsIG9iIGRhcyBQbHVnaW4gc3RhbmRhcmRtw6TDn2lnIGFrdGl2aWVydCBpc3Qgb2RlciBvYiBkZXIgQmVudXR6ZXIgZXMgc2VsYnN0IGFrdGl2aWVyZW4gbXVzcy4gIkNhY2hlVFRMTG9jYWwiIGlzdCBkaWUgQ2FjaGluZy1aZWl0IGRlcyBQbHVnaW5zLCBhbmdlZ2ViZW4gaW4gTWludXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlZ2lzdHJpZXJ1bmcgZGVzIFRpY2tldCBFdmVudCBNb2R1bHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlbsO2dGlndGUgQmVyZWNodGlndW5nZW4gdW0gZGVuIE1hc3RlclNsYXZlIERpYWxvZyBpbSBab29tIFRpY2tldCBEaWFsb2cgZGVzIEFnZW50ZW5pbnRlcmZhY2UgYW56ZWlnZW4genUgbGFzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gc3RhbmRhcmRtw6TDn2lnZW4gQm9keSBUZXh0IGVpbmVyIE5vdGl6IGbDvHIgVGlja2V0cyBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiBzdGFuZGFyZG3DpMOfaWdlbiBCZXRyZWZmIGVpbmVyIE5vdGl6IGbDvHIgVGlja2V0cyBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiB2ZXJhbnR3b3J0bGljaGVuIEFnZW50ZW4gZWluZXMgVGlja2V0cyBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZSBmw7xyIGVpbiBhdWZnZXJ1ZmVuZXMgVGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiBTZXJ2aWNlIGVpbmVzIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZsO8ciBlaW4gYXVmZ2VydWZlbmVzIFRpY2tldCAoVGlja2V0OjpTZXJ2aWNlIG11c3MgYWt0aXZpZXJ0IHNlaW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gQmVzaXR6ZXIgZWluZXMgVGlja2V0cyBpbSBNYXN0ZXJTbGF2ZSBCaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZSBmw7xyIGVpbiBhdWZnZXJ1ZmVuZXMgVGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gVGlja2V0IFR5cCBlaW5lcyBUaWNrZXRzIGltIE1hc3RlclNsYXZlIEJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGbDvHIgZWluIGF1ZmdlcnVmZW5lcyBUaWNrZXQgKFRpY2tldDo6VHlwZSBtdXNzIGFrdGl2aWVydCBzZWluKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGltIE1lbsO8IHVtIGRlbiBNYXN0ZXJTbGF2ZSBTdGF0dXMgZWluZXMgVGlja2V0cyBpbSBUaWNrZXQgWm9vbSBJbnRlcmZhY2UgZGVzIEFnZW50ZW4gYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lIExpc3RlIGFsbGVyIGludm9sdmllcnRlbiBBZ2VudGVuIGbDvHIgZGFzIGdld8OkaGx0ZSBUaWNrZXQgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgTGlzdGUgYWxsZXIgbcO2Z2xpY2hlbiBBZ2VudGVuIChhbGxlIEFnZW50ZW4gbWl0IE5vdGl6IEJlcmVjaHRpZ3VuZyBhdWYgZGVyIFF1ZXVlL2RlbSBUaWNrZXQpIGbDvHIgZGFzIGdld8OkaGx0ZSBUaWNrZXQgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBQcmlvcml0w6R0IGVpbmVzIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZsO8ciBlaW4gYXVmZ2VydWZlbmVzIFRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBUaXRlbC1GZWxkZXIgaW4gZGVyIE1hc3RlclNsYXZlLU9iZXJmbMOkY2hlIGVpbmVzIGF1ZmdlcnVmZW5lbiBUaWNrZXRzIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgdmVyc2NoaWVkZW5lIEFydGlrZWx0eXBlbiBpbiBkZW5lbiBkZXIgcmVhbGUgTmFtZSBkZXMgTWFzdGVyLVRJY2tldHMgbWl0IGRlbmVuIGRlcyBTbGF2ZS1UaWNrZXRzIGVyc2V0enQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnRGllc2VzIE1vZHVsIGFrdGl2aWVydCBkYXMgTWFzdGVyL1NsYXZlIEZlbGQgaW4gZGVyIEFuemVpZ2UgZsO8ciBlaW4gbmV1ZXMgRW1haWwtIG9kZXIgVGVsZWZvbi1UaWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICcnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdHZXN0aW9uYXIgZWwgZXN0YWRvIE1hZXN0cm8vRXNjbGF2byBwYXJhICAlcyVzJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ0VzdGFibGVjZXIgdmFsb3IgTWFlc3Ryby9Fc2NsYXZvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ051ZXZvIHRpY2tldCBtYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdEZXNhY3RpdmFyIHRpY2tldCBtYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ0Rlc2FjdGl2YXIgdGlja2V0IGVzY2xhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJ0VzY2xhdm8gZGUgJXMlcyVzOiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnRGVzYWN0aXZhciB0aWNrZXRzIG1hZXN0cm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdEZXNhY3RpdmFyIHRpY2tldHMgZXNjbGF2b3MnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ1RpY2tldCBNYWVzdHJvJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnVG9kb3MgbG9zIFRpY2tldHMgbWFlc3Ryb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICdUb2RvcyBsb3MgVGlja2V0cyBlc2NsYXZvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWl0ZSBhw7FhZGlyIG5vdGFzIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnTW9kaWZpY2EgZWwgZXN0YWRvIE1hZXN0cm8tRXNjbGF2byBkZWwgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ0RlZmluZSBlbCBub21icmUgZGVsIGNhbXBvIGRpbsOhbWljbyBwYXJhIGxhIGZ1bmNpw7NuIGRlIHRpY2tldCBtYWVzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBibG9xdWVvIHJlcXVlcmlkbyBpbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZSAoc2kgZWwgdGlja2V0IG5vIGhhIHNpZG8gYmxvcXVlYWRvIGF1biwgZWwgdGlja2V0IHNlIGJsb3F1ZWEgeSBlbCBhZ2VudGUgYWN0dWFsIHNlIGNvbnZlcnRpcsOhIGF1dG9tw6F0aWNhbWVudGUgZW4gZWwgZHVlw7FvIGRlbCBtaXNtbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlbCB0aWNrZXQgZGVzcHXDqXMgZGUgYcOxYWRpciB1bmEgbm90YSwgZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxhIHByaW9yaWRhZCBwb3IgZGVmZWN0byBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHRpcG8gZGUgbm90YSBwb3IgZGVmZWN0byBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBjb21lbnRhcmlvIGRlbCBoaXN0b3JpYWwgcGFyYSBsYSBhY2Npw7NuIGRlIGxhIHBhbnRhbGxhIGRlbCB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvLCBxdWUgZXMgdXNhZG8gcGFyYSBlbCBoaXN0b3JpYWwgZGVsIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHRpcG8gZGUgaGlzdG9yaWFsIHBhcmEgbGEgYWNjacOzbiBkZSBsYSBwYW50YWxsYSBkZWwgdGlja2V0IE1hZXN0cm8tRXNjbGF2bywgcXVlIGVzIHVzYWRvIHBhcmEgZWwgaGlzdG9yaWFsIGRlbCB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlc3B1w6lzIGRlIGHDsWFkaXIgdW5hIG5vdGEsIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNhYmxlZCd9ID0gJ0Rlc2hhYmlsaXRhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJ0hhYmlsaXRhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICdBY3RpdmEgbGEgcGFydGUgTWFlc3Ryby1Fc2NsYXZvIGF2YW56YWRhIGRlIGxhIGZ1bmNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIHF1ZSBsb3MgdGlja2V0cyBlc2NsYXZvcyBzaWd1ZW4gZWwgdGlja2V0IG1hZXN0cm8gYSB1biBudWV2byBtYWVzdHJvIGVuIGVsIG1vZG8gTWFlc3Ryby1Fc2NsYXZvIGF2YW56YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gcXVlIGNhbWJpZSBlbCBlc3RhZG8gTWFlc3Ryby1Fc2NsYXZvIGRlIHVuIHRpY2tldCBlbiBlbCBtb2RvIE1hZXN0cm8tRXNjbGF2byBhdmFuemFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2kgdW5hIG5vdGEgZXMgYcOxYWRpZGEgcG9yIHVuIGFnZW50ZSwgZmlqYSBlbCBlc3RhZG8gZGVsIHRpY2tldCBlbiBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNYWVzdHJvIC8gRXNjbGF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ1RpY2tldHMgTWFlc3Ryb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNYWVzdHJvLUVzY2xhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ03Ds2R1bG8gRXNjbGF2byBNYWVzdHJvIHBhcmEgbWF5b3IgY2FyYWN0ZXLDrXN0aWNhcyBkZSBlbnRyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgZWwgZGFzaGJvYXJkIGJhY2tlbmQgZGUgbGEgdmlzdGEgZGUgbG9zIHRpY2tldHMgbWFlc3Ryb3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0ZSIgZXMgZWwgbnVtZXJvIGRlIGVudHJhZGFzIGEgbW9zdHJhciBwb3IgZGVmZWN0by4gIkdydXBvIiBlcyB1c2FkbyBwYXJhIHJlc3RyaW5naXIgZWwgYWNjZXNvIGEgZWwgcGx1Z2luIChFLkouIEdydXBvOiBhZG1pbjtncnVwbzE7Z3J1cG8yOykuICJEZWZlY3RvIiBkZXRlcm1pbmEgc2kgZWwgcGx1Z2luIGVzIGFjdGl2YWRvIHBvciBkZWZlY3RvIMOzIHNpIGVsIHVzdWFyaW8gbmVjZXNpdGEgYWN0aXZhcmxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgZXMgaG9yYSBjYWNoZSBlbiBtaW51dG9zIHBhcmEgZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgZGVsIGJhY2tlbmQgZGVsIHBhbmVsIHByaW5jaXBhbCBkZSBsYSB2aXN0YSBkZWwgdGlja2V0IGVzY2xhdm8gZGVsIGludGVyZmFjZSBkZWwgYWdlbnRlLiAiTGltaXRlIiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGEgbW9zdHJhZGFzIHBvciBkZWZlY3RvLiAiR3J1cG8iZXMgdXNhZG8gcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKEVqbS4gR3J1cG86IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmVjdG8iIGRldGVybWluYSBzaSBlbCBwbHVnaW4gZXMgaGFiaWxpdGFkbyBwb3IgZGVmZWN0byBvIHNpIGVsIHVzdWFyaW8gbmVjZXNpdGEgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZGUgY2FjaGUgZW4gbWludXRvcyBwYXJhIGVsIHBsdWdpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gZGUgZXZlbnRvIGRlIHRpY2tldHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVlcmlkb3MgcGFyYSB1c2FyIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBkZSB1biB0aWNrZXQsIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmlqYSBlbCB0ZXh0byBkZWwgY3VlcnBvIHBvciBkZWZlY3RvIGRlIGxhcyBub3RhcyBhw7FhZGlkYXMgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgYXN1bnRvIHBvciBkZWZlY3RvIGRlIGxhcyBub3RhcyBhw7FhZGlkYXMgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgYWdlbnRlIHJlc3BvbnNhYmxlIGRlIHVuIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgc2VydmljaW8gZGUgdW4gdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgKFRpY2tldDo6U2VydmljZSByZXF1aXJlIHNlciBhY3RpdmFkbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgZHVlw7FvIGRlIHVuIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdGaWphIGVsIHRpcG8gZGUgdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgKFRpY2tldDo6VHlwZSByZXF1aXJlIHNlciBhY3RpdmFkbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBjYW1iaWFyIGVsIGVzdGF0dXMgTWFlc3Ryby1Fc2NsYXZvIGRlIHVuIHRpY2tldCwgZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1bmEgbGlzdGEgZGUgdG9kb3MgbG9zIGFnZW50ZXMgaW52b2x1Y3JhZG9zIGNvbiBlc3RlIHRpY2tldCwgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1bmEgbGlzdGEgZGUgdG9kb3MgbG9zIHBvc2libGVzIGFnZW50ZXMgKHRvZG9zIGxvcyBhZ2VudGVzIGNvbiBwZXJtaXNvcyAibm90YSIgZW4gbGEgZmlsYS90aWNrZXQpIHBhcmEgZGV0ZXJtaW5hciBxdWnDqW4gZGViZXLDoSBzZXIgaW5mb3JtYWRvIGFjZXJjYSBkZSBlc3RhIG5vdGEsIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgbGFzIG9wY2lvbmVzIGRlIHByaW9yaWRhZCBkZSB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgbG9zIGNhbXBvcyB0w610dWxvIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdUaWNrZXRzIGVzY2xhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnRXNwZWNpZmljYXIgbG9zIGRpZmVyZW50ZXMgdGlwb3MgZGUgYXJ0w61jdWxvcyBkb25kZSBlbCB2ZXJkYWRlcm8gbm9tYnJlIGRlbCB0aWNrZXkgbWFlc3RybyBzZXLDoSByZWVtcGxhemFkbyBjb24gZWwgZGVsIHRpY2tldCBlc2NsYXZvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdFc3RlIG3Ds2R1bG8gYWN0aXZhIGVsIGNhbXBvIE1hZXN0cm8tRXNjbGF2byBlbiBsYSBwYW50YWxsYSBkZSB1biBudWV2byB0aWNrZXQgZGUgZW1haWwgbyBkZSB0ZWzDqWZvbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdUaWNrZXQgTWFlc3Ryby1Fc2NsYXZvLic7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ0VzdGFibGVjZXIgdmFsb3IgTWFlc3Ryby9Fc2NsYXZvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ051ZXZvIFRpY2tldCBNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdRdWl0YXIgVGlja2V0IE1hZXN0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnUXVpdGFyIFRpY2tldCBFc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYcOxYWRpciBub3RhcyBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ01vZGlmaWNhIGVsIGVzdGFkbyBNYWVzdHJvLUVzY2xhdm8gZGVsIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYmxvcXVlbyByZXF1ZXJpZG8gaW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgKHNpIGVsIHRpY2tldCBubyBoYSBzaWRvIGJsb3F1ZWFkbyBhdW4sIGVsIHRpY2tldCBzZSBibG9xdWVhIHkgZWwgYWdlbnRlIGFjdHVhbCBzZSBjb252ZXJ0aXLDoSBhdXRvbcOhdGljYW1lbnRlIGVuIGVsIGR1ZcOxbyBkZWwgbWlzbW8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc2lndWllbnRlIGVzdGFkbyBkZWwgdGlja2V0IGRlc3B1w6lzIGRlIGHDsWFkaXIgdW5hIG5vdGEsIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBwcmlvcmlkYWQgcG9yIGRlZmVjdG8gZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCB0aXBvIGRlIG5vdGEgcG9yIGRlZmVjdG8gZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgY29tZW50YXJpbyBkZWwgaGlzdG9yaWFsIHBhcmEgbGEgYWNjacOzbiBkZSBsYSBwYW50YWxsYSBkZWwgdGlja2V0IE1hZXN0cm8tRXNjbGF2bywgcXVlIGVzIHVzYWRvIHBhcmEgZWwgaGlzdG9yaWFsIGRlbCB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCB0aXBvIGRlIGhpc3RvcmlhbCBwYXJhIGxhIGFjY2nDs24gZGUgbGEgcGFudGFsbGEgZGVsIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8sIHF1ZSBlcyB1c2FkbyBwYXJhIGVsIGhpc3RvcmlhbCBkZWwgdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc2lndWllbnRlIGVzdGFkbyBkZXNwdcOpcyBkZSBhw7FhZGlyIHVuYSBub3RhLCBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaSB1bmEgbm90YSBlcyBhw7FhZGlkYSBwb3IgdW4gYWdlbnRlLCBmaWphIGVsIGVzdGFkbyBkZWwgdGlja2V0IGVuIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hZXN0cm8gLyBFc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNw7NkdWxvIE1hc3RlclNsYXZlIHBhcmEgbGEgb3BjacOzbiBkZSBUaWNrZXRzIHBvciBMb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYmFja2VuZCBkZWwgcGFuZWwgcHJpbmNpcGFsIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHRpY2tldHMgbWFlc3Ryb3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0IiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdyb3VwIiBzZSB1c2EgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyB0aWVuZSBxdWUgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZW4gbWludXRvcyBwYXJhIGxhIGNhY2jDqSBkZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYmFja2VuZCBkZWwgcGFuZWwgcHJpbmNpcGFsIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHRpY2tldHMgZXNjbGF2b3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0IiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdyb3VwIiBzZSB1c2EgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyB0aWVuZSBxdWUgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZW4gbWludXRvcyBwYXJhIGxhIGNhY2jDqSBkZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1byBkZSBldmVudG8gcGFyYSB0aWNrZXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgdXNhciBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZGUgdW4gdGlja2V0LCBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgdGV4dG8gZGVsIGN1ZXJwbyBwb3IgZGVmZWN0byBkZSBsYXMgbm90YXMgYcOxYWRpZGFzIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGFzdW50byBwb3IgZGVmZWN0byBkZSBsYXMgbm90YXMgYcOxYWRpZGFzIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGFnZW50ZSByZXNwb25zYWJsZSBkZSB1biB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdGaWphIGVsIHNlcnZpY2lvIGRlIHVuIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIChUaWNrZXQ6OlNlcnZpY2UgcmVxdWlyZSBzZXIgYWN0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGR1ZcOxbyBkZSB1biB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnRmlqYSBlbCB0aXBvIGRlIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIChUaWNrZXQ6OlR5cGUgcmVxdWlyZSBzZXIgYWN0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgY2FtYmlhciBlbCBlc3RhdHVzIE1hZXN0cm8tRXNjbGF2byBkZSB1biB0aWNrZXQsIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW5hIGxpc3RhIGRlIHRvZG9zIGxvcyBhZ2VudGVzIGludm9sdWNyYWRvcyBjb24gZXN0ZSB0aWNrZXQsIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW5hIGxpc3RhIGRlIHRvZG9zIGxvcyBwb3NpYmxlcyBhZ2VudGVzICh0b2RvcyBsb3MgYWdlbnRlcyBjb24gcGVybWlzb3MgIm5vdGEiIGVuIGxhIGZpbGEvdGlja2V0KSBwYXJhIGRldGVybWluYXIgcXVpw6luIGRlYmVyw6Egc2VyIGluZm9ybWFkbyBhY2VyY2EgZGUgZXN0YSBub3RhLCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGxhcyBvcGNpb25lcyBkZSBwcmlvcmlkYWQgZGUgdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGxvcyBjYW1wb3MgdMOtdHVsbyBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ0VzcGVjaWZpcXVlIGxvcyBkaWZlcmVudGVzIHRpcG9zIGRlIGFydMOtY3Vsb3MgZW4gbG9zIGN1YWxlcyBzZSByZWVtcGxhemFyw6EgZWwgbm9tYnJlIHJlYWwgZGUgdGlja2V0IE1hZXN0cm8gY29uIGVsIG5vbWJyZSBkZWwgdGlja2V0IEVzY2xhdm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ0VzdGUgbcOzZHVsbyBhY3RpdmEgZWwgY2FtcG8gTWFlc3Ryby9Fc2NsYXZvIGVuIHVuYSBudWV2YSBwYW50YWxsYSBkZSB0aWNrZXQgcG9yIGVtYWlsIG8gcG9yIHRlbMOpZm9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICclcyVzJXMgbWVzdGVyL2Fsw6FyZW5kZWx0IMOhbGxhcG90w6FuYWsga2V6ZWzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCBNYXN0ZXIvU2xhdmUgVmFsdWUnfSA9ICdNZXN0ZXIvYWzDoXJlbmRlbHQgw6lydMOpayBiZcOhbGzDrXTDoXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ8OaaiBtZXN0ZXJqZWd5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdNZXN0ZXJqZWd5IHTDtnJsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdBbMOhcmVuZGVsdCBqZWd5IHTDtnJsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJXMlcyVzIGFsw6FyZW5kZWx0amU6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdNZXN0ZXJqZWd5ZWsgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdBbMOhcmVuZGVsdCBqZWd5ZWsgdMO2cmzDqXNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdNZXN0ZXJqZWd5JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnw5Zzc3plcyBtZXN0ZXJqZWd5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnw5Zzc3plcyBhbMOhcmVuZGVsdCBqZWd5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMZWhldMWRdsOpIHRlc3ppIGplZ3l6ZXRlayBob3p6w6FhZMOhc8OhdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnVsOhbHRvenRhc3NhIG1lZyBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IMOhbGxhcG90w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ01lZ2hhdMOhcm96emEgYSBkaW5hbWlrdXMgbWV6xZEgbmV2w6l0IGEgbWVzdGVyamVneSBmdW5rY2nDs27DoWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBzesO8a3PDqWdlcy1lIGplZ3l6w6Fyb2zDoXMgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiAoaGEgYSBqZWd5IG3DqWcgbmluY3MgesOhcm9sdmEsIGFra29yIGEgamVneSB6w6Fyb2x2YSBsZXN6LCDDqXMgYXogYWt0dcOhbGlzIMO8Z3lpbnTDqXrFkSBhdXRvbWF0aWt1c2FuIGFubmFrIHR1bGFqZG9ub3Nha8OpbnQgbGVzeiBiZcOhbGzDrXR2YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgZWd5IGplZ3kgYWxhcMOpcnRlbG1lemV0dCBrw7Z2ZXRrZXrFkSDDoWxsYXBvdMOhdCBlZ3kgamVneXpldCBob3p6w6FhZMOhc2EgdXTDoW4gZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgamVneXByaW9yaXTDoXN0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBqZWd5emV0IGFsYXDDqXJ0ZWxtZXpldHQgdMOtcHVzw6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBenQgYXogZWzFkXptw6lueSBtZWdqZWd5esOpc3QgaGF0w6Fyb3p6YSBtZWcgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRIG3FsXZlbGV0w6luw6lsLCBhbWVseWV0IGEgamVneSBlbMWRem3DqW55ZWluw6lsIHN6b2t0YWsgaGFzem7DoWxuaSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBenQgYXogZWzFkXptw6lueSB0w61wdXN0IGhhdMOhcm96emEgbWVnIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkSBtxbF2ZWxldMOpbsOpbCwgYW1lbHlldCBhIGplZ3kgZWzFkXptw6lueWVpbsOpbCBzem9rdGFrIGhhc3puw6FsbmkgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBlZ3kgamVneSBrw7Z2ZXRrZXrFkSDDoWxsYXBvdMOhdCBlZ3kgamVneXpldCBob3p6w6FhZMOhc2EgdXTDoW4gZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICdMZXRpbHR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVkJ30gPSAnRW5nZWTDqWx5ZXp2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ0VuZ2Vkw6lseWV6aSBhIGZ1bmtjacOzIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IHLDqXN6w6l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGF6dCBhIGZ1bmtjacOzdCwgaG9neSBheiBhbMOhcmVuZGVsdCBqZWd5ZWsgYSBtZXN0ZXJqZWd5ZXQga8O2dmVzc8OpayBlZ3kgw7pqIG1lc3RlcmhleiBhIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IG3Ds2RiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0VuZ2Vkw6lseWV6aSBhIGZ1bmtjacOzdCBlZ3kgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3TDoW5hayBtZWd2w6FsdG96dGF0w6Fzw6Fob3ogYSBzcGVjacOhbGlzIG1lc3Rlci1hbMOhcmVuZGVsdCBtw7NkYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYSBmdW5rY2nDs3QgYSBiZWplZ3l6w6lzZWsgdG92w6FiYsOtdMOhc8OhaG96IGVneSBtZXN0ZXJqZWd5IOKAnnRvdsOhYmLDrXTDoXPigJ0gdMOtcHVzw6Fiw7NsIGF6IGFsw6FyZW5kZWx0IGplZ3llayDDvGd5ZmVsZWloZXouIEFsYXDDqXJ0ZWxtZXpldHRlbiAobGV0aWx0dmEpIG5lbSBmb2cgYmVqZWd5esOpc2VrZXQgdG92w6FiYsOtdGFuaSBhIOKAnnRvdsOhYmLDrXTDoXPigJ0gdMOtcHVzYsOzbCBheiBhbMOhcmVuZGVsdCBqZWd5ZWtoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEgZnVua2Npw7N0IGEgc3rDvGzFkS1neWVybWVrIGthcGNzb2xhdCBtZWd0YXJ0w6Fzw6Fob3ogYSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3QgbWVndsOhbHRvenRhdMOhc2EgdXTDoW4gYSBzcGVjacOhbGlzIG1lc3Rlci1hbMOhcmVuZGVsdCBtw7NkYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEgZnVua2Npw7N0IGEgc3rDvGzFkS1neWVybWVrIGthcGNzb2xhdCBtZWd0YXJ0w6Fzw6Fob3ogYSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3QgdMO2cmzDqXNlIHV0w6FuIGEgc3BlY2nDoWxpcyBtZXN0ZXItYWzDoXJlbmRlbHQgbcOzZGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYSBmdW5rY2nDs3QgZWd5IGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IMOhbGxhcG90w6FuYWsgdMO2cmzDqXPDqWhleiBhIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IG3Ds2RiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hhIGVneSDDvGd5aW50w6l6xZEgaG96esOhYWRvdHQgZWd5IG1lZ2plZ3l6w6lzdCwgYWtrb3IgYmXDoWxsw610amEgYSBqZWd5IMOhbGxhcG90w6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWVzdGVyIC8gYWzDoXJlbmRlbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICdNZXN0ZXJqZWd5ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNZXN0ZXItYWzDoXJlbmRlbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01lc3Rlci1hbMOhcmVuZGVsdCBtb2R1bCBhIGplZ3kgdMO2bWVnZXMgZnVua2Npw7Nqw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IG1lc3RlcmplZ3llaSDDoXR0ZWtpbnTFkWrDqW5layB2ZXrDqXJsxZFwdWx0IGjDoXR0w6lycHJvZ3JhbWrDoWhvei4gQSDigJ5Lb3Jsw6F04oCdIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBiZWplZ3l6w6lzZWsgc3rDoW1hLiBBIOKAnkNzb3BvcnTigJ0gaGFzem7DoWxoYXTDsyBhIGhvenrDoWbDqXLDqXMga29ybMOhdG96w6Fzw6Fob3ogYSBixZF2w610bcOpbnlyZSAocMOpbGTDoXVsIENzb3BvcnQ6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEF6IOKAnkFsYXDDqXJ0ZWxtZXpldHTigJ0gamVsemksIGhhIGEgYsWRdsOtdG3DqW55IGFsYXDDqXJ0ZWxtZXpldHRlbiBlbmdlZMOpbHllenZlIHZhbiwgdmFneSBoYSBhIGZlbGhhc3puw6Fsw7NuYWsga8OpenplbCBrZWxsIGVuZ2Vkw6lseWV6bmllIGF6dC4gQSDigJ5DYWNoZVRUTExvY2Fs4oCdIGEgYsWRdsOtdG3DqW55IGd5b3Jzw610w7N0w6FyIGlkZWplIHBlcmNiZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYWzDoXJlbmRlbHQgamVneWVpIMOhdHRla2ludMWRasOpbmVrIHZlesOpcmzFkXB1bHQgaMOhdHTDqXJwcm9ncmFtasOhaG96LiBBIOKAnktvcmzDoXTigJ0gYXogYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610ZXR0IGJlamVneXrDqXNlayBzesOhbWEuIEEg4oCeQ3NvcG9ydOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgQ3NvcG9ydDogYWRtaW47Y3NvcG9ydDE7Y3NvcG9ydDI7KS4gQXog4oCeQWxhcMOpcnRlbG1lemV0dOKAnSBqZWx6aSwgaGEgYSBixZF2w610bcOpbnkgYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6dmUgdmFuLCB2YWd5IGhhIGEgZmVsaGFzem7DoWzDs25hayBrw6l6emVsIGtlbGwgZW5nZWTDqWx5ZXpuaWUgYXp0LiBBIOKAnkNhY2hlVFRMTG9jYWzigJ0gYSBixZF2w610bcOpbnkgZ3lvcnPDrXTDs3TDoXIgaWRlamUgcGVyY2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ0EgamVneSBlc2Vtw6lueSBtb2R1bCByZWdpc3p0csOhY2nDs2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgdMO2cnpzc3rDtnZlZ2V0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBob3p6w6FhZG90dCBqZWd5emV0ZWtuw6lsIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgdMOhcmd5YXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGhvenrDoWFkb3R0IGplZ3l6ZXRla27DqWwgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYSBqZWd5IGZlbGVsxZFzIMO8Z3lpbnTDqXrFkWrDqXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBhIHN6b2xnw6FsdGF0w6FzdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIChhIFRpY2tldDo6U2VydmljZSBsZWhldMWRc8OpZ25layBha3RpdsOhbHZhIGtlbGwgbGVubmllKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYSBqZWd5IHR1bGFqZG9ub3PDoXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYSBqZWd5IHTDrXB1c8OhdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIChhIFRpY2tldDo6VHlwZSBsZWhldMWRc8OpZ25layBha3RpdsOhbHZhIGtlbGwgbGVubmllKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCDDoWxsYXBvdMOhbmFrIG1lZ3bDoWx0b3p0YXTDoXPDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGplZ3luYWd5w610w6FzIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnamVsZW7DrXRpIGEgamVneWVuIHLDqXN6dCB2ZXbFkSDDtnNzemVzIMO8Z3lpbnTDqXrFkSBsaXN0w6Fqw6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBheiDDtnNzemVzIGxlaGV0c8OpZ2VzIMO8Z3lpbnTDqXrFkSAoYSB2w6Fyw7NsaXN0w6FuIHZhZ3kgamVneWVuIGplZ3l6ZXQgam9nb3N1bHRzw6FnZ2FsIHJlbmRlbGtlesWRIMO2c3N6ZXMgw7xneWludMOpesWRKSBsaXN0w6Fqw6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYW5uYWsgbWVnaGF0w6Fyb3rDoXPDoWhveiwgaG9neSBraXQga2VsbCB0w6Fqw6lrb3p0YXRuaSBlcnLFkWwgYSBqZWd5emV0csWRbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnamVsZW7DrXRpIGEgamVneSBwcmlvcml0w6FzaSBsZWhldMWRc8OpZ2VrZXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBhIGPDrW1tZXrFkWtldCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnQWzDoXJlbmRlbHQgamVneWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ01lZ2FkamEgYSBrw7xsw7ZuYsO2esWRIGJlamVneXrDqXN0w61wdXNva2F0LCBhaG9sIGEgbWVzdGVyamVneWJlbiBsw6l2xZEgdmFsw7NkaSBuw6l2IGtpIGxlc3ogY3NlcsOpbHZlIGF6IGFsw6FyZW5kZWx0IGplZ3liZW4gbMOpdsWRdmVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdFeiBhIG1vZHVsIGJla2FwY3NvbGphIGEgbWVzdGVyL2Fsw6FyZW5kZWx0IG1lesWRdCBheiDDumogZS1tYWlsIMOpcyB0ZWxlZm9ub3MgamVneSBrw6lwZXJuecWRa8O2bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJ0plZ3kgbWVzdGVyLWFsw6FyZW5kZWx0Lic7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ1NldCBOaWxhaSBNYXN0ZXIvU2xhdmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnVGlrZXQgbWFzdGVyIGJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ1RpZGFrIHBlcmx1IHNldCB0aWtldCBtYXN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnTGVwYXNrYW4gc2V0IHRpa2V0IHNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ01lbGVwYXMgdGlrZXQgbWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdNZWxlcGFza2FuIHRpa2V0IHNsYXZlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdTZW11YSB0aWtldCBtYXN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICdTZW11YSB0aWtldCBzbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIG1lbmFtYmFoa2FuIGNhdGF0YW4gZGFsYW0gbGF5YXIgdGlrZXQgbWFzdGVyIHNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnTWVuZ3ViYWgga2VhZGFhbiBNYXN0ZXIgc2xhdmUgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnTWVuZGVmaW5pc2lrYW4gbmFtYSBmaWVsZCB5YW5nIGRpbmFtaXMgdW50dWsgZml0dXIgdXRhbWEgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gamlrYSBrdW5jaSB0aWtldCBkaXBlcmx1a2FuIGRpIGxheWFyIE1hc3RlclNsYXZlIHRpa2V0IGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuIChqaWthIHRpa2V0IHRpZGFrIHRlcmt1bmNpIGxhZ2ksIHRpa2V0IGFrYW4gdGVya3VuY2kgZGFuIGFnZW4gc2FhdCBpbmkgYWthbiBkaWF0dXIgc2VjYXJhIG90b21hdGlzIHNlYmFnYWkgcGVtaWxpa255YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGRlZmF1bHQgc3RhdGUgYmVyaWt1dG55YSB0aWtldCBzZXRlbGFoIG1lbmFtYmFoa2FuIGNhdGF0YW4sIGRhbGFtIHRpa2V0IEd1cnUgbGF5YXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gcHJpb3JpdGFzIHRpa2V0IGRlZmF1bHQgZGkgbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBqZW5pcyBkZWZhdWx0IGNhdGF0YW4gZGFsYW0gbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29tZW50YXIgc2VqYXJhaCB1bnR1ayB0aW5kYWthbiB0aWtldCBtYXN0ZXJzbGF2ZSBwYWRhIGxheWFyLCB5YW5nIGFrYW4gZGlndW5ha2FuIHVudHVrIHNlamFyYWggdGlrZXQgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBqZW5pcyBzZWphcmFoIHVudHVrIHRpbmRha2FuIHRpa2V0IG1hc3RlciBzbGF2ZSBkaSBsYXlhciwgeWFuZyBha2FuIGRpZ3VuYWthbiB1bnR1ayBzZWphcmFoIHRpa2V0IGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gc3RhdGUgYmVyaWt1dG55YSB0aWtldCBzZXRlbGFoIG1lbmFtYmFoa2FuIGNhdGF0YW4sIGRhbGFtIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICdDYWNhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVkJ30gPSAnRGlha3RpZmthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ01lbXVuZ2tpbmthbiBNYXN0ZXIgc2xhdmUgYmFnaWFuIGRhcmkgZml0dXIgdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdNZW5nYWt0aWZrYW4gZml0dXIgdGlrZXQgc2xhdmUgdW50dWsgbWVuZ2lrdXRpIHRpa2V0IG1hc3RlciBiYXJ1IGRhbGFtIG1vZHVzIE1hc3RlciBTbGF2ZSBjYW5nZ2loLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgdW50dWsgbWVuZ3ViYWgga2VhZGFhbiBNYXN0ZXIgc2xhdmUgZGFyaSB0aWtldCBkYWxhbSBtb2R1cyBNYXN0ZXIgU2xhdmUgY2FuZ2dpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIHVudHVrIG1lbmVydXNrYW4gYXJ0aWtlbCBkYXJpIGplbmlzIFwnbWFqdVwnIGRhcmkgdGlrZXQgbWFzdGVyIHVudHVrIHBlbGFuZ2dhbiBkYXJpIHRpa2V0IHNsYXZlLiBTZWNhcmEgZGVmYXVsdCAoY2FjYXQpIGl0dSB0aWRhayBha2FuIG1lbmVydXNrYW4gYXJ0aWtlbCBkYXJpIGplbmlzIFwnbWFqdVwnIHVudHVrIHRpa2V0IHNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciB1bnR1ayBtZW5qYWdhIGxpbmsgb3Jhbmd0dWEtYW5hayBzZXRlbGFoIHBlcnViYWhhbiBkYXJpIHN0YXRlIE1hc3RlciBzbGF2ZSBkYWxhbSBtb2R1cyBNYXN0ZXIgU2xhdmUgY2FuZ2dpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciB1bnR1ayBtZW5qYWdhIGxpbmsgb3Jhbmd0dWEtYW5hayBzZXRlbGFoIGRpc2V0IGRhcmkgbmVnYXJhIE1hc3RlciBzbGF2ZSBkYWxhbSBtb2R1cyBNYXN0ZXIgU2xhdmUgY2FuZ2dpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgeWFuZyB0aWRhayBkaSBzZXQgTWFzdGVyIHNsYXZlIGRhcmkgdGlrZXQgZGFsYW0gbW9kdXMgTWFzdGVyIFNsYXZlIGNhbmdnaWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ppa2EgY2F0YXRhbiBkaXRhbWJhaGthbiBvbGVoIGFnZW4sIG1lbmV0YXBrYW4ga2VhZGFhbiB0aWtldCBkaSB0aWtldCBsYXlhciBNYXN0ZXJTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNYXN0ZXIvU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICdUaWtldCBNYXN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNYXN0ZXJTbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTW9kdWwgTWFzdGVyU2xhdmUgdW50dWsgZml0dXIgdGlrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGJhY2tlbmQgZGFzaGJvYXJkIHRpa2V0IG1lbmd1YXNhaSBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLiAiQmF0YXMiIGFkYWxhaCBqdW1sYWggZW50cmkgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdC4gIkdydXAiIGRpZ3VuYWthbiB1bnR1ayBtZW1iYXRhc2kgYWtzZXMga2UgcGx1Z2luIChlIGcgR3J1cDogQWRtaW47Z3JvdXAxLGdyb3VwMjspLiAiRGVmYXVsdCIgbWVuZW50dWthbiBhcGFrYWggcGx1Z2luIGRpYWt0aWZrYW4gc2VjYXJhIGRlZmF1bHQgYXRhdSBqaWthIHBlbmdndW5hIHBlcmx1IG1lbmdha3RpZmthbm55YSBzZWNhcmEgbWFudWFsLiAiQ2FjaGVUVExMb2NhbCIgYWRhbGFoIHdha3R1IGNhY2hlIGRpIG1lbml0IHVudHVrIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgYmFja2VuZCBkYXNoYm9hcmQgdGlrZXQgYnVkYWsgZ2FtYmFyYW4gZGFyaSBhbnRhcm11a2EgYWdlbi4gIkJhdGFzIiBhZGFsYWgganVtbGFoIGVudHJpIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQuICJHcnVwIiBkaWd1bmFrYW4gdW50dWsgbWVtYmF0YXNpIGFrc2VzIGtlIHBsdWdpbiAoZSBnIEdydXA6IEFkbWluO2dyb3VwMSxncm91cDI7KS4gIkRlZmF1bHQiIG1lbmVudHVrYW4gYXBha2FoIHBsdWdpbiBkaWFrdGlma2FuIHNlY2FyYSBkZWZhdWx0IGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSBtZW5nYWt0aWZrYW5ueWEgc2VjYXJhIG1hbnVhbC4gIkNhY2hlVFRMTG9jYWwiIGFkYWxhaCB3YWt0dSBjYWNoZSBkaSBtZW5pdCB1bnR1ayBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdQZW5kYWZ0YXJhbiBtb2R1bCBhY2FyYSB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YSB0aWtldCBNYXN0ZXJTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZ2F0dXIgdGVrcyB0dWJ1aCBkZWZhdWx0IHVudHVrIGNhdGF0YW4gZGl0YW1iYWhrYW4gZGFsYW0gbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZ2F0dXIgVGVrcyBUdWJ1aCBiYXdhYW4gdW50dWsgcmV2aWV3IENhdGF0YW4gZGl0YW1iYWhrYW4gaGVhcnRzIFRpa2V0IExheWFyIFNsYXZlIERhcmkgVGlrZXQgWWFuZyBkaXBlcmJlc2FyIGRpIEFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IGFnZW4geWFuZyBiZXJ0YW5nZ3VuZyBqYXdhYiBkYXJpIHRpa2V0IGRpIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdTZXQgbGF5YW5hbiBkYWxhbSB0aWtldCBHdXJ1IGxheWFyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4gcGVtaWxpayB0aWtldCBkaSBsYXlhciB0aWtldCBNYXN0ZXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4gamVuaXMgdGlrZXQgZGkgbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuICAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmd1YmFoIHN0YXR1cyBNYXN0ZXIgc2xhdmUgZGFyaSB0aWtldCBkYWxhbSB0YW1waWxhbiB6b29tIHRpa2V0IGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBkYWZ0YXIgc2VtdWEgYWdlbiB5YW5nIHRlcmxpYmF0IHBhZGEgdGlrZXQgaW5pLCBkYWxhbSBsYXlhciB0aWtldCBNYXN0ZXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGRhZnRhciBzZW11YSBhZ2VuIHlhbmcgbXVuZ2tpbiAoc2VtdWEgYWdlbiBkZW5nYW4gaXppbiBjYXRhdGFuIGRpIGFudHJpYW4gLyB0aWtldCkgdW50dWsgbWVuZW50dWthbiBzaWFwYSB5YW5nIGhhcnVzIGRpYmVyaXRhaHUgdGVudGFuZyBjYXRhdGFuIGluaSwgZGkgbGF5YXIgTWFzdGVyU2xhdmUgdGlrZXQgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBpbGloYW4gcHJpb3JpdGFzIHRpa2V0IGRpIHRpa2V0IEd1cnUgbGF5YXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcganVkdWwgZGFsYW0gbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnVGlrZXQgc2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnTWVuZW50dWthbiBqZW5pcyBhcnRpa2VsIHlhbmcgYmVyYmVkYSBkaSBtYW5hIG5hbWEgYXNsaSBkYXJpIG1hc3RlciB0aWtldCBha2FuIGRpZ2FudGkgZGVuZ2FuIHNhdHUgdGlrZXQgU2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ01vZHVsIGluaSBtZW5nYWt0aWZrYW4gYmlkYW5nIE1hc3RlciAvIFNsYXZlIGRpIGJhcnUgbGF5YXIgZW1haWwgZGFuIHRpa2V0IHRlbGVwb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdUaWtldCBNYXN0ZXJTbGF2ZS4nOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ+ODnuOCueOCv+ODvC/jgrnjg6zjg7zjg5bjgpLoqK3lrprjgZnjgosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAn5paw44GX44GE44Oe44K544K/44O844OB44Kx44OD44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICfjg57jgrnjgr/jg7zjg4HjgrHjg4Pjg4jjgpLop6PpmaTjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAn44K544Os44O844OW44OB44Kx44OD44OI44KS6Kej6Zmk44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ+ODnuOCueOCv+ODvOODgeOCseODg+ODiOOCkuino+mZpOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAn44K544Os44O844OW44OB44Kx44OD44OI44KS6Kej6Zmk44GZ44KLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOOCueODrOOCpOODlueUu+mdouOBp+OAgeazqOmHiOOBrui/veWKoOOCkuioseWPr+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW54q25rOB44KS5aSJ5pu044GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAn44Oe44K544K/44O844O744K544Os44O844OW5YuV55qE44OV44Kj44O844Or44OJ5ZCN44KS6Kit5a6a44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgafjgIHjg4fjg5Xjgqnjg6vjg4jjga7jg6Hjg6Ljga7jgr/jgqTjg5fjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruODgeOCseODg+ODiOWxpeattOOBp+S9v+eUqOOBleOCjOOCi+OAgeODgeOCseODg+ODiOODu+ODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOCouOCr+OCt+ODp+ODs+OBq+mWouOBmeOCi+WxpeattOOCs+ODoeODs+ODiOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44OB44Kx44OD44OI5bGl5q2044Gn5L2/55So44GV44KM44KL44CB44OB44Kx44OD44OI44O744Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Ki44Kv44K344On44Oz44Gr6Zai44GZ44KL5bGl5q2044K/44Kk44OX44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICfjg57jgrnjgr/jg7wv44K544Os44O844OWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNYXN0ZXJTbGF2ZSDjg6Ljgrjjg6Xjg7zjg6vjga7jg4HjgrHjg4Pjg4jkuIDmi6zlh6bnkIbmqZ/og70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICfjg4HjgrHjg4Pjg4jjgqTjg5njg7Pjg4jjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gn44CB44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gu5b+F6KaB44Gq6Kix5Y+v44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgei/veWKoOOBleOCjOOBn+ODoeODouOBruODh+ODleOCqeODq+ODiOOBruacrOaWh+OCkuioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Gn44CB6L+95Yqg44GV44KM44Gf44Oh44Oi44Gu44OH44OV44Kp44Or44OI44Gu5Lu25ZCN44KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgafjgIHjg4HjgrHjg4Pjg4jjga7osqzku7vjgpLmnInjgZnjgovmi4XlvZPogIXjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgafjgIHjgrXjg7zjg5PjgrnjgpLoqK3lrprjgZfjgb7jgZkgKFRpY2tldDo6U2VydmljZeOCkuacieWKueOBqOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmSnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Gn44CB44OB44Kx44OD44OI5omA5pyJ6ICF44KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgeODgeOCseODg+ODiOODu+OCv+OCpOODl+OCkuioreWumuOBl+OBvuOBmShUaWNrZXQ6OlR5cGXjgpLmnInlirnjgajjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZkp44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGRzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuIE1hc3RlclNsYXZlIOOBruODgeOCseODg+ODiOOCuuODvOODoOeUu+mdouOBp+OCv+OCpOODiOODq+ODleOCo+ODvOODq+ODieOCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICfjgZPjga7jg6Ljgrjjg6Xjg7zjg6vjga/jgIHmlrDopo/jg6Hjg7zjg6sv6Zu76Kmx44OB44Kx44OD44OI44Gr44CB44Oe44K544K/44O8L+OCueODrOODvOODluODgeOCseODg+ODiOashOOCkui/veWKoOOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ1NldCBuaWxhaSBNYXN0ZXIvU2xhdmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnVGlrZXQgTWFzdGVyIEJhaGFydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnVGlrZXQgTWFzdGVyIFRpZGFrIERpdGV0YXBrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnVGlrZXQgU2xhdmUgVGlkYWsgRGl0ZXRhcGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1iZW5hcmthbiBtZW5hbWJhaCBub3RhIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IGJhZ2kgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ1ViYWgga2VhZGFhbiB0aWtldCBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gamlrYSBrdW5jaSB0aWtldCBkaXBlcmx1a2FuIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4gKGppa2EgdGlrZXQgaXR1IHRpZGFrIGRpa3VuY2kgbGFnaSwgdGlrZXQgeWFuZyBha2FuIGRpa3VuY2kgZGFuIGVqZW4gc2VtYXNhIGFrYW4gZGl0ZXRhcGthbiBzZWNhcmEgYXV0b21hdGlrIHNlYmFnYWkgcGVtaWxpa255YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWFkYWFuIGRlZmF1bHQgc2V0ZXJ1c255YSBiYWdpIHRpa2V0IHNlbGVwYXMgbWVuYW1iYWggbm90YSwgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga2V1dGFtYWFuIHRpa2V0IGRlZmF1bHQgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGplbmlzIGRlZmF1bHQgbm90YSBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtvbWVuIHNlamFyYWggYmFnaSBrZXNhbiBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCwgeWFuZyBha2FuIGRpZ3VuYWthbiB1bnR1ayBzZWphcmFoIHRpa2V0IGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gamVuaXMgc2VqYXJhaCBiYWdpIHRpbmRha2FuIHNrcmluIHRpa2V0IE1hc3RlclNsYXZlLCB5YW5nIGFrYW4gZGlndW5ha2FuIHVudHVrIHNlamFyYWggdGlrZXQgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWFkYWFuIHNldGVydXNueWEgYmFnaSB0aWtldCBzZWxlcGFzIG1lbmFtYmFoIG5vdGEsIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc2FibGVkJ30gPSAnVGlkYWsgZGlib2xlaGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVkJ30gPSAnRGlib2xlaGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKaWthIG5vdGEgZGl0YW1iYWggb2xlaCBlamVuLCB0ZXRhcGthbiBrZWFkYWFuIHRpa2V0IGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWFzdGVyIC8gU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01vZHVsIE1hc3RlclNsYXZlIHVudHVrIGNpcmkgQnVsayBUaWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGJhaGFnaWFuIGJlbGFrYW5nIHBhcGFuIHBlbXVrYSBkYXJpcGFkYSBnYW1iYXJhbiBrZXNlbHVydWhhbiB0aWtldCBtYXN0ZXIgYW50YXJhIG11a2EgZWplbi4gIkhhZCIgYWRhbGFoIGJpbGFuZ2FuIHBlbnllcnRhYW4gZGl0dW5qdWtrYW4gc2VjYXJhIGRlZmF1bHQuICJLdW1wdWxhbiIgZGlndW5ha2FuIHVudHVrIG1lbnlla2F0IGFrc2VzIGtlcGFkYSBtYXN1ayAoY29udG9oOiBLdW1wdWxhbjogYWRtaW47IGt1bXB1bGFuMTsga3VtcHVsYW4yOykuICJEZWZhdWx0IiBtZW5lbnR1a2FuIGppa2EgcGx1Z2luIGluaSBkaWFrdGlma2FuIHNlY2FyYSBkZWZhdWx0IGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSB1bnR1ayBtZW1ib2xlaGthbiBzZWNhcmEgbWFudWFsLiAiQ2FjaGVUVExMb2NhbCIgYWRhbGFoIG1hc2EgY2FjaGUgZGFsYW0gbWluaXQgdW50dWsgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBiYWhhZ2lhbiBiZWxha2FuZyBwYXBhbiBwZW11a2EgZGFyaXBhZGEgZ2FtYmFyYW4ga2VzZWx1cnVoYW4gdGlrZXQgc2xhdmUgYW50YXJhIG11a2EgZWplbi4gIkhhZCIgYWRhbGFoIGJpbGFuZ2FuIHBlbnllcnRhYW4gZGl0dW5qdWtrYW4gc2VjYXJhIGRlZmF1bHQuICJLdW1wdWxhbiIgZGlndW5ha2FuIHVudHVrIG1lbnlla2F0IGFrc2VzIGtlcGFkYSBtYXN1ayAoY29udG9oOiBLdW1wdWxhbjogYWRtaW47IGt1bXB1bGFuMTsga3VtcHVsYW4yOykuICJEZWZhdWx0IiBtZW5lbnR1a2FuIGppa2EgcGx1Z2luIGluaSBkaWFrdGlma2FuIHNlY2FyYSBkZWZhdWx0IGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSB1bnR1ayBtZW1ib2xlaGthbiBzZWNhcmEgbWFudWFsLiAiQ2FjaGVUVExMb2NhbCIgYWRhbGFoIG1hc2EgY2FjaGUgZGFsYW0gbWluaXQgdW50dWsgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUGVuZGFmdGFyYW4gdGlrZXQgbW9kdWwgYWNhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tlYmVuYXJhbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZXRhcGthbiB0ZWtzIGJhZGFuIGRlZmF1bHQgdW50dWsgbm90YSBkaXRhbWJhaCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IHN1YmplayBkZWZhdWx0IHVudHVrIG5vdGEgZGl0YW1iYWggZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBlamVuIHlhbmcgYmVydGFuZ2d1bmdqYXdhYiBiYWdpIHRpa2V0IGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnU2V0IHBlcmtoaWRtYXRhbiBkaSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuIChUaWtldDo6UGVya2hpZG1hdGFuIHBlcmx1IGRpYWt0aWZrYW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQgcGVtaWxpayB0aWtldCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdNZW5ldGFwa2FuIGplbmlzIHRpa2V0IHlhbmcgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbiAoVGlrZXQ6OkplbmlzIHBlcmx1IGRpYWt0aWZrYW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnVrYXIgc3RhdHVzIE1hc3RlclNsYXZlIGJhZ2kgdGlrZXQgZGFsYW0gcGFuZGFuZ2FuIHp1bSB0aWtldCBiYWdpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1hcGFya2FuIHNlbmFyYWkgc2VtdWEgZWplbiB5YW5nIHRlcmxpYmF0IGRhbGFtIHRpa2V0IGluaSwgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtYXBhcmthbiBzZW5hcmFpIHNlbXVhIGtlbXVuZ2tpbmFuIGVqZW4gKHNlbXVhIGVqZW4gZGVuZ2FuIGtlYmVuYXJhbiBub3RhIG1lbmdlbmFpIGJhcmlzYW4vdGlrZXQpIHVudHVrIG1lbmVudHVrYW4gc2lhcGEgeWFuZyBwZXJsdSBkaWJlcml0YWh1IHRlbnRhbmcgbm90YSBpbmksIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBpbGloYW4ga2V1dGFtYWFuIHRpa2V0IGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcgdGFqdWsgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGplbmlzIGFydGlrZWwgeWFuZyBiZXJiZXphIGRpIG1hbmEgbmFtYSBzZWJlbmFyIGRhcmkgdGlrZXQgTWFzdGVyIGFrYW4gZGlnYW50aWthbiBkZW5nYW4geWFuZyBkYWxhbSB0aWtldCBTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnTW9kdWwgaW5pIG1lbmdha3RpZmthbiBtZWRhbiBNYXN0ZXIvU2xhdmUgZGkgc2tyaW4gZW1lbCBkYW4gdGlrZXQgdGVsZWZvbiBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdVc3RhdyBzdGFuIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSBkbGEgJXMlcyVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCBNYXN0ZXIvU2xhdmUgVmFsdWUnfSA9ICdVc3RhdyB3YXJ0b8WbxIcgbmFkcnrEmWRueS9wb2RyesSZZG55JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05vd2UgemfFgm9zemVuaWUgbmFkcnrEmWRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnV3nFgsSFY3ogd2FydG/Fm8SHIE5hZHJ6xJlkbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnV3nFgsSFY3ogd2FydG/Fm8SHIFBvZHJ6xJlkbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJ1BvZHJ6xJlkbmUgZG8gJXMlcyVzOiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnV3ljennFm8SHIHdhcnRvxZvEhyBOYWRyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdXeWN6ecWbxIcgd2FydG/Fm8SHIFBvZHJ6xJlkbnknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ1pnxYJvc3plbmllIG5hZHJ6xJlkbmUnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdXc3p5c3RraWUgemfFgm9zemVuaWEgbmFkcnrEmWRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ1dzenlzdGtpZSB6Z8WCb3N6ZW5pYSBwb2RyesSZZG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3p3YWxhIG5hIGRvZGFuaWUgbm90YXRraSBuYSBla3JhbmllIE5hZHJ6xJlkbnlQb2RyesSZZG55LCB3eXdvxYJhbnltIHogcHJ6eWJsacW8b25lZ28gd2lkb2t1IHpnxYJvc3plbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnWm1pZcWEIHN0YW4gemfFgm9zemVuaWEgZGxhIE5hZHJ6xJlkbnkvUG9kcnrEmWRueS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdPa3JlxZtsYSBuYXp3xJkgcG9sYSBkeW5hbWljem5lZ28gZGxhIGZ1bmtjam9uYWxub8WbY2kgemfFgm9zemVuaWEgbmFkcnrEmWRuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBjenkgd3ltYWdhbmEgamVzdCB6YWJsb2tvd2FuaWUgemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55UG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEgKGplxZtsaSB6Z8WCb3N6ZW5pZSBuaWUgamVzdCBqZXN6Y3plIHphYmxva293YW5lLCBzdGFqZSBzacSZwqB6YWJsb2tvd2FuZSwgYSBiaWXFvMSFY3kgYWdlbnQgc3RhamUgc2nEmSBqZWdvIHfFgmHFm2NpY2llbGVtKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG55IG5hc3TEmXBueSBzdGFuIHpnxYJvc3plbmlhIHBvIGRvZGFuaXUgbm90YXRraSBuYSBla3JhbmllIE5hZHJ6xJlkbnlQb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbnkgcHJpb3J5dGV0IHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueVBvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbnkgdHlwIG5vdGF0a2kgbm90YXRraSBuYSBla3JhbmllIE5hZHJ6xJlkbnlQb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGtvbWVudGFyeiBoaXN0b3JpaSBkbGEgYWtjamkgemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55UG9kcnrEmWRueSBrdMOzcnkgem9zdGFuaWUgdcW8eXR5IHcgaGlzdG9yaWkgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSB0eXAgaGlzdG9yaWkgZGxhIGFrY2ppIHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueVBvZHJ6xJlkbnkga3TDs3J5IHpvc3RhbmllIHXFvHl0eSB3IGhpc3RvcmlpIHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgbmFzdMSZcG55IHN0YW4gemfFgm9zemVuaWEgcG8gZG9kYW5pdSBub3RhdGtpIG5hIGVrcmFuaWUgTmFkcnrEmWRueVBvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNhYmxlZCd9ID0gJ1d5xYLEhWN6b255JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZWQnfSA9ICdXxYLEhWN6b255JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnV8WCxIVjemEgemFhd2Fuc293YW7EhSBjesSZxZvEhyBmdW5rY2pvbmFsbm/Fm2NpIE5hZHJ6xJlkbnlQb2RyesSZZG55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyB0cnlidSB6YWF3YW5zb3dhbmVnbyBOYWRyesSZZG55UG9kcnrEmWRueSwgdyBrdMOzcmVqIHpnxYJvc3plbmlhIHBvZHJ6xJlkbmUgcG9kxIXFvGFqxIUgemEgemfFgm9zemVuaWVtIG5hZHJ6xJlkbnltIGRvIG5vd2VnbyB6Z8WCb3N6ZW5pYSBuYWRyesSZZG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjam9uYWxub8WbxIcgdHJ5YnUgemFhd2Fuc293YW5lZ28gTmFkcnrEmWRueVBvZHJ6xJlkbnkgdW1vxbxsaXdpYWrEhWPEhSB6bWlhbsSZIHN0YW51IE5hZHJ6xJlkbnlQb2RyesSZZG55IHcgemfFgm9zemVuaXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjam9uYWxub8WbxIcgcHJ6ZXN5xYJhbmlhIGFydHlrdcWCw7N3IHR5cHUgInByemVrYcW8IiB6ZSB6Z8WCb3N6ZW5pYSBuYWRyesSZZG5lZ28gZG8ga2xpZW50w7N3IHpnxYJvc3plxYQgcG9kcnrEmWRueWNoLiBEb215xZtsbmllICh3ecWCxIVjem9uZSkgYXJ0eWt1xYJ5IHR5cHUgInByemVrYcW8IiBuaWUgc8SFIHByemVrYXp5d2FuZSBkbyB6Z8WCb3N6ZcWEIHBvZHJ6xJlkbnljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdXxYLEhWN6YSBmdW5rY2pvbmFsbm/Fm8SHIHRyeWJ1IHphYXdhbnNvd2FuZWdvIE5hZHJ6xJlkbnlQb2RyesSZZG55LCBwb2xlZ2FqxIVjxIUgbmEgdXRyenltYW5pdSBwb8WCxIVjemVuaWEgcm9kemljLWR6aWVja28gcG8gem1pYW5pZSB6YWxlxbxub8WbY2kgTmFkcnrEmWRueVBvZHJ6xJlkbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdXxYLEhWN6YSBmdW5rY2pvbmFsbm/Fm8SHIHRyeWJ1IHphYXdhbnNvd2FuZWdvIE5hZHJ6xJlkbnlQb2RyesSZZG55LCBwb2xlZ2FqxIVjxIUgbmEgdXRyenltYW5pdSBwb8WCxIVjemVuaWEgcm9kemljLWR6aWVja28gcG8gdXN1bmnEmWNpdSB6YWxlxbxub8WbY2kgTmFkcnrEmWRueVBvZHJ6xJlkbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyB0cnlidSB6YWF3YW5zb3dhbmVnbyBOYWRyesSZZG55UG9kcnrEmWRueSwgdXN1d2FuaWEgc3RhbnUgTmFkcnrEmWRueVBvZHJ6xJlkbnkgemUgemfFgm9zemVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0plxZtsaSBhZ2VudCBkb2RhIG5vdGF0a8SZLCB0byB1c3Rhd2lhbnkgamVzdCBzdGFuIHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueVBvZHJ6xJlkbnkgb2tuYSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ05hZHJ6xJlkbnkgLyBQb2RyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnWmfFgm9zemVuaWEgbmFkcnrEmWRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ05hZHJ6xJlkbnlQb2RyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNb2R1xYIgTmFkcnrEmWRueWNoUG9kcnrEmWRueWNoIGRsYSBmdW5rY2ppIGdydXBvd3ljaCB6Z8WCb3N6ZcWELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0ciBva25hIHB1bHBpdHUgemfFgm9zemXFhCBuYWRyesSZZG55Y2ggaW50ZXJmZWpzdSBhZ2VudGEuICJMaW1pdCIgamVzdCBsaWN6YsSFIHdpZXJzenkgcG9rYXp5d2FuxIUgZG9tecWbbG5pZS4gIkdyb3VwIiBqZXN0IHXFvHl3YW5hIGRvIG9ncmFuaWN6ZW5pYSBkb3N0xJlwdSBkbyB3dHljemtpIChucC46IEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBva3JlxZtsYSBjenkgd3R5Y3prYSBqZXN0IGRvbXnFm2xuaWUgd8WCxIVjem9uYSBsdWIgY3p5IHXFvHl0a293bmlrIG1vxbxlIHfFgsSFY3p5xIcgasSFIHLEmWN6bmllLiAiQ2FjaGVUVExMb2NhbCIgamVzdCBjemFzZW0gcG9kYW55bSB3IG1pbnV0YWNoIG9rcmXFm2xhasSFY3ltIGN6YXMgY2FjaGVcJ293YW5pYSB3dHljemtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyIG9rbmEgcHVscGl0dSB6Z8WCb3N6ZcWEIHBvZHJ6xJlkbnljaCBpbnRlcmZlanN1IGFnZW50YS4gIkxpbWl0IiBqZXN0IGxpY3pixIUgd2llcnN6eSBwb2thenl3YW7EhSBkb215xZtsbmllLiAiR3JvdXAiIGplc3QgdcW8eXdhbmEgZG8gb2dyYW5pY3plbmlhIGRvc3TEmXB1IGRvIHd0eWN6a2kgKG5wLjogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIG9rcmXFm2xhIGN6eSB3dHljemthIGplc3QgZG9tecWbbG5pZSB3xYLEhWN6b25hIGx1YiBjenkgdcW8eXRrb3duaWsgbW/FvGUgd8WCxIVjennEhyBqxIUgcsSZY3puaWUuICJDYWNoZVRUTExvY2FsIiBqZXN0IGN6YXNlbSBwb2RhbnltIHcgbWludXRhY2ggb2tyZcWbbGFqxIVjeW0gY3phcyBjYWNoZVwnb3dhbmlhIHd0eWN6a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdSZWplc3RyYWNqYSBtb2R1xYJ1IHpkYXJ6ZcWEIHpnxYJvc3plbmlhLCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcHJhd25pZW5pYSB3eW1hZ2FuZSBkbyB1xbx5d2FuaWEgZWtyYW51IE5hZHJ6xJlkbnlQb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBkb215xZtsbsSFIHRyZcWbxIcgbm90YXRraSBkb2Rhd2FuZWogZG8gemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55UG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIGRvbXnFm2xueSB0ZW1hdCBkbGEgbm90YXRlayBkb2Rhd2FueWNoIGRvIHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueVBvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBvZHBvd2llZHppYWxuZWdvIHphIHpnxYJvc3plbmllIGFnZW50YSBuYSBla3JhbmllIE5hZHJ6xJlkbnlQb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdVc3Rhd2lhIHVzxYJ1Z8SZIHcgemfFgm9zemVuaXUgbmEgZWtyYW5pZSBOYWRyesSZZG55UG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEgKFRpY2tldDo6U2VydmljZSBtdXNpIGJ5xIcgYWt0eXdvd2FuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VzdGF3aWEgd8WCYcWbY2ljaWVsYSB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnlQb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnVXN0YXdpYSB0eXAgemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55UG9kcnrEmWRueSwgd3l3b8WCYW55bSB6IHByenlibGnFvG9uZWdvIHdpZG9rdSB6Z8WCb3N6ZW5pYSB3IGludGVyZmVqc2llIGFnZW50IChUaWNrZXQ6OlR5cGUgbXVzaSBiecSHIGFrdHl3b3dhbnkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hIGVrcmFuaWUgcHJ6eWJsacW8b25lZ28gd2lkb2t1IHpnxYJvc3plbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLCBwb2thenVqZSBsaW5rIHcgbWVudSBkbyB6bWlhbnkgc3RhbnUgTmFkcnrEmWRueVBvZHJ6xJlkbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYSBla3JhbmllIE5hZHJ6xJlkbnlQb2RyesSZZG55LCB3eXdvxYJhbnltIHogcHJ6eWJsacW8b25lZ28gd2lkb2t1IHpnxYJvc3plbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLCBwb2thenVqZSBsaXN0xJkgd3N6eXN0a2ljaCBhZ2VudMOzdyB6YWFuZ2HFvG93YW55Y2ggdyB6Z8WCb3N6ZW5pZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmEgZWtyYW5pZSBOYWRyesSZZG55UG9kcnrEmWRueSwgd3l3b8WCYW55bSB6IHByenlibGnFvG9uZWdvIHdpZG9rdSB6Z8WCb3N6ZW5pYSB3IGludGVyZmVqc2llIGFnZW50YSwgcG9rYXp1amUgbGlzdMSZIHdzenlzdGtpY2ggbW/FvGxpd3ljaCBhZ2VudMOzdyAod3N6eXN0a2ljaCBhZ2VudMOzdyB6IHVwcmF3bmllbmlhbWkgZG8gbm90YXRlayB3IGtvbGVqY2UvemfFgm9zemVuaXUpLCB3IGNlbHUgb2tyZcWbbGVuaWEga3RvIHBvd2luaWVuIGJ5xIcgcG9pbmZvcm1vd2FueSBvIHRlaiBub3RhdGNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2thenVqZSBvcGNqZSBwcmlvcnl0ZXR1IHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueVBvZHJ6xJlkbnksIHd5d2/FgmFueW0geiBwcnp5YmxpxbxvbmVnbyB3aWRva3UgemfFgm9zemVuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIHBvbGEgdHl0dcWCb3dlIHcgb2tuaWUgTmFkcnrEmWRueVBvZHJ6xJlkbnkgcHJ6eWJsacW8b25lZ28gemfFgm9zemVuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdaZ8WCb3N6ZW5pYSBwb2RyesSZZG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ09rcmXFm2xhIHLDs8W8bmUgcm9kemFqZSB0eXDDs3cgd2lhZG9tb8WbY2kgaSB3IGpha2kgc3Bvc8OzYiB3xYJhxZtjaXdhIG5hendhIHplIHpnxYJvc3plbmlhIG5hZHJ6xJlkbmVnbyB6b3N0YW5pZSB6YXN0xIVwaW9uYSB3IHpnxYJvc3plbml1IHBvZHJ6xJlkbnltLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdUZW4gbW9kdcWCIGFrdHl3dWplIHBvbGUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgbm93ZWdvIHpnxYJvc3plbmlhIGUtbWFpbCBpIHRlbGVmb25pY3puZWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdaZ8WCb3N6ZW5pZSBOYWRyesSZZG5lUG9kcnrEmWRuZSc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdHZXJlbmNpYXIgZXN0YWRvIGRlIE1lc3RyZS9Fc2NyYXZvIHBhcmEgJXMlcyVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCBNYXN0ZXIvU2xhdmUgVmFsdWUnfSA9ICdDb25maWd1cmFyIFZhbG9yIE1lc3RyZS9Fc2NyYXZvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05vdm8gQ2hhbWFkbyBNZXN0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ0Rlc2ZhemVyIENoYW1hZG8gTWVzdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ0Rlc2ZhemVyIENoYW1hZG8gRXNjcmF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnRXNjcmF2byBkZSAlcyVzJXM6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdMaW1wYXIgQ2hhbWFkb3MgTWVzdHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnTGltcGFyIENoYW1hZG9zIEVzY3Jhdm9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdDaGFtYWRvIE1lc3RyZSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ1RvZG9zIGNoYW1hZG9zIG1lc3RyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICdUb2RvcyBjaGFtYWRvcyBlc2NyYXZvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWl0ZSBhZGljaW9uYXIgbm90YXMgbmEgdGVsYSAiTWFzdGVyU2xhdmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdBbHRlcmEgbyBlc3RhZG8gTWFzdGVyU2xhdmUgZGUgdW0gY2hhbWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdEZWZpbmUgbyBub21lIGRvIGNhbXBvIGRpbsOibWljbyBwYXJhIGEgZnVuY2lvbmFsaWRhZGUgZGUgY2hhbWFkbyBtZXN0cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnRGVmaW5lIHNlIHVtIGJsb3F1ZWlvIGRlIHRpY2tldCDDqSByZXF1ZXJpZG8gbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUgKHNlIG8gdGlja2V0IGFpbmRhIG7Do28gZXN0aXZlciBibG9xdWVhZG8sIG8gdGlja2V0IHNlcsOhIGJsb3F1ZWFkbyBlIG8gYWdlbnRlIGNvcnJlbnRlIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSBkZWZpbmlkbyBjb21vIG8gc2V1IHByb3ByaWV0w6FyaW8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBwcsOzeGltbyBlc3RhZG8gcGFkcsOjbyBkZSB1bSB0aWNrZXQgYXDDs3MgdW1hIG5vdGEgdGVyIHNpZG8gYWRpY2lvbmFkYSwgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGEgcHJpb3JpZGFkZSBwYWRyw6NvIGRvIHRpY2tldCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gdGlwbyBwYWRyw6NvIGRlIG5vdGEgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBjb21lbnTDoXJpbyBkZSBoaXN0w7NyaWNvIHBhcmEgYSBhw6fDo28gZGUgdGVsYSBNYXN0ZXJTbGF2ZSBkbyB0aWNrZXQsIHF1ZSDDqSB1dGlsaXphZGEgcGFyYSBvIGhpc3TDs3JpY28gZG8gdGlja2V0IG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyB0aXBvIGRlIGhpc3TDs3JpY28gcGFyYSBhIGHDp8OjbyBkYSB0ZWxhIE1hc3RlclNsYXZlIGRvIHRpY2tldCwgcXVlIMOpIHV0aWxpemFkbyBwYXJhIG8gaGlzdMOzcmljbyBkbyB0aWNrZXQgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHByw7N4aW1vIGVzdGFkbyBkZSB1bSB0aWNrZXQgYXDDs3MgdW1hIG5vdGEgdGVyIHNpZG8gYWRpY2lvbmFkYSwgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc2FibGVkJ30gPSAnRGVzYWJpbGl0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZWQnfSA9ICdIYWJpbGl0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnSGFiaWxpdGEgYXMgZnVuY2lvbmFsaWRhZGVzIGF2YW7Dp2FkYXMgZG8gTWFzdGVyU2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIGRlIGNoYW1hZG9zIGVzY3Jhdm9zIHNlZ3VpcmVtIGNoYW1hZG9zIG1lc3RyZSBwYXJhIHVtIG5vdm8gbWVzdHJlIG5vIG1vZG8gYXZhbsOnYWRvIGRvIE1hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIGRlIGFsdGVyYXIgZXN0YWRvIGRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8gbm8gbW9kbyBhdmFuw6dhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgZW5jYW1pbmhhciBhcnRpZ29zIGRvIHRpcG8gXCdmb3J3YXJkXCcgZGUgdW0gY2hhbWFkbyBtZXN0cmUgcGFyYSBvcyBjbGllbnRlcyBkb3MgY2hhbWFkb3MgZXNjcmF2b3MuIFBvciBwYWRyw6NvIChkZXNhYmlsaXRhZG8pIG9zIGFydGlnb3MgbsOjbyBzw6NvIGVuY2FtaW5oYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIHF1ZSBtYW50ZW0gbyBsaW5rIHBhaS1maWxobyBhcMOzcyBhIGFsdGVyYcOnw6NvIGRvIGVzdGFkbyBkZSBNYXN0ZXJTbGF2ZSBubyBtb2RvIGF2YW7Dp2FkbyBkbyBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbWFudGVyIGEgYXNzb2NpYcOnw6NvIHBhaS1maWxobyBkZXBvaXMgZGUgbGltcGFyIG8gZXN0YWRvIGRlIE1hc3RlclNsYXZlIG5vIG1vZG8gYXZhbsOnYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbGltcGFyIG8gZXN0YWRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8gbm8gbW9kbyBhdmFuw6dhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NlIHVtYSBub3RhIGZvciBhZGljaW9uYWRhIHBvciB1bSBhZ2VudGUsIGRlZmluZSBvIGVzdGFkbyBkbyB0aWNrZXQgbmEgdGVsYSBkZSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWVzdHJlIC8gRXNjcmF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ0NoYW1hZG9zIE1lc3RyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNZXN0cmVFc2NyYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNw7NkdWxvIE1lc3RyZUVzY3Jhdm8gcGFyYSBmdW5jaW9uYWxpZGFkZSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgY2hhbWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZG8gcGFpbmVsIGRlIHZpc8OjbyBnZXJhbCBkZSB0aWNrZXRzIG1lc3RyZSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLiAiTGltaXRlIiDDqSBhIHF1YW50aWRhZGUgZGUgcmVnaXN0cm9zIGV4aWJpZGEgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMikuICJQYWRyw6NvIiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgaGFiaWxpdGFkbyBwb3IgcGFkcsOjbyBvdSBzZSBvIHVzdcOhcmlvIHByZWNpc2EgaGFiaWxpdMOhLWxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6kgbyB0ZW1wbyBkZSBjYWNoZSBlbSBtaW51dG9zIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZG8gcGFpbmVsIGRlIHZpc8OjbyBnZXJhbCBkZSB0aWNrZXRzIG1lc3RyZSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLiAiTGltaXRlIiDDqSBhIHF1YW50aWRhZGUgZGUgcmVnaXN0cm9zIGV4aWJpZGEgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMikuICJQYWRyw6NvIiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgaGFiaWxpdGFkbyBwb3IgcGFkcsOjbyBvdSBzZSBvIHVzdcOhcmlvIHByZWNpc2EgaGFiaWxpdMOhLWxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6kgbyB0ZW1wbyBkZSBjYWNoZSBlbSBtaW51dG9zIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdSZWdpc3RybyBkbyBtw7NkdWxvIGRlIGV2ZW50b3MgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyByZXF1ZXJpZGFzIHBhcmEgdXNhciBhIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gY29ycG8gZG8gdGV4dG8gcGFkcsOjbyBwYXJhIG5vdGFzIGFkaWNpb25hZGFzIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGFzc3VudG8gcGFkcsOjbyBwYXJhIG5vdGFzIGFkaWNpb25hZGFzIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGFnZW50ZSByZXNwb25zw6F2ZWwgZG8gdGlja2V0IG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdEZWZpbmUgbyBzZXJ2acOnbyBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZSAoVGlja2V0OjpTZXJ2aWNlIHByZWNpc2Egc2VyIGF0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBwcm9wcmlldMOhcmlvIGRvIHRpY2tldCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHRpcG8gZG8gdGlja2V0IG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZSAoVGlja2V0OjpUeXBlIHByZWNpc2Egc2VyIGF0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFsdGVyYXIgbyBlc3RhZG8gTWFzdGVyU2xhdmUgZGUgdW0gdGlja2V0IG5hIHRlbGEgZGUgZGV0YWxoZSBkZSB0aWNrZXQgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtYSBsaXN0YSBkZSB0b2RvcyBvcyBhZ2VudGVzIGVudm9sdmlkb3MgbmVzdGUgdGlja2V0LCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtYSBsaXN0YSBkZSB0b2RvcyBvcyBhZ2VudGVzIHBvc3PDrXZlaXMgKHRvZG9zIG9zIGFnZW50ZXMgY29tIHBlcm1pc3PDo28gZGUgbm90YSBuYSBmaWxhL3RpY2tldCkgcGFyYSBkZXRlcm1pbmFyIHF1ZW0gZGV2ZSBzZXIgaW5mb3JtYWRvIHNvYnJlIGVzdGEgbm90YSwgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSBhcyBvcMOnw7VlcyBkZSBwcmlvcmlkYWRlIGRlIHRpY2tldCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSBvIGNhbXBvIGRlIHTDrXR1bG8gbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnQ2hhbWFkb3MgRXNjcmF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSB0eXBlcyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnRXNwZWNpZmljYSBvcyBkaWZlcmVudGVzIHRpcG9zIGRlIGFydGlnbyBvbmRlIG8gbm9tZSByZWFsIGRvIHRpY2tldCBNYXN0ZXIgc2Vyw6Egc3Vic3RpdHXDrWRvIGNvbSBvIG5vbWUgZG8gdGlja2V0IGVzY3Jhdm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ0VzdGUgbcOzZHVsbyBhdGl2YSBvIGNhbXBvIE1lc3RyZS9Fc2NyYXZvIG5hcyB0ZWxhcyBkZSBub3ZvIGNoYW1hZG8gZm9uZS9lLW1haWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdDaGFtYWRvIE1lc3RyZUVzY3Jhdm8nOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ9Cj0YHRgtCw0L3QvtCy0LjRgtGMINC30L3QsNGH0LXQvdC40LUgTWFzdGVyL1NsYXZlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ9Cd0L7QstCw0Y8gTWFzdGVyINC30LDRj9Cy0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAn0KHQvdGP0YLRjCDQt9C90LDRh9C10L3QuNC1IE1hc3RlciDQt9Cw0Y/QstC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAn0KHQvdGP0YLRjCDQt9C90LDRh9C10L3QuNC1IFNsYXZlINC30LDRj9Cy0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9C10YIg0LTQvtCx0LDQstC40YLRjCDRgdC+0L7QsdGJ0LXQvdC40LUg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn0JjQt9C80LXQvdC40YLRjCDRgdC+0YHRgtC+0Y/QvdC40LUgTWFzdGVyU2xhdmUg0LTQu9GPINGN0YLQvtC5INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXRgtGB0Y8g0LvQuCDQsdC70L7QutC40YDQvtCy0LrQsCDQt9Cw0Y/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+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQldGB0LvQuCDRgdC+0L7QsdGJ0LXQvdC40LUv0LfQsNC80LXRgtC60LAg0LTQvtCx0LDQstC70LXQvdCwINCw0LPQtdC90YLQvtC8LCDQt9Cw0LTQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNC1INC30LDRj9Cy0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hc3RlciAvIFNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNYXN0ZXJTbGF2ZSDQvNC+0LTRg9C70Ywg0LTQu9GPINGE0YPQvdC60YbQuNC4INCc0LDRgdGB0L7QstC+0LUg0LTQtdC50YHRgtCy0LjQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRgNCw0LfQtNC10LvQsCDQlNCw0LnQtNC20LXRgdGC0LAg0YEg0LjQvdGE0L7RgNC80LDRhtC40LXQuSDQviBtYXN0ZXIg0LfQsNGP0LLQutCw0YUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAiR3JvdXAiINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0L7Qs9GA0LDQvdC40YfQtdC90LjRjyDQtNC+0YHRgtGD0L/QsCDQuiDRgNCw0LfQtNC10LvRgyAo0L3QsNC/0YDQuNC80LXRgCwgR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIC0g0LfQsNC00LDQtdGCLCDQsdGD0LTQtdGCINC70Lgg0YDQsNC30LTQtdC7INC00L7RgdGC0YPQv9C10L0g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LjQu9C4INCw0LPQtdC90YIg0LTQvtC70LbQtdC9INCw0LrRgtC40LLQuNGA0L7QstCw0YLRjCDQtdCz0L4g0LLRgNGD0YfQvdGD0Y4uICJDYWNoZVRUTExvY2FsIiAtINCy0YDQtdC80Y8g0L7QsdC90L7QstC70LXQvdC40Y8g0LrRjdGI0LAg0LIg0LzQuNC90YPRgtCw0YUg0LTQu9GPINGN0YLQvtCz0L4g0YDQsNC30LTQtdC70LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRgNCw0LfQtNC10LvQsCDQlNCw0LnQtNC20LXRgdGC0LAg0YEg0LjQvdGE0L7RgNC80LDRhtC40LXQuSDQviBzbGF2ZSDQt9Cw0Y/QstC60LDRhSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuICJHcm91cCIg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC00L7RgdGC0YPQv9CwINC6INGA0LDQt9C00LXQu9GDICjQvdCw0L/RgNC40LzQtdGALCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgLSDQt9Cw0LTQsNC10YIsINCx0YPQtNC10YIg0LvQuCDRgNCw0LfQtNC10Lsg0LTQvtGB0YLRg9C/0LXQvSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQuNC70Lgg0LDQs9C10L3RgiDQtNC+0LvQttC10L0g0LDQutGC0LjQstC40YDQvtCy0LDRgtGMINC10LPQviDQstGA0YPRh9C90YPRji4gIkNhY2hlVFRMTG9jYWwiIC0g0LLRgNC10LzRjyDQvtCx0L3QvtCy0LvQtdC90LjRjyDQutGN0YjQsCDQsiDQvNC40L3Rg9GC0LDRhSDQtNC70Y8g0Y3RgtC+0LPQviDRgNCw0LfQtNC10LvQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0LzQvtC00YPQu9GPINC+0LHRgNCw0LHQvtGC0LrQuCDRgdC+0LHRi9GC0LjQuSDQt9Cw0Y/QstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQsNCy0LAsINGC0YDQtdCx0YPQtdC80YvQtSDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0YTRg9C90LrRhtC40LggTWFzdGVyU2xhdmUg0LfQsNGP0LLQvtC6INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YLQtdC60YHRgiDRgdC+0L7QsdGJ0LXQvdC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L/RgNC4INC00L7QsdCw0LLQu9C10L3QuNC4INGB0L7QvtCx0YnQtdC90LjRjyDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YLQtdC80YMg0YHQvtC+0LHRidC10L3QuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC/0YDQuCDQtNC+0LHQsNCy0LvQtdC90LjQuCDRgdC+0L7QsdGJ0LXQvdC40Y8g0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQntGC0LLQtdGC0YHRgtCy0LXQvdC90L7Qs9C+INC30LAg0LfQsNGP0LLQutGDINC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0LXRgNCy0LjRgSDQtNC70Y8g0LfQsNGP0LLQutC4INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuICjQn9Cw0YDQsNC80LXRgtGAIFRpY2tldDo6U2VydmljZSDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0LLQutC70Y7Rh9C10L0pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0JLQu9Cw0LTQtdC70YzRhtCwINC30LDRj9Cy0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLQuNC/INC30LDRj9Cy0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAo0J/QsNGA0LDQvNC10YLRgCBUaWNrZXQ6OlNlcnZpY2Ug0LTQvtC70LbQtdC9INCx0YvRgtGMINCy0LrQu9GO0YfQtdC9KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHRgdGL0LvQutGDINCyINC80LXQvdGOINC00LvRjyDQuNC30LzQtdC90LXQvdC40Y8gTWFzdGVyU2xhdmUg0YHRgtCw0YLRg9GB0LAgINC90LAg0Y3QutGA0LDQvdC1INC/0YDQvtGB0LzQvtGC0YDQsCDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0YHQv9C40YHQvtC6INCy0YHQtdGFINC/0YDQuNCy0LvQtdC60LDQtdC80YvRhSDQsNCz0LXQvdGC0L7QsiDQv9C+INGN0YLQvtC5INC30LDRj9Cy0LrQtSDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0YHQv9C40YHQvtC6INCy0YHQtdGFINC00L7RgdGC0YPQv9C90YvRhSDQsNCz0LXQvdGC0L7QsiAo0LLRgdC10YUg0LDQs9C10L3RgtC+0LIg0YEg0L/RgNCw0LLQsNC80Lggbm90ZSDQtNC70Y8g0L7Rh9C10YDQtdC00Lgv0LfQsNGP0LLQutC4KSwg0YfRgtC+0LHRiyDQt9Cw0LTQsNGC0Ywg0LrQvtCz0L4g0L3Rg9C20L3QviDQuNC90YTQvtGA0LzQuNGA0L7QstCw0YLRjCDQvtCxINGN0YLQvtC5INC30LDQvNC10YLQutC1INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNCw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC40LfQvNC10L3QuNGC0Ywg0L/RgNC40L7RgNC40YLQtdGCINC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGRzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQuNC30LzQtdC90LjRgtGMINGC0LXQvNGDINC30LDRj9Cy0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YDQsNC30LvQuNGH0L3Ri9C1INGC0LjQv9GLINGB0L7QvtCx0YnQtdC90LjQuS/Qt9Cw0LzQtdGC0L7QuiDQtNC70Y8g0YHQu9GD0YfQsNGPINC30LDQvNC10L3RiyDRgNC10LDQu9GM0L3QvtCz0L4g0LjQvNC10L3QuCDQuNC3INCz0LvQsNCy0L3QvtC5INC30LDRj9Cy0LrQuCDQsiDRgtCw0LrQuNC8INC20LUg0LIg0L/QvtC00YfQuNC90LXQvdC90L7QuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAn0K3RgtC+0YIg0LzQvtC00YPQu9GMINCy0LrQu9GO0YfQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQstGL0LHQvtGA0LAgbWFzdGVyL3NsYXZlINC+0L/RhtC40Lgg0L3QsCDRjdC60YDQsNC90LUg0YHQvtC30LTQsNC90LjRjyDQt9Cw0Y/QstC60LgsINC90LAg0L7RgdC90L7QstC1INGC0LXQu9C10YTQvtC90L3QvtCz0L4g0LfQstC+0L3QutCwINC40LvQuCDQv9C40YHRjNC80LAg0LrQu9C40LXQvdGC0LAg0LDQs9C10L3RgtC+0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICcnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSDRgdGC0LDRgtGD0YHQvtC8INCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQt9CwICVzJXMlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgTWFzdGVyL1NsYXZlIFZhbHVlJ30gPSAn0J/QvtC00LXRgdC4INCy0YDQtdC00L3QvtGB0YIg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4ICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICfQndC+0LLQuCDQs9C70LDQstC90Lgg0YLQuNC60LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAn0J7Qv9C+0LfQvtCy0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LUg0LPQu9Cw0LLQvdC+0LMg0YLQuNC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ9Ce0L/QvtC30L7QstC4INC/0L7QtNC10YjQsNCy0LDRmtC1INC30LDQstC40YHQvdC+0LMg0YLQuNC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ9Ce0L/QvtC30L7QstC4INC/0L7QtNC10YjQsNCy0LDRmtC1INCz0LvQsNCy0L3QuNGFINGC0LjQutC10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAn0J7Qv9C+0LfQvtCy0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LUg0LfQsNCy0LjRgdC90LjRhSDRgtC40LrQtdGC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ9CT0LvQsNCy0L3QuCDRgtC40LrQtdGCJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAn0KHQstC4INCz0LvQsNCy0L3QuCDRgtC40LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICfQodCy0Lgg0LfQsNCy0LjRgdC90Lgg0YLQuNC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC+0LfQstC+0ZnQsNCy0LAg0LTQvtC00LDQstCw0ZrQtSDQsdC10LvQtdGI0LrQuCDQvdCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0L7Qv9C10YDQsNGC0LXRgNGB0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn0J/RgNC+0LzQtdC90Lgg0JPQu9Cw0LLQvdC4L9CX0LDQstC40YHQvdC4INGB0YLQsNGC0YPRgSDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAn0JTQtdGE0LjQvdC40YjQtSDQtNC40L3QsNC80LjRh9C60Lgg0L3QsNC30LjQsiDQv9C+0ZnQsCDQt9CwINGE0YPQvdC60YbQuNGY0YMg0LPQu9Cw0LLQvdC+0LMg0YLQuNC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LTQsCDQu9C4INGY0LUg0L/QvtGC0YDQtdCx0L3QviDQt9Cw0LrRmdGD0YfQsNGC0Lgg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INC10LrRgNCw0L0g0YLQuNC60LXRgtCwINC90LAg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwICjQsNC60L4g0YLQuNC60LXRgiDRmNC+0Ygg0YPQstC10Log0L3QuNGY0LUg0LfQsNC60ZnRg9GH0LDQvSwg0YLQuNC60LXRgiDRm9C1INC00L7QsdC40YLQuCDRgdGC0LDRgtGD0YEg0LfQsNC60ZnRg9GH0LDQvSDQuCDRgtGA0LXQvdGD0YLQvdC4INC+0L/QtdGA0LDRgtC10YAg0ZvQtSDQsdC40YLQuCDQsNGD0YLQvtC80LDRgtGB0LrQuCDQv9C+0YHRgtCw0LLRmdC10L0g0LrQsNC+INCy0LvQsNGB0L3QuNC6KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQvdCw0YDQtdC00L3QuCDRgdGC0LDRgtGD0YEg0YLQuNC60LXRgtCwINC/0L7RgdC70LUg0LTQvtC00LDQstCw0ZnQsCDQsdC10LvQtdGI0LrQtSwg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQuNC+0YDQuNGC0LXRgiDRgtC40LrQtdGC0LAg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YLQuNC/INCx0LXQu9C10YjQutC1INC90LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC60L7QvNC10L3RgtCw0YAg0LfQsCDQuNGB0YLQvtGA0LjRmNCw0YIg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGB0LrQvtGYINCw0LrRhtC40ZjQuCwg0YjRgtC+INGb0LUg0YHQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0LfQsCDQuNGB0YLQvtGA0LjRmNCw0YIg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgtC40L8g0LjRgdGC0L7RgNC40ZjQsNGC0LAg0LfQsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGB0LrRgyDQsNC60YbQuNGY0YMsINGI0YLQviDRm9C1INGB0LUg0LrQvtGA0LjRgdGC0LjRgtC4INC30LAg0LjRgdGC0L7RgNC40ZjQsNGCINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L3QsNGA0LXQtNC90Lgg0YHRgtCw0YLRg9GBINGC0LjQutC10YLQsCDQv9C+0YHQu9C1INC00L7QtNCw0LLQsNGZ0LAg0LHQtdC70LXRiNC60LUsINC90LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc2FibGVkJ30gPSAn0J7QvdC10LzQvtCz0YPRm9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJ9Ce0LzQvtCz0YPRm9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICfQkNC60YLQuNCy0LjRgNCwINC90LDQv9GA0LXQtNC90Lgg0LTQtdC+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+0LMg0YLQuNC60LXRgtCwINCx0LjRgtC4INC30LDQvNC10ZrQtdC90L4g0YHQsCDRmNC10LTQvdC40Lwg0L3QsCDQt9Cw0LLQuNGB0L3QvtC8INGC0LjQutC10YLRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAn0J7QstCw0Zgg0LzQvtC00YPQuyDQsNC60YLQuNCy0LjRgNCwINC/0L7RmdC1INCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQvdCwINC10LrRgNCw0L3RgyDQvdC+0LLQuNGFINC40LzQtdGY0Lsg0Lgg0YLQtdC70LXRhNC+0L3RgdC60LjRhSDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICfQotC40LrQtdGCINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuC4nOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ1VwcmF2bGphbmplIHN0YXR1c29tIEdsYXZuaS9aYXZpc25pIHphICVzJXMlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgTWFzdGVyL1NsYXZlIFZhbHVlJ30gPSAnUG9kZXNpIHZyZWRub3N0IEdsYXZuaS9aYXZpc25pICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICdOb3ZpIGdsYXZuaSB0aWtldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnT3Bvem92aSBwb2RlxaFhdmFuamUgZ2xhdm5vZyB0aWtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnT3Bvem92aSBwb2RlxaFhdmFuamUgemF2aXNub2cgdGlrZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ09wb3pvdmkgcG9kZcWhYXZhbmplIGdsYXZuaWggdGlrZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdPcG96b3ZpIHBvZGXFoWF2YW5qZSB6YXZpc25paCB0aWtldGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ0dsYXZuaSB0aWtldCc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ1N2aSBnbGF2bmkgdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnU3ZpIHphdmlzbmkgdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEb3p2b2xqYXZhIGRvZGF2YW5qZSBiZWxlxaFraSBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIG9wZXJhdGVyc2tvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnUHJvbWVuaSBHbGF2bmkvWmF2aXNuaSBzdGF0dXMgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ0RlZmluacWhZSBkaW5hbWnEjWtpIG5heml2IHBvbGphIHphIGZ1bmtjaWp1IGdsYXZub2cgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBkYSBsaSBqZSBwb3RyZWJubyB6YWtsanXEjWF0aSBnbGF2bmkvemF2aXNuaSBla3JhbiB0aWtldGEgbmEgZGV0YWxqbm9tIHByaWthenUgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEgKGFrbyB0aWtldCBqb8WhIHV2ZWsgbmlqZSB6YWtsanXEjWFuLCB0aWtldCDEh2UgZG9iaXRpIHN0YXR1cyB6YWtsanXEjWFuIGkgdHJlbnV0bmkgb3BlcmF0ZXIgxIdlIGJpdGkgYXV0b21hdHNraSBwb3N0YXZsamVuIGthbyB2bGFzbmlrKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgbmFyZWRuaSBzdGF0dXMgdGlrZXRhIHBvc2xlIGRvZGF2YWxqYSBiZWxlxaFrZSwgbmEgZ2xhdm5pL3phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHByaW9yaXRldCB0aWtldGEgbmEgZ2xhdm5pL3phdmlzbmkgZWthbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdHlwZSBvZiB0aGUgbm90ZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHRpcCBiZWxlxaFrZSBuYSBnbGF2bmkvemF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUga29tZW50YXIgemEgaXN0b3JpamF0IG5hIGdsYXZuaS96YXZpc25pIGVrcmFuc2tvaiBha2NpamksIMWhdG8gxIdlIHNlIGtvcmlzdGl0aSB6YSBpc3RvcmlqYXQgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSB0aXAgaXN0b3JpamF0YSB6YSBnbGF2bmkvemF2aXNuaSBla3JhbnNrdSBha2NpanUsIMWhdG8gxIdlIHNlIGtvcmlzdGl0aSB6YSBpc3RvcmlqYXQgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBuYXJlZG5pIHN0YXR1cyB0aWtldGEgcG9zbGUgZG9kYXZhbGphIGJlbGXFoWtlLCBuYSBnbGF2bmkvemF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc2FibGVkJ30gPSAnT25lbW9ndcSHZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJ09tb2d1xIdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ0FrdGl2aXJhIG5hcHJlZG5pIGRlbyBmdW5rY2lqZSBHbGF2bmkvWmF2aXNuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0FrdGl2aXJhbmplIHN2b2pzdHZhIGRhIHphdmlzbmkgdGlrZXQgcHJhdGkgZ2xhdm5pIG5hIG5vdmkgZ2xhdm5pIHUgbmFwcmVkbm9tIEdsYXZuaS9aYXZpc25pIG1vZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0FrdGl2aXJhbmplIGZ1bmtjaWplIHphIHByb21lbnUgc3RhbmphIHRpa2V0YSBHbGF2bmkvWmF2aXNuaSAgdSBuYXByZWRub20gR2xhdm5pL1phdmlzbmkgbW9kdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnQWt0aXZpcmFuamUgc3ZvanN0dmEgemEgcHJvc2xlxJFpdmFuamUgxI1sYW5ha2Egb2QgdGlwYSDigJ5wcm9zbGVkaeKAnSBnbGF2bm9nIHRpa2V0YSBrb3Jpc25pY2ltYSB6YXZpc25paCB0aWtldGEuIFBvZHJhenVtZXZhbm8gamUgKGlza2xqdcSNZW5vKSBkYSBzZSBuacWhdGEgbmUgcHJvc2xlxJF1amUgemF2aXNuaW0gdGlrZXRpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWt0aXZpcmFuamUgZnVua2NpamUgemEgemFkcsW+YXZhbmplIHZlemUgbmFkcmXEkWVuaS1wb2RyZcSRZW5pIHBvc2xlIGl6bWVuZSBzdGFuamEgR2xhdm5pL1phdmlzbmkgIHUgbmFwcmVkbm9tIEdsYXZuaS9aYXZpc25pIG1vZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmlyYW5qZSBmdW5rY2lqZSB6YSB6YWRyxb5hdmFuamUgdmV6ZSBuYWRyZcSRZW5pLXBvZHJlxJFlbmkgcG9zbGUgb3Bveml2YSBwb2RlxaFhdmFuamEgc3RhbmphIEdsYXZuaS9aYXZpc25pICB1IG5hcHJlZG5vbSBHbGF2bmkvWmF2aXNuaSBtb2R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0FrdGl2aXJhbmplIGZ1bmtjaWplIHphIG9wb3ppdiBwb2RlxaFhdmFuamEgc3RhbmphIHRpa2V0YSBHbGF2bmkvWmF2aXNuaSAgdSBuYXByZWRub20gR2xhdm5pL1phdmlzbmkgbW9kdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWtvIGplIG9wZXJhdGVyIGRvZGFvIG5hcG9tZW51LCBwb2RlxaFhdmEgc3RhdHVzIHRpa2V0YSBuYSBla3JhbnUgR2xhdm5pL1phdmlzbmkgdGlrZXRhIG5hIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnR2xhdm5pIC8gWmF2aXNuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ0dsYXZuaSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdHbGF2bmkvWmF2aXNuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTW9kdWwgR2xhdm5pL1phdmlzbmkgemEgZnVua2NpanUgbWFzb3ZuZSBvYnJhZGUgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgcG96YWRpbnNraSBwcmlrYXoga29udHJvbG5lIHRhYmxlIHByZWdsZWRhIGdsYXZuaWggdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuIOKAnkxpbWl04oCdIGplIGJyb2ogdW5vc2EgcG9kcmV6dW1ldmFubyBwcmlrYXphbmloLiDigJ5HcnVwYeKAnSBzZSBrb3Jpc3RpIGRhIG9ncmFuacSNaSBwcmlzdHVwIGRvZGF0a3UgKG5wci4gR3J1cGE6IGFkbWluO2dyb3VwMTtncm91cDI7KS4g4oCeUG9kcmF6dW1ldmFub+KAnSBvZHJlxJF1amUgZGEgbGkgamUgcG9kcmF6dW1ldmFubyBha3RpdmlyYW4gaWxpIGRhIGplIHBvdHJlYm5vIGRhIGdhIGtvcmlzbmlrIG1hbnVlbG5vIGFrdGl2aXJhLiDigJ5DYWNoZVRUTExvY2Fs4oCdIGplIHZyZW1lIHUgbWludXRhbWEgemEga2XFoSBkb2RhdGthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBwb3phZGluc2tpIHByaWtheiBrb250cm9sbmUgdGFibGUgcHJlZ2xlZGEgZ2xhdm5paCB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4g4oCeTGltaXTigJ0gamUgYnJvaiB1bm9zYSBwb2RyZXp1bWV2YW5vIHByaWthemFuaWguIOKAnkdydXBh4oCdIHNlIGtvcmlzdGkgZGEgb2dyYW5pxI1pIHByaXN0dXAgZG9kYXRrdSAobnByLiBHcnVwYTogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiDigJ5Qb2RyYXp1bWV2YW5v4oCdIG9kcmXEkXVqZSBkYSBsaSBqZSBwb2RyYXp1bWV2YW5vIGFrdGl2aXJhbiBpbGkgZGEgamUgcG90cmVibm8gZGEgZ2Ega29yaXNuaWsgbWFudWVsbm8gYWt0aXZpcmEuIOKAnkNhY2hlVFRMTG9jYWzigJ0gamUgdnJlbWUgdSBtaW51dGFtYSB6YSBrZcWhIGRvZGF0a2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdSZWdpc3RyYWNpamEgbW9kdWxhIGRvZ2HEkWFqYSB6YSB0aWtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lb3Bob2RuYSBkb3p2b2xhIHphIHVwb3RyZWJ1IGdsYXZuaS96YXZpc25pIGVrcmFuYSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgc2FkcsW+YWogemEgbmFwb21lbmUgZG9kYXRlIG5hIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHByZWRtZXQgemEgbmFwb21lbmUgZG9kYXRlIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBvZGdvdm9ybm9nIG9wZXJhdGVyYSB6YSB0aWtldCBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnT2RyZcSRdWplIHNlcnZpcyBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEgKFBvdHJlYm5vIGplIGFrdGl2aXJhdGkgVGlrZXQ6OlNlcnZpcykuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgdmxhc25pa2EgdGlrZXRhIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnT2RyZcSRdWplIHRpcCB0aWtldGEgbmEgR2xhdm5pL1phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhIChQb3RyZWJubyBqZSBha3RpdmlyYXRpIFRpa2V0OjpUaXApLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIGl6bWVudSBHbGF2bmkvWmF2aXNuaSBzdGF0dXNhIHRpa2V0YSBuYSBkZXRhbGpub20gcHJpa2F6dSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthenVqZSBsaXN0dSBzdmloIG9wZXJhdGVyYSB1a2xqdcSNZW5paCB1IG92YWogdGlrZXQgbmEgR2xhdm5pL1phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgbGlzdHUgc3ZpaCBtb2d1xIdpaCBvcGVyYXRlcmEgKHN2aSBvcGVyYXRlcmkgc2EgZG96dm9sb20gemEgbmFwb21lbnUgemEgcmVkL3Rpa2V0KSByYWRpIHV0dnLEkWl2YW5qYSBrbyB0cmViYSBkYSBidWRlIGluZm9ybWlzYW4gbyBvdm9qIG5hcG9tZW5pLCBuYSBHbGF2bmkvWmF2aXNuaSBla3JhbnUgdGlrZXRhIG5hIGRldGFsam5vbSBwcmlrYXp1IHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgb3BjaWplIHByaW9yaXRldGEgdGlrZXRhIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSB0aWtldGEgbmEgZGV0YWxqbm9tIHByaWthenUgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgbmFzbG92bmEgcG9samEgbmEgR2xhdm5pL1phdmlzbmkgZWtyYW51IHRpa2V0YSBuYSBkZXRhbGpub20gcHJpa2F6dSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ1phdmlzbmkgdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ05hdm9kaSByYXpuZSB0aXBvdmUgxI1sYW5ha2EgZ2RlIMSHZSBzdHZhcm5vIGltZSBzYSBnbGF2bm9nIHRpa2V0YSBiaXRpIHphbWVuamVubyBzYSBqZWRuaW0gbmEgemF2aXNub20gdGlrZXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdPdmFqIG1vZHVsIGFrdGl2aXJhIHBvbGplIEdsYXZuaS9aYXZpc25pIG5hIGVrcmFudSBub3ZpaCBpbWVqbCBpIHRlbGVmb25za2loIHRpa2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJ1Rpa2V0IEdsYXZuaS9aYXZpc25pLic7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUnVodXN1IGt1b25nZXphIHZpZG9rZXppIGthdGlrYSBza3JpbmkgeWEgTWt1dU10dW13YSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdCYWRpbGlzaGEgaGFsaSB5YSBNa3V1L210dW13YSB5YSB0aWtldGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnRmFmYW51YSBrYW1hIGt1ZnVuZ2Ega3dhIHRpa2V0aSBrdW5haGl0YWppa2Ega2F0aWthIHNrcmluaSB5YSB0aWtldGkgeWEgIG1rdXVtdHVtd2EgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhIChrYW1hIHRpa2V0aSBoYWlqYWZ1bmd3YSBiYWRvLCB0aWtldGkgemlwYXR3ZSBrdWZ1bmd3YSBuYSB3YWthbGEgd2Egc2FzYSBhdGFmYW55d2EgYXV0b21hdGlraSBrdXdhIG1taWxpa2kgd2FrZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBsYSBoYWxpIGl5YWpvIHlhIHRpa2V0aSBiYWFkYSB5YSBrdW9uZ2V6YSBraWRva2V6bywga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBraXBhdW1iZWxlIGNoYWd1by1tc2luZ2kgY2hhIHRpa2V0aSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0eXBlIG9mIHRoZSBub3RlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBhaW5hIHlhIGNoYWd1by1tc2luZ2kgbGEga2lkb2tlem8ga3dhIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGhpc3RvcmlhIHlhIG1hb25pIGt3YSBraXRlbmRvIGNoYSBza3JpbmkgeWEgdGlrZXRpIG1rdXVtdHVtd2EsIGFtYmF5byBpbmF0dW1pa2EgbmEgaGlzdG9yaWEgeWEgdGlrZXRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmFmYW51YSBhaW5hIHlhIGhpc3RvcmlhIGt3YSBraXRlbmRvIGNoYSBza3JpbmkgeWEgbWt1dW10dW13YSBjaGEgdGlrZXRpLCBhbWJhY2hvIGtpbmF0dW1pa2EgbmEgaGlzdG9yaWEgeWEgdGlrZXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZhZmFudWEgaGFsaSBpbmF5b2Z1YXRhIHlhIHRpa2V0aSBiYWFkYSB5YSBrdW9uZ2V6YSBraWRva2V6bywga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc2FibGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2FtYSBraWRva2V6byBraW1lb25nZXp3YSBuYSB3YWthbGEsIGluYXdla2EgaGFsaSB5YSB0aWtldGkga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldGEga3dhIGJhY2tlbmQgeWEgZGFzaWJvZGkgeWEgbWFwaXRpbyB5YSB0aWtldGkga3V1IHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLiBcJ1wnS2lrb21vXCdcJyBuaSBuYW1iYSB5YSB2aXBlbmdlZSBoYWxpc2kgdmluYXZ5b29ueWVzaHdhIGt3YSBtY2hhZ3VvLWhhbGlzaS4gXCdcJ0tpa3VuZGlcJ1wnIGtpbmF0dW1pa2Ega3V6dWlhIGt1ZmlraWEga3VjaG9tZWthIChtZmFubyBLaWt1bmRpOlV0YXdhbGE7a2lrdW5kaSBjaGEgMTtraWt1bmRpIGNoYSAyOykuIFwnXCdDaGFndW8tbXNpbmdpXCdcJyBpbmFoYWtpa2kga2FtYSBtY2hvbWVrbyB1bWV3ZXplc2h3YSBrd2EgbWNoYWd1by1tc2luZ2kgYXUga2FtYSBtdHVtaXppIGFuYWhpdGFqaSBrdXdlemVzaGEga3dhIG1rb25vLiBcJ1wnSGlmYWRoaW11ZGFUVExLaWFtYm9cJ1wnIG5pIG11ZGEgd2EgaGlmYWRoaSBtdWRhIGthdGlrYSBkYWtpa2Ega3dhIG1jaG9tZWtvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRhIGt3YSBiYWNrZW5kIHlhIGRhc2lib2RpIHlhIG1hcGl0aW8geWEgdGlrZXRpIHR1bXdhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLiBcJ1wnS2lrb21vXCdcJyBuaSBuYW1iYSB5YSB2aXBlbmdlZSBoYWxpc2kgdmluYXZ5b29ueWVzaHdhIGt3YSBtY2hhZ3VvLWhhbGlzaS4gXCdcJ0tpa3VuZGlcJ1wnIGtpbmF0dW1pa2Ega3V6dWlhIGt1ZmlraWEga3VjaG9tZWthIChtZmFubyBLaWt1bmRpOlV0YXdhbGE7a2lrdW5kaSBjaGEgMTtraWt1bmRpIGNoYSAyOykuIFwnXCdDaGFndW8tbXNpbmdpXCdcJyBpbmFoYWtpa2kga2FtYSBtY2hvbWVrbyB1bWV3ZXplc2h3YSBrd2EgbWNoYWd1by1tc2luZ2kgYXUga2FtYSBtdHVtaXppIGFuYWhpdGFqaSBrdXdlemVzaGEga3dhIG1rb25vLiBcJ1wnSGlmYWRoaW11ZGFUVExLaWFtYm9cJ1wnIG5pIG11ZGEgd2EgaGlmYWRoaSBtdWRhIGthdGlrYSBkYWtpa2Ega3dhIG1jaG9tZWtvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnVXNhamlsaSB3YSBraXBpbW8gY2hhIHR1a2lvIGxhIHRpa2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBtYXRpbmkga2lpbmkga2lsaWNob29uZ2V6d2EgY2hhIGNoYWd1by1tc2luZ2kga2F0aWthIHNrcmluaSB5YSBta3V1bXR1d2EgeWEgdGlrZXRpIGthdGlrYSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIHNvbW8gbGEgY2hhZ3VvLW1zaW5naSBrd2Ega2lwZW5nZWxlIGtpbGljaG9vbmdlendhIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dXdhIHlhIHRpa2V0aSBrYXRpa2EgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSB3YWthbGEgYW1iYXllIGFuYWh1c2lrYSBuYSB0aWtldGkga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2F0IGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0luYXdla2EgaHVkdW1hIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhIChUaWtldGk6Okh1ZHVtYSBpbmF5b2hpdGFqaSBrdWFtaWxpc2h3YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYXdla2EgbW1pbGlraSB3YSB0aWtldGkga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0luYXdla2EgYWluYSB5YSB0aWtldGkga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEgKHRpa2V0aTo6IGFpbmEgaW5heW9pdGFqaSBrdWFtaWxpc2h3YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGNoYSBrdWJhZGlsaXNoYSBoYWRoaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSBrYXRpa2EgbWFuZGhhcmkgaWxpeW9rdXp3YSB5YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIG9yb2RoYSB5YSBtYXdha2FsYSB3b3RlIHdhbmFvaHVzaWthIG5hIHRpa2V0aSBoaWksIGthdGlrYSBza3JpbmkgeWEgdGlrZXRpIG1rdXUvbXR1bXdhIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBvcm9kaGEgeWEgd2FrYWxhIHdvdGUgd2FuYW93ZXphIChtYXdha2FsYSB3b3RlIHdlbnllIGtpZG9rZXpvIGNoYSBydWh1c2EgeWEgdGlrZXRpL2ZvbGVuaSkga3V0YW1idWEgbmFuaSBhdGFhcmlmaXdlIGt1aHVzdSBraWRva2V6byBoaWtpLCBrYXRpa2Egc2tyaW5pIHlhIHRpa2V0aSBta3V1bXR1bXdhIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2h3YSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEgbWFjaGFndW8geWEga2lwYXVtYmVsZSB5YSB0aWtldGkga2F0aWthIHNrcmluaSB5YSB0aWtldGkgbWt1dW10dW13YSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZHMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpY2h3YSBjaGEgaGFiYXJpIGthdGlrYSBza3JpbmkgeWEgdGlrZXRpIG1rdXVtdHVtd2EgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ0luYWJhaW5pc2hhIGFpbmEgbWJhbGltYmFsaSB6YSBtYWthbGEgYW1iYXpvIG1hamluYSB5YWtlIHlhIHVrd2VsaSBrdXRva2EgdGlrZXRpIGt1dSB5YXRhYmFkaWxpc2h3YSBuYSBtb2phd2FwbyBrYXRpa2EgdGlrZXRpIHR1bXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ+C4o+C4sOC4muC4uOC4hOC5iOC4suC4guC4reC4hyDguKHguLLguKrguYDguJXguK3guKPguYwvU2xhdmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAn4LiV4Lix4LmL4Lin4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmM4LmD4Lir4Lih4LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICfguKLguIHguYDguKXguLTguIHguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJXguLHguYvguKfguKHguLLguKrguYDguJXguK3guKPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAn4Lii4LiB4LmA4Lil4Li04LiB4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiV4Lix4LmL4LinU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+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/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYDguIvguJXguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguJXguLHguYvguKfguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4Lir4Liy4LiB4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LmE4LiU4LmJ4LmA4Lie4Li04LmI4Lih4LmC4LiZ4LmJ4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAn4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmML1NsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICfguYLguKHguJTguLnguKUg4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmML1NsYXZlIOC4quC4s+C4q+C4o+C4seC4muC4hOC4uOC4k+C4peC4seC4geC4qeC4k+C4sOC4geC4peC4uOC5iOC4oeC4leC4seC5i+C4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJTguIrguJrguK3guKPguYzguJTguYDguJrguLfguYnguK3guIfguKvguKXguLHguIfguILguK3guIfguKDguLLguJ7guKPguKfguKHguJXguLHguYvguKdtYXN0ZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4Liq4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICLguIjguLPguIHguLHguJQiIOC4hOC4t+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+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC5geC4lOC4iuC4muC4reC4o+C5jOC4lOC5gOC4muC4t+C5ieC4reC4h+C4q+C4peC4seC4h+C4guC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4leC4seC5i+C4p3NsYXZlIHTguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guKrguYDguK3guYDguKLguYjguJnguJXguYwgIuC4iOC4s+C4geC4seC4lCIg4LiE4Li34Lit4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4LiC4Lit4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LmB4Liq4LiU4LiH4LmC4LiU4Lii4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZICLguIHguKXguLjguYjguKEiIOC4iOC4sOC4luC4ueC4geC4meC4s+C4oeC4suC5g+C4iuC5ieC5gOC4nuC4t+C5iOC4reC4iOC4s+C4geC4seC4lOC4geC4suC4o+C5gOC4guC5ieC4suC4luC4tuC4h+C4m+C4peC4seC5iuC4geC4reC4tOC4mSAo4LmA4LiK4LmI4LiZ4LiB4Lil4Li44LmI4LihOiDguJzguLnguYnguJTguLnguYHguKXguKPguLDguJrguJo7IOC4geC4peC4uOC5iOC4oSAxOyDguIHguKXguLjguYjguKEyOykgIuC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSIg4Lij4Liw4Lia4Li44Lin4LmI4Liy4LiW4LmJ4Liy4Lib4Lil4Lix4LmK4LiB4Lit4Li04LiZ4LiW4Li54LiB4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LmC4LiU4Lii4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Lir4Lij4Li34Lit4Lir4Liy4LiB4Lic4Li54LmJ4LmD4LiK4LmJ4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmA4Lie4Li34LmI4Lit4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LmE4LiU4LmJ4LiU4LmJ4Lin4Lii4LiV4LiZ4LmA4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICfguLLguKPguKXguIfguJfguLDguYDguJrguLXguKLguJnguILguK3guIfguYLguKHguJTguLnguKXguJXguLHguYvguKfguIHguLTguIjguIHguKPguKPguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC5g+C4meC4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguKPguLDguJrguLjguILguYnguK3guITguKfguLLguKHguKrguYjguKfguJnguYDguJnguLfguYnguK3guKvguLLguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguYLguJnguYnguJXguJfguLXguYjguJbguLnguIHguYDguJ7guLTguYjguKHguYDguILguYnguLLguKHguLLguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguKPguLDguJrguLjguKvguLHguKfguILguYnguK3guYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguYLguJnguYnguJXguJfguLXguYjguJbguLnguIHguYDguJ7guLTguYjguKHguYDguILguYnguLLguKHguLLguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYDguK3guYDguKLguYjguJnguJXguYzguJfguLXguYjguKPguLHguJrguJzguLTguJTguIrguK3guJrguJXguLHguYvguKfguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiB4Liy4Lij4Lia4Lij4Li04LiB4Liy4Lij4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAo4LiV4Lix4LmL4LinIDo64LiB4Liy4Lij4Lia4Lij4Li04LiB4Liy4Lij4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYDguIjguYnguLLguILguK3guIfguJXguLHguYvguKfguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwgKOC4leC4seC5i+C4pyA6OuC4m+C4o+C4sOC5gOC4oOC4l+C4leC4seC5i+C4p+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4mSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guYDguJvguKXguLXguYjguKLguJnguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKPguLLguKLguIrguLfguYjguK3guILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYzguJfguLXguYjguYDguIHguLXguYjguKLguKfguILguYnguK3guIfguIHguLHguJrguJXguLHguYvguKfguJnguLXguYnguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4o+C4suC4ouC4iuC4t+C5iOC4reC5gOC4reC5gOC4ouC5iOC4meC4leC5jOC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5ieC4l+C4seC5ieC4h+C4q+C4oeC4lCAo4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiX4Li14LmI4LmE4LiU4LmJ4Lij4Lix4Lia4LmC4LiZ4LmJ4LiV4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiE4Li04LinL+C4leC4seC5i+C4pykg4LmA4Lie4Li34LmI4Lit4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4LmD4LiE4Lij4LiE4Lin4Lij4Lij4Liy4Lii4LiH4Liy4LiZ4LmA4LiB4Li14LmI4Lii4Lin4LiB4Lix4Lia4LmC4LiZ4LmJ4LiV4LiZ4Li14LmJ4LmD4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4leC4seC4p+C5gOC4peC4t+C4reC4geC4peC4s+C4lOC4seC4muC4hOC4p+C4suC4oeC4quC4s+C4hOC4seC4jeC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4n+C4tOC4peC4lOC5jOC4iuC4t+C5iOC4reC5gOC4o+C4t+C5iOC4reC4h+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIHR5cGVzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICfguKPguLDguJrguLjguJvguKPguLDguYDguKDguJfguJrguJfguITguKfguLLguKHguJfguLXguYjguYHguJXguIHguJXguYjguLLguIfguIHguLHguJnguIvguLbguYjguIfguIrguLfguYjguK3guIjguKPguLTguIfguIjguLLguIHguJXguLHguYvguKfguKHguLLguKrguYDguJXguK3guKPguYzguIjguLDguJbguLnguIHguYHguJfguJnguJfguLXguYjguJTguYnguKfguKLguKvguJnguLbguYjguIfguYPguJnguJXguLHguYvguKdTbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguJnguLXguYnguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguJ/guLTguKXguJTguYwgTWFzdGVyIC9TbGF2ZSDguYPguJnguKvguJnguYnguLLguIjguK3guK3guLXguYDguKHguKXguYPguKvguKHguYjguYHguKXguLDguJXguLHguYvguKfguYLguJfguKPguKjguLHguJ7guJfguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICfnrqHnkIYlcyVzJXPnmoQg5Li7L+S7jiDnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IE1hc3Rlci9TbGF2ZSBWYWx1ZSd9ID0gJ+iuvue9riDkuLsv5LuOIOWAvCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICfmlrDlu7rkuLvlt6XljZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ+S4u+W3peWNlei9rOS4uuaZrumAmuW3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICfku47lt6XljZXovazkuLrmma7pgJrlt6XljZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyVzJXMlc+eahOS7juW3peWNle+8miVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICflj5bmtojkuLvlt6XljZXorr7nva4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJ+WPlua2iOS7juW3peWNleiuvue9ric7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAn5Li75bel5Y2VJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAn5omA5pyJ55qE5Li75bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAn5omA5pyJ55qE5LuO5bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkuLsv5LuO5bel5Y2V6K+m5oOF56qX5Y+j5YWB6K645re75Yqg5aSH5rOo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICfkv67mlLnlt6XljZXkuLsv5LuO54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAn5a6a5LmJ5Li75bel5Y2V5Yqf6IO955qE5Yqo5oCB5a2X5q615ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Zyo5bel5Y2V5Li75LuO6K6+572u56qX5Y+j5piv5ZCm6ZyA6KaB5bel5Y2V6ZSB5a6a77yI5aaC5p6c5bel5Y2V6L+Y5rKh5pyJ6ZSB5a6a77yM5YiZ5bel5Y2V6KKr6ZSB5a6a5LiU5b2T5YmN5pyN5Yqh5Lq65ZGY6KKr6Ieq5Yqo6K6+572u5Li65bel5Y2V5omA5pyJ6ICF77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieacjeWKoeS6uuWRmOeVjOmdouWcqOW3peWNleS4u+S7juiuvue9rueql+WPo+a3u+WKoOWkh+azqOWQjueahOm7mOiupOS4i+S4gOS4quW3peWNleeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieacjeWKoeS6uuWRmOeVjOmdouWcqOW3peWNleS4u+S7juiuvue9rueql+WPo+a3u+WKoOWkh+azqOWQjuW3peWNleeahOm7mOiupOS8mOWFiOe6p+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHR5cGUgb2YgdGhlIG5vdGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnmnI3liqHkurrlkZjnlYzpnaLlnKjlt6XljZXkuLvku47orr7nva7nqpflj6Pmt7vliqDlpIfms6jlkI7lt6XljZXnmoTpu5jorqTlpIfms6jnsbvlnovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieW3peWNleS4u+S7juiuvue9rueql+WPo+aTjeS9nOeahOWOhuWPsuazqOmHiu+8jOS7peeUqOS6juacjeWKoeS6uuWRmOeVjOmdoueahOW3peWNleWOhuWPsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5bel5Y2V5Li75LuO6K6+572u56qX5Y+j5pON5L2c55qE5Y6G5Y+y57G75Z6L77yM5Lul55So5LqO5pyN5Yqh5Lq65ZGY55WM6Z2i55qE5bel5Y2V5Y6G5Y+y44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnmnI3liqHkurrlkZjnlYzpnaLlnKjlt6XljZXkuLvku47orr7nva7nqpflj6Pmt7vliqDlpIfms6jlkI7nmoTkuIvkuIDkuKrlt6XljZXnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzYWJsZWQnfSA9ICflt7LnpoHnlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlZCd9ID0gJ+W3suWQr+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ+WQr+eUqOS4u+S7juWKn+iDveeahOmrmOe6p+aooeW8j+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn5ZCv55So6auY57qn5Li75LuO5qih5byP5LiL5LuO5bel5Y2V6ZqP5Li75bel5Y2V5Yiw5LiA5Liq5paw55qE5Li75bel5Y2V55qE5Yqf6IO944CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ+WQr+eUqOacrOWKn+iDveWQju+8jOWPr+S/ruaUueS4gOS4quW3peWNleWcqOmrmOe6p+S4u+S7juaooeW8j+S4i+eahOS4u+S7jueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICflkK/nlKjmnKzlip/og73lkI7vvIzlsIbigJzovazlj5HigJ3nsbvlnovnmoTkuLvlt6XljZXkv6Hku7bovazlj5HliLDku47lt6XljZXnmoTlrqLmiLfjgILpu5jorqTvvIjlt7LnpoHnlKjvvInkuI3ovazlj5HigJzovazlj5HigJ3nsbvlnovnmoTkv6Hku7bliLDku47lt6XljZXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICflkK/nlKjmnKzlip/og73lkI7vvIzlnKjpq5jnuqfkuLvku47mqKHlvI/kuIvkv67mlLnkuLvku47nirbmgIHlkI7kv53mjIHniLblrZDpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ+WQr+eUqOacrOWKn+iDveWQju+8jOWcqOmrmOe6p+S4u+S7juaooeW8j+S4i+WPlua2iOS4u+S7jueKtuaAgeWQjuS/neaMgeeItuWtkOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ+WQr+eUqOacrOWKn+iDveWQju+8jOWPr+WPlua2iOS4gOS4quW3peWNleWcqOmrmOe6p+S4u+S7juaooeW8j+S4i+eahOS4u+S7jueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkuLsv5LuO5bel5Y2V6K+m5oOF56qX5Y+j77yM5aaC5p6c5pyN5Yqh5Lq65ZGY5re75Yqg5LqG5aSH5rOo77yM6K6+572u5bel5Y2V55qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAn5Li7L+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ+S4u+W3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ+S4u+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAn5bel5Y2V5om56YeP5pON5L2c5Yqf6IO955qE5Li75LuO5bel5Y2V5om56YeP6K6+572u5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ+WumuS5ieacjeWKoeS6uuWRmOeVjOmdouS7quihqOadv+S4u+W3peWNleamguiniOWQjuerr+eahOWPguaVsOOAguKAnExpbWl077yI6ZmQ5Yi277yJ5a6a5LmJ6buY6K6k5pi+56S655qE5p2h55uu5pWw77yb4oCcR1JPVVDvvIjnu4TvvInnlKjkuo7liLDmnKzmj5Lku7bnmoTorr/pl67mnYPpmZDpmZDliLbvvIjlpoIgR3JvdXA6YWRtaW47Z3JvdXAxO2dyb3VwMu+8ie+8m+KAnERlZmF1bHTvvIjpu5jorqTvvInigJ3ku6Pooajov5nkuKrmj5Lku7bmmK/pu5jorqTlkK/nlKjov5jmmK/pnIDopoHnlKjmiLfmiYvliqjlkK/nlKjvvJvigJxDYWNoZVRUTExvY2Fs4oCd6KGo5piO5pys5o+S5Lu255qE57yT5a2Y6L+H5pyf5pe26Ze077yI5Y2V5L2N77ya5YiG6ZKf77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Luq6KGo5p2/5LuO5bel5Y2V5qaC6KeI5ZCO56uv55qE5Y+C5pWw44CC4oCcTGltaXTvvIjpmZDliLbvvInlrprkuYnpu5jorqTmmL7npLrnmoTmnaHnm67mlbDvvJvigJxHUk9VUO+8iOe7hO+8ieeUqOS6juWIsOacrOaPkuS7tueahOiuv+mXruadg+mZkOmZkOWItu+8iOWmgiBHcm91cDphZG1pbjtncm91cDE7Z3JvdXAy77yJ77yb4oCcRGVmYXVsdO+8iOm7mOiupO+8ieKAneS7o+ihqOi/meS4quaPkuS7tuaYr+m7mOiupOWQr+eUqOi/mOaYr+mcgOimgeeUqOaIt+aJi+WKqOWQr+eUqO+8m+KAnENhY2hlVFRMTG9jYWzigJ3ooajmmI7mnKzmj5Lku7bnmoTnvJPlrZjov4fmnJ/ml7bpl7TvvIjljZXkvY3vvJrliIbpkp/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ+azqOWGjOWIsOW3peWNleS6i+S7tuaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKjkuLvku47lt6XljZXor6bmg4Xnqpflj6Plv4XpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6K6+572u5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5re75Yqg5aSH5rOo55qE55qE6buY6K6k5q2j5paH5paH5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICforr7nva7mnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6Pmt7vliqDlpIfms6jnmoTnmoTpu5jorqTkuLvpopjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+iuvue9ruacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+W3peWNleeahOi0n+i0o+S6uuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ+iuvue9ruacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+W3peWNleeahOacjeWKoe+8iOmcgOimgea/gOa0u+W3peWNlTo65pyN5Yqh77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+iuvue9ruacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+W3peWNleeahOaJgOacieiAheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICforr7nva7mnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6Porr7nva7lt6XljZXnmoTnsbvlnovvvIjpnIDopoHmv4DmtLvlt6XljZU6Ouexu+Wei++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouW3peWNleivpuaDheinhuWbvuS4re+8jOS4uuS/ruaUueS4u+S7juW3peWNleeKtuaAgeiPnOWNleaYvuekuuS4gOS4qumTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j77yM5pi+56S66L+Z5Liq5bel5Y2V55u45YWz55qE5omA5pyJ5pyN5Yqh5Lq65ZGY5YiX6KGo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo++8jOaYvuekuui/meS4quW3peWNleaJgOacieWPr+iDveeahOacjeWKoeS6uuWRmO+8iOmcgOimgeWFt+aciei/meS4qumYn+WIl+aIluW3peWNleeahOWkh+azqOadg+mZkO+8ieWIl+ihqO+8jOeUqOS6juehruWumuiwgeWwhuaUtuWIsOWFs+S6jui/meS4quWkh+azqOeahOmAmuefpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6PmmK/lkKbmmL7npLrlt6XljZXkvJjlhYjnuqfnmoTpgInpobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+aYvuekuuW3peWNleagh+mimOWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAn5LuO5bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgdHlwZXMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ+aMh+WumuS9v+eUqOS7juW3peWNleeahOWuouaIt+ecn+WunuWnk+WQjeabv+aNouS4u+W3peWNleeahOecn+epuuWnk+WQjeeahOS/oeS7tuexu+Wei+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICfov5nkuKrmqKHlnZfnlKjmnaXmv4DmtLvmlrDlu7rpgq7ku7Yv55S16K+d5bel5Y2V56qX5Y+j55qE5Li75LuO5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICfkuLvku47lt6XljZXjgIInOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZCcgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGRBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2VBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdVbmRlZmluZWQgc3ViYWN0aW9uLicpLAogICAgKTsKfQoKc3ViIF9BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkTmVlZGVkIChxdyhPYmplY3RUeXBlIEZpZWxkVHlwZSBGaWVsZE9yZGVyKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05lZWQgJXMnLCAkTmVlZGVkICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBvYmplY3QgdHlwZSBhbmQgZmllbGQgdHlwZSBkaXNwbGF5IG5hbWUKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRPYmplY3RUeXBlTmFtZQogICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlJyktPnsgJEdldFBhcmFte09iamVjdFR5cGV9IH0tPntEaXNwbGF5TmFtZX0gfHwgJyc7CiAgICBteSAkRmllbGRUeXBlTmFtZSA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkczo6RHJpdmVyJyktPnsgJEdldFBhcmFte0ZpZWxkVHlwZX0gfS0+e0Rpc3BsYXlOYW1lfSB8fCAnJzsKCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgTW9kZSAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgT2JqZWN0VHlwZU5hbWUgPT4gJE9iamVjdFR5cGVOYW1lLAogICAgICAgIEZpZWxkVHlwZU5hbWUgID0+ICRGaWVsZFR5cGVOYW1lLAogICAgKTsKfQoKc3ViIF9BZGRBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVFcnJvcnM7CiAgICBteSAlR2V0UGFyYW07CgogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUgTGFiZWwgRmllbGRPcmRlcikpIHsKICAgICAgICAkR2V0UGFyYW17JE5lZWRlZH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmVlZGVkICk7CiAgICAgICAgaWYgKCAhJEdldFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkRXJyb3JzeyAkTmVlZGVkIC4gJ1NlcnZlckVycm9yJyB9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcnN7ICROZWVkZWQgLiAnU2VydmVyRXJyb3JNZXNzYWdlJyB9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLicpOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIGlmICggJEdldFBhcmFte05hbWV9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgaXMgYWxwaGFudW1lcmljCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gIX4gbXtcQSAoPzogW2EtekEtWl0gfCBcZCApKyBcen14bXMgKSB7CgogICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9CiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ1RoZSBmaWVsZCBkb2VzIG5vdCBjb250YWluIG9ubHkgQVNDSUkgbGV0dGVycyBhbmQgbnVtYmVycy4nKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBpcyBkdXBsaWNhdGVkCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZHNMaXN0ID0gJXsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgICAgICAgICApCiAgICAgICAgfTsKCiAgICAgICAgJUR5bmFtaWNGaWVsZHNMaXN0ID0gcmV2ZXJzZSAlRHluYW1pY0ZpZWxkc0xpc3Q7CgogICAgICAgIGlmICggJER5bmFtaWNGaWVsZHNMaXN0eyAkR2V0UGFyYW17TmFtZX0gfSApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlcmUgaXMgYW5vdGhlciBmaWVsZCB3aXRoIHRoZSBzYW1lIG5hbWUuJyk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEdldFBhcmFte0ZpZWxkT3JkZXJ9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIG9yZGVyIGlzIG51bWVyaWMgYW5kIHBvc2l0aXZlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RmllbGRPcmRlcn0gIX4gbXtcQSAoPzogXGQgKSsgXHp9eG1zICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7RmllbGRPcmRlclNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze0ZpZWxkT3JkZXJTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGUgZmllbGQgbXVzdCBiZSBudW1lcmljLicpOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtIChxdyggT2JqZWN0VHlwZSBPYmplY3RUeXBlTmFtZSBGaWVsZFR5cGUgRmllbGRUeXBlTmFtZSBWYWxpZElEICkpIHsKICAgICAgICAkR2V0UGFyYW17JENvbmZpZ1BhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRDb25maWdQYXJhbSApOwogICAgfQoKICAgICMgdW5jb3JyZWN0YWJsZSBlcnJvcnMKICAgIGlmICggISRHZXRQYXJhbXtWYWxpZElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIFZhbGlkSUQnKSwKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHRvIGFkZCBzY3JlZW4gaWYgZXJyb3JzCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBNb2RlID0+ICdBZGQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgc3BlY2lmaWMgY29uZmlnCiAgICBteSAkRmllbGRDb25maWcgPSB7CiAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgID0+ICcnLAogICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlcyA9PiAxLAogICAgfTsKCiAgICAjIGNyZWF0ZSBhIG5ldyBmaWVsZAogICAgbXkgJEZpZWxkSUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAkR2V0UGFyYW17TGFiZWx9LAogICAgICAgIEZpZWxkT3JkZXIgPT4gJEdldFBhcmFte0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJEdldFBhcmFte0ZpZWxkVHlwZX0sCiAgICAgICAgT2JqZWN0VHlwZSA9PiAkR2V0UGFyYW17T2JqZWN0VHlwZX0sCiAgICAgICAgQ29uZmlnICAgICA9PiAkRmllbGRDb25maWcsCiAgICAgICAgVmFsaWRJRCAgICA9PiAkR2V0UGFyYW17VmFsaWRJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBjcmVhdGUgdGhlIG5ldyBmaWVsZCcpLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICJBY3Rpb249QWRtaW5EeW5hbWljRmllbGQiLAogICAgKTsKfQoKc3ViIF9DaGFuZ2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoT2JqZWN0VHlwZSBGaWVsZFR5cGUpKSB7CiAgICAgICAgJEdldFBhcmFteyROZWVkZWR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTmVlZCAlcycsICROZWVkZWQgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIG9iamVjdCB0eXBlIGFuZCBmaWVsZCB0eXBlIGRpc3BsYXkgbmFtZQogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJE9iamVjdFR5cGVOYW1lCiAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKS0+eyAkR2V0UGFyYW17T2JqZWN0VHlwZX0gfS0+e0Rpc3BsYXlOYW1lfSB8fCAnJzsKICAgIG15ICRGaWVsZFR5cGVOYW1lID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKS0+eyAkR2V0UGFyYW17RmllbGRUeXBlfSB9LT57RGlzcGxheU5hbWV9IHx8ICcnOwoKICAgIG15ICRGaWVsZElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0lEJyApOwoKICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgSUQnKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgZGF0YQogICAgbXkgJER5bmFtaWNGaWVsZERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBJRCA9PiAkRmllbGRJRCwKICAgICk7CgogICAgIyBjaGVjayBmb3IgdmFsaWQgZHluYW1pYyBmaWVsZCBjb25maWd1cmF0aW9uCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZ2V0IGRhdGEgZm9yIGR5bmFtaWMgZmllbGQgJXMnLCAkRmllbGRJRCApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd1NjcmVlbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgICUke0R5bmFtaWNGaWVsZERhdGF9LAogICAgICAgIElEICAgICAgICAgICAgID0+ICRGaWVsZElELAogICAgICAgIE1vZGUgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIE9iamVjdFR5cGVOYW1lID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICBGaWVsZFR5cGVOYW1lICA9PiAkRmllbGRUeXBlTmFtZSwKICAgICk7Cn0KCnN1YiBfQ2hhbmdlQWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlRXJyb3JzOwogICAgbXkgJUdldFBhcmFtOwoKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lIExhYmVsIEZpZWxkT3JkZXIpKSB7CiAgICAgICAgJEdldFBhcmFteyROZWVkZWR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEVycm9yc3sgJE5lZWRlZCAuICdTZXJ2ZXJFcnJvcicgfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3JzeyAkTmVlZGVkIC4gJ1NlcnZlckVycm9yTWVzc2FnZScgfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEZpZWxkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CiAgICBpZiAoICEkRmllbGRJRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIElEJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgZGF0YQogICAgbXkgJER5bmFtaWNGaWVsZERhdGEgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJEZpZWxkSUQsCiAgICApOwoKICAgICMgY2hlY2sgZm9yIHZhbGlkIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZERhdGEpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGdldCBkYXRhIGZvciBkeW5hbWljIGZpZWxkICVzJywgJEZpZWxkSUQgKSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJEdldFBhcmFte05hbWV9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgaXMgbG93ZXJjYXNlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gIX4gbXtcQSAoPzogW2EtekEtWl0gfCBcZCApKyBcen14bXMgKSB7CgogICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9CiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ1RoZSBmaWVsZCBkb2VzIG5vdCBjb250YWluIG9ubHkgQVNDSUkgbGV0dGVycyBhbmQgbnVtYmVycy4nKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBpcyBkdXBsaWNhdGVkCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZHNMaXN0ID0gJXsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgICAgICAgICApCiAgICAgICAgfTsKCiAgICAgICAgJUR5bmFtaWNGaWVsZHNMaXN0ID0gcmV2ZXJzZSAlRHluYW1pY0ZpZWxkc0xpc3Q7CgogICAgICAgIGlmICgKICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNMaXN0eyAkR2V0UGFyYW17TmFtZX0gfSAmJgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc0xpc3R7ICRHZXRQYXJhbXtOYW1lfSB9IG5lICRGaWVsZElECiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3IgY2xhc3MKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoZXJlIGlzIGFub3RoZXIgZmllbGQgd2l0aCB0aGUgc2FtZSBuYW1lLicpOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBpdCdzIGFuIGludGVybmFsIGZpZWxkLCBpdCdzIG5hbWUgc2hvdWxkIG5vdCBjaGFuZ2UKICAgICAgICBpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGREYXRhLT57SW50ZXJuYWxGaWVsZH0gJiYKICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNMaXN0eyAkR2V0UGFyYW17TmFtZX0gfSBuZSAkRmllbGRJRAogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGUgbmFtZSBmb3IgdGhpcyBmaWVsZCBzaG91bGQgbm90IGNoYW5nZS4nKTsKICAgICAgICAgICAgJFBhcmFte0ludGVybmFsRmllbGR9ICAgICAgICAgICA9ICREeW5hbWljRmllbGREYXRhLT57SW50ZXJuYWxGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEdldFBhcmFte0ZpZWxkT3JkZXJ9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIG9yZGVyIGlzIG51bWVyaWMgYW5kIHBvc2l0aXZlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RmllbGRPcmRlcn0gIX4gbXtcQSAoPzogXGQgKSsgXHp9eG1zICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7RmllbGRPcmRlclNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze0ZpZWxkT3JkZXJTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGUgZmllbGQgbXVzdCBiZSBudW1lcmljLicpOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtIChxdyggT2JqZWN0VHlwZSBPYmplY3RUeXBlTmFtZSBGaWVsZFR5cGUgRmllbGRUeXBlTmFtZSBWYWxpZElEICkpIHsKICAgICAgICAkR2V0UGFyYW17JENvbmZpZ1BhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRDb25maWdQYXJhbSApOwogICAgfQoKICAgICMgdW5jb3JyZWN0YWJsZSBlcnJvcnMKICAgIGlmICggISRHZXRQYXJhbXtWYWxpZElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIFZhbGlkSUQnKSwKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHRvIGNoYW5nZSBzY3JlZW4gaWYgZXJyb3JzCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBJRCAgID0+ICRGaWVsZElELAogICAgICAgICAgICBNb2RlID0+ICdDaGFuZ2UnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgc3BlY2lmaWMgY29uZmlnCiAgICBteSAkRmllbGRDb25maWcgPSB7CiAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgID0+ICcnLAogICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlcyA9PiAxLAogICAgfTsKCiAgICAjIHVwZGF0ZSBkeW5hbWljIGZpZWxkIChGaWVsZFR5cGUgYW5kIE9iamVjdFR5cGUgY2Fubm90IGJlIGNoYW5nZWQ7IHVzZSBvbGQgdmFsdWVzKQogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRmllbGRJRCwKICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICBMYWJlbCAgICAgID0+ICRHZXRQYXJhbXtMYWJlbH0sCiAgICAgICAgRmllbGRPcmRlciA9PiAkR2V0UGFyYW17RmllbGRPcmRlcn0sCiAgICAgICAgRmllbGRUeXBlICA9PiAkRHluYW1pY0ZpZWxkRGF0YS0+e0ZpZWxkVHlwZX0sCiAgICAgICAgT2JqZWN0VHlwZSA9PiAkRHluYW1pY0ZpZWxkRGF0YS0+e09iamVjdFR5cGV9LAogICAgICAgIENvbmZpZyAgICAgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgIFZhbGlkSUQgICAgPT4gJEdldFBhcmFte1ZhbGlkSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IHVwZGF0ZSB0aGUgZmllbGQgJXMnLCAkR2V0UGFyYW17TmFtZX0gKSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAiQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiwKICAgICk7Cn0KCnN1YiBfU2hvd1NjcmVlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEaXNwbGF5RmllbGROYW1lfSA9ICdOZXcnOwoKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdDaGFuZ2UnICkgewogICAgICAgICRQYXJhbXtTaG93V2FybmluZ30gICAgICA9ICdTaG93V2FybmluZyc7CiAgICAgICAgJFBhcmFte0Rpc3BsYXlGaWVsZE5hbWV9ID0gJFBhcmFte05hbWV9OwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgZ2V0IGFsbCBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIG9yZGVyIG51bWJlcnMgKGlzIGFscmVhZHkgc29ydGVkKS4KICAgIG15IEBEeW5hbWljZmllbGRPcmRlckxpc3Q7CiAgICBteSAlRHluYW1pY2ZpZWxkTmFtZXNMaXN0OwogICAgZm9yIG15ICREeW5hbWljZmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKICAgICAgICBwdXNoIEBEeW5hbWljZmllbGRPcmRlckxpc3QsICREeW5hbWljZmllbGQtPntGaWVsZE9yZGVyfTsKICAgICAgICAkRHluYW1pY2ZpZWxkTmFtZXNMaXN0eyAkRHluYW1pY2ZpZWxkLT57RmllbGRPcmRlcn0gfSA9ICREeW5hbWljZmllbGQtPntMYWJlbH07CiAgICB9CgogICAgIyB3aGVuIGFkZGluZyB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiBleHRyYSBvcmRlciBudW1iZXIgZm9yIHRoZSBuZXcgZmllbGQKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdBZGQnICkgewoKICAgICAgICAjIGdldCB0aGUgbGFzdCBlbGVtZW50IGZvcm0gdGhlIG9yZGVyIGxpc3QgYW5kIGFkZCAxCiAgICAgICAgbXkgJExhc3RPcmRlck51bWJlciA9ICREeW5hbWljZmllbGRPcmRlckxpc3RbLTFdOwogICAgICAgICRMYXN0T3JkZXJOdW1iZXIrKzsKCiAgICAgICAgIyBhZGQgdGhpcyBuZXcgb3JkZXIgbnVtYmVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKICAgICAgICBwdXNoIEBEeW5hbWljZmllbGRPcmRlckxpc3QsICRMYXN0T3JkZXJOdW1iZXI7CiAgICB9CgogICAgIyBzaG93IHRoZSBuYW1lcyBvZiB0aGUgb3RoZXIgZmllbGRzIHRvIGVhc2Ugb3JkZXJpbmcKICAgIG15ICVPcmRlck5hbWVzTGlzdDsKICAgIG15ICRDdXJyZW50bHlUZXh0ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50bHknKSAuICc6ICc7CiAgICBmb3IgbXkgJE9yZGVyTnVtYmVyICggc29ydCBARHluYW1pY2ZpZWxkT3JkZXJMaXN0ICkgewogICAgICAgICRPcmRlck5hbWVzTGlzdHskT3JkZXJOdW1iZXJ9ID0gJE9yZGVyTnVtYmVyOwogICAgICAgIGlmICggJER5bmFtaWNmaWVsZE5hbWVzTGlzdHskT3JkZXJOdW1iZXJ9ICYmICRPcmRlck51bWJlciBuZSAkUGFyYW17RmllbGRPcmRlcn0gKSB7CiAgICAgICAgICAgICRPcmRlck5hbWVzTGlzdHskT3JkZXJOdW1iZXJ9ID0gJE9yZGVyTnVtYmVyIC4gJyAtICcKICAgICAgICAgICAgICAgIC4gJEN1cnJlbnRseVRleHQKICAgICAgICAgICAgICAgIC4gJER5bmFtaWNmaWVsZE5hbWVzTGlzdHskT3JkZXJOdW1iZXJ9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT3JkZXJTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJU9yZGVyTmFtZXNMaXN0LAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0ZpZWxkT3JkZXInLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0ZpZWxkT3JkZXJ9IHx8IDEsCiAgICAgICAgUG9zc2libGVOb25lICA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICAgICBTb3J0ICAgICAgICAgID0+ICdOdW1lcmljS2V5JywKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdXNzVwYyBWYWxpZGF0ZV9OdW1iZXIgTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKCiAgICAjIGNyZWF0ZSB0aGUgVmFsaWRpdHkgc2VsZWN0CiAgICBteSAkVmFsaWRpdHlTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtWYWxpZElEfSB8fCAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVzUwcGMgTW9kZXJuaXplJywKICAgICk7CgogICAgIyBjcmVhdGUgdGhlIHBvc3NpYmxlIHZhbHVlcyB0ZW1wbGF0ZQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnVmFsdWVUZW1wbGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkUmVhZG9ubHlJbnRlcm5hbEZpZWxkID0gJyc7CgogICAgIyBJbnRlcm5hbCBmaWVsZHMgY2FuIG5vdCBiZSBkZWxldGVkIGFuZCBuYW1lIHNob3VsZCBub3QgY2hhbmdlLgogICAgaWYgKCAkUGFyYW17SW50ZXJuYWxGaWVsZH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ludGVybmFsRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICAgICAgJFJlYWRvbmx5SW50ZXJuYWxGaWVsZCA9ICdyZWFkb25seT0icmVhZG9ubHkiJzsKICAgIH0KCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFZhbGlkaXR5U3RyZyAgICAgICAgICA9PiAkVmFsaWRpdHlTdHJnLAogICAgICAgICAgICBEeW5hbWljRmllbGRPcmRlclN0cmcgPT4gJER5bmFtaWNGaWVsZE9yZGVyU3RyZywKICAgICAgICAgICAgUmVhZG9ubHlJbnRlcm5hbEZpZWxkID0+ICRSZWFkb25seUludGVybmFsRmllbGQsCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRQcmVNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgcHJldmVudCB1c2VkIG9uY2Ugd2FybmluZwp1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZG8gb25seSB1c2UgdGhpcyBpbiBwaG9uZSBhbmQgZW1haWwgdGlja2V0CiAgICByZXR1cm4gaWYgKCAkU2VsZi0+e0FjdGlvbn0gIX4gL15BZ2VudFRpY2tldChFbWFpbHxQaG9uZSkkLyApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKSB8fCAnJzsKCiAgICAjIHJldHVybiBpZiBubyBjb25maWcgb3B0aW9uIGlzIHVzZWQKICAgIHJldHVybiBpZiAhJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkOwoKICAgICMgc2V0IGR5bmFtaWMgZmllbGQgYXMgc2hvd24KICAgICRDb25maWdPYmplY3QtPnsiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259In0tPntEeW5hbWljRmllbGR9LT57JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSA9IDE7CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyAkb3JpZ2luOiBvdHJzIC0gMmFiOWM0YTg4NDQ0ZGE2NmFmZDhmODdjOGFjZDVkYjBiODkwZDkyOSAtIEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QWN0aW9uQ29tbW9uLnBtCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQojcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0QWN0aW9uQ29tbW9uOwoKIyBUaGlzIG1vZHVsZSB1c2VzIEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGFzIGEgYmFzZSwgZm9yIGVhc3kgdXBkYXRlIGFuZCBmcmFtZXdvcmsgY29tcGF0aWJpbGl0eQojIHNwZWNpYWwgbWFya2VycyBoYXMgYmVlbiBzZXQgYWxvbmcgdGhlIGZpbGUgdG8gZWFzeSBzcG90IHRoZSBkaWZmZXJlbmNlcyBpbnRyb2R1Y2VkIGJ5CiMgT1RSU01hc3RlclNsYXZlIHBhY2thZ2UKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0TWFzdGVyU2xhdmU7CiMgLS0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkVtYWlsUGFyc2VyOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGFydGljbGUgZm9yIHdob20gdGhpcyBzaG91bGQgYmUgYSByZXBseSwgaWYgYXZhaWxhYmxlCiAgICBteSAkUmVwbHlUb0FydGljbGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnUmVwbHlUb0FydGljbGUnICkgfHwgIiI7CgogICAgIyBjaGVjayBpZiBSZXBseVRvQXJ0aWNsZSByZWFsbHkgYmVsb25ncyB0byB0aGUgdGlja2V0CiAgICBteSAlUmVwbHlUb0FydGljbGVDb250ZW50OwogICAgbXkgQFJlcGx5VG9BZHJlc3NlczsKICAgIGlmICgkUmVwbHlUb0FydGljbGUpIHsKICAgICAgICAlUmVwbHlUb0FydGljbGVDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5BcnRpY2xlR2V0KAogICAgICAgICAgICBBcnRpY2xlSUQgICAgID0+ICRSZXBseVRvQXJ0aWNsZSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSAgICAgICAgPSAkUmVwbHlUb0FydGljbGU7CiAgICAgICAgJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9ID0gXCVSZXBseVRvQXJ0aWNsZUNvbnRlbnQ7CgogICAgICAgICMgZ2V0IHNlbmRlciBvZiBvcmlnaW5hbCBub3RlICh0byBpbmZvcm0gc2VuZGVyIGFib3V0IGFuc3dlcikKICAgICAgICBpZiAoICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7Q3JlYXRlZEJ5fSApIHsKICAgICAgICAgICAgbXkgQFJlcGx5VG9TZW5kZXJJRCA9ICggJFJlcGx5VG9BcnRpY2xlQ29udGVudHtDcmVhdGVkQnl9ICk7CiAgICAgICAgICAgICRTZWxmLT57UmVwbHlUb1NlbmRlclVzZXJJRH0gPSBcQFJlcGx5VG9TZW5kZXJJRDsKICAgICAgICB9CgogICAgICAgICMgaWYgYXJ0aWNsZSBiZWxvbmdzIHRvIG90aGVyIHRpY2tldCwgZG9uJ3QgdXNlIGl0IGFzIHJlcGx5CiAgICAgICAgaWYgKCAkUmVwbHlUb0FydGljbGVDb250ZW50e1RpY2tldElEfSBuZSAkU2VsZi0+e1RpY2tldElEfSApIHsKICAgICAgICAgICAgJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gPSAiIjsKICAgICAgICB9CgogICAgICAgICMgaWYgYXJ0aWNsZSBpcyBub3Qgb2YgdHlwZSBub3RlLWludGVybmFsLCBkb24ndCB1c2UgaXQgYXMgcmVwbHkKICAgICAgICBpZiAoICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7QXJ0aWNsZVR5cGV9ICF+IC9ebm90ZS0oaW50ZXJuYWx8ZXh0ZXJuYWwpJC9pICkgewogICAgICAgICAgICAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSA9ICIiOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBmb3JtIGlkCiAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybUlEJyApOwoKICAgICMgY3JlYXRlIGZvcm0gaWQKICAgIGlmICggISRTZWxmLT57Rm9ybUlEfSApIHsKICAgICAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpLT5Gb3JtSURDcmVhdGUoKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRTZWxmLT57VGlja2V0SUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIFRpY2tldElEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICBteSAkQWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICBUeXBlICAgICA9PiAkQ29uZmlnLT57UGVybWlzc2lvbn0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICApOwoKICAgICMgZXJyb3Igc2NyZWVuLCBkb24ndCBzaG93IHRpY2tldAogICAgaWYgKCAhJEFjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRDb25maWctPntQZXJtaXNzaW9ufSApLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgQUNMIHJlc3RyaWN0aW9ucwogICAgbXkgJVBvc3NpYmxlQWN0aW9ucyA9ICggMSA9PiAkU2VsZi0+e0FjdGlvbn0gKTsKCiAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVQb3NzaWJsZUFjdGlvbnMsCiAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVGlja2V0SUQgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdBY3Rpb24nLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICVBY2xBY3Rpb24gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xBY3Rpb25EYXRhKCk7CgogICAgIyBjaGVjayBpZiBBQ0wgcmVzdHJpY3Rpb25zIGV4aXN0CiAgICBpZiAoICRBQ0wgfHwgSXNIYXNoUmVmV2l0aERhdGEoIFwlQWNsQWN0aW9uICkgKSB7CgogICAgICAgIG15ICVBY2xBY3Rpb25Mb29rdXAgPSByZXZlcnNlICVBY2xBY3Rpb247CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4gaWYgQUNMIHByb2hpYml0cyB0aGlzIGFjdGlvbgogICAgICAgIGlmICggISRBY2xBY3Rpb25Mb29rdXB7ICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXMnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGb3JtSUQgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIFJlcGx5VG9BcnRpY2xlID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IHJpZ2h0IGhlYWRlcgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSGVhZGVyJyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsb2NrIHN0YXRlCiAgICBpZiAoICRDb25maWctPntSZXF1aXJlZExvY2t9ICkgewogICAgICAgIGlmICggISRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICkgKSB7CgogICAgICAgICAgICBteSAkTG9jayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIExvY2sgICAgID0+ICdsb2NrJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRMb2NrKSB7CgogICAgICAgICAgICAgICAgIyBTZXQgbmV3IG93bmVyIGlmIHRpY2tldCBvd25lciBpcyBkaWZmZXJlbnQgdGhlbiBsb2dnZWQgdXNlci4KICAgICAgICAgICAgICAgIGlmICggJFRpY2tldHtPd25lcklEfSAhPSAkU2VsZi0+e1VzZXJJRH0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgUmVtZW1iZXIgcHJldmlvdXMgb3duZXIsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byByZXN0b3JlIHRpY2tldCBvd25lciBvbiB1bmRvIGFjdGlvbi4KICAgICAgICAgICAgICAgICAgICAkUGFyYW17UHJldmlvdXNPd25lcn0gPSAkVGlja2V0e093bmVySUR9OwoKICAgICAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBTaG93IGxvY2sgc3RhdGUuCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQcm9wZXJ0aWVzTG9jaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRUaWNrZXRPYmplY3QtPk93bmVyQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIE93bmVySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFRpY2tldHtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+V2FybmluZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnU29ycnksIHlvdSBuZWVkIHRvIGJlIHRoZSB0aWNrZXQgb3duZXIgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4nKSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNoYW5nZSB0aGUgb3duZXIgZmlyc3QuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgYmFjayBsaW5rCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0QmFjaycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJEtleSAoCiAgICAgICAgcXcoCiAgICAgICAgTmV3U3RhdGVJRCBOZXdQcmlvcml0eUlEIFRpbWVVbml0cyBBcnRpY2xlVHlwZUlEIFRpdGxlIEJvZHkgU3ViamVjdCBOZXdRdWV1ZUlECiAgICAgICAgWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUgTmV3T3duZXJJRCBOZXdSZXNwb25zaWJsZUlEIFR5cGVJRCBTZXJ2aWNlSUQgU0xBSUQKICAgICAgICBFeHBhbmQgUmVwbHlUb0FydGljbGUgU3RhbmRhcmRUZW1wbGF0ZUlEIENyZWF0ZUFydGljbGUKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKICAgIH0KCiAgICAjIEFDTCBjb21wYXRpYmlsaXR5IHRyYW5zbGF0aW9uCiAgICBteSAlQUNMQ29tcGF0R2V0UGFyYW0gPSAoCiAgICAgICAgU3RhdGVJRCAgICAgICA9PiAkR2V0UGFyYW17U3RhdGVJRH0sCiAgICAgICAgUHJpb3JpdHlJRCAgICA9PiAkR2V0UGFyYW17TmV3UHJpb3JpdHlJRH0sCiAgICAgICAgUXVldWVJRCAgICAgICA9PiAkR2V0UGFyYW17TmV3UXVldWVJRH0sCiAgICAgICAgT3duZXJJRCAgICAgICA9PiAkR2V0UGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgUmVzcG9uc2libGVJRCA9PiAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvcm0gaHR0cCByZXF1ZXN0CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwoKICAgICMgZGVmaW5lIHRoZSBkeW5hbWljIGZpZWxkcyB0byBzaG93IGJhc2VkIG9uIHRoZSBvYmplY3QgdHlwZQogICAgbXkgJE9iamVjdFR5cGUgPSBbJ1RpY2tldCddOwojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgIyBnZXQgbWFzdGVyL3NsYXZlIGR5bmFtaWMgZmllbGQKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpIHx8ICcnOwogICAgbXkgJE1hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6QWR2YW5jZWRFbmFibGVkJykgfHwgMDsKIyAtLS0KCiAgICAjIG9ubHkgc2NyZWVucyB0aGF0IGFkZCBub3RlcyBjYW4gbW9kaWZ5IEFydGljbGUgZHluYW1pYyBmaWVsZHMKICAgIGlmICggJENvbmZpZy0+e05vdGV9ICkgewogICAgICAgICRPYmplY3RUeXBlID0gWyAnVGlja2V0JywgJ0FydGljbGUnIF07CiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCiAgICAgICAgaWYgKCRNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZCkgewogICAgICAgICAgICAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gPSAxOwogICAgICAgIH0KIyAtLS0KICAgIH0KCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZm9ybSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CiAgICB9CgogICAgIyBjb252ZXJ0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGludG8gYSBzdHJ1Y3R1cmUgZm9yIEFDTHMKICAgIG15ICVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRJdGVtICggc29ydCBrZXlzICVEeW5hbWljRmllbGRWYWx1ZXMgKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRJdGVtOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFkZWZpbmVkICREeW5hbWljRmllbGRWYWx1ZXN7JER5bmFtaWNGaWVsZEl0ZW19OwoKICAgICAgICAkRHluYW1pY0ZpZWxkQUNMUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZEl0ZW0gfSA9ICREeW5hbWljRmllbGRWYWx1ZXN7JER5bmFtaWNGaWVsZEl0ZW19OwogICAgfQogICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gPSBcJUR5bmFtaWNGaWVsZEFDTFBhcmFtZXRlcnM7CgogICAgIyB0cmFuc2Zvcm0gcGVuZGluZyB0aW1lLCB0aW1lIHN0YW1wIGJhc2VkIG9uIHVzZXIgdGltZSB6b25lCiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCAkR2V0UGFyYW17WWVhcn0KICAgICAgICAmJiBkZWZpbmVkICRHZXRQYXJhbXtNb250aH0KICAgICAgICAmJiBkZWZpbmVkICRHZXRQYXJhbXtEYXl9CiAgICAgICAgJiYgZGVmaW5lZCAkR2V0UGFyYW17SG91cn0KICAgICAgICAmJiBkZWZpbmVkICRHZXRQYXJhbXtNaW51dGV9CiAgICAgICAgKQogICAgewogICAgICAgICVHZXRQYXJhbSA9ICRMYXlvdXRPYmplY3QtPlRyYW5zZm9ybURhdGVTZWxlY3Rpb24oCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgcmV3cmFwIGJvZHkgaWYgbm8gcmljaCB0ZXh0IGlzIHVzZWQKICAgIGlmICggJEdldFBhcmFte0JvZHl9ICYmICEkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAkR2V0UGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT5XcmFwUGxhaW5UZXh0KAogICAgICAgICAgICBNYXhDaGFyYWN0ZXJzID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlJyksCiAgICAgICAgICAgIFBsYWluVGV4dCAgICAgPT4gJEdldFBhcmFte0JvZHl9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXBsb2FkIGNhY2hlIG9iamVjdAogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RvcmUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIHN0b3JlIGFjdGlvbgogICAgICAgIG15ICVFcnJvcjsKCiAgICAgICAgIyBJZiBpcyBhbiBhY3Rpb24gYWJvdXQgYXR0YWNobWVudHMKICAgICAgICBteSAkSXNVcGxvYWQgPSAwOwoKICAgICAgICAjIGF0dGFjaG1lbnQgZGVsZXRlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRJRHMgPSBtYXAgewogICAgICAgICAgICBteSAoJElEKSA9ICRfID1+IG17IFxBIEF0dGFjaG1lbnREZWxldGUgKFxkKykgXHogfXhtczsKICAgICAgICAgICAgJElEID8gJElEIDogKCk7CiAgICAgICAgfSAkUGFyYW1PYmplY3QtPkdldFBhcmFtTmFtZXMoKTsKCiAgICAgICAgQ09VTlQ6CiAgICAgICAgZm9yIG15ICRDb3VudCAoIHJldmVyc2Ugc29ydCBAQXR0YWNobWVudElEcyApIHsKICAgICAgICAgICAgbXkgJERlbGV0ZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJBdHRhY2htZW50RGVsZXRlJENvdW50IiApOwogICAgICAgICAgICBuZXh0IENPVU5UIGlmICEkRGVsZXRlOwogICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnREZWxldGV9ID0gMTsKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmVGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQ291bnQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRJc1VwbG9hZCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQXR0YWNobWVudFVwbG9hZCcgKSApIHsKICAgICAgICAgICAgJElzVXBsb2FkICAgICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgJUVycm9yICAgICAgICAgICAgICAgICAgID0gKCk7CiAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50VXBsb2FkfSA9IDE7CiAgICAgICAgICAgIG15ICVVcGxvYWRTdHVmZiA9ICRQYXJhbU9iamVjdC0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICAgICAgUGFyYW0gPT4gJ0ZpbGVVcGxvYWQnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICAlVXBsb2FkU3R1ZmYsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc3RhdGUgb2JqZWN0CiAgICAgICAgbXkgJFN0YXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CgogICAgICAgICMgY2hlY2sgcGVuZGluZyB0aW1lCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmV3U3RhdGVJRH0gKSB7CiAgICAgICAgICAgIG15ICVTdGF0ZURhdGEgPSAkU3RhdGVPYmplY3QtPlN0YXRlR2V0KAogICAgICAgICAgICAgICAgSUQgPT4gJEdldFBhcmFte05ld1N0YXRlSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJElzVXBsb2FkICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgc3RhdGUgdHlwZQogICAgICAgICAgICAgICAgaWYgKCAkU3RhdGVEYXRhe1R5cGVOYW1lfSA9fiAvXnBlbmRpbmcvaSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yeydEYXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGltZSBvYmplY3QKICAgICAgICAgICAgICAgICAgICBteSAkVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJyk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZGF0ZQogICAgICAgICAgICAgICAgICAgIGlmICggISRUaW1lT2JqZWN0LT5EYXRlMlN5c3RlbVRpbWUoICVHZXRQYXJhbSwgU2Vjb25kID0+IDAgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yeydEYXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkVGltZU9iamVjdC0+RGF0ZTJTeXN0ZW1UaW1lKCAlR2V0UGFyYW0sIFNlY29uZCA9PiAwICkKICAgICAgICAgICAgICAgICAgICAgICAgPCAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnsnRGF0ZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkSXNVcGxvYWQgKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e05vdGV9ICYmICRDb25maWctPntOb3RlTWFuZGF0b3J5fSApIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHN1YmplY3QKICAgICAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtTdWJqZWN0fSApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7J1N1YmplY3RJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY2hlY2sgYm9keQogICAgICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte0JvZHl9ICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsnQm9keUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgb3duZXIKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57T3duZXJ9ICYmICRDb25maWctPntPd25lck1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3T3duZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yeydOZXdPd25lckludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgdGl0bGUKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57VGl0bGV9ICYmICEkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeydUaXRsZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgdHlwZQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpUeXBlJykgKQogICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgICAgICggJENvbmZpZy0+e1RpY2tldFR5cGV9ICkgJiYKICAgICAgICAgICAgICAgICggISRHZXRQYXJhbXtUeXBlSUR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEVycm9yeydUeXBlSURJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBzZXJ2aWNlCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgICAgICYmICRDb25maWctPntTZXJ2aWNlfQogICAgICAgICAgICAgICAgJiYgJEdldFBhcmFte1NMQUlEfQogICAgICAgICAgICAgICAgJiYgISRHZXRQYXJhbXtTZXJ2aWNlSUR9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnU2VydmljZUludmFsaWQnfSA9ICcgU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIG1hbmRhdG9yeSBzZXJ2aWNlCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgICAgICYmICRDb25maWctPntTZXJ2aWNlfQogICAgICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2VNYW5kYXRvcnl9CiAgICAgICAgICAgICAgICAmJiAhJEdldFBhcmFte1NlcnZpY2VJRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEVycm9yeydTZXJ2aWNlSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgbWFuZGF0b3J5IHNsYQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpCiAgICAgICAgICAgICAgICAmJiAkQ29uZmlnLT57U2VydmljZX0KICAgICAgICAgICAgICAgICYmICRDb25maWctPntTTEFNYW5kYXRvcnl9CiAgICAgICAgICAgICAgICAmJiAhJEdldFBhcmFte1NMQUlEfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J1NMQUludmFsaWQnfSA9ICcgU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIHRpbWUgdW5pdHMsIGJ1dCBvbmx5IGlmIHRoZSBjdXJyZW50IHNjcmVlbiBoYXMgYSBub3RlCiAgICAgICAgICAgICMgICAoYWNjb3VudGVkIHRpbWUgY2FuIG9ubHkgYmUgc3RvcmVkIGlmIGFuZCBhcnRpY2xlIGlzIGdlbmVyYXRlZCkKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpCiAgICAgICAgICAgICAgICAmJiAkQ29uZmlnLT57Tm90ZX0KICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXtUaW1lVW5pdHN9IGVxICcnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnVGltZVVuaXRzSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZXhwYW5kCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RXhwYW5kfSApIHsKICAgICAgICAgICAgJUVycm9yID0gKCk7CiAgICAgICAgICAgICRFcnJvcntFeHBhbmR9ID0gMTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGh0bWwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJE1hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkCiAgICAgICAgICAgICAgICAmJiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiMgLS0tCgogICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXNGaWx0ZXI7CgogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc0FDTFJlZHVjaWJsZSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UG9zc2libGVWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaGFzIFBvc3NpYmxlVmFsdWVzIHByb3BlcnR5IGluIGl0cyBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQb3NzaWJsZVZhbHVlcykgKSB7CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyRQb3NzaWJsZVZhbHVlc307CiAgICAgICAgICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcyBmaWx0ZXIgZnJvbSBBQ0xzCiAgICAgICAgICAgICAgICAgICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgJUZpbHRlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0OwojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgKSB7CiAgICAgICAgICAgICAgICRQb3NzaWJsZVZhbHVlc0ZpbHRlciA9ICRTZWxmLT5fR2V0TWFzdGVyU2xhdmVEYXRhKAogICAgICAgICAgICAgICAgVGlja2V0ID0+IFwlVGlja2V0LAogICAgICAgICAgICAgICAgTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiMgLS0tCgogICAgICAgICAgICAjIGRvIG5vdCB2YWxpZGF0ZSBvbiBhdHRhY2htZW50IHVwbG9hZAogICAgICAgICAgICBpZiAoICEkSXNVcGxvYWQgKSB7CgogICAgICAgICAgICAgICAgJFZhbGlkYXRpb25SZXN1bHQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVWYWxpZGF0ZSgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRWYWxpZGF0aW9uUmVzdWx0KSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAnQ291bGQgbm90IHBlcmZvcm0gdmFsaWRhdGlvbiBvbiBmaWVsZCAlcyEnLCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcHJvcGFnYXRlIHZhbGlkYXRpb24gZXJyb3IgdG8gdGhlIEVycm9yIHZhcmlhYmxlIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSBmcm9udGVuZAogICAgICAgICAgICAgICAgaWYgKCAkVmFsaWRhdGlvblJlc3VsdC0+e1NlcnZlckVycm9yfSApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IGZpZWxkIGh0bWwKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiwKICAgICAgICAgICAgICAgIFNlcnZlckVycm9yICA9PiAkVmFsaWRhdGlvblJlc3VsdC0+e1NlcnZlckVycm9yfSAgfHwgJycsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntFcnJvck1lc3NhZ2V9IHx8ICcnLAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgID0+IDEsCiAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgPT4gJFNlbGYtPl9HZXRGaWVsZHNUb1VwZGF0ZSgpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZXJyb3JzCiAgICAgICAgaWYgKCVFcnJvcikgewoKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRUaWNrZXR7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICBUaW1lVW5pdHNSZXF1aXJlZCA9PiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpCiAgICAgICAgICAgICAgICAgICAgPyAnVmFsaWRhdGVfUmVxdWlyZWQnCiAgICAgICAgICAgICAgICAgICAgOiAnJwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgIElzVXBsb2FkICAgICAgICAgPT4gJElzVXBsb2FkLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdGl0bGUKICAgICAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+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+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlZGlyZWN0IHBhcmVudCB3aW5kb3cgdG8gbGFzdCBzY3JlZW4gb3ZlcnZpZXcgb24gY2xvc2VkIHRpY2tldHMKICAgICAgICAgICAgaWYgKCAkU3RhdGVEYXRhe1R5cGVOYW1lfSA9fiAvXmNsb3NlL2kgKSB7CiAgICAgICAgICAgICAgICAkUmV0dXJuVVJMID0gJFNlbGYtPntMYXN0U2NyZWVuT3ZlcnZpZXd9IHx8ICdBY3Rpb249QWdlbnREYXNoYm9hcmQnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRHZXRQYXJhbXtDcmVhdGVBcnRpY2xlfQogICAgICAgICAgICAmJiAkQ29uZmlnLT57Tm90ZX0KICAgICAgICAgICAgJiYgKCAkR2V0UGFyYW17U3ViamVjdH0gfHwgJEdldFBhcmFte0JvZHl9ICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtTdWJqZWN0fSApIHsKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1N1YmplY3R9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTdWJqZWN0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkQ29uZmlnLT57U3ViamVjdH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17U3ViamVjdH0gPSAkU3ViamVjdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXtTdWJqZWN0fSA9ICRHZXRQYXJhbXtTdWJqZWN0fQogICAgICAgICAgICAgICAgICAgIHx8ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTm8gc3ViamVjdCcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHRoZXJlIGlzIG5vIEFydGljbGVUeXBlSUQsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZQogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtBcnRpY2xlVHlwZUlEfSApIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtBcnRpY2xlVHlwZX0gPSAkQ29uZmlnLT57QXJ0aWNsZVR5cGVEZWZhdWx0fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgcHJlIGxvYWRlZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHN1Ym1pdCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICVVcGxvYWRTdHVmZiA9ICRQYXJhbU9iamVjdC0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICAgICAgUGFyYW0gPT4gJ0ZpbGVVcGxvYWQnLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJVVwbG9hZFN0dWZmKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgXCVVcGxvYWRTdHVmZjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJE1pbWVUeXBlID0gJ3RleHQvcGxhaW4nOwogICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgJE1pbWVUeXBlID0gJ3RleHQvaHRtbCc7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgdW51c2VkIGlubGluZSBpbWFnZXMKICAgICAgICAgICAgICAgIG15IEBOZXdBdHRhY2htZW50RGF0YTsKICAgICAgICAgICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewogICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50SUQgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkQ29udGVudElECiAgICAgICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL2ltYWdlL2kgKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJREhUTUxRdW90ZSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0ID0+ICRDb250ZW50SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdvcmthcm91bmQgZm9yIGxpbmsgZW5jb2RlIG9mIHJpY2ggdGV4dCBlZGl0b3IsIHNlZSBidWcjNTA1MwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElETGlua0VuY29kZSA9ICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJENvbnRlbnRJRCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtCb2R5fSA9fiBzLyhDb250ZW50SUQ9KSRDb250ZW50SURMaW5rRW5jb2RlLyQxJENvbnRlbnRJRC9nOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgYXR0YWNobWVudCBpZiBub3QgbGlua2VkIGluIGJvZHkKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkR2V0UGFyYW17Qm9keX0gIX4gLyhcUSRDb250ZW50SURIVE1MUXVvdGVcRXxcUSRDb250ZW50SURcRSkvaTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgaW5saW5lIGltYWdlcyBhbmQgbm9ybWFsIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICAgICAgICAgcHVzaCBATmV3QXR0YWNobWVudERhdGEsIFwleyRBdHRhY2htZW50fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEBBdHRhY2htZW50cyA9IEBOZXdBdHRhY2htZW50RGF0YTsKCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBodG1sIGRvY3VtZW50CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRHZXRQYXJhbXtCb2R5fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGcm9tID0gIlwiJFNlbGYtPntVc2VyRnVsbG5hbWV9XCIgPCRTZWxmLT57VXNlckVtYWlsfT4iOwogICAgICAgICAgICBteSBATm90aWZ5VXNlcklEczsKCiAgICAgICAgICAgICMgZ2V0IGxpc3Qgb2YgdXNlcnMgdGhhdCB3aWxsIGJlIGluZm9ybWVkIHdpdGhvdXQgc2VsZWN0aW9uIGluIGluZm9ybWVkL2ludm9sdmVkIGxpc3QKICAgICAgICAgICAgbXkgQFVzZXJMaXN0V2l0aG91dFNlbGVjdGlvbgogICAgICAgICAgICAgICAgPSBzcGxpdCggJywnLCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVXNlckxpc3RXaXRob3V0U2VsZWN0aW9uJyApIHx8ICIiICk7CgogICAgICAgICAgICAjIGdldCBpbmZvcm0gdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbmZvcm1Vc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwoKICAgICAgICAgICAgIyBnZXQgaW52b2x2ZWQgdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0luZm9ybUFnZW50fSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE5vdGlmeVVzZXJJRHMsIEBJbmZvcm1Vc2VySUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewogICAgICAgICAgICAgICAgcHVzaCBATm90aWZ5VXNlcklEcywgQEludm9sdmVkVXNlcklEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBATm90aWZ5VXNlcklEcywgQFVzZXJMaXN0V2l0aG91dFNlbGVjdGlvbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgICAgIE1pbWVUeXBlICAgICAgICAgICAgICAgICAgICAgICAgPT4gJE1pbWVUeXBlLAogICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWctPntIaXN0b3J5VHlwZX0sCiAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICAgICAgICAgICAgID0+ICRDb25maWctPntIaXN0b3J5Q29tbWVudH0sCiAgICAgICAgICAgICAgICBGb3JjZU5vdGlmaWNhdGlvblRvVXNlcklEICAgICAgID0+IFxATm90aWZ5VXNlcklEcywKICAgICAgICAgICAgICAgIEV4Y2x1ZGVNdXRlTm90aWZpY2F0aW9uVG9Vc2VySUQgPT4gXEBOb3RpZnlEb25lLAogICAgICAgICAgICAgICAgVW5sb2NrT25Bd2F5ICAgICAgICAgICAgICAgICAgICA9PiAkVW5sb2NrT25Bd2F5LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCAgICAgICAgICAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdGltZSBhY2NvdW50aW5nCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVVbml0c30gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2NvdW50VGltZSgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlSUQsCiAgICAgICAgICAgICAgICAgICAgVGltZVVuaXQgID0+ICRHZXRQYXJhbXtUaW1lVW5pdHN9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSBwcmUgc3VibWl0dGVkIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlKCBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9ICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBkeW5hbWljIGZpZWxkcwogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgISRNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZAogICAgICAgICAgICAgICAgJiYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQojIC0tLQoKICAgICAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBJRCAoVGlja2V0SUQgb3IgQXJ0aWNsZUlEKSBkZXBlbmRpbmcgb24gdGhlIGZpZWxkIGNvbmZpZ3JhdGlvbgogICAgICAgICAgICBteSAkT2JqZWN0SUQgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ0FydGljbGUnID8gJEFydGljbGVJRCA6ICRTZWxmLT57VGlja2V0SUR9OwoKICAgICAgICAgICAgIyBzZXQgdGhlIHZhbHVlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbG9hZCBuZXcgVVJMIGluIHBhcmVudCB3aW5kb3cgYW5kIGNsb3NlIHBvcHVwCiAgICAgICAgJFJldHVyblVSTCB8fD0gIkFjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFNlbGYtPntUaWNrZXRJRH07QXJ0aWNsZUlEPSRBcnRpY2xlSUQiOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgVVJMID0+ICRSZXR1cm5VUkwsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYVXBkYXRlJyApIHsKICAgICAgICBteSAlVGlja2V0ICAgICAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CiAgICAgICAgbXkgJEN1c3RvbWVyVXNlciAgID0gJFRpY2tldHtDdXN0b21lclVzZXJJRH07CiAgICAgICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApIHx8ICcnOwoKICAgICAgICBteSAkU2VydmljZUlEOwoKICAgICAgICAjIGdldCBzZXJ2aWNlIHZhbHVlIGZyb20gcGFyYW0gaWYgZmllbGQgaXMgdmlzaWJsZSBpbiB0aGUgc2NyZWVuCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICAgICAgJFNlcnZpY2VJRCA9ICRHZXRQYXJhbXtTZXJ2aWNlSUR9IHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgdXNlIHRpY2tldCBzZXJ2aWNlIHZhbHVlIHNpbmNlIGl0IGNhbid0IGJlIGNoYW5nZWQKICAgICAgICBlbHNpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgKSB7CiAgICAgICAgICAgICRTZXJ2aWNlSUQgPSAkVGlja2V0e1NlcnZpY2VJRH0gfHwgJyc7CiAgICAgICAgfQoKICAgICAgICBteSAkUXVldWVJRCA9ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSB8fCAkVGlja2V0e1F1ZXVlSUR9OwogICAgICAgIG15ICRTdGF0ZUlEID0gJEdldFBhcmFte05ld1N0YXRlSUR9IHx8ICRUaWNrZXR7U3RhdGVJRH07CgogICAgICAgICMgZ2V0IGxpc3QgdHlwZQogICAgICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgICAgIH0KCiAgICAgICAgbXkgJE93bmVycyA9ICRTZWxmLT5fR2V0T3duZXJzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFF1ZXVlSUQgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgQWxsVXNlcnMgPT4gJEdldFBhcmFte093bmVyQWxsfSwKICAgICAgICApOwogICAgICAgIG15ICRPbGRPd25lcnMgPSAkU2VsZi0+X0dldE9sZE93bmVycygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBRdWV1ZUlEICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIEFsbFVzZXJzID0+ICRHZXRQYXJhbXtPd25lckFsbH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUmVzcG9uc2libGVVc2VycyA9ICRTZWxmLT5fR2V0UmVzcG9uc2libGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUXVldWVJRCAgPT4gJFF1ZXVlSUQsCiAgICAgICAgICAgIFN0YXRlSUQgID0+ICRTdGF0ZUlELAogICAgICAgICAgICBBbGxVc2VycyA9PiAkR2V0UGFyYW17T3duZXJBbGx9LAogICAgICAgICk7CiAgICAgICAgbXkgJFByaW9yaXRpZXMgPSAkU2VsZi0+X0dldFByaW9yaXRpZXMoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgIG15ICRTZXJ2aWNlcyA9ICRTZWxmLT5fR2V0U2VydmljZXMoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJEN1c3RvbWVyVXNlciwKICAgICAgICAgICAgUXVldWVJRCAgICAgICAgPT4gJFF1ZXVlSUQsCiAgICAgICAgICAgIFN0YXRlSUQgICAgICAgID0+ICRTdGF0ZUlELAogICAgICAgICk7CiAgICAgICAgbXkgJFR5cGVzID0gJFNlbGYtPl9HZXRUeXBlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkQ3VzdG9tZXJVc2VyLAogICAgICAgICAgICBRdWV1ZUlEICAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgPT4gJFN0YXRlSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkTmV3UXVldWVzID0gJFNlbGYtPl9HZXRRdWV1ZXMoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIHJlc2V0IHByZXZpb3VzIFNlcnZpY2VJRCB0byByZXNldCBTTEEtTGlzdCBpZiBubyBzZXJ2aWNlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkU2VydmljZUlEIHx8ICEkU2VydmljZXMtPnskU2VydmljZUlEfSApIHsKICAgICAgICAgICAgJFNlcnZpY2VJRCA9ICcnOwogICAgICAgIH0KICAgICAgICBteSAkU0xBcyA9ICRTZWxmLT5fR2V0U0xBcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkQ3VzdG9tZXJVc2VyLAogICAgICAgICAgICBRdWV1ZUlEICAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkTmV4dFN0YXRlcyA9ICRTZWxmLT5fR2V0TmV4dFN0YXRlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkQ3VzdG9tZXJVc2VyIHx8ICcnLAogICAgICAgICAgICBRdWV1ZUlEICAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgPT4gJFN0YXRlSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgRHluYW1pYyBGaWVsZHMgUG9zc2libGUgVmFsdWVzIHZpYSBBSkFYCiAgICAgICAgbXkgQER5bmFtaWNGaWVsZEFKQVg7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0FDTFJlZHVjaWJsZTsKCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyRQb3NzaWJsZVZhbHVlc307CiAgICAgICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgPT4gJFF1ZXVlSUQsCiAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzfSA9IG1hcCB7ICRfID0+ICRQb3NzaWJsZVZhbHVlcy0+eyRffSB9IGtleXMgJUZpbHRlcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICApIHx8ICRQb3NzaWJsZVZhbHVlczsKCiAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICBwdXNoKAogICAgICAgICAgICAgICAgQER5bmFtaWNGaWVsZEFKQVgsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRTdGFuZGFyZFRlbXBsYXRlcyA9ICRTZWxmLT5fR2V0U3RhbmRhcmRUZW1wbGF0ZXMoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUXVldWVJRCA9PiAkUXVldWVJRCB8fCAnJywKICAgICAgICApOwoKICAgICAgICBteSBAVGVtcGxhdGVBSkFYOwoKICAgICAgICAjIHVwZGF0ZSB0aWNrZXQgYm9keSBhbmQgYXR0YWNoZW1lbnRzIGlmIG5lZWRlZC4KICAgICAgICBpZiAoICRFbGVtZW50Q2hhbmdlZCBlcSAnU3RhbmRhcmRUZW1wbGF0ZUlEJyApIHsKICAgICAgICAgICAgbXkgQFRpY2tldEF0dGFjaG1lbnRzOwogICAgICAgICAgICBteSAkVGVtcGxhdGVUZXh0OwoKICAgICAgICAgICAgIyByZW1vdmUgYWxsIGF0dGFjaG1lbnRzIGZyb20gdGhlIFVwbG9hZCBjYWNoZQogICAgICAgICAgICBteSAkUmVtb3ZlU3VjY2VzcyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFJlbW92ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGb3JtIGF0dGFjaG1lbnRzIGNvdWxkIG5vdCBiZSBkZWxldGVkISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB0aGUgdGVtcGxhdGUgdGV4dCBhbmQgc2V0IG5ldyBhdHRhY2htZW50cyBpZiBhIHRlbXBsYXRlIGlzIHNlbGVjdGVkCiAgICAgICAgICAgIGlmICggSXNQb3NpdGl2ZUludGVnZXIoICRHZXRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVHZW5lcmF0b3IgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKTsKCiAgICAgICAgICAgICAgICAjIHNldCB0ZW1wbGF0ZSB0ZXh0LCByZXBsYWNlIHNtYXJ0IHRhZ3MgKGxpbWl0ZWQgYXMgdGlja2V0IGlzIG5vdCBjcmVhdGVkKQogICAgICAgICAgICAgICAgJFRlbXBsYXRlVGV4dCA9ICRUZW1wbGF0ZUdlbmVyYXRvci0+VGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkR2V0UGFyYW17U3RhbmRhcmRUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmIFJlcGx5VG9BcnRpY2xlIGlzIGdpdmVuLCBnZXQgdGhpcyBhcnRpY2xlIHRvIGdlbmVyYXRlCiAgICAgICAgICAgICAgICAjIHRoZSBxdW90ZWQgYXJ0aWNsZSBjb250ZW50CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBhcnRpY2xlIHRvIHF1b3RlCiAgICAgICAgICAgICAgICAgICAgbXkgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUXVvdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICA9PiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWRDYWNoZU9iamVjdCA9PiAkVXBsb2FkQ2FjaGVPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBwcmVwYXJlIHF1b3RlZCBib2R5IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAkQm9keSA9ICRTZWxmLT5fR2V0UXVvdGVkUmVwbHlCb2R5KAogICAgICAgICAgICAgICAgICAgICAgICAleyAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgQm9keSA9PiAkQm9keSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGVtcGxhdGVUZXh0ID0gJFRlbXBsYXRlVGV4dCAuICc8YnI+PGJyPicgLiAkQm9keTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wbGF0ZVRleHQgPSAkVGVtcGxhdGVUZXh0IC4gIlxuXG4iIC4gJEJvZHk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY3JlYXRlIFN0ZEF0dGFjaG1lbnRPYmplY3QKICAgICAgICAgICAgICAgIG15ICRTdGRBdHRhY2htZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0ZEF0dGFjaG1lbnQnKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBzdGQuIGF0dGFjaG1lbnRzIHRvIHRpY2tldAogICAgICAgICAgICAgICAgbXkgJUFsbFN0ZEF0dGFjaG1lbnRzID0gJFN0ZEF0dGFjaG1lbnRPYmplY3QtPlN0ZEF0dGFjaG1lbnRTdGFuZGFyZFRlbXBsYXRlTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZFRlbXBsYXRlSUQgPT4gJEdldFBhcmFte1N0YW5kYXJkVGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yICggc29ydCBrZXlzICVBbGxTdGRBdHRhY2htZW50cyApIHsKICAgICAgICAgICAgICAgICAgICBteSAlQXR0YWNobWVudHNEYXRhID0gJFN0ZEF0dGFjaG1lbnRPYmplY3QtPlN0ZEF0dGFjaG1lbnRHZXQoIElEID0+ICRfICk7CiAgICAgICAgICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgJUF0dGFjaG1lbnRzRGF0YSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2VuZCBhIGxpc3Qgb2YgYXR0YWNobWVudHMgaW4gdGhlIHVwbG9hZCBjYWNoZSBiYWNrIHRvIHRoZSBjbGllbnRzaWRlIEphdmFTY3JpcHQKICAgICAgICAgICAgICAgICMgd2hpY2ggcmVuZGVycyB0aGVuIHRoZSBsaXN0IG9mIGN1cnJlbnRseSB1cGxvYWRlZCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgQFRpY2tldEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEBUZW1wbGF0ZUFKQVggPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVXNlVGVtcGxhdGVOb3RlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+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+e1N1YmplY3R9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgaHRtbCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICEkTWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWQKICAgICAgICAgICAgICAgICYmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KIyAtLS0KCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gPSBtYXAgeyAkXyA9PiAkUG9zc2libGVWYWx1ZXMtPnskX30gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgKSB7CiAgICAgICAgICAgICAgICRQb3NzaWJsZVZhbHVlc0ZpbHRlciA9ICAkU2VsZi0+X0dldE1hc3RlclNsYXZlRGF0YSgKICAgICAgICAgICAgICAgIFRpY2tldCA9PiBcJVRpY2tldCwKICAgICAgICAgICAgICAgIE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQojIC0tLQoKICAgICAgICAgICAgIyB0byBzdG9yZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gZGF0YWJhc2UgKG9yIHVuZGVmaW5lZCkKICAgICAgICAgICAgbXkgJFZhbHVlOwoKICAgICAgICAgICAgIyBvbmx5IGdldCB2YWx1ZXMgZm9yIFRpY2tldCBmaWVsZHMgKGFsbCBzY3JlZW5zIGJhc2VkIG9uIEFnZW50VGlja2VBY3Rpb25Db21tb24KICAgICAgICAgICAgIyBnZW5lcmF0ZXMgYSBuZXcgYXJ0aWNsZSwgdGhlbiBhcnRpY2xlIGZpZWxkcyB3aWxsIGJlIGFsd2F5cyBlbXB0eSBhdCB0aGUgYmVnaW5uaW5nKQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnVGlja2V0JyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB2YWx1ZSBzdG9yZWQgb24gdGhlIGRhdGFiYXNlIGZyb20gVGlja2V0CiAgICAgICAgICAgICAgICAkVmFsdWUgPSAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgZmllbGQgaHRtbAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgPT4gJFNlbGYtPl9HZXRGaWVsZHNUb1VwZGF0ZSgpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcHJpbnQgZm9ybSAuLi4KICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRUaWNrZXR7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgVGltZVVuaXRzUmVxdWlyZWQgPT4gKAogICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpCiAgICAgICAgICAgICAgICA/ICdWYWxpZGF0ZV9SZXF1aXJlZCcKICAgICAgICAgICAgICAgIDogJycKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyApIHsKICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgfQoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgV2lkZ2V0IFRpY2tldCBBY3Rpb25zCiAgICBpZiAoCiAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApCiAgICAgICAgfHwKICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgICAgICYmICRDb25maWctPntTZXJ2aWNlfSApICAgICB8fAogICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHx8CiAgICAgICAgJENvbmZpZy0+e1RpdGxlfSB8fAogICAgICAgICRDb25maWctPntRdWV1ZX0gfHwKICAgICAgICAkQ29uZmlnLT57T3duZXJ9IHx8CiAgICAgICAgJENvbmZpZy0+e1N0YXRlfSB8fAogICAgICAgICRDb25maWctPntQcmlvcml0eX0KICAgICAgICApCiAgICB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1dpZGdldFRpY2tldEFjdGlvbnMnLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnLT57VGl0bGV9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaXRsZScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIG15ICREeW5hbWljRmllbGROYW1lcyA9ICRTZWxmLT5fR2V0RmllbGRzVG9VcGRhdGUoCiAgICAgICAgT25seUR5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCB0aGUgcXVvdGVkIGR5bmFtaWMgZmllbGQgbmFtZXMgc2VwYXJhdGVkIGJ5IGNvbW1hcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZE5hbWVzKSApIHsKICAgICAgICBmb3IgbXkgJEZpZWxkICggQHskRHluYW1pY0ZpZWxkTmFtZXN9ICkgewogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkTmFtZXNTdHJnfSAuPSAiLCAnIiAuICRGaWVsZCAuICInIjsKICAgICAgICB9CiAgICB9CgogICAgIyB0eXBlcwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApIHsKICAgICAgICBteSAlVHlwZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFR5cGVMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplICcgLiAoICRQYXJhbXtFcnJvcnN9LT57VHlwZUlESW52YWxpZH0gfHwgJyAnICksCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVR5cGUsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVHlwZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1R5cGUnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXJ2aWNlcwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICBteSAkU2VydmljZXMgPSAkU2VsZi0+X0dldFNlcnZpY2VzKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFRpY2tldHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJlc2V0IHByZXZpb3VzIFNlcnZpY2VJRCB0byByZXNldCBTTEEtTGlzdCBpZiBubyBzZXJ2aWNlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCAhJFBhcmFte1NlcnZpY2VJRH0gfHwgISRTZXJ2aWNlcy0+eyAkUGFyYW17U2VydmljZUlEfSB9ICkgewogICAgICAgICAgICAkUGFyYW17U2VydmljZUlEfSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57U2VydmljZU1hbmRhdG9yeX0gKSB7CgogICAgICAgICAgICAkUGFyYW17U2VydmljZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlcnZpY2VzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUgJyAuICggJFBhcmFte1NlcnZpY2VJbnZhbGlkfSB8fCAnICcgKSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+ICRUcmVlVmlldywKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnVHJlZVZpZXcnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMjAwLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlTWFuZGF0b3J5JywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFBhcmFte1NlcnZpY2VTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZXJ2aWNlcywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplICcgLiAoICRQYXJhbXtTZXJ2aWNlSW52YWxpZH0gfHwgJyAnICksCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ1RyZWVWaWV3JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVNMQSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNMQUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRDb25maWctPntTTEFNYW5kYXRvcnl9ICkgewoKICAgICAgICAgICAgJFBhcmFte1NMQVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVTTEEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U0xBSUR9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUgJyAuICggJFBhcmFte1NMQUludmFsaWR9IHx8ICcgJyApLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU0xBTWFuZGF0b3J5JywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFBhcmFte1NMQVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVTTEEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U0xBSUR9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU0xBJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSApIHsKCiAgICAgICAgIyBmZXRjaCBhbGwgcXVldWVzCiAgICAgICAgbXkgJU1vdmVRdWV1ZXMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRNb3ZlTGlzdCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBUeXBlICAgICA9PiAnbW92ZV9pbnRvJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBtb3ZlIHF1ZXVlcwogICAgICAgICRQYXJhbXtRdWV1ZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkFnZW50UXVldWVMaXN0T3B0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgICA9PiB7ICVNb3ZlUXVldWVzLCAnJyA9PiAnLScgfSwKICAgICAgICAgICAgTXVsdGlwbGUgICAgICAgPT4gMCwKICAgICAgICAgICAgU2l6ZSAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgPT4gJ05ld1F1ZXVlSUQgTW9kZXJuaXplJywKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ05ld1F1ZXVlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgICA9PiAkUGFyYW17TmV3UXVldWVJRH0sCiAgICAgICAgICAgIFRyZWVWaWV3ICAgICAgID0+ICRUcmVlVmlldywKICAgICAgICAgICAgQ3VycmVudFF1ZXVlSUQgPT4gJFBhcmFte1F1ZXVlSUR9LAogICAgICAgICAgICBPbkNoYW5nZVN1Ym1pdCA9PiAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdRdWV1ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkVXNlck9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwogICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgogICAgaWYgKCAkQ29uZmlnLT57T3duZXJ9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9mIG93biBncm91cHMKICAgICAgICBteSAlU2hvd25Vc2VyczsKICAgICAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkR0lEICAgICAgICA9ICRRdWV1ZU9iamVjdC0+R2V0UXVldWVHcm91cElEKCBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ293bmVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnTmV3T3duZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBvbGQgb3duZXIKICAgICAgICBteSBAT2xkVXNlckluZm8gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lckxpc3QoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CiAgICAgICAgbXkgQE9sZE93bmVyczsKICAgICAgICBteSAlT2xkT3duZXJzU2hvd247CiAgICAgICAgbXkgJVNlZW5PbGRPd25lcjsKICAgICAgICBpZiAoQE9sZFVzZXJJbmZvKSB7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMTsKICAgICAgICAgICAgVVNFUjoKICAgICAgICAgICAgZm9yIG15ICRVc2VyICggcmV2ZXJzZSBAT2xkVXNlckluZm8gKSB7CgogICAgICAgICAgICAgICAgIyBza2lwIGlmIG9sZCBvd25lciBpcyBhbHJlYWR5IGluIHRoZSBsaXN0CiAgICAgICAgICAgICAgICBuZXh0IFVTRVIgaWYgJFNlZW5PbGRPd25lcnsgJFVzZXItPntVc2VySUR9IH07CiAgICAgICAgICAgICAgICAkU2Vlbk9sZE93bmVyeyAkVXNlci0+e1VzZXJJRH0gfSA9IDE7CiAgICAgICAgICAgICAgICBteSAkS2V5ICAgPSAkVXNlci0+e1VzZXJJRH07CiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAiJENvdW50ZXI6ICRVc2VyLT57VXNlckZ1bGxuYW1lfSI7CiAgICAgICAgICAgICAgICBwdXNoIEBPbGRPd25lcnMsIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAkT2xkT3duZXJzU2hvd257JEtleX0gPSAkVmFsdWU7CiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkT2xkT3duZXJTZWxlY3RlZElEID0gJyc7CiAgICAgICAgaWYgKCAkUGFyYW17T2xkT3duZXJJRH0gKSB7CiAgICAgICAgICAgICRPbGRPd25lclNlbGVjdGVkSUQgPSAkUGFyYW17T2xkT3duZXJJRH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9sZFVzZXJJbmZvWzBdLT57VXNlcklEfSApIHsKICAgICAgICAgICAgJE9sZE93bmVyU2VsZWN0ZWRJRCA9ICRPbGRVc2VySW5mb1swXS0+e1VzZXJJRH0gLiAnMSc7CiAgICAgICAgfQoKICAgICAgICBteSAkT2xkT3duZXJBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdPbGRPd25lcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVPbGRPd25lcnNTaG93biwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRPbGRPd25lckFDTCkgewogICAgICAgICAgICAlT2xkT3duZXJzU2hvd24gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHN0cmluZwogICAgICAgICRQYXJhbXtPd25lclN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtOZXdPd25lcklEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTmV3T3duZXJJRCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e093bmVyTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdPd25lckludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFNpemUgICAgICAgICA9PiAxLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgRmlsdGVycyAgICAgID0+IHsKICAgICAgICAgICAgICAgIE9sZE93bmVycyA9PiB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUHJldmlvdXMgT3duZXInKSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgPT4gXCVPbGRPd25lcnNTaG93biwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJENvbmZpZy0+e093bmVyTWFuZGF0b3J5fSA/ICdPd25lck1hbmRhdG9yeScgOiAnT3duZXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpSZXNwb25zaWJsZScpICYmICRDb25maWctPntSZXNwb25zaWJsZX0gKSB7CgogICAgICAgICMgZ2V0IHVzZXIgb2Ygb3duIGdyb3VwcwogICAgICAgIG15ICVTaG93blVzZXJzOwogICAgICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAlQWxsR3JvdXBzTWVtYmVyczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgICAgICBteSAlTWVtYmVyTGlzdCA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncmVzcG9uc2libGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgICAgICRTaG93blVzZXJzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdSZXNwb25zaWJsZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHJlc3BvbnNpYmxlCiAgICAgICAgJFBhcmFte1Jlc3BvbnNpYmxlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdOZXdSZXNwb25zaWJsZUlEJywKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWctPntTdGF0ZX0gKSB7CgogICAgICAgIG15ICVTdGF0ZTsKICAgICAgICBteSAlU3RhdGVMaXN0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0U3RhdGVMaXN0KAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkUGFyYW17TmV3U3RhdGVJRH0gKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1N0YXRlRGVmYXVsdH0gKSB7CiAgICAgICAgICAgICAgICAkU3RhdGV7U2VsZWN0ZWRWYWx1ZX0gPSAkQ29uZmlnLT57U3RhdGVEZWZhdWx0fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFN0YXRle1NlbGVjdGVkSUR9ID0gJFBhcmFte05ld1N0YXRlSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBuZXh0IHN0YXRlcyBzdHJpbmcKICAgICAgICAkUGFyYW17U3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+ICRDb25maWctPntTdGF0ZURlZmF1bHR9ID8gMCA6IDEsCiAgICAgICAgICAgICVTdGF0ZSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdGF0ZScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJENvbmZpZy0+e1N0YXRlVHlwZX0gKSApIHsKCiAgICAgICAgICAgIFNUQVRFVFlQRToKICAgICAgICAgICAgZm9yIG15ICRTdGF0ZVR5cGUgKCBAeyAkQ29uZmlnLT57U3RhdGVUeXBlfSB9ICkgewoKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFIGlmICEkU3RhdGVUeXBlOwogICAgICAgICAgICAgICAgbmV4dCBTVEFURVRZUEUgaWYgJFN0YXRlVHlwZSAhfiAvcGVuZGluZy9pOwoKICAgICAgICAgICAgICAgICMgZ2V0IHVzZWQgY2FsZW5kYXIKICAgICAgICAgICAgICAgIG15ICRDYWxlbmRhciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENhbGVuZGFyR2V0KAogICAgICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRQYXJhbXtEYXRlU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgICAgICAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gNSwKICAgICAgICAgICAgICAgICAgICBEaWZmVGltZSAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6UGVuZGluZ0RpZmZUaW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgfHwgMCwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGF0ZUludmFsaWR9IHx8ICcgJywKICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZSAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGF0ZUluRnV0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIgICAgICAgICAgICAgPT4gJENhbGVuZGFyLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGF0ZVBlbmRpbmcnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbGFzdCBTVEFURVRZUEU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcHJpb3JpdHkKICAgIGlmICggJENvbmZpZy0+e1ByaW9yaXR5fSApIHsKCiAgICAgICAgbXkgJVByaW9yaXR5OwogICAgICAgIG15ICVQcmlvcml0eUxpc3QgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fSApIHsKICAgICAgICAgICAgJFByaW9yaXR5TGlzdHsnJ30gPSAnLSc7CiAgICAgICAgfQogICAgICAgIGlmICggISRQYXJhbXtOZXdQcmlvcml0eUlEfSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fSApIHsKICAgICAgICAgICAgICAgICRQcmlvcml0eXtTZWxlY3RlZFZhbHVlfSA9ICRDb25maWctPntQcmlvcml0eURlZmF1bHR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRJRH0gPSAkUGFyYW17TmV3UHJpb3JpdHlJRH07CiAgICAgICAgfQogICAgICAgICRQcmlvcml0eXtTZWxlY3RlZElEfSB8fD0gJFBhcmFte1ByaW9yaXR5SUR9OwogICAgICAgICRQYXJhbXtQcmlvcml0eVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgID0+IFwlUHJpb3JpdHlMaXN0LAogICAgICAgICAgICBOYW1lICA9PiAnTmV3UHJpb3JpdHlJRCcsCiAgICAgICAgICAgIENsYXNzID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAlUHJpb3JpdHksCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUHJpb3JpdHknLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVuZCBXaWRnZXQgVGlja2V0IEFjdGlvbnMKCiAgICAjIGRlZmluZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gc2hvdyBiYXNlZCBvbiB0aGUgb2JqZWN0IHR5cGUKICAgIG15ICRPYmplY3RUeXBlID0gWydUaWNrZXQnXTsKCiAgICAjIG9ubHkgc2NyZWVucyB0aGF0IGFkZCBub3RlcyBjYW4gbW9kaWZ5IEFydGljbGUgZHluYW1pYyBmaWVsZHMKICAgIGlmICggJENvbmZpZy0+e05vdGV9ICkgewogICAgICAgICRPYmplY3RUeXBlID0gWyAnVGlja2V0JywgJ0FydGljbGUnIF07CiAgICB9CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICRPYmplY3RUeXBlLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICAjIFdpZGdldCBEeW5hbWljIEZpZWxkcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1dpZGdldER5bmFtaWNGaWVsZHMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBEeW5hbWljIGZpZWxkcwogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgSFRNTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0KICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgaHRtbCBzdHJpbmdzIGZvcm0gJFBhcmFtCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgRW5kIFdpZGdldCBEeW5hbWljIEZpZWxkcwoKICAgICMgV2lkZ2V0IEFydGljbGUKICAgIGlmICggJENvbmZpZy0+e05vdGV9ICkgewoKICAgICAgICAkUGFyYW17V2lkZ2V0U3RhdHVzfSA9ICdDb2xsYXBzZWQnOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fQogICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgfHwgJFBhcmFte0lzVXBsb2FkfQogICAgICAgICAgICB8fCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkUGFyYW17V2lkZ2V0U3RhdHVzfSA9ICdFeHBhbmRlZCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fQogICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFBhcmFte1N1YmplY3RSZXF1aXJlZH0gPSAnVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgICAgICAgICAkUGFyYW17Qm9keVJlcXVpcmVkfSAgICA9ICdWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUGFyYW17U3ViamVjdFJlcXVpcmVkfSA9ICdWYWxpZGF0ZV9EZXBlbmRpbmdSZXF1aXJlZEFORCBWYWxpZGF0ZV9EZXBlbmRpbmdfQ3JlYXRlQXJ0aWNsZSc7CiAgICAgICAgICAgICRQYXJhbXtCb2R5UmVxdWlyZWR9ICAgID0gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdXaWRnZXRBcnRpY2xlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBhbGwgdXNlciBpZHMgb2YgYWdlbnRzLCB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGlzIGRpYWxvZwogICAgICAgICMgYmFzZWQgb24gcXVldWUgcmlnaHRzCiAgICAgICAgbXkgJVNob3duVXNlcnM7CiAgICAgICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkVXNlck9iamVjdC0+VXNlckxpc3QoCiAgICAgICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwogICAgICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgVHlwZSAgICA9PiAnbm90ZScsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGVtYWlsIHBhcnNlciBvYmplY3QKICAgICAgICBteSAkRW1haWxQYXJzZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXItPm5ldygKICAgICAgICAgICAgTW9kZSAgPT4gJ1N0YW5kYWxvbmUnLAogICAgICAgICAgICBEZWJ1ZyA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgYW5kIHJldHJpZXZlIGludm9sdmVkIGFuZCBpbmZvcm1lZCBhZ2VudHMgb2YgUmVwbHlUbyBOb3RlCiAgICAgICAgbXkgQFJlcGx5VG9Vc2VyczsKICAgICAgICBteSAlUmVwbHlUb1VzZXJzSGFzaDsKICAgICAgICBteSAlUmVwbHlUb1VzZXJJRHM7CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKICAgICAgICAgICAgbXkgQFJlcGx5VG9QYXJ0cyA9ICRFbWFpbFBhcnNlck9iamVjdC0+U3BsaXRBZGRyZXNzTGluZSgKICAgICAgICAgICAgICAgIExpbmUgPT4gJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9LT57VG99IHx8ICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUkVQTFlUT1BBUlQ6CiAgICAgICAgICAgIGZvciBteSAkU2luZ2xlUmVwbHlUb1BhcnQgKEBSZXBseVRvUGFydHMpIHsKICAgICAgICAgICAgICAgIG15ICRSZXBseVRvQWRkcmVzcyA9ICRFbWFpbFBhcnNlck9iamVjdC0+R2V0RW1haWxBZGRyZXNzKAogICAgICAgICAgICAgICAgICAgIEVtYWlsID0+ICRTaW5nbGVSZXBseVRvUGFydCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBSRVBMWVRPUEFSVCBpZiAhJFJlcGx5VG9BZGRyZXNzOwogICAgICAgICAgICAgICAgcHVzaCBAUmVwbHlUb1VzZXJzLCAkUmVwbHlUb0FkZHJlc3M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXBseVRvVXNlcnNIYXNoeyRffSsrIGZvciBAUmVwbHlUb1VzZXJzOwoKICAgICAgICAgICAgIyBnZXQgdXNlciBpZHMgb2YgYXZhaWxhYmxlIHVzZXJzCiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVTaG93blVzZXJzICkgewogICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVXNlckVtYWlsID0gJFVzZXJEYXRhe1VzZXJFbWFpbH07CiAgICAgICAgICAgICAgICBpZiAoICRSZXBseVRvVXNlcnNIYXNoeyRVc2VyRW1haWx9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXBseVRvVXNlcklEc3skVXNlcklEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIG9yaWdpbmFsIG5vdGUgc2VuZGVyIHRvIGxpc3Qgb2YgdXNlciBpZHMKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IEB7ICRTZWxmLT57UmVwbHlUb1NlbmRlclVzZXJJRH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHNlbmRlciByZXBsaWVzIHRvIGhpbXNlbGYsIGRvIG5vdCBpbmNsdWRlIHNlbmRlciBpbiBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRVc2VySUQgbmUgJFNlbGYtPntVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXBseVRvVXNlcklEc3skVXNlcklEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIHVzZXIgaWQgb2YgYWN0aXZlIHVzZXIKICAgICAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3sgJFNlbGYtPntVc2VySUR9IH07CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gfHwgJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFkZGl0aW9uYWxBZ2VudHMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICAgICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICAgICAjIGdldCBhbGwgYWdlbnRzIGZvciAiaW52b2x2ZWQgYWdlbnRzIgogICAgICAgIGlmICggJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewoKICAgICAgICAgICAgbXkgQFVzZXJJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJbnZvbHZlZEFnZW50c0xpc3QoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBJbnZvbHZlZEFnZW50czsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAxOwoKICAgICAgICAgICAgIyBnZXQgaW52b2x2ZWQgdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgICAgIFVTRVI6CiAgICAgICAgICAgIGZvciBteSAkVXNlciAoIHJldmVyc2UgQFVzZXJJRHMgKSB7CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gIiRDb3VudGVyOiAkVXNlci0+e1VzZXJGdWxsbmFtZX0iOwogICAgICAgICAgICAgICAgaWYgKCAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlIC49ICIgJFVzZXItPntPdXRPZk9mZmljZU1lc3NhZ2V9IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZEFnZW50cywgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRVc2VyLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAjIGFkZCBpbnZvbHZlZCB1c2VyIGFzIHNlbGVjdGVkIGVudHJpZXMsIGlmIGF2YWlsYWJsZSBpbiBSZXBseVRvQWRkcmVzc2VzIGxpc3QKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZFVzZXJJRCwgJFVzZXItPntVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVwbHlUb1VzZXJJRHN7ICRVc2VyLT57VXNlcklEfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkSW52b2x2ZWRBZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okludm9sdmVkQWdlbnRNYXhTaXplJykgfHwgMzsKICAgICAgICAgICAgJFBhcmFte0ludm9sdmVkQWdlbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcQEludm9sdmVkQWdlbnRzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQEludm9sdmVkVXNlcklELAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW52b2x2ZWRVc2VySUQnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEludm9sdmVkQWdlbnRTaXplLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBibG9jayBpcyBjYWxsZWQgYmVsb3cgImluZm9ybSBhZ2VudHMiCiAgICAgICAgfQoKICAgICAgICAjIGFnZW50IGxpc3QKICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CgogICAgICAgICAgICAjIGdldCBpbmZvcm0gdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbmZvcm1Vc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBlbWFpbCBhZGRyZXNzIG9mIGFsbCB1c2VycyBhbmQgY29tcGFyZSB0byByZXBseXRvLWFkZHJlc3NlcwogICAgICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEluZm9ybVVzZXJJRCwgJFVzZXJJRDsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3skVXNlcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRJbmZvcm1BZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkluZm9ybUFnZW50TWF4U2l6ZScpCiAgICAgICAgICAgICAgICB8fCAzOwogICAgICAgICAgICAkUGFyYW17T3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQEluZm9ybVVzZXJJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0luZm9ybVVzZXJJRCcsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICA9PiAkSW5mb3JtQWdlbnRTaXplLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50JywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGludm9sdmVkCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW52b2x2ZWRBZ2VudH0gKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ludm9sdmVkQWdlbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGxpc3Qgb2YgYWdlbnRzLCB0aGF0IHJlY2VpdmUgdGhpcyBub3RlIChSZXBseVRvTm90ZSkKICAgICAgICAjIGF0IGxlYXN0IHNlbmRlciBvZiBvcmlnaW5hbCBub3RlIGFuZCBhbGwgcmVjZXBpZW50cyBvZiB0aGUgb3JpZ2luYWwgbm90ZQogICAgICAgICMgdGhhdCBjb3VsZG4ndCBiZSBzZWxlY3RlZCB3aXRoIGludm9sdmVkL2luZm9ybSBhZ2VudHMKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgbXkgJFVzZXJzSGFzaFNpemUgPSBrZXlzICVSZXBseVRvVXNlcklEczsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICAgICAgPSAwOwogICAgICAgICAgICAkUGFyYW17VXNlckxpc3RXaXRob3V0U2VsZWN0aW9ufSA9IGpvaW4oICcsJywga2V5cyAlUmVwbHlUb1VzZXJJRHMgKTsKCiAgICAgICAgICAgIGlmICggJFVzZXJzSGFzaFNpemUgPiAwICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlUmVwbHlUb1VzZXJJRHMgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlVXNlckRhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgYSBzZXBhcmF0b3IgKEluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yKSwKICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCBsYXN0IGVudHJ5CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ291bnRlciA8ICRVc2Vyc0hhc2hTaXplICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVVc2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewoKICAgICAgICAgICAgIyB1c2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgICAgICRQYXJhbXtSaWNoVGV4dFdpZHRofSAgPSAkQ29uZmlnLT57UmljaFRleHRXaWR0aH0gIHx8IDA7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JpY2hUZXh0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9CiAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1YmplY3RMYWJlbE1hbmRhdG9yeScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHRMYWJlbE1hbmRhdG9yeScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1YmplY3RMYWJlbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHRMYWJlbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgc3BlbGwgY2hlY2sKICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyU3BlbGxDaGVja2VyfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRPcHRpb25zJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTcGVsbENoZWNrJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgdGV4dCB0ZW1wbGF0ZSBzdHJpbmcKICAgICAgICBteSAlU3RhbmRhcmRUZW1wbGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhbmRhcmRUZW1wbGF0ZScpLT5TdGFuZGFyZFRlbXBsYXRlTGlzdCgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgVHlwZSAgPT4gJ05vdGUnLAogICAgICAgICk7CgogICAgICAgIG15ICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzID0gJFNlbGYtPl9HZXRTdGFuZGFyZFRlbXBsYXRlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSB8fCAnJywKICAgICAgICApOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgJFF1ZXVlU3RhbmRhcmRUZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICB8fCAoICRDb25maWctPntRdWV1ZX0gJiYgSXNIYXNoUmVmV2l0aERhdGEoIFwlU3RhbmRhcmRUZW1wbGF0ZXMgKSApCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFBhcmFte1N0YW5kYXJkVGVtcGxhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzIHx8IHt9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTdGFuZGFyZFRlbXBsYXRlSUQnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9IHx8ICcnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFuZGFyZFRlbXBsYXRlJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgYXR0YWNobWVudHMKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9CiAgICAgICAgICAgICAgICAmJiAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9fiAvaW1hZ2UvaSApCiAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICBEYXRhID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBBcnRpY2xlVHlwZUlEIHN0cmluZwogICAgICAgIG15ICVBcnRpY2xlVHlwZTsKCiAgICAgICAgIyBzZXQgYXJ0aWNsZSB0eXBlIG9mIHRoaXMgbm90ZSB0byB0aGUgc2FtZSB0eXBlIGFzIHRoZSBhcnRpY2xlIGZvciB3aG9tIHRoaXMgaXMgdGhlIHJlcGx5CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSAmJiAhJFBhcmFte0FydGljbGVUeXBlSUR9ICkgewogICAgICAgICAgICAkQXJ0aWNsZVR5cGV7U2VsZWN0ZWRJRH0gPSAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH17QXJ0aWNsZVR5cGVJRH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggISRQYXJhbXtBcnRpY2xlVHlwZUlEfSApIHsKICAgICAgICAgICAgJEFydGljbGVUeXBle1NlbGVjdGVkVmFsdWV9ID0gJENvbmZpZy0+e0FydGljbGVUeXBlRGVmYXVsdH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQXJ0aWNsZVR5cGV7U2VsZWN0ZWRJRH0gPSAkUGFyYW17QXJ0aWNsZVR5cGVJRH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBwb3NzaWJsZSBub3RlcwogICAgICAgIGlmICggJENvbmZpZy0+e0FydGljbGVUeXBlc30gKSB7CiAgICAgICAgICAgIG15ICVEZWZhdWx0Tm90ZVR5cGVzID0gJXsgJENvbmZpZy0+e0FydGljbGVUeXBlc30gfTsKICAgICAgICAgICAgbXkgJU5vdGVUeXBlcyAgICAgICAgPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlVHlwZUxpc3QoIFJlc3VsdCA9PiAnSEFTSCcgKTsKICAgICAgICAgICAgZm9yIG15ICRLZXlOb3RlVHlwZSAoIHNvcnQga2V5cyAlTm90ZVR5cGVzICkgewogICAgICAgICAgICAgICAgaWYgKCAhJERlZmF1bHROb3RlVHlwZXN7ICROb3RlVHlwZXN7JEtleU5vdGVUeXBlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkTm90ZVR5cGVzeyRLZXlOb3RlVHlwZX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRQYXJhbXtBcnRpY2xlVHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICA9PiBcJU5vdGVUeXBlcywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdBcnRpY2xlVHlwZUlEJywKICAgICAgICAgICAgICAgIENsYXNzID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgJUFydGljbGVUeXBlLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FydGljbGVUeXBlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyB0aW1lIGFjY291bnRpbmcgYm94CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFjY291bnRUaW1lJykgKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRzTGFiZWxNYW5kYXRvcnknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaW1lVW5pdHNMYWJlbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0cycsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgRW5kIFdpZGdldCBBcnRpY2xlCgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+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+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFNlcnZpY2VMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuIFwlU2VydmljZTsKfQoKc3ViIF9HZXRTTEFzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiBub24gc2V0IGN1c3RvbWVycyBjYW4gZ2V0IGRlZmF1bHQgc2VydmljZXMgdGhlbiB0aGV5IHNob3VsZCBhbHNvIGJlIGFibGUgdG8gZ2V0IHRoZSBTTEFzCiAgICAjICBmb3IgdGhvc2Ugc2VydmljZXMgKHRoaXMgd29ya3MgZHVyaW5nIHRpY2tldCBjcmVhdGlvbikuCiAgICAjIGlmIG5vIEN1c3RvbWVyVXNlcklEIGlzIHNldCwgVGlja2V0U0xBTGlzdCB3aWxsIGNvbXBsYWluIGR1cmluZyBBSkFYIHVwZGF0ZXMgYXMgVXNlcklEIGlzIG5vdAogICAgIyAgcGFzc2VkLiBTZWUgYnVnIDExMTQ3LgoKICAgICMgZ2V0IG9wdGlvbnMgZm9yIGRlZmF1bHQgc2VydmljZXMgZm9yIHVua25vd24gY3VzdG9tZXJzCiAgICBteSAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIKICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpTZXJ2aWNlOjpEZWZhdWx0OjpVbmtub3duQ3VzdG9tZXInKTsKCiAgICAjIGNoZWNrIGlmIG5vIEN1c3RvbWVyVXNlcklEIGlzIHNlbGVjdGVkCiAgICAjIGlmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9IDAgbGVhdmUgQ3VzdG9tZXJVc2VySUQgZW1wdHksIGl0IHdpbGwgbm90IGdldCBhbnkgc2VydmljZXMKICAgICMgaWYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gMSBzZXQgQ3VzdG9tZXJVc2VySUQgdG8gZ2V0IGRlZmF1bHQgc2VydmljZXMKICAgIGlmICggISRQYXJhbXtDdXN0b21lclVzZXJJRH0gJiYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyICkgewogICAgICAgICRQYXJhbXtDdXN0b21lclVzZXJJRH0gPSAnPERFRkFVTFQ+JzsKICAgIH0KCiAgICBteSAlU0xBOwogICAgaWYgKCAkUGFyYW17U2VydmljZUlEfSApIHsKICAgICAgICAlU0xBID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRTTEFMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuIFwlU0xBOwp9CgpzdWIgX0dldFByaW9yaXRpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlUHJpb3JpdGllcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0UHJpb3JpdHlMaXN0KAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICBpZiAoICEkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fSApIHsKICAgICAgICAkUHJpb3JpdGllc3snJ30gPSAnLSc7CiAgICB9CiAgICByZXR1cm4gXCVQcmlvcml0aWVzOwp9CgpzdWIgX0dldEZpZWxkc1RvVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgQFVwZGF0YWJsZUZpZWxkczsKCiAgICAjIHNldCB0aGUgZmllbGRzIHRoYXQgY2FuIGJlIHVwZGF0ZWFibGUgdmlhIEFKQVhVcGRhdGUKICAgIGlmICggISRQYXJhbXtPbmx5RHluYW1pY0ZpZWxkc30gKSB7CiAgICAgICAgQFVwZGF0YWJsZUZpZWxkcyA9IHF3KAogICAgICAgICAgICBUeXBlSUQgU2VydmljZUlEIFNMQUlEIE5ld093bmVySUQgTmV3UmVzcG9uc2libGVJRCBOZXdTdGF0ZUlECiAgICAgICAgICAgIE5ld1ByaW9yaXR5SUQKICAgICAgICApOwogICAgfQoKICAgICMgZGVmaW5lIHRoZSBkeW5hbWljIGZpZWxkcyB0byBzaG93IGJhc2VkIG9uIHRoZSBvYmplY3QgdHlwZQogICAgbXkgJE9iamVjdFR5cGUgPSBbJ1RpY2tldCddOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgb25seSBzY3JlZW5zIHRoYXQgYWRkIG5vdGVzIGNhbiBtb2RpZnkgQXJ0aWNsZSBkeW5hbWljIGZpZWxkcwogICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gKSB7CiAgICAgICAgJE9iamVjdFR5cGUgPSBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXTsKICAgIH0KCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0FDTFJlZHVjaWJsZTsKCiAgICAgICAgcHVzaCBAVXBkYXRhYmxlRmllbGRzLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICB9CgogICAgcmV0dXJuIFxAVXBkYXRhYmxlRmllbGRzOwp9CgpzdWIgX0dldFF1b3RlZFJlcGx5Qm9keSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyByZXdyYXAgYm9keSBpZiBleGlzdHMKICAgICAgICBpZiAoICRQYXJhbXtCb2R5fSApIHsKICAgICAgICAgICAgJFBhcmFte0JvZHl9ID1+IHMvXHQvIC9nOwogICAgICAgICAgICBteSAkUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpRdW90ZScpIHx8ICcnLAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRRdW90ZSkgewoKICAgICAgICAgICAgICAgICMgcXVvdGUgdGV4dAogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxibG9ja3F1b3RlIHR5cGU9XCJjaXRlXCI+JFBhcmFte0JvZHl9PC9ibG9ja3F1b3RlPlxuIjsKCiAgICAgICAgICAgICAgICAjIGNsZWFudXAgbm90IGNvbXBhdC4gdGFncwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudENsZWFudXAoCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtCb2R5fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFJlc3BvbnNlRm9ybWF0CiAgICAgICAgICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKCAkUGFyYW17Q3JlYXRlZH0sICdEYXRlRm9ybWF0JywgJ05vU2Vjb25kcycgKTsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdCAuPSAnIC0gJyAuICRQYXJhbXtGcm9tfSAuICcgJzsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdAogICAgICAgICAgICAgICAgICAgIC49ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnd3JvdGUnKSAuICc6JzsKCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkUmVzcG9uc2VGb3JtYXQgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxici8+IiAuICRQYXJhbXtCb2R5fTsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtDcmVhdGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RhdGUnKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICI6ICRQYXJhbXtDcmVhdGVkfTxici8+IiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgKHF3KFN1YmplY3QgUmVwbHlUbyBSZXBseS1UbyBDYyBUbyBGcm9tKSkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFteyRffSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRfKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17JF99PGJyLz4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRnJvbSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMlJpY2hUZXh0KAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17RnJvbX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRNZXNzYWdlRnJvbSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTWVzc2FnZSBmcm9tJyk7CiAgICAgICAgICAgICAgICBteSAkRW5kTWVzc2FnZSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0VuZCBtZXNzYWdlJyk7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxici8+LS0tLSAkTWVzc2FnZUZyb20gJEZyb20gLS0tPGJyLz48YnIvPiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gLj0gIjxici8+LS0tLSAkRW5kTWVzc2FnZSAtLS08YnIvPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBwcmVwYXJlIGJvZHksIHN1YmplY3QsIFJlcGx5VG8gLi4uCiAgICAgICAgIyByZXdyYXAgYm9keSBpZiBleGlzdHMKICAgICAgICBpZiAoICRQYXJhbXtCb2R5fSApIHsKICAgICAgICAgICAgJFBhcmFte0JvZHl9ID1+IHMvXHQvIC9nOwogICAgICAgICAgICBteSAkUXVvdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlF1b3RlJyk7CiAgICAgICAgICAgIGlmICgkUXVvdGUpIHsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9fiBzL1xuL1xuJFF1b3RlIC9nOwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIlxuJFF1b3RlICIgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICAgICAgbXkgJFJlc3BvbnNlRm9ybWF0CiAgICAgICAgICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKCAkUGFyYW17Q3JlYXRlZH0sICdEYXRlRm9ybWF0JywgJ05vU2Vjb25kcycgKTsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdCAuPSAnIC0gJyAuICRQYXJhbXtGcm9tfSAuICcgJzsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdAogICAgICAgICAgICAgICAgICAgIC49ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnd3JvdGUnKSAuICI6XG4iOwoKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICRSZXNwb25zZUZvcm1hdCAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICJcbiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtDcmVhdGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RhdGUnKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICI6ICRQYXJhbXtDcmVhdGVkfVxuIiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgKHF3KFN1YmplY3QgUmVwbHlUbyBSZXBseS1UbyBDYyBUbyBGcm9tKSkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFteyRffSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRfKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17JF99XG4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkTWVzc2FnZUZyb20gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ01lc3NhZ2UgZnJvbScpOwogICAgICAgICAgICAgICAgbXkgJEVuZE1lc3NhZ2UgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdFbmQgbWVzc2FnZScpOwoKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICJcbi0tLS0gJE1lc3NhZ2VGcm9tICRQYXJhbXtGcm9tfSAtLS1cblxuIiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSAuPSAiXG4tLS0tICRFbmRNZXNzYWdlIC0tLVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0JvZHl9Owp9CgpzdWIgX0dldFN0YW5kYXJkVGVtcGxhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY3JlYXRlIHRlbXBsYXRlcwogICAgbXkgJVRlbXBsYXRlczsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgcmV0dXJuIFwlVGVtcGxhdGVzIGlmICEkUGFyYW17UXVldWVJRH0gJiYgISRQYXJhbXtUaWNrZXRJRH07CgogICAgbXkgJFF1ZXVlSUQgPSAkUGFyYW17UXVldWVJRH0gfHwgJyc7CiAgICBpZiAoICEkUGFyYW17UXVldWVJRH0gJiYgJFBhcmFte1RpY2tldElEfSApIHsKCiAgICAgICAgIyBnZXQgUXVldWVJRCBmcm9tIHRoZSB0aWNrZXQKICAgICAgICBteSAlVGlja2V0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRRdWV1ZUlEID0gJFRpY2tldHtRdWV1ZUlEfSB8fCAnJzsKICAgIH0KCiAgICAjIGZldGNoIGFsbCBzdGQuIHRlbXBsYXRlcwogICAgbXkgJVN0YW5kYXJkVGVtcGxhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlU3RhbmRhcmRUZW1wbGF0ZU1lbWJlckxpc3QoCiAgICAgICAgUXVldWVJRCAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICBUZW1wbGF0ZVR5cGVzID0+IDEsCiAgICApOwoKICAgICMgcmV0dXJuIGVtcHR5IGhhc2ggaWYgdGhlcmUgYXJlIG5vIHRlbXBsYXRlcyBmb3IgdGhpcyBzY3JlZW4KICAgIHJldHVybiBcJVRlbXBsYXRlcyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGFuZGFyZFRlbXBsYXRlc3tOb3RlfSApOwoKICAgICMgcmV0dXJuIGp1c3QgdGhlIHRlbXBsYXRlcyBmb3IgdGhpcyBzY3JlZW4KICAgIHJldHVybiAkU3RhbmRhcmRUZW1wbGF0ZXN7Tm90ZX07Cn0KCnN1YiBfR2V0VHlwZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0eXBlCiAgICBteSAlVHlwZTsKICAgIGlmICggJFBhcmFte1F1ZXVlSUR9IHx8ICRQYXJhbXtUaWNrZXRJRH0gKSB7CiAgICAgICAgJVR5cGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFR5cGVMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuIFwlVHlwZTsKfQoKc3ViIF9HZXRRdWV1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEdldCBRdWV1ZXMuCiAgICBteSAlUXVldWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRNb3ZlTGlzdCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBUeXBlICAgICA9PiAnbW92ZV9pbnRvJywKICAgICk7CiAgICByZXR1cm4gXCVRdWV1ZXM7Cn0KIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0Kc3ViIF9HZXRNYXN0ZXJTbGF2ZURhdGEgewogICAgbXkgKCRTZWxmLCAlUGFyYW0pID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJFVuc2V0TWFzdGVyU2xhdmUgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6VW5zZXRNYXN0ZXJTbGF2ZScpIHx8IDA7CiAgICBteSAkVXBkYXRlTWFzdGVyU2xhdmUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpVcGRhdGVNYXN0ZXJTbGF2ZScpIHx8IDA7CgogICAgbXkgJVRpY2tldCA9ICV7ICRQYXJhbXtUaWNrZXR9IH07CiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkUGFyYW17TWFzdGVyU2xhdmVEeW5hbWljRmllbGR9OwoKICAgIG15ICRGaWVsZFZhbHVlID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIH0gfHwgJyc7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAlRGF0YSA9ICgKICAgICAgICAnJyA9PiAnLScsCiAgICApOwoKICAgIGlmICggJEZpZWxkVmFsdWUgbmUgJ01hc3RlcicgKSB7CiAgICAgICAgJERhdGF7TWFzdGVyfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTmV3IE1hc3RlciBUaWNrZXQnKTsKICAgIH0KICAgIGlmICggJFVuc2V0TWFzdGVyU2xhdmUgJiYgJEZpZWxkVmFsdWUgZXEgJ01hc3RlcicgKSB7CiAgICAgICAgJERhdGF7VW5zZXRNYXN0ZXJ9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdVbnNldCBNYXN0ZXIgVGlja2V0Jyk7CiAgICB9CiAgICBpZiAoICRVbnNldE1hc3RlclNsYXZlICYmICRGaWVsZFZhbHVlID1+IG17XlNsYXZlT2Y6KC4qPykkfXhtcyApIHsKICAgICAgICAkRGF0YXtVbnNldFNsYXZlfSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1Vuc2V0IFNsYXZlIFRpY2tldCcpOwogICAgfQoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRUaWNrZXRIb29rICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rJyk7CiAgICBteSAkVGlja2V0SG9va0RpdmlkZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9va0RpdmlkZXInKTsKCiAgICBpZiAoICRVcGRhdGVNYXN0ZXJTbGF2ZSApIHsKICAgICAgICBteSBAVGlja2V0SURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKCiAgICAgICAgICAgICMgbWFzdGVyIHNsYXZlIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAnTWFzdGVyJywKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIFN0YXRlVHlwZSAgPT4gJ09wZW4nLAogICAgICAgICAgICBMaW1pdCAgICAgID0+IDYwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAncm8nLAogICAgICAgICk7CgogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJUN1cnJlbnRUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICElQ3VycmVudFRpY2tldDsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAkRmllbGRWYWx1ZSBlcSAiU2xhdmVPZjokQ3VycmVudFRpY2tldHtUaWNrZXROdW1iZXJ9IjsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAkRmllbGRWYWx1ZSAmJiAkVGlja2V0e1RpY2tldElEfSBlcSAkQ3VycmVudFRpY2tldHtUaWNrZXRJRH07CgogICAgICAgICAgICAkRGF0YXsiU2xhdmVPZjokQ3VycmVudFRpY2tldHtUaWNrZXROdW1iZXJ9In0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAnU2xhdmUgb2YgJXMlcyVzOiAlcycsCiAgICAgICAgICAgICAgICAkVGlja2V0SG9vaywKICAgICAgICAgICAgICAgICRUaWNrZXRIb29rRGl2aWRlciwKICAgICAgICAgICAgICAgICRDdXJyZW50VGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgICAgICAkQ3VycmVudFRpY2tldHtUaXRsZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KIyAtLS0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRCdWxrOjpNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkCiAgICAkU2VsZi0+e01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSAgICA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpICAgIHx8ICcnOwogICAgJFNlbGYtPntNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZH0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQnKSB8fCAwOwoKICAgIGlmICggJFNlbGYtPntNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgJFNlbGYtPntEeW5hbWljRmllbGRDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJFNlbGYtPntNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBEaXNwbGF5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSBpcyBubyBjb25maWd1cmVkIGR5bmFtaWMgZmllbGQgb3IgaWYgYWR2YW5jZWQgbW9kZSBpcyBub3QgZW5hYmxlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvCiAgICByZXR1cm4gaWYgISRTZWxmLT57TWFzdGVyU2xhdmVEeW5hbWljRmllbGR9OwogICAgcmV0dXJuIGlmICEkU2VsZi0+e01hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkfTsKCiAgICBteSAkU2VydmVyRXJyb3I7CiAgICBteSAkRXJyb3JNZXNzYWdlOwogICAgaWYgKCBleGlzdHMgJFBhcmFte0Vycm9yc30tPnsgJFNlbGYtPntEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0gfSApIHsKICAgICAgICAkU2VydmVyRXJyb3IgID0gMTsKICAgICAgICAkRXJyb3JNZXNzYWdlID0gJFBhcmFte0Vycm9yc30tPnsgJFNlbGYtPntEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0gfTsKICAgIH0KCiAgICBteSAkUG9zc2libGVWYWx1ZXNGaWx0ZXIgPSAkU2VsZi0+X0dldE1hc3RlclNsYXZlRGF0YSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPT4gJFNlbGYtPntNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0sCiAgICApOwoKICAgICMgZ2V0IGZpZWxkIEhUTUwKICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJFNlbGYtPntEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciwKICAgICAgICBTZXJ2ZXJFcnJvciAgICAgICAgICA9PiAkU2VydmVyRXJyb3IgfHwgJycsCiAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgPT4gJEVycm9yTWVzc2FnZSB8fCAnJywKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgIE1hbmRhdG9yeSAgICAgICAgICAgID0+IDAsCiAgICApOwoKICAgICMgaW5kZW50YXRpb24gaGVyZSBpcyBvbiBwdXJwb3NlIHNvIHRoZSBIVE1MIHdpbGwgbG9vayBhY2NvcmRpbmcgdG8gdGhlIGZyYW1ld29yawogICAgbXkgJEhUTUxTdHJpbmcgPSA8PCJFT0YiOwogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KRU9GCgogICAgcmV0dXJuICRIVE1MU3RyaW5nOwp9CgpzdWIgVmFsaWRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZCBvciBpZiBhZHZhbmNlZCBtb2RlIGlzIG5vdCBlbmFibGUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8KICAgIHJldHVybiBpZiAhJFNlbGYtPntNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH07CiAgICByZXR1cm4gaWYgISRTZWxmLT57TWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWR9OwoKICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciA9ICRTZWxmLT5fR2V0TWFzdGVyU2xhdmVEYXRhKAogICAgICAgICVQYXJhbSwKICAgICAgICBNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9PiAkU2VsZi0+e01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSwKICAgICk7CgogICAgbXkgJFZhbGlkYXRpb25SZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJFNlbGYtPntEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksCiAgICAgICAgTWFuZGF0b3J5ICAgICAgICAgICAgPT4gMCwKICAgICk7CgogICAgaWYgKCAkVmFsaWRhdGlvblJlc3VsdC0+e1NlcnZlckVycm9yfSApIHsKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBFcnJvcktleSAgID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9LAogICAgICAgICAgICAgICAgRXJyb3JWYWx1ZSA9PiAkVmFsaWRhdGlvblJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIFN0b3JlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSBpcyBubyBjb25maWd1cmVkIGR5bmFtaWMgZmllbGQgb3IgaWYgYWR2YW5jZWQgbW9kZSBpcyBub3QgZW5hYmxlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvCiAgICByZXR1cm4gMSBpZiAhJFNlbGYtPntNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH07CiAgICByZXR1cm4gMSBpZiAhJFNlbGYtPntNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZH07CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmb3JtIHRoZSB3ZWIgcmVxdWVzdAogICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLAogICAgKTsKCiAgICAjIHNldCB0aGUgdmFsdWUKICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICREeW5hbWljRmllbGRWYWx1ZSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX0dldE1hc3RlclNsYXZlRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBtYXN0ZXIgc2xhdmUgY29uZmlnCiAgICBteSAkVW5zZXRNYXN0ZXJTbGF2ZSAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpVbnNldE1hc3RlclNsYXZlJykgIHx8IDA7CiAgICBteSAkVXBkYXRlTWFzdGVyU2xhdmUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpVcGRhdGVNYXN0ZXJTbGF2ZScpIHx8IDA7CgogICAgbXkgJURhdGEgPSAoCiAgICAgICAgJycgICAgID0+ICctJywKICAgICAgICBNYXN0ZXIgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZXcgTWFzdGVyIFRpY2tldCcpLAogICAgKTsKCiAgICBpZiAoJFVuc2V0TWFzdGVyU2xhdmUpIHsKICAgICAgICAkRGF0YXtVbnNldE1hc3Rlcn0gPSBUcmFuc2xhdGFibGUoJ1Vuc2V0IE1hc3RlciBUaWNrZXRzJyk7CiAgICAgICAgJERhdGF7VW5zZXRTbGF2ZX0gID0gVHJhbnNsYXRhYmxlKCdVbnNldCBTbGF2ZSBUaWNrZXRzJyk7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgaWYgKCRVcGRhdGVNYXN0ZXJTbGF2ZSkgewoKICAgICAgICBteSBAVGlja2V0SURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKCiAgICAgICAgICAgICMgbWFzdGVyIHNsYXZlIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte01hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSA9PiB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJ01hc3RlcicsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBTdGF0ZVR5cGUgID0+ICdPcGVuJywKICAgICAgICAgICAgTGltaXQgICAgICA9PiA2MCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAncm8nLAogICAgICAgICk7CgogICAgICAgIG15ICRUaWNrZXRIb29rICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rJyk7CiAgICAgICAgbXkgJFRpY2tldEhvb2tEaXZpZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyk7CgogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKCiAgICAgICAgICAgICMgZ2V0IGVhY2ggdGlja2V0IGZyb20gdGhlIHNlYXJjaCByZXN1bHRzCiAgICAgICAgICAgIG15ICVDdXJyZW50VGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElECiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISVDdXJyZW50VGlja2V0OwoKICAgICAgICAgICAgJERhdGF7IlNsYXZlT2Y6JEN1cnJlbnRUaWNrZXR7VGlja2V0TnVtYmVyfSJ9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJ1NsYXZlIG9mICVzJXMlczogJXMnLAogICAgICAgICAgICAgICAgJFRpY2tldEhvb2ssCiAgICAgICAgICAgICAgICAkVGlja2V0SG9va0RpdmlkZXIsCiAgICAgICAgICAgICAgICAkQ3VycmVudFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgJEN1cnJlbnRUaWNrZXR7VGl0bGV9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBcJURhdGE7Cgp9CjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkR5bmFtaWMgRmllbGRzIikgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuTW9kZSkgfCBodG1sICVdIFslIFRyYW5zbGF0ZShEYXRhLkZpZWxkVHlwZU5hbWUpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkZpZWxkIikgfCBodG1sICVdPC9oMT4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFjdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+WyUgVHJhbnNsYXRlKCJHbyBiYWNrIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLk1vZGUgfCBodG1sICVdQWN0aW9uIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJPYmplY3RUeXBlIiB2YWx1ZT0iWyUgRGF0YS5PYmplY3RUeXBlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRmllbGRUeXBlIiB2YWx1ZT0iWyUgRGF0YS5GaWVsZFR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJRCIgdmFsdWU9IlslIERhdGEuSUQgfCBodG1sICVdIiAvPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkxheW91dEdyaWQgQ29sdW1uc1dpdGhTcGFjaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJOYW1lIiBjbGFzcz0iVzUwcGMgWyUgRGF0YS5OYW1lU2VydmVyRXJyb3IgfCBodG1sICVdIFslIERhdGEuU2hvd1dhcm5pbmcgfCBodG1sICVdICBWYWxpZGF0ZV9BbHBoYW51bWVyaWMiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMjAwIiB2YWx1ZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iTmFtZSIgWyUgRGF0YS5SZWFkb25seUludGVybmFsRmllbGQgfCBodG1sICVdIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZCwgYW5kIHRoZSB2YWx1ZSBzaG91bGQgYmUgYWxwaGFiZXRpYyBhbmQgbnVtZXJpYyBjaGFyYWN0ZXJzIG9ubHkuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIk11c3QgYmUgdW5pcXVlIGFuZCBvbmx5IGFjY2VwdCBhbHBoYWJldGljIGFuZCBudW1lcmljIGNoYXJhY3RlcnMuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iV2FybmluZyBIaWRkZW4iPlslIFRyYW5zbGF0ZSgiQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsIHJlcXVpcmUgbWFudWFsIGNoYW5nZXMgaW4gdGhlIHN5c3RlbS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJMYWJlbCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJMYWJlbCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJMYWJlbCIgY2xhc3M9Ilc1MHBjIFslIERhdGEuTGFiZWxTZXJ2ZXJFcnJvciB8IGh0bWwgJV0gVmFsaWRhdGVfUmVxdWlyZWQiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMjAwIiB2YWx1ZT0iWyUgRGF0YS5MYWJlbCB8IGh0bWwgJV0iIG5hbWU9IkxhYmVsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxhYmVsRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJMYWJlbFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWxTZXJ2ZXJFcnJvck1lc3NhZ2UpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhpcyBpcyB0aGUgbmFtZSB0byBiZSBzaG93biBvbiB0aGUgc2NyZWVucyB3aGVyZSB0aGUgZmllbGQgaXMgYWN0aXZlLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkZpZWxkT3JkZXIiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiRmllbGQgb3JkZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRHluYW1pY0ZpZWxkT3JkZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkZpZWxkT3JkZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBudW1lcmljLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRmllbGRPcmRlclNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKERhdGEuRmllbGRPcmRlclNlcnZlckVycm9yTWVzc2FnZSkgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJUaGlzIGlzIHRoZSBvcmRlciBpbiB3aGljaCB0aGlzIGZpZWxkIHdpbGwgYmUgc2hvd24gb24gdGhlIHNjcmVlbnMgd2hlcmUgaXMgYWN0aXZlLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRpdHlTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGaWVsZFR5cGVOYW1lIj5bJSBUcmFuc2xhdGUoIkZpZWxkIHR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iRmllbGRUeXBlTmFtZSIgcmVhZG9ubHkgY2xhc3M9Ilc1MHBjIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjIwMCIgdmFsdWU9IlslIFRyYW5zbGF0ZShEYXRhLkZpZWxkVHlwZU5hbWUpIHwgaHRtbCAlXSIgbmFtZT0iRmllbGRUeXBlTmFtZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9iamVjdFR5cGVOYW1lIj5bJSBUcmFuc2xhdGUoIk9iamVjdCB0eXBlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik9iamVjdFR5cGVOYW1lIiByZWFkb25seSBjbGFzcz0iVzUwcGMiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMjAwIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZU5hbWUpIHwgaHRtbCAlXSIgbmFtZT0iT2JqZWN0VHlwZU5hbWUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW50ZXJuYWxGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW50ZXJuYWxGaWVsZCI+WyUgVHJhbnNsYXRlKCJJbnRlcm5hbCBmaWVsZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJJbnRlcm5hbEZpZWxkIiByZWFkb25seSBjbGFzcz0iVzUwcGMiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMSIgdmFsdWU9IlslIERhdGEuSW50ZXJuYWxGaWVsZCB8IGh0bWwgJV0iIG5hbWU9IkludGVybmFsRmllbGQiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHByb3RlY3RlZCBhbmQgY2FuJ3QgYmUgZGVsZXRlZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnRlcm5hbEZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKJCgnLlNob3dXYXJuaW5nJykuYmluZCgnY2hhbmdlIGtleXVwJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAkKCdwLldhcm5pbmcnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7Cn0pOwoKQ29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGQuVmFsaWRhdGlvbkluaXQoKTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyAkb3JpZ2luOiBvdHJzIC0gY2EyNzEyMGEyOTZkNjRkN2JlYTg4YjEwYWM5NGM3ODQ4YmFkODlkYSAtIEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24udHQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KCiMgVGhpcyBtb2R1bGUgdXNlcyBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBhcyBhIGJhc2UsIGZvciBlYXN5IHVwZGF0ZSBhbmQgZnJhbWV3b3JrIGNvbXBhdGliaWxpdHkKIyBzcGVjaWFsIG1hcmtlcnMgaGFzIGJlZW4gc2V0IGFsb25nIHRoZSBmaWxlIHRvIGVhc3kgc3BvdCB0aGUgZGlmZmVyZW5jZXMgaW50cm9kdWNlZCBieQojIE9UUlNNYXN0ZXJTbGF2ZSBwYWNrYWdlCiMgLS0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcm9wZXJ0aWVzIikgJV0KCjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJjb21wb3NlIiBpZD0iQ29tcG9zZSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU3RvcmUiLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpY2tldElEIiB2YWx1ZT0iWyUgRGF0YS5UaWNrZXRJRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlcGx5VG9BcnRpY2xlIiB2YWx1ZT0iWyUgRGF0YS5SZXBseVRvQXJ0aWNsZSB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkV4cGFuZCIgaWQ9IkV4cGFuZCIgdmFsdWU9IiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0RnJlZVRleHQiKSAlXQpbJSBUcmFuc2xhdGUoIkNoYW5nZSBGcmVlIFRleHQgb2YgJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0RnJlZVRleHQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJBZ2VudFRpY2tldE93bmVyIikgJV0KWyUgVHJhbnNsYXRlKCJDaGFuZ2UgT3duZXIgb2YgJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0T3duZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJBZ2VudFRpY2tldENsb3NlIikgJV0KWyUgVHJhbnNsYXRlKCJDbG9zZSAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRDbG9zZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0Tm90ZSIpICVdClslIFRyYW5zbGF0ZSgiQWRkIE5vdGUgdG8gJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0Tm90ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0UGVuZGluZyIpICVdClslIFRyYW5zbGF0ZSgiU2V0IFBlbmRpbmcgVGltZSBmb3IgJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0UGVuZGluZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0UHJpb3JpdHkiKSAlXQpbJSBUcmFuc2xhdGUoIkNoYW5nZSBQcmlvcml0eSBvZiAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRQcmlvcml0eSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0UmVzcG9uc2libGUiKSAlXQpbJSBUcmFuc2xhdGUoIkNoYW5nZSBSZXNwb25zaWJsZSBvZiAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRSZXNwb25zaWJsZSIpICVdCiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0TWFzdGVyU2xhdmUiKSAlXQpbJSBUcmFuc2xhdGUoIk1hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSIpICVdCiMgLS0tCiAgICAgICAgICAgICAgICAgJm1kYXNoOyBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXQogICAgICAgICAgICA8L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldEJhY2siKSAlXQogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRCYWNrIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvcGVydGllc0xvY2siKSAlXQogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIHRpY2tldCBoYXMgYmVlbiBsb2NrZWQiKSB8IGh0bWwgJV0uCiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVW5kb0Nsb3NlUG9wdXAiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFRpY2tldExvY2s7U3ViYWN0aW9uPVVubG9jaztUaWNrZXRJRD1bJSBEYXRhLlRpY2tldElEICVdWyUgSUYgRGF0YS5QcmV2aW91c093bmVyICVdO1ByZXZpb3VzT3duZXI9WyUgRGF0YS5QcmV2aW91c093bmVyICVdWyUgRU5EICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJVbmRvICYgY2xvc2UiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllc0xvY2siKSAlXQoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldFRpY2tldEFjdGlvbnMiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRXhwYW5kZWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgU2V0dGluZ3MiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJXNzVwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLlRpdGxlSW52YWxpZCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaXRsZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaXRsZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpdGxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUeXBlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVHlwZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVHlwZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjVHlwZUlEJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29tcG9zZScpLCAnQUpBWFVwZGF0ZScsICdUeXBlSUQnLCBbICdTZXJ2aWNlSUQnLCAnU0xBSUQnLCAnTmV3UXVldWVJRCcsICdOZXdPd25lcklEJywgJ05ld1Jlc3BvbnNpYmxlSUQnLCAnTmV3U3RhdGVJRCcsICdOZXdQcmlvcml0eUlEJyBbJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWVzU3RyZyAlXSBdKTsKfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiVHlwZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWV1ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld1F1ZXVlSUQiPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdRdWV1ZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1F1ZXVlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjTmV3UXVldWVJRCcpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNDb21wb3NlJyksICdBSkFYVXBkYXRlJywgJ05ld1F1ZXVlSUQnLCBbICdUeXBlSUQnLCAnU2VydmljZUlEJywgJ05ld093bmVySUQnLCAnTmV3UmVzcG9uc2libGVJRCcsICdOZXdTdGF0ZUlEJywgJ05ld1ByaW9yaXR5SUQnLCAnU3RhbmRhcmRUZW1wbGF0ZUlEJyBbJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWVzU3RyZyAlXSBdKTsKICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXVlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSUQiPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlcnZpY2VTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZXJ2aWNlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU2VydmljZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyNTZXJ2aWNlSUQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29tcG9zZScpLCAnQUpBWFVwZGF0ZScsICdTZXJ2aWNlSUQnLCBbICdUeXBlSUQnLCAnU0xBSUQnLCAnTmV3UXVldWVJRCcsICdOZXdPd25lcklEJywgJ05ld1Jlc3BvbnNpYmxlSUQnLCAnTmV3U3RhdGVJRCcsICdOZXdQcmlvcml0eUlEJyBbJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWVzU3RyZyAlXSBdKTsKICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZU1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlNlcnZpY2VJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjU2VydmljZUlEJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJCgnI0NvbXBvc2UnKSwgJ0FKQVhVcGRhdGUnLCAnU2VydmljZUlEJywgWyAnVHlwZUlEJywgJ1NMQUlEJywgJ05ld1F1ZXVlSUQnLCAnTmV3T3duZXJJRCcsICdOZXdSZXNwb25zaWJsZUlEJywgJ05ld1N0YXRlSUQnLCAnTmV3UHJpb3JpdHlJRCcgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc1N0cmcgJV0gXSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlTWFuZGF0b3J5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNMQSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNMQUlEIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU0xBU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI1NMQUlEJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJCgnI0NvbXBvc2UnKSwgJ0FKQVhVcGRhdGUnLCAnU0xBSUQnLCBbICdUeXBlSUQnLCAnU2VydmljZUlEJywgJ05ld1F1ZXVlSUQnLCAnTmV3T3duZXJJRCcsICdOZXdSZXNwb25zaWJsZUlEJywgJ05ld1N0YXRlSUQnLCAnTmV3UHJpb3JpdHlJRCcgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc1N0cmcgJV0gXSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJTTEEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU0xBSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIExldmVsIEFncmVlbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNMQVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNMQUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjU0xBSUQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29tcG9zZScpLCAnQUpBWFVwZGF0ZScsICdTTEFJRCcsIFsgJ1R5cGVJRCcsICdTZXJ2aWNlSUQnLCAnTmV3UXVldWVJRCcsICdOZXdPd25lcklEJywgJ05ld1Jlc3BvbnNpYmxlSUQnLCAnTmV3U3RhdGVJRCcsICdOZXdQcmlvcml0eUlEJyBbJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWVzU3RyZyAlXSBdKTsKICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNMQU1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPd25lciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld093bmVySUQiPlslIFRyYW5zbGF0ZSgiTmV3IE93bmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT3duZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdPd25lcklEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgb3duZXIhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyNOZXdPd25lcklEJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJCgnI0NvbXBvc2UnKSwgJ0FKQVhVcGRhdGUnLCAnTmV3T3duZXJJRCcsIFsgJ1R5cGVJRCcsICdTZXJ2aWNlSUQnLCAnTmV3UXVldWVJRCcsICdTTEFJRCcsICdOZXdSZXNwb25zaWJsZUlEJywgJ05ld1N0YXRlSUQnLCAnTmV3UHJpb3JpdHlJRCcgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc1N0cmcgJV0gXSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJPd25lciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPd25lck1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld093bmVySUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXcgT3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Pd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld093bmVySURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUGxlYXNlIHNldCBhIG5ldyBvd25lciEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdPd25lcklEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgb3duZXIhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyNOZXdPd25lcklEJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJCgnI0NvbXBvc2UnKSwgJ0FKQVhVcGRhdGUnLCAnTmV3T3duZXJJRCcsIFsgJ1R5cGVJRCcsICdTZXJ2aWNlSUQnLCAnTmV3UXVldWVJRCcsICdTTEFJRCcsICdOZXdSZXNwb25zaWJsZUlEJywgJ05ld1N0YXRlSUQnLCAnTmV3UHJpb3JpdHlJRCcgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc1N0cmcgJV0gXSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJPd25lck1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zaWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld1Jlc3BvbnNpYmxlSUQiPlslIFRyYW5zbGF0ZSgiTmV3IFJlc3BvbnNpYmxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzcG9uc2libGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjTmV3UmVzcG9uc2libGVJRCcpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNDb21wb3NlJyksICdBSkFYVXBkYXRlJywgJ05ld1Jlc3BvbnNpYmxlSUQnLCBbICdUeXBlSUQnLCAnU2VydmljZUlEJywgJ05ld1F1ZXVlSUQnLCAnU0xBSUQnLCAnTmV3T3duZXJJRCcsICdOZXdTdGF0ZUlEJywgJ05ld1ByaW9yaXR5SUQnIFslIERhdGEuRHluYW1pY0ZpZWxkTmFtZXNTdHJnICVdIF0pOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzcG9uc2libGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTdGF0ZUlEIj5bJSBUcmFuc2xhdGUoIk5leHQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjTmV3U3RhdGVJRCcpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNDb21wb3NlJyksICdBSkFYVXBkYXRlJywgJ05ld1N0YXRlSUQnLCBbJ1R5cGVJRCcsICdTZXJ2aWNlSUQnLCAnTmV3UXVldWVJRCcsICdTTEFJRCcsICdOZXdPd25lcklEJywgJ05ld1Jlc3BvbnNpYmxlSUQnLCAnTmV3UHJpb3JpdHlJRCcgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc1N0cmcgJV0gXSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0ZVBlbmRpbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJQZW5kaW5nIGRhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGF0ZVN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGF5U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIkRhdGUgaW52YWxpZCEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJIb3VyU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIkRhdGUgaW52YWxpZCEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJGb3IgYWxsIHBlbmRpbmcqIHN0YXRlcy4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0ZVBlbmRpbmciKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJpb3JpdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQcmlvcml0eUlEIj5bJSBUcmFuc2xhdGUoIlByaW9yaXR5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByaW9yaXR5U3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI05ld1ByaW9yaXR5SUQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29tcG9zZScpLCAnQUpBWFVwZGF0ZScsICdOZXdQcmlvcml0eUlEJywgWydUeXBlSUQnLCAnU2VydmljZUlEJywgJ05ld1F1ZXVlSUQnLCAnU0xBSUQnLCAnTmV3T3duZXJJRCcsICdOZXdSZXNwb25zaWJsZUlEJywgJ05ld1N0YXRlSUQnIFslIERhdGEuRHluYW1pY0ZpZWxkTmFtZXNTdHJnICVdIF0pOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUHJpb3JpdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJXaWRnZXRUaWNrZXRBY3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldER5bmFtaWNGaWVsZHMiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIEV4cGFuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQojICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTZXQgTWFzdGVyL1NsYXZlIFZhbHVlIikgfCBodG1sICVdPC9oMj4KIyAtLS0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIldpZGdldER5bmFtaWNGaWVsZHMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiV2lkZ2V0QXJ0aWNsZSIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgWyUgRGF0YS5XaWRnZXRTdGF0dXMgfCBodG1sICVdIiBpZD0iV2lkZ2V0QXJ0aWNsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIEFydGljbGUiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+ClslIElGIERhdGEuV2lkZ2V0U3RhdHVzID09ICdFeHBhbmRlZCcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJDcmVhdGVBcnRpY2xlIiBuYW1lPSJDcmVhdGVBcnRpY2xlIiB2YWx1ZT0iMSIgLz4KWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3JlYXRlQXJ0aWNsZSI+WyUgVHJhbnNsYXRlKCJDcmVhdGUgYW4gQXJ0aWNsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkNyZWF0ZUFydGljbGUiIG5hbWU9IkNyZWF0ZUFydGljbGUiIHZhbHVlPSIxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvcm1BZGRpdGlvbmFsQWdlbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFnZW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluZm9ybVVzZXJJRCI+WyUgVHJhbnNsYXRlKCJJbmZvcm0gYWdlbnRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk9wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnZvbHZlZEFnZW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikludm9sdmVkVXNlcklEIj5bJSBUcmFuc2xhdGUoIkluZm9ybSBpbnZvbHZlZCBhZ2VudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuSW52b2x2ZWRBZ2VudFN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW52b2x2ZWRBZ2VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBzZWxlY3QgYWRkaXRpb25hbCBhZ2VudHMgd2hpY2ggc2hvdWxkIHJlY2VpdmUgYSBub3RpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBuZXcgYXJ0aWNsZS4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWRkaXRpb25hbEFnZW50cyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRleHQgd2lsbCBhbHNvIGJlIHJlY2VpdmVkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVXNlckxpc3RXaXRob3V0U2VsZWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5Vc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24gIHwgaHRtbCAlXSIgLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlVzZXJFbWFpbCAlXSI+WyUgRGF0YS5Vc2VyRnVsbG5hbWUgJV08L3NwYW4+WyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IiKSAlXSxbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3ViamVjdCI+WyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJqZWN0TGFiZWwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU3ViamVjdCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1YmplY3RMYWJlbE1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJTdWJqZWN0IiBuYW1lPSJTdWJqZWN0IiB2YWx1ZT0iWyUgRGF0YS5TdWJqZWN0IHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlIFslIERhdGEuU3ViamVjdEludmFsaWQgJV0gWyUgRGF0YS5TdWJqZWN0UmVxdWlyZWQgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTdWJqZWN0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1YmplY3RTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0T3B0aW9ucyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPcHRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+Cgo8IS0tIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0JlZ2luIC0tPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3BlbGxDaGVjayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9Ik9wdGlvblNwZWxsQ2hlY2siPlsgWyUgVHJhbnNsYXRlKCJTcGVsbCBjaGVjayIpIHwgaHRtbCAlXSBdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3BlbGxDaGVjayIpICVdCgo8IS0tIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0VuZCAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE9wdGlvbnMiKSAlXQoKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhbmRhcmRUZW1wbGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGFuZGFyZFRlbXBsYXRlSUQiPlslIFRyYW5zbGF0ZSgiVGV4dCBUZW1wbGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhbmRhcmRUZW1wbGF0ZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJTZXR0aW5nIGEgdGVtcGxhdGUgd2lsbCBvdmVyd3JpdGUgYW55IHRleHQgb3IgYXR0YWNobWVudC4iKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI1N0YW5kYXJkVGVtcGxhdGVJRCcpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQWdlbnQuVGlja2V0QWN0aW9uLkNvbmZpcm1UZW1wbGF0ZU92ZXJ3cml0ZSgnUmljaFRleHQnLCAkKHRoaXMpLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNDb21wb3NlJyksICdBSkFYVXBkYXRlJywgJ1N0YW5kYXJkVGVtcGxhdGVJRCcsIFsnUmljaFRleHRGaWVsZCddKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJTdGFuZGFyZFRlbXBsYXRlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJpY2hUZXh0TGFiZWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmljaFRleHQiPlslIFRyYW5zbGF0ZSgiVGV4dCIpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmljaFRleHRMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJpY2hUZXh0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iUmljaFRleHQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJUZXh0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJSaWNoVGV4dExhYmVsTWFuZGF0b3J5IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSaWNoVGV4dEZpZWxkIiBjbGFzcz0iUmljaFRleHRGaWVsZCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJpY2hUZXh0IikgJV0KWyUgSW5zZXJ0VGVtcGxhdGUoIlJpY2hUZXh0RWRpdG9yLnR0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJpY2hUZXh0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IlJpY2hUZXh0IiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGUgWyUgRGF0YS5Cb2R5SW52YWxpZCAlXSBbJSBEYXRhLkJvZHlSZXF1aXJlZCAlXSIgbmFtZT0iQm9keSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuQm9keSB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuRmlsZXNpemUgfCBodG1sICVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJBdHRhY2htZW50RGVsZXRlQnV0dG9uWyUgRGF0YS5GaWxlSUQgfCBodG1sICVdIiBuYW1lPSJBdHRhY2htZW50RGVsZXRlQnV0dG9uWyUgRGF0YS5GaWxlSUQgfCBodG1sICVdIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFNwYWNpbmdMZWZ0Ij48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBdHRhY2htZW50RGVsZXRlWyUgRGF0YS5GaWxlSUQgfCBodG1sICVdIiBuYW1lPSJBdHRhY2htZW50RGVsZXRlWyUgRGF0YS5GaWxlSUQgfCBodG1sICVdIiAvPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0F0dGFjaG1lbnREZWxldGVCdXR0b25bJSBEYXRhLkZpbGVJRCB8IGh0bWwgJV0nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgJEZvcm0gPSAkKCcjQXR0YWNobWVudERlbGV0ZUJ1dHRvblslIERhdGEuRmlsZUlEIHwgaHRtbCAlXScpLmNsb3Nlc3QoJ2Zvcm0nKTsKICAgICAgICAkKCcjQXR0YWNobWVudERlbGV0ZVslIERhdGEuRmlsZUlEIHwgaHRtbCAlXScpLnZhbCgxKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuRGlzYWJsZVZhbGlkYXRpb24oJEZvcm0pOwogICAgICAgICRGb3JtLnRyaWdnZXIoJ3N1Ym1pdCcpOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJGaWxlVXBsb2FkIiBpZD0iRmlsZVVwbG9hZCIgdHlwZT0iZmlsZSIgc2l6ZT0iNDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBdHRhY2htZW50VXBsb2FkIiBuYW1lPSJBdHRhY2htZW50VXBsb2FkIiB2YWx1ZT0iMCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0ZpbGVVcGxvYWQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgJEZvcm0gPSAkKCcjRmlsZVVwbG9hZCcpLmNsb3Nlc3QoJ2Zvcm0nKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuRGlzYWJsZVZhbGlkYXRpb24oJEZvcm0pOwogICAgICAgICRGb3JtLmZpbmQoJyNBdHRhY2htZW50VXBsb2FkJykudmFsKCcxJykuZW5kKCkuc3VibWl0KCk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkFydGljbGVUeXBlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFydGljbGVUeXBlSUQiPlslIFRyYW5zbGF0ZSgiTm90ZSB0eXBlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFydGljbGVUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBcnRpY2xlVHlwZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHNMYWJlbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaW1lVW5pdHMiPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHNMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0c0xhYmVsTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpbWVVbml0cyI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpbWUgdW5pdHMiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGltZVVuaXRzIikpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzTGFiZWxNYW5kYXRvcnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaW1lVW5pdHMiIGlkPSJUaW1lVW5pdHMiIHZhbHVlPSJbJSBEYXRhLlRpbWVVbml0cyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9UaW1lVW5pdHMgWyUgRGF0YS5UaW1lVW5pdHNSZXF1aXJlZCB8IGh0bWwgJV0gWyUgRGF0YS5UaW1lVW5pdHNJbnZhbGlkIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpbWVVbml0c0Vycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJJbnZhbGlkIHRpbWUhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpbWVVbml0c1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiV2lkZ2V0QXJ0aWNsZSIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9InN1Ym1pdFJpY2hUZXh0IiBhY2Nlc3NrZXk9ImciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSAoZykiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2stc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllcyIpICVdCgojTGF5ZXJzClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0xvY2FsaXphdGlvbi5EZWxldGUnLCAnWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0nKTsKICAgIENvcmUuQWdlbnQuVGlja2V0QWN0aW9uLkluaXQoKTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6TWFzdGVyU2xhdmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgYmFzZSBxdyhLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkJhc2VTZWxlY3QpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6Ok1hc3RlclNsYXZlCgo9aGVhZDEgU1lOT1BTSVMKCkR5bmFtaWNGaWVsZHMgTWFzdGVyU2xhdmUgRHJpdmVyIGRlbGVnYXRlCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUgcHVibGljIGludGVyZmFjZSBvZiBMPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgpQbGVhc2UgbG9vayB0aGVyZSBmb3IgYSBkZXRhaWxlZCByZWZlcmVuY2Ugb2YgdGhlIGZ1bmN0aW9ucy4KCj1vdmVyIDQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgZmllbGQgYmVoYXZpb3JzCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDEsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDAsCiAgICB9OwoKICAgICMgZ2V0IHRoZSBEeW5hbWljIEZpZWxkIEJhY2tlbmQgY3VzdG9tIGV4dGVuc2lvbnMKICAgIG15ICREeW5hbWljRmllbGREcml2ZXJFeHRlbnNpb25zCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6OkV4dGVuc2lvbjo6RHJpdmVyOjpNYXN0ZXJTbGF2ZScpOwoKICAgIEVYVEVOU0lPTjoKICAgIGZvciBteSAkRXh0ZW5zaW9uS2V5ICggc29ydCBrZXlzICV7JER5bmFtaWNGaWVsZERyaXZlckV4dGVuc2lvbnN9ICkgewoKICAgICAgICAjIHNraXAgaW52YWxpZCBleHRlbnNpb25zCiAgICAgICAgbmV4dCBFWFRFTlNJT04gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkRHJpdmVyRXh0ZW5zaW9ucy0+eyRFeHRlbnNpb25LZXl9ICk7CgogICAgICAgICMgY3JlYXRlIGEgZXh0ZW5zaW9uIGNvbmZpZyBzaG9ydGN1dAogICAgICAgIG15ICRFeHRlbnNpb24gPSAkRHluYW1pY0ZpZWxkRHJpdmVyRXh0ZW5zaW9ucy0+eyRFeHRlbnNpb25LZXl9OwoKICAgICAgICAjIGNoZWNrIGlmIGV4dGVuc2lvbiBoYXMgYSBuZXcgbW9kdWxlCiAgICAgICAgaWYgKCAkRXh0ZW5zaW9uLT57TW9kdWxlfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgbW9kdWxlIGNhbiBiZSBsb2FkZWQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmVCYXNlQ2xhc3MoICRFeHRlbnNpb24tPntNb2R1bGV9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGllICJDYW4ndCBsb2FkIGR5bmFtaWMgZmllbGRzIGJhY2tlbmQgbW9kdWxlIgogICAgICAgICAgICAgICAgICAgIC4gIiAkRXh0ZW5zaW9uLT57TW9kdWxlfSEgJEAiOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGV4dGVuc2lvbiBjb250YWlucyBtb3JlIGJlaGF2aW9ycwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRFeHRlbnNpb24tPntCZWhhdmlvcnN9ICkgKSB7CgogICAgICAgICAgICAleyAkU2VsZi0+e0JlaGF2aW9yc30gfSA9ICgKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57QmVoYXZpb3JzfSB9LAogICAgICAgICAgICAgICAgJXsgJEV4dGVuc2lvbi0+e0JlaGF2aW9yc30gfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9IYW5kbGVMaW5rcygKICAgICAgICBGaWVsZE5hbWUgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICAgICAgRmllbGRWYWx1ZSA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIFRpY2tldElEICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZXJlIHdhcyBhbiBlcnJvciBoYW5kbGluZyB0aGUgbGlua3MgZm9yIG1hc3Rlci9zbGF2ZSwgdmFsdWUgY291bGQgbm90IGJlIHNldCIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gIX4gL14oPzpVbnNldE1hc3RlcnxVbnNldFNsYXZlKSQvID8gJFBhcmFte1ZhbHVlfSA6ICcnOwoKICAgICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyktPlZhbHVlU2V0KAogICAgICAgIEZpZWxkSUQgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57SUR9LAogICAgICAgIE9iamVjdElEID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgVmFsdWUgICAgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZVRleHQgPT4gJFZhbHVlLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCnN1YiBFZGl0RmllbGRWYWx1ZVZhbGlkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGhlIGZpZWxkIHZhbHVlIGZyb20gdGhlIGh0dHAgcmVxdWVzdAogICAgbXkgJFZhbHVlID0gJFNlbGYtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFte1BhcmFtT2JqZWN0fSwKCiAgICAgICAgIyBub3QgbmVjZXNzYXJ5IGZvciB0aGlzIERyaXZlciBidXQgcGxhY2UgaXQgZm9yIGNvbnNpc3RlbmN5IHJlYXNvbnMKICAgICAgICBSZXR1cm5WYWx1ZVN0cnVjdHVyZSA9PiAxLAogICAgKTsKCiAgICBteSAkU2VydmVyRXJyb3I7CiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgICMgcGVyZm9ybSBuZWNlc3NhcnkgdmFsaWRhdGlvbnMKICAgIGlmICggJFBhcmFte01hbmRhdG9yeX0gJiYgISRWYWx1ZSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiAxLAogICAgICAgIH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAjIHVzZSBQb3NzaWJsZVZhbHVlc0ZpbHRlciBpZiBzZW50CiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICRQb3NzaWJsZVZhbHVlcyA9ICRQYXJhbXtQb3NzaWJsZVZhbHVlc0ZpbHRlcn07CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBnZXQgcG9zc2libGUgdmFsdWVzIGxpc3QKICAgICAgICAgICAgJFBvc3NpYmxlVmFsdWVzID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB2YWxpZGF0ZSBpZiB2YWx1ZSBpcyBpbiBwb3NzaWJsZSB2YWx1ZXMgbGlzdCAoYnV0IGxldCBwYXNzIGVtcHR5IHZhbHVlcykKICAgICAgICBpZiAoICRWYWx1ZSAmJiAhJFBvc3NpYmxlVmFsdWVzLT57JFZhbHVlfSApIHsKICAgICAgICAgICAgJFNlcnZlckVycm9yICA9IDE7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnVGhlIGZpZWxkIGNvbnRlbnQgaXMgaW52YWxpZCc7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIHJlc3VsdGluZyBzdHJ1Y3R1cmUKICAgIG15ICRSZXN1bHQgPSB7CiAgICAgICAgU2VydmVyRXJyb3IgID0+ICRTZXJ2ZXJFcnJvciwKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJEVycm9yTWVzc2FnZSwKICAgIH07CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCnN1YiBQb3NzaWJsZVZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdG8gc3RvcmUgdGhlIHBvc3NpYmxlIHZhbHVlcwogICAgbXkgJVBvc3NpYmxlVmFsdWVzID0gKAogICAgICAgICcnID0+ICctJywKICAgICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZmluZCBhbGwgY3VycmVudCBvcGVuIG1hc3RlciBzbGF2ZSB0aWNrZXRzCiAgICBteSBAVGlja2V0SURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAoKICAgICAgICAjIG1hc3RlciBzbGF2ZSBkeW5hbWljIGZpZWxkCiAgICAgICAgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSA9PiB7CiAgICAgICAgICAgIEVxdWFscyA9PiAnTWFzdGVyJywKICAgICAgICB9LAoKICAgICAgICBTdGF0ZVR5cGUgID0+ICdPcGVuJywKICAgICAgICBMaW1pdCAgICAgID0+IDYwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJExheW91dE9iamVjdC0+e1VzZXJJRH0sCiAgICAgICAgUGVybWlzc2lvbiA9PiAncm8nLAogICAgKTsKCiAgICAjIHNldCBkeW5hbWljIGZpZWxkIHBvc3NpYmxlIHZhbHVlcwogICAgJFBvc3NpYmxlVmFsdWVze01hc3Rlcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05ldyBNYXN0ZXIgVGlja2V0Jyk7CgogICAgbXkgJENvbmZpZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRUaWNrZXRIb29rICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rJyk7CiAgICBteSAkVGlja2V0SG9va0RpdmlkZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9va0RpdmlkZXInKTsKCiAgICBUSUNLRVQ6CiAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgbXkgJUN1cnJlbnRUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBUSUNLRVQgaWYgISVDdXJyZW50VGlja2V0OwoKICAgICAgICAjIHNldCBkeW5hbWljIGZpZWxkIHBvc3NpYmxlIHZhbHVlcwogICAgICAgICRQb3NzaWJsZVZhbHVlc3siU2xhdmVPZjokQ3VycmVudFRpY2tldHtUaWNrZXROdW1iZXJ9In0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICdTbGF2ZSBvZiAlcyVzJXM6ICVzJywKICAgICAgICAgICAgJFRpY2tldEhvb2ssCiAgICAgICAgICAgICRUaWNrZXRIb29rRGl2aWRlciwKICAgICAgICAgICAgJEN1cnJlbnRUaWNrZXR7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgJEN1cnJlbnRUaWNrZXR7VGl0bGV9LAogICAgICAgICk7CiAgICB9CgogICAgIyByZXR1cm4gdGhlIHBvc3NpYmxlIHZhbHVlcyBoYXNoIGFzIGEgcmVmZXJlbmNlCiAgICByZXR1cm4gXCVQb3NzaWJsZVZhbHVlczsKfQoKc3ViIF9IYW5kbGVMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRmllbGROYW1lIEZpZWxkVmFsdWUgVGlja2V0SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgJEZpZWxkTmFtZSA9ICRQYXJhbXtGaWVsZE5hbWV9OwoKICAgIG15ICVUaWNrZXQgPSAkUGFyYW17VGlja2V0fQogICAgICAgID8gJXsgJFBhcmFte1RpY2tldH0gfQogICAgICAgIDogJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEKICAgICAgICApOwoKICAgIG15ICRPbGRWYWx1ZSA9ICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZE5hbWUgfTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBtYXN0ZXIgc2xhdmUgY29uZmlnCiAgICBteSAkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0ICA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OktlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQnKSAgfHwgMDsKICAgIG15ICRNYXN0ZXJTbGF2ZUZvbGxvd1VwZGF0ZWRNYXN0ZXIgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6Rm9sbG93VXBkYXRlZE1hc3RlcicpICAgICAgICB8fCAwOwogICAgbXkgJE1hc3RlclNsYXZlS2VlcFBhcmVudENoaWxkQWZ0ZXJVcGRhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZScpIHx8IDA7CgogICAgbXkgJE5ld1ZhbHVlID0gJFBhcmFte0ZpZWxkVmFsdWV9OwoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBzZXQgYSBuZXcgbWFzdGVyIHRpY2tldAogICAgIyBjaGVjayBpZiBpdCBpcyBhbHJlYWR5IGEgbWFzdGVyIHRpY2tldAogICAgaWYgKAogICAgICAgICROZXdWYWx1ZSBlcSAnTWFzdGVyJwogICAgICAgICYmICggISRPbGRWYWx1ZSB8fCAkT2xkVmFsdWUgbmUgJE5ld1ZhbHVlICkKICAgICAgICApCiAgICB7CgogICAgICAgICMgY2hlY2sgaWYgaXQgd2FzIGEgc2xhdmUgdGlja2V0IGJlZm9yZSBhbmQgaWYgd2UgaGF2ZSB0byBkZWxldGUKICAgICAgICAjIHRoZSBvbGQgcGFyZW50IGNoaWxkIGxpbmsgKE1hc3RlclNsYXZlS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRPbGRWYWx1ZQogICAgICAgICAgICAmJiAkT2xkVmFsdWUgPX4gL15TbGF2ZU9mOiguKj8pJC8KICAgICAgICAgICAgJiYgISRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJFNvdXJjZUtleSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldElETG9va3VwKAogICAgICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICQxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExpbmtPYmplY3QtPkxpbmtEZWxldGUoCiAgICAgICAgICAgICAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIEtleTIgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1BhcmVudENoaWxkJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGEgbmV3IHNsYXZlIHRpY2tldAogICAgIyBjaGVjayBpZiBpdCdzIGFscmVhZHkgdGhlIHNsYXZlIG9mIHRoZSB3aXNoZWQgbWFzdGVyIHRpY2tldAogICAgZWxzaWYgKAogICAgICAgICROZXdWYWx1ZSA9fiAvXlNsYXZlT2Y6KC4qPykkLwogICAgICAgICYmICggISRPbGRWYWx1ZSB8fCAkT2xkVmFsdWUgbmUgJE5ld1ZhbHVlICkKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJFNvdXJjZUtleSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldElETG9va3VwKAogICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFNvdXJjZUtleSwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUxpbmtzID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgICAgICAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgRGlyZWN0aW9uID0+ICdUYXJnZXQnLCAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgQm90aCAoU291cmNlfFRhcmdldHxCb3RoKQogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFNsYXZlVGlja2V0SURzOwoKICAgICAgICBMSU5LRURUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICggc29ydCBrZXlzICVMaW5rcyApIHsKICAgICAgICAgICAgbmV4dCBMSU5LRURUSUNLRVRJRCBpZiAhJExpbmtzeyRMaW5rZWRUaWNrZXRJRH07CgogICAgICAgICAgICAjIGp1c3QgdGFrZSB0aWNrZXQgd2l0aCBzbGF2ZSBhdHRyaWJ1dGVzIGZvciBhY3Rpb24KICAgICAgICAgICAgbXkgJUxpbmtlZFRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJExpbmtlZFRpY2tldFZhbHVlID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkTmFtZSB9OwoKICAgICAgICAgICAgbmV4dCBMSU5LRURUSUNLRVRJRCBpZiAhJExpbmtlZFRpY2tldFZhbHVlOwogICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICRMaW5rZWRUaWNrZXRWYWx1ZSAhfiAvXlNsYXZlT2Y6KC4qPykkLzsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgbGlua2VkIHRpY2tldCBpZAogICAgICAgICAgICBwdXNoIEBTbGF2ZVRpY2tldElEcywgJExpbmtlZFRpY2tldElEOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkT2xkVmFsdWUgJiYgJE9sZFZhbHVlIGVxICdNYXN0ZXInICkgewoKICAgICAgICAgICAgaWYgKCAkTWFzdGVyU2xhdmVGb2xsb3dVcGRhdGVkTWFzdGVyICYmIEBTbGF2ZVRpY2tldElEcyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkTGlua2VkVGlja2V0SUQgKEBTbGF2ZVRpY2tldElEcykgewogICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggISRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEIChAU2xhdmVUaWNrZXRJRHMpIHsKICAgICAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkyICAgID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAkT2xkVmFsdWUKICAgICAgICAgICAgJiYgJE9sZFZhbHVlID1+IC9eU2xhdmVPZjooLio/KSQvCiAgICAgICAgICAgICYmICEkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkU291cmNlS2V5ID0gJFRpY2tldE9iamVjdC0+VGlja2V0SURMb29rdXAoCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkxICAgID0+ICRTb3VyY2VLZXksCiAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgS2V5MiAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICROZXdWYWx1ZSA9fiAvXig/OlVuc2V0TWFzdGVyfFVuc2V0U2xhdmUpJC8gJiYgJE9sZFZhbHVlICkgewoKICAgICAgICBpZiAoICROZXdWYWx1ZSBlcSAnVW5zZXRNYXN0ZXInICYmICEkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0ICkgewogICAgICAgICAgICBteSAlTGlua3MgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICAgICAgICAgICAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkxICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsICAgICAgICAgICAjIChvcHRpb25hbCkgZGVmYXVsdCBCb3RoIChTb3VyY2V8VGFyZ2V0fEJvdGgpCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAU2xhdmVUaWNrZXRJRHM7CgogICAgICAgICAgICBMSU5LRURUSUNLRVRJRDoKICAgICAgICAgICAgZm9yIG15ICRMaW5rZWRUaWNrZXRJRCAoIHNvcnQga2V5cyAlTGlua3MgKSB7CiAgICAgICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICEkTGlua3N7JExpbmtlZFRpY2tldElEfTsKCiAgICAgICAgICAgICAgICAjIGp1c3QgdGFrZSB0aWNrZXQgd2l0aCBzbGF2ZSBhdHRyaWJ1dGVzIGZvciBhY3Rpb24KICAgICAgICAgICAgICAgIG15ICVMaW5rZWRUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkTGlua2VkVGlja2V0VmFsdWUgPSAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRmllbGROYW1lIH07CiAgICAgICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICEkTGlua2VkVGlja2V0VmFsdWU7CiAgICAgICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICRMaW5rZWRUaWNrZXRWYWx1ZSAhfiAvXlNsYXZlT2Y6KC4qPykkLzsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRpY2tldCBpZAogICAgICAgICAgICAgICAgcHVzaCBAU2xhdmVUaWNrZXRJRHMsICRMaW5rZWRUaWNrZXRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRMaW5rZWRUaWNrZXRJRCAoQFNsYXZlVGlja2V0SURzKSB7CiAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgIEtleTEgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgIEtleTIgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1BhcmVudENoaWxkJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICROZXdWYWx1ZSBlcSAnVW5zZXRTbGF2ZScKICAgICAgICAgICAgJiYgISRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQKICAgICAgICAgICAgJiYgJE9sZFZhbHVlID1+IC9eU2xhdmVPZjooLio/KSQvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJRExvb2t1cCgKICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlKAogICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIEtleTEgICAgPT4gJFNvdXJjZUtleSwKICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkyICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIFNlYXJjaEZpZWxkUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0YWtlIGNvbmZpZyBmcm9tIGZpZWxkIGNvbmZpZwogICAgbXkgJEZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9OwogICAgbXkgJEZpZWxkTmFtZSAgID0gJ1NlYXJjaF9EeW5hbWljRmllbGRfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX07CiAgICBteSAkRmllbGRMYWJlbCAgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0xhYmVsfTsKCiAgICBteSAkVmFsdWU7CgogICAgbXkgQERlZmF1bHRWYWx1ZTsKCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0RlZmF1bHRWYWx1ZX0gKSB7CiAgICAgICAgQERlZmF1bHRWYWx1ZSA9IHNwbGl0IC87LywgJFBhcmFte0RlZmF1bHRWYWx1ZX07CiAgICB9CgogICAgIyBzZXQgdGhlIGZpZWxkIHZhbHVlCiAgICBpZiAoQERlZmF1bHRWYWx1ZSkgewogICAgICAgICRWYWx1ZSA9IFxARGVmYXVsdFZhbHVlOwogICAgfQoKICAgICMgZ2V0IHRoZSBmaWVsZCB2YWx1ZSwgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkIGFmdGVyIHRoZSBwcm9maWxlIGlzIGxvYWRlZAogICAgbXkgJEZpZWxkVmFsdWVzID0gJFNlbGYtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICBpZiAoIGRlZmluZWQgJEZpZWxkVmFsdWVzICkgewogICAgICAgICRWYWx1ZSA9ICRGaWVsZFZhbHVlczsKICAgIH0KCiAgICAjIGNoZWNrIGFuZCBzZXQgY2xhc3MgaWYgbmVjZXNzYXJ5CiAgICBteSAkRmllbGRDbGFzcyA9ICdEeW5hbWljRmllbGRNdWx0aVNlbGVjdCBNb2Rlcm5pemUnOwoKICAgICMgc2V0IFRyZWVWaWV3IGNsYXNzCiAgICBpZiAoICRGaWVsZENvbmZpZy0+e1RyZWVWaWV3fSApIHsKICAgICAgICAkRmllbGRDbGFzcyAuPSAnIER5bmFtaWNGaWVsZFdpdGhUcmVlVmlldyc7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgc2V0IFBvc3NpYmxlVmFsdWVzIChtYXN0ZXIgc2hvdWxkIGJlIGFsd2F5cyBhbiBvcHRpb24pCiAgICBteSAkU2VsZWN0aW9uRGF0YSA9IHsKICAgICAgICBNYXN0ZXIgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoJ01hc3RlciBUaWNrZXQnKSwKICAgIH07CgogICAgIyBnZXQgaGlzdG9yaWNhbCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQogICAgbXkgJEhpc3RvcmljYWxWYWx1ZXMgPSAkU2VsZi0+SGlzdG9yaWNhbFZhbHVlc0dldCglUGFyYW0pOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkSGlzdG9yaWNhbFZhbHVlcykgKSB7CgogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAgICAgbXkgJFRpY2tldEhvb2sgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2snKTsKICAgICAgICBteSAkVGlja2V0SG9va0RpdmlkZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9va0RpdmlkZXInKTsKCiAgICAgICAgIyBSZWNyZWF0ZSB0aGUgZGlzcGxheSB2YWx1ZSBmcm9tIHRoZSBhbHJlYWR5IHNldCB0aWNrZXRzLgogICAgICAgIFZBTFVFOgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IGtleXMgJXskSGlzdG9yaWNhbFZhbHVlc30gKSB7CgogICAgICAgICAgICBpZiAoICRWYWx1ZUtleSA9fiBte1NsYXZlT2Y6KC4qKX1nbXggKSB7CiAgICAgICAgICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJDE7CgogICAgICAgICAgICAgICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0SURMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElECiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgVkFMVUUgaWYgISVUaWNrZXQ7CgogICAgICAgICAgICAgICAgJEhpc3RvcmljYWxWYWx1ZXMtPnskVmFsdWVLZXl9ID0gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgJ1NsYXZlIG9mICVzJXMlczogJXMnLAogICAgICAgICAgICAgICAgICAgICRUaWNrZXRIb29rLAogICAgICAgICAgICAgICAgICAgICRUaWNrZXRIb29rRGl2aWRlciwKICAgICAgICAgICAgICAgICAgICAkVGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgJFRpY2tldHtUaXRsZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIGhpc3RvcmljIHZhbHVlcyB0byBjdXJyZW50IHZhbHVlcyAoaWYgdGhleSBkb24ndCBleGlzdCBhbnltb3JlKQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkSGlzdG9yaWNhbFZhbHVlcykgKSB7CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskSGlzdG9yaWNhbFZhbHVlc30gKSB7CiAgICAgICAgICAgIGlmICggISRTZWxlY3Rpb25EYXRhLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZWN0aW9uRGF0YS0+eyRLZXl9ID0gJEhpc3RvcmljYWxWYWx1ZXMtPnskS2V5fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSBQb3NzaWJsZVZhbHVlc0ZpbHRlciBpZiBkZWZpbmVkCiAgICAkU2VsZWN0aW9uRGF0YSA9ICRQYXJhbXtQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gLy8gJFNlbGVjdGlvbkRhdGE7CgogICAgbXkgJEhUTUxTdHJpbmcgPSAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWxlY3Rpb25EYXRhLAogICAgICAgIE5hbWUgICAgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmFsdWUsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRGaWVsZENsYXNzLAogICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgIEhUTUxRdW90ZSAgICA9PiAxLAogICAgKTsKCiAgICAjIGNhbGwgRWRpdExhYmVsUmVuZGVyIG9uIHRoZSBjb21tb24gRHJpdmVyCiAgICBteSAkTGFiZWxTdHJpbmcgPSAkU2VsZi0+RWRpdExhYmVsUmVuZGVyKAogICAgICAgICVQYXJhbSwKICAgICAgICBGaWVsZE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICk7CgogICAgbXkgJERhdGEgPSB7CiAgICAgICAgRmllbGQgPT4gJEhUTUxTdHJpbmcsCiAgICAgICAgTGFiZWwgPT4gJExhYmVsU3RyaW5nLAogICAgfTsKCiAgICByZXR1cm4gJERhdGE7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2hlY2tJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpbWUnLAopOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhEYXRhIEV2ZW50IENvbmZpZykpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgaWYgKCAhJFBhcmFte0RhdGF9LT57VGlja2V0SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBEYXRhLT57VGlja2V0SUR9ISIKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIGdldCB0aWNrZXQgYXR0cmlidXRlcwogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKTsKCiAgICAjIGNoZWNrIGlmIGl0J3MgYSBtYXN0ZXIvc2xhdmUgdGlja2V0CiAgICByZXR1cm4gMSBpZiAhJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIH07CiAgICByZXR1cm4gMSBpZiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgfSAhfiAvXihtYXN0ZXJ8eWVzKSQvaTsKCiAgICAjIGdldCBsaW5rIG9iamVjdAogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKICAgICMgZmluZCBzbGF2ZXMKICAgIG15ICVMaW5rcyA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgICAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5MSAgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IEJvdGggKFNvdXJjZXxUYXJnZXR8Qm90aCkKICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgbXkgQFRpY2tldElEczsKICAgIFRJQ0tFVElEOgogICAgZm9yIG15ICRUaWNrZXRJRCAoIHNvcnQga2V5cyAlTGlua3MgKSB7CiAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJExpbmtzeyRUaWNrZXRJRH07CgogICAgICAgICMganVzdCB0YWtlIHRpY2tldCB3aXRoIHNsYXZlIGF0dHJpYnV0ZXMgZm9yIGFjdGlvbgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRpY2tldFZhbHVlID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIH07CiAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJFRpY2tldFZhbHVlOwogICAgICAgIG5leHQgVElDS0VUSUQgaWYgJFRpY2tldFZhbHVlICF+IC9eU2xhdmVPZjooLio/KSQvOwoKICAgICAgICAjIHJlbWVtYmVyIHRpY2tldCBpZAogICAgICAgIHB1c2ggQFRpY2tldElEcywgJFRpY2tldElEOwogICAgfQoKICAgICMgbm8gc2xhdmVzCiAgICBpZiAoICFAVGlja2V0SURzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIFNsYXZlcyBvZiB0aWNrZXQgJFRpY2tldHtUaWNrZXRJRH0hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwoKICAgICMgYXV0byByZXNwb25zZSBhY3Rpb24KICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnQXJ0aWNsZVNlbmQnICkgewogICAgICAgIG15IEBJbmRleCA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVJbmRleCggVGlja2V0SUQgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9ICk7CgogICAgICAgIHJldHVybiAxIGlmICFASW5kZXg7CgogICAgICAgIG15ICVBcnRpY2xlID0gJFRpY2tldE9iamVjdC0+QXJ0aWNsZUdldCggQXJ0aWNsZUlEID0+ICRJbmRleFstMV0gKTsKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgc2VuZCBtYWlsIGlzIG9mIHR5cGUgZm9yd2FyZAogICAgICAgIG15ICRJc0ZvcndhcmQgPSAkU2VsZi0+X0FydGljbGVIaXN0b3J5VHlwZUdpdmVuKAogICAgICAgICAgICBUaWNrZXRJRCAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCAgID0+ICRBcnRpY2xle0FydGljbGVJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlID0+ICdGb3J3YXJkJywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGUgU3lzQ29uZmlnIGlzIGRpc2FibGVkIGFuZCB0aGUgbmV3IGFydGljbGUgaXMgYW4gZm9yd2FyZCBhcnRpY2xlCiAgICAgICAgIyB0aGVuIHdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGUgZm9yd2FyZCBmb3IgdGhlIHNsYXZlIHRpY2tldHMKICAgICAgICBteSAkRm9yd2FyZFNsYXZlcyA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkZvcndhcmRTbGF2ZXMnKTsKCiAgICAgICAgcmV0dXJuIDEgaWYgJElzRm9yd2FyZCAmJiAhJEZvcndhcmRTbGF2ZXM7CgogICAgICAgICMgZG8gbm90IHNlbmQgaW50ZXJuYWwgY29tbXVuaWNhdGlvbnMgdG8gZW5kIGN1c3RvbWVycyBvZiBzbGF2ZSB0aWNrZXRzCiAgICAgICAgaWYgKCAkQXJ0aWNsZXtTZW5kZXJUeXBlfSBlcSAnYWdlbnQnICYmICRBcnRpY2xle0FydGljbGVUeXBlfSA9fiBte2ludGVybmFsfSApIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogQXJ0aWNsZVNlbmQnLAogICAgICAgICk7CgogICAgICAgICMganVzdCBhIGZsYWcgZm9yIGtub3cgd2hlbiB0aGUgZmlyc3Qgc2xhdmUgdGlja2V0IGlzIHByZXNlbnQKICAgICAgICBteSAkRmlyc3RTbGF2ZVRpY2tldCA9IDE7CiAgICAgICAgbXkgJFRtcEFydGljbGVCb2R5OwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IEFydGljbGVTZW5kJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgIG15ICVUaWNrZXRTbGF2ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdHJ5IHRvIGdldCB0aGUgY3VzdG9tZXIgZGF0YSBvZiB0aGUgc2xhdmUgdGlja2V0CiAgICAgICAgICAgIG15ICVDdXN0b21lcjsKICAgICAgICAgICAgaWYgKCAkVGlja2V0U2xhdmV7Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAgICAgJUN1c3RvbWVyID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICRUaWNrZXRTbGF2ZXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ2hlY2tJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScpOwoKICAgICAgICAgICAgIyBjaGVjayBpZiBjdXN0b21lciBlbWFpbCBpcyB2YWxpZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJ7VXNlckVtYWlsfQogICAgICAgICAgICAgICAgJiYgISRDaGVja0l0ZW1PYmplY3QtPkNoZWNrRW1haWwoIEFkZHJlc3MgPT4gJEN1c3RvbWVye1VzZXJFbWFpbH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJ7VXNlckVtYWlsfSA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHdlIGNhbid0IGZpbmQgYSB2YWxpZCBVc2VyRW1haWwgaW4gQ3VzdG9tZXJEYXRhCiAgICAgICAgICAgICMgd2UgaGF2ZSB0byBnZXQgdGhlIGxhc3QgQXJ0aWNsZSB3aXRoIFNlbmRlclR5cGUgJ2N1c3RvbWVyJwogICAgICAgICAgICAjIGFuZCBnZXQgdGhlIFVzZXJFbWFpbAogICAgICAgICAgICBpZiAoICEkQ3VzdG9tZXJ7VXNlckVtYWlsfSApIHsKICAgICAgICAgICAgICAgIG15IEBJbmRleCA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIEFydGljbGVTZW5kZXJUeXBlID0+IFsnY3VzdG9tZXInXSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKEBJbmRleCkgewogICAgICAgICAgICAgICAgICAgICRDdXN0b21lcntVc2VyRW1haWx9ID0gJEluZGV4Wy0xXXtGcm9tfTsKICAgICAgICAgICAgICAgICAgICAkQ3VzdG9tZXJ7VXNlckVtYWlsfSA9fiBzL1s+LF0kLy9nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGlmIGN1c3RvbWVyIGVtYWlsIGlzIHZhbGlkCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDdXN0b21lcntVc2VyRW1haWx9CiAgICAgICAgICAgICAgICAmJiAhJENoZWNrSXRlbU9iamVjdC0+Q2hlY2tFbWFpbCggQWRkcmVzcyA9PiAkQ3VzdG9tZXJ7VXNlckVtYWlsfSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRDdXN0b21lcntVc2VyRW1haWx9ID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgd2Ugc3RpbGwgaGF2ZSBubyBVc2VyRW1haWwsIGRyb3AgYW4gZXJyb3IKICAgICAgICAgICAgaWYgKCAhJEN1c3RvbWVye1VzZXJFbWFpbH0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiTWFzdGVyVGlja2V0OiBubyBjdXN0b21lciBlbWFpbCBmb3VuZCwgc2VuZCBubyBtYXN0ZXIgbWVzc2FnZSB0byBjdXN0b21lci4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgVElDS0VUSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IHRoZSBuZXcgVG8gZm9yIEFydGljbGVTZW5kCiAgICAgICAgICAgICRBcnRpY2xle1RvfSA9ICRDdXN0b21lcntVc2VyRW1haWx9OwoKICAgICAgICAgICAgIyByZWJ1aWxkIHN1YmplY3QKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6U3ViamVjdENsZWFuQWxsTnVtYmVycycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3ViamVjdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN1YmplY3RCdWlsZCgKICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkVGlja2V0U2xhdmV7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICA9PiAkQXJ0aWNsZXtTdWJqZWN0fSB8fCAnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZXhjaGFuZ2UgQ3VzdG9tZXIgZnJvbSBNYXN0ZXJUaWNrZXQgZm9yIHRoZSBvbmUgaW50byB0aGUgU2xhdmVUaWNrZXQKICAgICAgICAgICAgbXkgJFJlcGxhY2VPbk5vdGVUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnUmVwbGFjZUN1c3RvbWVyUmVhbE5hbWVPblNsYXZlQXJ0aWNsZVR5cGVzJyk7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJFJlcGxhY2VPbk5vdGVUeXBlcy0+eyAkQXJ0aWNsZXtBcnRpY2xlVHlwZX0gfSAmJgogICAgICAgICAgICAgICAgJFJlcGxhY2VPbk5vdGVUeXBlcy0+eyAkQXJ0aWNsZXtBcnRpY2xlVHlwZX0gfSBlcSAnMScKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKCRGaXJzdFNsYXZlVGlja2V0KSB7CiAgICAgICAgICAgICAgICAgICAgJEZpcnN0U2xhdmVUaWNrZXQgPSAwOwogICAgICAgICAgICAgICAgICAgICRUbXBBcnRpY2xlQm9keSAgID0gJEFydGljbGV7Qm9keX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAjIGdldCBib2R5IGZyb20gdGVtcG9yYWwgaW4gb2RlciB0byBnZXQgaXQKICAgICAgICAgICAgICAgICAgICAjIHdpdGhvdXQgY2hhbmdlcyBmcm9tIHByZXZpb3VzIHNsYXZlIHRpY2tldHMKICAgICAgICAgICAgICAgICAgICAkQXJ0aWNsZXtCb2R5fSA9ICRUbXBBcnRpY2xlQm9keTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJOYW1lKAogICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkQXJ0aWNsZXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAgICAgbXkgJFJlcGxhY2UgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lck5hbWUoCiAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUaWNrZXRTbGF2ZXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAgICAgaWYgKCAkU2VhcmNoICYmICRSZXBsYWNlICkgewogICAgICAgICAgICAgICAgICAgICRBcnRpY2xle0JvZHl9ID1+IHN7IFxRJFNlYXJjaFxFIH17JFJlcGxhY2V9eG1zZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGFydGljbGUgYWdhaW4KICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+QXJ0aWNsZVNlbmQoCiAgICAgICAgICAgICAgICAlQXJ0aWNsZSwKICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICRTdWJqZWN0LAogICAgICAgICAgICAgICAgQ2MgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBCY2MgICAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICdTZW5kQW5zd2VyJywKICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICJTZW50IGFuc3dlciB0byAnJEFydGljbGV7VG99JyBiYXNlZCBvbiBtYXN0ZXIgdGlja2V0LiIsCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBhcnRpY2xlIGNyZWF0ZQogICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICdBcnRpY2xlQ3JlYXRlJyApIHsKICAgICAgICBteSBASW5kZXggPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlSW5kZXgoIFRpY2tldElEID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSApOwoKICAgICAgICByZXR1cm4gMSBpZiAhQEluZGV4OwoKICAgICAgICBteSAlQXJ0aWNsZSA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVHZXQoIEFydGljbGVJRCA9PiAkSW5kZXhbLTFdICk7CgogICAgICAgICMgbWFyayB0aWNrZXQgdG8gcHJldmVudCBhIGxvb3AKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlQ3JlYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBwcm9jZXNzIGVtYWlsIGFydGljbGVzIChhbHJlYWR5IGRvbmUgaW4gQXJ0aWNsZVNlbmQgZXZlbnQhKQogICAgICAgIGlmICggJEFydGljbGV7U2VuZGVyVHlwZX0gZXEgJ2FnZW50JyAmJiAkQXJ0aWNsZXtBcnRpY2xlVHlwZX0gZXEgJ2VtYWlsLWV4dGVybmFsJyApIHsKCiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIHNhbWUgc3RhdGUsIGJ1dCBvbmx5IGZvciBub3RlcwogICAgICAgIGlmICggJEFydGljbGV7QXJ0aWNsZVR5cGV9ICF+IC9ebm90ZS0vaSApIHsKCiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlQ3JlYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgYXJ0aWNsZSBjcmVhdGUKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICAgICAgICAgICVBcnRpY2xlLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ0FkZE5vdGUnLAogICAgICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ0FkZGVkIGFydGljbGUgYmFzZWQgb24gbWFzdGVyIHRpY2tldC4nLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIHN0YXRlIGFjdGlvbgogICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRTdGF0ZVVwZGF0ZScgKSB7CgogICAgICAgICMgbWFyayB0aWNrZXQgdG8gcHJldmVudCBhIGxvb3AKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRTdGF0ZVVwZGF0ZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRDaGVja1N1Y2Nlc3M7CgogICAgICAgICAgICAjIHNldCB0aGUgc2FtZSBzdGF0ZQogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZVNldCgKICAgICAgICAgICAgICAgIFN0YXRlSUQgID0+ICRUaWNrZXR7U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgc2V0IHBlbmRpbmcgdGltZQogICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZScgKSB7CgogICAgICAgICMgbWFyayB0aWNrZXQgdG8gcHJldmVudCBhIGxvb3AKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHNhbWUgcGVuZGluZyB0aW1lCiAgICAgICAgICAgIG15ICRUaW1lU3RhbXAgPSAnMDAwMC0wMC0wMCAwMDowMDowMCc7CiAgICAgICAgICAgIGlmICggJFRpY2tldHtSZWFsVGlsbFRpbWVOb3RVc2VkfSApIHsKICAgICAgICAgICAgICAgIG15ICggJFNlYywgJE1pbiwgJEhvdXIsICREYXksICRNb250aCwgJFllYXIgKQogICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpY2tldHtSZWFsVGlsbFRpbWVOb3RVc2VkfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFRpbWVTdGFtcCA9ICIkWWVhci0kTW9udGgtJERheSAkSG91cjokTWluOiRTZWMiOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJFRpbWVTdGFtcCwKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIHByaW9yaXR5IGFjdGlvbgogICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRQcmlvcml0eVVwZGF0ZScgKSB7CgogICAgICAgICMgbWFyayB0aWNrZXQgdG8gcHJldmVudCBhIGxvb3AKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRQcmlvcml0eVVwZGF0ZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRQcmlvcml0eVVwZGF0ZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRDaGVja1N1Y2Nlc3M7CgogICAgICAgICAgICAjIHNldCB0aGUgc2FtZSBzdGF0ZQogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgUHJpb3JpdHlJRCA9PiAkVGlja2V0e1ByaW9yaXR5SUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBvd25lciBhY3Rpb24KICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0T3duZXJVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0T3duZXJVcGRhdGUiLAogICAgICAgICk7CgogICAgICAgICMgcGVyZm9ybSBhY3Rpb24gb24gbGlua2VkIHRpY2tldHMKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRDaGVja1N1Y2Nlc3MgPSAkU2VsZi0+X0xvb3BDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0T3duZXJVcGRhdGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHNhbWUgc3RhdGUKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgTmV3VXNlcklEICAgICAgICAgID0+ICRUaWNrZXR7T3duZXJJRH0sCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gMCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyByZXNwb25zaWJsZSBhY3Rpb24KICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0UmVzcG9uc2libGVVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UmVzcG9uc2libGVVcGRhdGUiLAogICAgICAgICk7CgogICAgICAgICMgcGVyZm9ybSBhY3Rpb24gb24gbGlua2VkIHRpY2tldHMKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRDaGVja1N1Y2Nlc3MgPSAkU2VsZi0+X0xvb3BDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UmVzcG9uc2libGVVcGRhdGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHNhbWUgc3RhdGUKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgTmV3VXNlcklEICAgICAgICAgID0+ICRUaWNrZXR7UmVzcG9uc2libGVJRH0sCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gMCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyB1bmxvY2svbG9jayBhY3Rpb24KICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0TG9ja1VwZGF0ZScgKSB7CgogICAgICAgICMgbWFyayB0aWNrZXQgdG8gcHJldmVudCBhIGxvb3AKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRMb2NrVXBkYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldExvY2tVcGRhdGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHNhbWUgc3RhdGUKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja1NldCgKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICAgICAgICA9PiAkVGlja2V0e0xvY2t9LAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFNlbmROb05vdGlmaWNhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX0xvb3BDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgU3RyaW5nIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15IEBMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGltZSBvYmplY3QKICAgIG15ICRUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCiAgICBmb3IgbXkgJERhdGEgKCByZXZlcnNlIEBMaW5lcyApIHsKICAgICAgICBpZiAoICREYXRhLT57SGlzdG9yeVR5cGV9IGVxICdNaXNjJyAmJiAkRGF0YS0+e05hbWV9IGVxICRQYXJhbXtTdHJpbmd9ICkgewogICAgICAgICAgICBteSAkVGltZUNyZWF0ZWQgPSAkVGltZU9iamVjdC0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJERhdGEtPntDcmVhdGVUaW1lfQogICAgICAgICAgICApICsgMTU7CiAgICAgICAgICAgIG15ICRUaW1lQ3VycmVudCA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lKCk7CiAgICAgICAgICAgIGlmICggJFRpbWVDcmVhdGVkID4gJFRpbWVDdXJyZW50ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldExvb3A6IHN0b3BwZWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0FydGljbGVIaXN0b3J5VHlwZUdpdmVuKCkKCkNoZWNrIGlmIGhpc3RvcnkgdHlwZSBmb3IgYXJ0aWNsZSBpcyBnaXZlbgoKICAgIG15ICRJc0hpc3RvcnlUeXBlID0gJEV2ZW50T2JqZWN0LT5fQXJ0aWNsZUhpc3RvcnlUeXBlR2l2ZW4oCiAgICAgICAgVGlja2V0SUQgICAgPT4gJFRpY2tldElELAogICAgICAgIEFydGljbGVJRCAgID0+ICRBcnRpY2xlSUQsCiAgICAgICAgSGlzdG9yeVR5cGUgPT4gJ0ZvcndhcmQnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICApOwoKUmV0dXJucwoKICAgbXkgJElzSGlzdG9yeVR5cGUgPSAxOwoKPWN1dAoKc3ViIF9BcnRpY2xlSGlzdG9yeVR5cGVHaXZlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgQXJ0aWNsZUlEIEhpc3RvcnlUeXBlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgJFRpY2tldElEICAgID0gJFBhcmFte1RpY2tldElEfTsKICAgIG15ICRBcnRpY2xlSUQgICA9ICRQYXJhbXtBcnRpY2xlSUR9OwogICAgbXkgJEhpc3RvcnlUeXBlID0gJFBhcmFte0hpc3RvcnlUeXBlfTsKICAgIG15ICRVc2VySUQgICAgICA9ICRQYXJhbXtVc2VySUR9OwoKICAgIG15IEBMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG15ICRNYXRjaGVkID0gMDsKCiAgICByZXR1cm4gJE1hdGNoZWQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggXEBMaW5lcyApOwoKICAgIEhJU1RPUllEQVRBOgogICAgZm9yIG15ICRIaXN0b3J5RGF0YSAoIHJldmVyc2UgQExpbmVzICkgewogICAgICAgIG5leHQgSElTVE9SWURBVEEgaWYgJEhpc3RvcnlEYXRhLT57QXJ0aWNsZUlEfSAhPSAkQXJ0aWNsZUlEOwogICAgICAgIG5leHQgSElTVE9SWURBVEEgaWYgJEhpc3RvcnlEYXRhLT57SGlzdG9yeVR5cGV9IG5lICRIaXN0b3J5VHlwZTsKCiAgICAgICAgJE1hdGNoZWQgPSAxOwoKICAgICAgICBsYXN0IEhJU1RPUllEQVRBOwogICAgfQoKICAgIHJldHVybiAkTWF0Y2hlZDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIGdldCBuZWVkZWQgb2JqZWN0cwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkUGFyYW1PYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnID0+IHsKICAgICAgICBVc2VySUQgPT4gMSwKICAgIH0sCik7Cm15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7Cm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkIGRhdGEKbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpOwpteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgTmFtZSA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQsCik7CgpteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKIyBmaW5kIGFsbCBjdXJyZW50IG9wZW4gbWFzdGVyIHNsYXZlIHRpY2tldHMKbXkgQFRpY2tldElEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgIFJlc3VsdCA9PiAnQVJSQVknLAoKICAgICMgbWFzdGVyIHNsYXZlIGR5bmFtaWMgZmllbGQKICAgICdEeW5hbWljRmllbGRfJyAuICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9PiB7CiAgICAgICAgRXF1YWxzID0+ICdNYXN0ZXInLAogICAgfSwKCiAgICBTdGF0ZVR5cGUgID0+ICdPcGVuJywKICAgIFVzZXJJRCAgICAgPT4gMSwKICAgIFBlcm1pc3Npb24gPT4gJ3JvJywKKTsKCiMgc2V0IHRpY2tldHMgdG8gcmVtb3ZlZCBzbyB0aGV5IGFyZSBub3QgZm9uZCBsYXRlciBpbiB0aGUgdGVzdCBjYXNlcwojICAgIHRoZSB0aWNrZXRzIHdpbGwgYmUgcmVzdG9yZWQgYXV0b21hdGljYWxseSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0CiMgICAgZHVlIHRvIHRoZSBSZXN0b3JlRGF0YWJhc2Ugb3B0aW9uIGluIGhlbHBlciBvYmplY3QKZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZVNldCgKICAgICAgICBTdGF0ZSAgICA9PiAncmVtb3ZlZCcsCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIlRlbXBvcmFyeSBzZXQgTWFzdGVyIFRpY2tldDogJFRpY2tldElEIHRvIHJlbW92ZWQiLAogICAgKTsKfQoKIyBkZWZpbmUgdGVzdHMKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWFzdGVyU2xhdmUgLSBQb3NzaWJsZSBWYWx1ZXMgRmlsdGVyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiB7CiAgICAgICAgICAgICAgICBNYXN0ZXIgPT4gJ05ldyBNYXN0ZXIgVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICBGaWVsZCA9PgogICAgICAgICAgICAgICAgJzxzZWxlY3QgY2xhc3M9IkR5bmFtaWNGaWVsZFRleHQgTW9kZXJuaXplIiBpZD0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBuYW1lPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIHNpemU9IjEiPgogIDxvcHRpb24gdmFsdWU9Ik1hc3RlciI+TmV3IE1hc3RlciBUaWNrZXQ8L29wdGlvbj4KPC9zZWxlY3Q+CicsCiAgICAgICAgICAgIExhYmVsID0+ICc8bGFiZWwgaWQ9IkxhYmVsRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBmb3I9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSI+Ck1hc3RlciBUaWNrZXQ6CjwvbGFiZWw+CicKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1Vuc2V0TWFzdGVyU2xhdmUgLSBQb3NzaWJsZSBWYWx1ZXMgRmlsdGVyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiB7CiAgICAgICAgICAgICAgICBNYXN0ZXIgICAgICA9PiAnTmV3IE1hc3RlciBUaWNrZXQnLAogICAgICAgICAgICAgICAgVW5zZXRNYXN0ZXIgPT4gJ1Vuc2V0IE1hc3RlciBUaWNrZXRzJywKICAgICAgICAgICAgICAgIFVuc2V0U2xhdmUgID0+ICdVbnNldCBTbGF2ZSBUaWNrZXRzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICBGaWVsZCA9PgogICAgICAgICAgICAgICAgJzxzZWxlY3QgY2xhc3M9IkR5bmFtaWNGaWVsZFRleHQgTW9kZXJuaXplIiBpZD0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBuYW1lPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIHNpemU9IjEiPgogIDxvcHRpb24gdmFsdWU9Ik1hc3RlciI+TmV3IE1hc3RlciBUaWNrZXQ8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJVbnNldE1hc3RlciI+VW5zZXQgTWFzdGVyIFRpY2tldHM8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJVbnNldFNsYXZlIj5VbnNldCBTbGF2ZSBUaWNrZXRzPC9vcHRpb24+Cjwvc2VsZWN0PgonLAogICAgICAgICAgICBMYWJlbCA9PiAnPGxhYmVsIGlkPSJMYWJlbER5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgZm9yPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiPgpNYXN0ZXIgVGlja2V0Ogo8L2xhYmVsPgonCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdNYXN0ZXJTbGF2ZTogTm8gdmFsdWUgJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICA9PiAnTXlDbGFzcycsCiAgICAgICAgICAgIFVzZURlZmF1bHRWYWx1ZSAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgRmllbGQgPT4gPDwiRU9GIiAuICc8L3NlbGVjdD4nLAo8c2VsZWN0IGNsYXNzPSJEeW5hbWljRmllbGRUZXh0IE1vZGVybml6ZSBNeUNsYXNzIiBpZD0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBuYW1lPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIHNpemU9IjEiPgogIDxvcHRpb24gdmFsdWU9IiI+LTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Ik1hc3RlciI+TmV3IE1hc3RlciBUaWNrZXQ8L29wdGlvbj4KRU9GCiAgICAgICAgICAgIExhYmVsID0+ICc8bGFiZWwgaWQ9IkxhYmVsRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBmb3I9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSI+Ck1hc3RlciBUaWNrZXQ6CjwvbGFiZWw+CicKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01hc3RlclNsYXZlOiBObyB2YWx1ZSAvIERlZmF1bHQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgID0+ICdNeUNsYXNzJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgIEZpZWxkID0+IDw8IkVPRiIgLiAnPC9zZWxlY3Q+JywKPHNlbGVjdCBjbGFzcz0iRHluYW1pY0ZpZWxkVGV4dCBNb2Rlcm5pemUgTXlDbGFzcyIgaWQ9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgbmFtZT0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBzaXplPSIxIj4KICA8b3B0aW9uIHZhbHVlPSIiIHNlbGVjdGVkPSJzZWxlY3RlZCI+LTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Ik1hc3RlciI+TmV3IE1hc3RlciBUaWNrZXQ8L29wdGlvbj4KRU9GCiAgICAgICAgICAgIExhYmVsID0+ICc8bGFiZWwgaWQ9IkxhYmVsRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBmb3I9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSI+Ck1hc3RlciBUaWNrZXQ6CjwvbGFiZWw+CicKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01hc3RlclNsYXZlOiBWYWx1ZSBkaXJlY3QnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ015Q2xhc3MnLAogICAgICAgICAgICBVc2VEZWZhdWx0VmFsdWUgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgIEZpZWxkID0+IDw8IkVPRiIgLiAnPC9zZWxlY3Q+JywKPHNlbGVjdCBjbGFzcz0iRHluYW1pY0ZpZWxkVGV4dCBNb2Rlcm5pemUgTXlDbGFzcyIgaWQ9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgbmFtZT0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBzaXplPSIxIj4KICA8b3B0aW9uIHZhbHVlPSIiPi08L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJNYXN0ZXIiIHNlbGVjdGVkPSJzZWxlY3RlZCI+TmV3IE1hc3RlciBUaWNrZXQ8L29wdGlvbj4KRU9GCiAgICAgICAgICAgIExhYmVsID0+ICc8bGFiZWwgaWQ9IkxhYmVsRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBmb3I9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSI+Ck1hc3RlciBUaWNrZXQ6CjwvbGFiZWw+CicKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01hc3RlclNsYXZlOiBNYW5kYXRvcnknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ015Q2xhc3MnLAogICAgICAgICAgICBVc2VEZWZhdWx0VmFsdWUgICAgPT4gMCwKICAgICAgICAgICAgTWFuZGF0b3J5ICAgICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICBGaWVsZCA9PgogICAgICAgICAgICAgICAgJzxzZWxlY3QgY2xhc3M9IkR5bmFtaWNGaWVsZFRleHQgTW9kZXJuaXplIE15Q2xhc3MgVmFsaWRhdGVfUmVxdWlyZWQiIGlkPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIG5hbWU9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgc2l6ZT0iMSI+CiAgPG9wdGlvbiB2YWx1ZT0iIj4tPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iTWFzdGVyIiBzZWxlY3RlZD0ic2VsZWN0ZWQiPk5ldyBNYXN0ZXIgVGlja2V0PC9vcHRpb24+Cjwvc2VsZWN0Pgo8ZGl2IGlkPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgPHA+CiAgICAgICAgVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4KICAgIDwvcD4KPC9kaXY+CicsCiAgICAgICAgICAgIExhYmVsID0+ICc8bGFiZWwgaWQ9IkxhYmVsRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBmb3I9IkR5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgY2xhc3M9Ik1hbmRhdG9yeSI+CiAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPgpNYXN0ZXIgVGlja2V0Ogo8L2xhYmVsPgonCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdNYXN0ZXJTbGF2ZTogU2VydmVyIEVycm9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAnTWFzdGVyJywKICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgID0+ICdNeUNsYXNzJywKICAgICAgICAgICAgVXNlRGVmYXVsdFZhbHVlICAgID0+IDAsCiAgICAgICAgICAgIFNlcnZlckVycm9yICAgICAgICA9PiAxLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgICAgICAgPT4gJ1RoaXMgaXMgYW4gZXJyb3IuJwogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgRmllbGQgPT4KICAgICAgICAgICAgICAgICc8c2VsZWN0IGNsYXNzPSJEeW5hbWljRmllbGRUZXh0IE1vZGVybml6ZSBNeUNsYXNzIFNlcnZlckVycm9yIiBpZD0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIiBuYW1lPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiIHNpemU9IjEiPgogIDxvcHRpb24gdmFsdWU9IiI+LTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Ik1hc3RlciIgc2VsZWN0ZWQ9InNlbGVjdGVkIj5OZXcgTWFzdGVyIFRpY2tldDwvb3B0aW9uPgo8L3NlbGVjdD4KPGRpdiBpZD0iRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgIDxwPgogICAgICAgIFRoaXMgaXMgYW4gZXJyb3IuCiAgICA8L3A+CjwvZGl2PgonLAogICAgICAgICAgICBMYWJlbCA9PiAnPGxhYmVsIGlkPSJMYWJlbER5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIgZm9yPSJEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiPgpNYXN0ZXIgVGlja2V0Ogo8L2xhYmVsPgonCiAgICAgICAgfSwKICAgIH0sCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgZXhlY3V0ZSB0ZXN0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCm15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkRmllbGRIVE1MID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlciggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAjIGhlcmVkb2NzIGFsd2F5cyBoYXZlIHRoZSBuZXdsaW5lLCBldmVuIGlmIGl0IGlzIG5vdCBleHBlY3RlZAogICAgaWYgKCAkRmllbGRIVE1MLT57RmllbGR9ICF+IG17XG4kfSApIHsKICAgICAgICBjaG9tcCAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30tPntGaWVsZH07CiAgICB9CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRGaWVsZEhUTUwsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IHwgRWRpdEZpZWxkUmVuZGVyKCkiLAogICAgKTsKfQoKIyBDbGVhbnVwIGlzIGRvbmUgYnkgUmVzdG9yZURhdGFiYXNlLgoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0hhc2hSZWZXaXRoRGF0YSk7CgojIGdldCBuZWVkZWQgb2JqZWN0cwpteSAkVGlja2V0T2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBtYWtlIHByZXBhcmF0aW9ucwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGdldCBtYXN0ZXIvc2xhdmUgZHluYW1pYyBmaWVsZCBkYXRhCm15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKTsKbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgIE5hbWUgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAopOwoKIyBnZXQgcmFuZG9tIElECm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIGNyZWF0ZSB0ZXN0IHRpY2tldHMKbXkgQFRpY2tldElEczsKbXkgQFRpY2tldE51bWJlcnM7CmZvciBteSAkVGlja2V0ICggMSAuLiAzICkgewogICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE51bWJlciwKICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1VuaXQgdGVzdCB0aWNrZXQgJyAuICRSYW5kb21JRCAuICcgJyAuICRUaWNrZXQsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRUaWNrZXRJRCwKICAgICAgICAiVGlja2V0Q3JlYXRlKCkgVGlja2V0IElEICRUaWNrZXRJRCAtIFROOiAkVGlja2V0TnVtYmVyIiwKICAgICk7CiAgICBwdXNoIEBUaWNrZXRJRHMsICAgICAkVGlja2V0SUQ7CiAgICBwdXNoIEBUaWNrZXROdW1iZXJzLCAkVGlja2V0TnVtYmVyOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBtYXN0ZXIvc2xhdmUgdGlja2V0IHZhbHVlIHNldAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIHNldCBmaXJzdCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0Cm15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgc2V0IHNlY29uZCB0ZXN0IHRpY2tldCBhcyBzbGF2ZSB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMV0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIG1hc3Rlci9zbGF2ZSB0aWNrZXRzCm15ICVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnVGFyZ2V0JywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgIElzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICksCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIGFuZCAkVGlja2V0SURzWzFdIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IFVuc2V0TWFzdGVyfFVuc2V0U2xhdmUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBlbmFibGUgdGhlIE1hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IHN5c2NvbmZpZwokU3VjY2VzcyA9ICRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCcsCiAgICBWYWx1ZSA9PiAxCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0KCkgc3lzY29uZmlnIEtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgLSBlbmFibGVkIiwKKTsKCiMgc2V0IHNlY29uZCB0aWNrZXQgYXMgc2xhdmUgdGlja2V0IGFnYWluCiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFnYWluIGFzIFNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAopOwoKIyB2ZXJpZnkgdGhlcmUgaXMgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiBtYXN0ZXIvc2xhdmUgdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1swXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApLAogICAgIkxpbmtLZXlMaXN0KCkgTWFzdGVyL1NsYXZlIGxpbmsgZm91bmQgLSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBhbmQgJFRpY2tldElEc1sxXSIsCik7CgojIFVuc2V0TWFzdGVyIHZhbHVlIGZyb20gZmlyc3QgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdVbnNldE1hc3RlcicsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBVbnNldE1hc3RlciIsCik7CgojIFVuc2V0U2xhdmUgdmFsdWUgZnJvbSBzZWNvbmQgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdVbnNldFNsYXZlJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFVuc2V0U2xhdmUiLAopOwoKIyB2ZXJpZnkgdGhlcmUgaXMgc3RpbGwgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiB0d28gdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1swXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApLAogICAgIkxpbmtLZXlMaXN0KCkgTWFzdGVyL1NsYXZlIGxpbmsgZm91bmQgLSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBhbmQgJFRpY2tldElEc1sxXSAtIEtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgc3lzY29uZmlnIGVuYWJsZWQiLAopOwoKIyBkaXNhYmxlIHRoZSBNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCBzeXNjb25maWcKJFN1Y2Nlc3MgPSAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OktlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQnLAogICAgVmFsdWUgPT4gMAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlNldCgpIHN5c2NvbmZpZyBLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IC0gZGlzYWJsZWQiLAopOwoKIyByZW1vdmUgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiB0d28gdGlja2V0cwokU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlQWxsKAogICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgS2V5ICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJMaW5rRGVsZXRlQWxsKCkgcGFyZW50LWNoaWxkIGxpbmsgZm9yIHRpY2tldCBJRCAkVGlja2V0SURzWzBdIC0gcmVtb3ZlZCIsCik7CgojIHNldCBmaXJzdCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgc2V0IHNlY29uZCB0ZXN0IHRpY2tldCBhcyBzbGF2ZSB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMV0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBzdGlsbCBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIHR3byB0aWNrZXRzCiVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnVGFyZ2V0JywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgIElzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICksCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIGFuZCAkVGlja2V0SURzWzFdIiwKKTsKCiMgVW5zZXRNYXN0ZXIgdmFsdWUgZnJvbSBmaXJzdCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1Vuc2V0TWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMF0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFVuc2V0TWFzdGVyIiwKKTsKCiMgVW5zZXRTbGF2ZSB2YWx1ZSBmcm9tIHNlY29uZCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMV0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1Vuc2V0U2xhdmUnLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgVW5zZXRTbGF2ZSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBubyBtb3JlIHBhcmVudC1jaGlsZCBsaW5rIGJldHdlZW4gdHdvIHRpY2tldHMKJUxpbmtLZXlMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgS2V5MSAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgIFR5cGUgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgRGlyZWN0aW9uID0+ICdUYXJnZXQnLAogICAgVXNlcklEICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgIUlzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICksCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayByZW1vdmVkIC0gVGlja2V0IElEICRUaWNrZXRJRHNbMF0gYW5kICRUaWNrZXRJRHNbMV0gLSBLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IHN5c2NvbmZpZyBkaXNhYmxlZCIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCB1cGRhdGUgTWFzdGVyfFNsYXZlIGZpZWxkCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZW5hYmxlIHRoZSBNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVcGRhdGUgc3lzY29uZmlnCiRTdWNjZXNzID0gJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZScsCiAgICBWYWx1ZSA9PiAxCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0KCkgc3lzY29uZmlnIEtlZXBQYXJlbnRDaGlsZEFmdGVyVXBkYXRlIC0gZW5hYmxlZCIsCik7CgojIHNldCBmaXJzdCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgc2V0IHNlY29uZCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJNYXN0ZXIiLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgc2V0IHRoaXJkIHRlc3QgdGlja2V0IGFzIHNsYXZlIG9mIHNlY29uZCB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMl0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMV0iLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1syXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgU2xhdmVPZjokVGlja2V0TnVtYmVyc1sxXSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIHR3byB0aWNrZXRzCiVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnVGFyZ2V0JywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgIElzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICksCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzFdIGFuZCAkVGlja2V0SURzWzJdIiwKKTsKCiMgc2V0IHNlY29uZCB0aWNrZXQgYXMgc2xhdmUgb2YgZmlyc3QgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAopOwoKIyB2ZXJpZnkgdGhlcmUgcGFyZW50LWNoaWxkLXBhcmVudCBsaW5rIGJldHdlZW4gdGhyZWUgdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1sxXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ0JvdGgnLAogICAgVXNlcklEICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKSwKICAgICJMaW5rS2V5TGlzdCgpIE1hc3Rlci9TbGF2ZSBsaW5rIGZvdW5kIC0gVGlja2V0IElEICRUaWNrZXRJRHNbMF0sICRUaWNrZXRJRHNbMV0gYW5kICRUaWNrZXRJRHNbMl0gLSBLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZSBzeXNjb25maWcgZW5hYmxlZCIsCik7CgojIENsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UuCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZW5hYmxlIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6QWR2YW5jZWRFbmFibGVkJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBjaGVjayBSaWNoVGV4dAogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdGcm9udGVuZDo6UmljaFRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIHNlcnZpY2UgYW5kIHR5cGUKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpTZXJ2aWNlJywKICAgICAgICAgICAgVmFsdWUgPT4gMAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6VHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2VuZCBlbWFpbHMKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU2VuZG1haWxNb2R1bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnS2VybmVsOjpTeXN0ZW06OkVtYWlsOjpUZXN0JywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGVzdCBjdXN0b21lciBmb3IgdGVzdGluZwogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJMb2dpblBob25lID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRUaWNrZXRQaG9uZSBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFBob25lIik7CgogICAgICAgICMgY3JlYXRlIG1hc3RlciB0ZXN0IHBob25lIHRpY2tldAogICAgICAgIG15ICRBdXRvQ29tcGxldGVTdHJpbmdQaG9uZQogICAgICAgICAgICA9ICJcIiRUZXN0Q3VzdG9tZXJMb2dpblBob25lICRUZXN0Q3VzdG9tZXJMb2dpblBob25lXCIgPCRUZXN0Q3VzdG9tZXJMb2dpblBob25lXEBsb2NhbHVuaXR0ZXN0LmNvbT4gKCRUZXN0Q3VzdG9tZXJMb2dpblBob25lKSI7CiAgICAgICAgbXkgJE1hc3RlclRpY2tldFN1YmplY3QgPSAiTWFzdGVyIFRpY2tldCI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRnJvbUN1c3RvbWVyIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRUZXN0Q3VzdG9tZXJMb2dpblBob25lKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgibGkudWktbWVudS1pdGVtOnZpc2libGUiKS5sZW5ndGgnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKlt0ZXh0KCk9JyRBdXRvQ29tcGxldGVTdHJpbmdQaG9uZSddIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNEZXN0JykudmFsKCcyfHxSYXcnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCRNYXN0ZXJUaWNrZXRTdWJqZWN0KTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSaWNoVGV4dCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gYm9keSB0ZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykudmFsKCdNYXN0ZXInKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBnZXQgbWFzdGVyIHRlc3QgcGhvbmUgdGlja2V0IGRhdGEKICAgICAgICBteSAoICRNYXN0ZXJUaWNrZXRJRCwgJE1hc3RlclRpY2tldE51bWJlciApID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICRUZXN0Q3VzdG9tZXJMb2dpblBob25lLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTWFzdGVyVGlja2V0SUQsCiAgICAgICAgICAgICJNYXN0ZXIgVGlja2V0SUQgLSAkTWFzdGVyVGlja2V0SUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRNYXN0ZXJUaWNrZXROdW1iZXIsCiAgICAgICAgICAgICJNYXN0ZXIgVGlja2V0TnVtYmVyIC0gJE1hc3RlclRpY2tldE51bWJlciIsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgbmV3IHRlc3QgY3VzdG9tZXIgZm9yIHRlc3RpbmcKICAgICAgICBteSAkVGVzdEN1c3RvbWVyTG9naW5zRW1haWwgPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRUaWNrZXRFbWFpbCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldEVtYWlsIik7CgogICAgICAgICMgY3JlYXRlIHNsYXZlIHRlc3QgZW1haWwgdGlja2V0CiAgICAgICAgbXkgJEF1dG9Db21wbGV0ZVN0cmluZ0VtYWlsCiAgICAgICAgICAgID0gIlwiJFRlc3RDdXN0b21lckxvZ2luc0VtYWlsICRUZXN0Q3VzdG9tZXJMb2dpbnNFbWFpbFwiIDwkVGVzdEN1c3RvbWVyTG9naW5zRW1haWxcQGxvY2FsdW5pdHRlc3QuY29tPiAoJFRlc3RDdXN0b21lckxvZ2luc0VtYWlsKSI7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNEZXN0JykudmFsKCcyfHxSYXcnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RvQ3VzdG9tZXIiLCAnY3NzJyApLT5zZW5kX2tleXMoJFRlc3RDdXN0b21lckxvZ2luc0VtYWlsKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgibGkudWktbWVudS1pdGVtOnZpc2libGUiKS5sZW5ndGgnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKlt0ZXh0KCk9JyRBdXRvQ29tcGxldGVTdHJpbmdFbWFpbCddIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICAnY3NzJyApLT5zZW5kX2tleXMoJ1NsYXZlIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JpY2hUZXh0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBib2R5IHRlc3QnKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUnKS52YWwoJ1NsYXZlT2Y6JE1hc3RlclRpY2tldE51bWJlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgZ2V0IHNsYXZlIHRlc3QgZW1haWwgdGlja2V0IGRhdGEKICAgICAgICBteSAoICRTbGF2ZVRpY2tldElELCAkU2xhdmVUaWNrZXROdW1iZXIgKSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgPT4gJ0hBU0gnLAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBDdXN0b21lclVzZXJMb2dpbiA9PiAkVGVzdEN1c3RvbWVyTG9naW5zRW1haWwsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTbGF2ZVRpY2tldElELAogICAgICAgICAgICAiU2xhdmUgVGlja2V0SUQgLSAkU2xhdmVUaWNrZXRJRCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNsYXZlVGlja2V0TnVtYmVyLAogICAgICAgICAgICAiU2xhdmUgVGlja2V0TnVtYmVyIC0gJFNsYXZlVGlja2V0TnVtYmVyIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIHRpY2tldCB6b29tIHBhZ2Ugb2YgY3JlYXRlZCBtYXN0ZXIgdGVzdCB0aWNrZXQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JE1hc3RlclRpY2tldElEIik7CgogICAgICAgICMgdmVyaWZ5IG1hc3Rlci1zbGF2ZSB0aWNrZXQgbGluawogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFNsYXZlVGlja2V0TnVtYmVyICkgPiAtMSwKICAgICAgICAgICAgIlNsYXZlIHRpY2tldCBudW1iZXI6ICRTbGF2ZVRpY2tldE51bWJlciAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIGhpc3RvcnkgdmlldyBvZiBjcmVhdGVkIG1hc3RlciB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0SGlzdG9yeTtUaWNrZXRJRD0kTWFzdGVyVGlja2V0SUQiKTsKCiAgICAgICAgIyB2ZXJpZnkgZHluYW1pYyBmaWVsZCBtYXN0ZXIgdGlja2V0IHVwZGF0ZQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0ZpZWxkTmFtZT1NYXN0ZXJTbGF2ZTtWYWx1ZT1NYXN0ZXInICkgPiAtMSwKICAgICAgICAgICAgIk1hc3RlciBkeW5hbWljIGZpZWxkIHVwZGF0ZSB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIHRpY2tldCB6b29tIHBhZ2Ugb2YgY3JlYXRlZCBzbGF2ZSB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kU2xhdmVUaWNrZXRJRCIpOwoKICAgICAgICAjIHZlcmlmeSBzbGF2ZS1tYXN0ZXIgdGlja2V0IGxpbmsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRNYXN0ZXJUaWNrZXROdW1iZXIgKSA+IC0xLAogICAgICAgICAgICAiTWFzdGVyIHRpY2tldCBudW1iZXI6ICRNYXN0ZXJUaWNrZXROdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBoaXN0b3J5IHZpZXcgb2YgY3JlYXRlZCBzbGF2ZSB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0SGlzdG9yeTtUaWNrZXRJRD0kU2xhdmVUaWNrZXRJRCIpOwoKICAgICAgICAjIHZlcmlmeSBkeW5hbWljIGZpZWxkIHNsYXZlIHRpY2tldCB1cGRhdGUKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJGaWVsZE5hbWU9TWFzdGVyU2xhdmU7VmFsdWU9U2xhdmVPZjokTWFzdGVyVGlja2V0TnVtYmVyIiApID4gLTEsCiAgICAgICAgICAgICJTbGF2ZSBkeW5hbWljIGZpZWxkIHVwZGF0ZSB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgdGlja2V0cwogICAgICAgIGZvciBteSAkVGlja2V0SUQgKCAkTWFzdGVyVGlja2V0SUQsICRTbGF2ZVRpY2tldElEICkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnVGlja2V0JywKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZW5hYmxlIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6QWR2YW5jZWRFbmFibGVkJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGVuYWJsZSBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpVcGRhdGVNYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3QgY2hlY2sgUmljaFRleHQKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBzZW5kIGVtYWlscwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTZW5kbWFpbE1vZHVsZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdLZXJuZWw6OlN5c3RlbTo6RW1haWw6OlRlc3QnLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIEludm92ZWRBZ2VudCBhbmQgSW5mb3JtQWdlbnQgYXJlIGRpc2FibGVkLCBvdGhlcndpc2UgaXQgdXNlcyBwYXJ0IG9mIHRoZSB2aXNpYmxlCiAgICAgICAgIyBzY3JlZW4gbWFraW5nIHRoZSBzdWJtaXQgYnV0dG9uIG5vdCB2aXNpYmxlIGFuZCB0aGVuIG5vdCBjbGljay1hYmxlCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNJbnZvbHZlZEFnZW50JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjSW5mb3JtQWdlbnQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0ZXN0IHVzZXIgSUQKICAgICAgICBteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBjcmVhdGUgdHdvIHRlc3QgdGlja2V0cwogICAgICAgIG15IEBUaWNrZXRJRHM7CiAgICAgICAgbXkgQFRpY2tldE51bWJlcnM7CiAgICAgICAgZm9yIG15ICRUaWNrZXRDcmVhdGUgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRUaWNrZXROdW1iZXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGVOdW1iZXIoKTsKICAgICAgICAgICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTZWxlbml1bSB0ZXN0IFRpY2tldCcsCiAgICAgICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJ1NlbGVuaXVtQ3VzdG9tZXInLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdTZWxlbml1bUN1c3RvbWVyQGxvY2FsaG9zdC5jb20nLAogICAgICAgICAgICAgICAgT3duZXJJRCAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICJUaWNrZXQgSUQgJFRpY2tldElEIC0gY3JlYXRlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBUaWNrZXRJRHMsICAgICAkVGlja2V0SUQ7CiAgICAgICAgICAgIHB1c2ggQFRpY2tldE51bWJlcnMsICRUaWNrZXROdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gdGlja2V0IHpvb20gcGFnZSBvZiBmaXJzdCBjcmVhdGVkIHRlc3QgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRUaWNrZXRJRHNbMF0iKTsKCiAgICAgICAgIyBjbGljayBvbiBNYXN0ZXJTbGF2ZSBhbmQgc3dpdGNoIHdpbmRvdwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudFRpY2tldE1hc3RlclNsYXZlO1RpY2tldElEPSRUaWNrZXRJRHNbMF0nICldIikKICAgICAgICAgICAgLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuV2lkZ2V0U2ltcGxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIG9wZW4gY29sbGFwc2VkIHdpZGdldHMsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnLldpZGdldFNpbXBsZS5Db2xsYXBzZWQgLldpZGdldEFjdGlvbiA+IGEnKS50cmlnZ2VyKCdjbGljaycpOyIKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5XaWRnZXRTaW1wbGUuRXhwYW5kZWQiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUgU3ViamVjdCBSaWNoVGV4dCBGaWxlVXBsb2FkIEFydGljbGVUeXBlSUQgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZmlyc3QgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldAogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLnZhbCgnTWFzdGVyJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gTWFzdGVyIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JpY2hUZXh0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBNYXN0ZXIgVGlja2V0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAY2xhc3M9J0NhbGxGb3JBY3Rpb24gUHJpbWFyeSddW2NvbnRhaW5zKC4sJ1N1Ym1pdCcpXSIpLT5jbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB3aW5kb3cgYmFjayB0byBhZ2VudCB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBmaXJzdCBjcmVhdGVkIHRlc3QgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgZXhwYW5kIE1pc2NlbGxhbmVvdXMgZHJvcGRvd24gbWVudQogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICckKCIjbmF2LU1pc2NlbGxhbmVvdXMgdWwiKS5jc3MoeyAiaGVpZ2h0IjogImF1dG8iLCAib3BhY2l0eSI6ICIxMDAiIH0pOycKICAgICAgICApOwoKICAgICAgICAjIGNsaWNrIG9uICdIaXN0b3J5JyBhbmQgc3dpdGNoIHdpbmRvdwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudFRpY2tldEhpc3Rvcnk7VGlja2V0SUQ9JFRpY2tldElEc1swXScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5XaWRnZXRTaW1wbGUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICMgdmVyaWZ5IGR5bmFtaWMgZmllbGQgbWFzdGVyIHRpY2tldCB1cGRhdGUKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdGaWVsZE5hbWU9TWFzdGVyU2xhdmU7VmFsdWU9TWFzdGVyJyApID4gLTEsCiAgICAgICAgICAgICJNYXN0ZXIgZHluYW1pYyBmaWVsZCB1cGRhdGUgdmFsdWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjbG9zZSBoaXN0b3J5IHdpbmRvdwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkNhbmNlbENsb3NlUG9wdXAiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB3aW5kb3cgYmFjayB0byBhZ2VudCB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBmaXJzdCBjcmVhdGVkIHRlc3QgdGlja2V0CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gdGlja2V0IHpvb20gcGFnZSBvZiBzZWNvbmQgY3JlYXRlZCB0ZXN0IHRpY2tldAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kVGlja2V0SURzWzFdIik7CgogICAgICAgICMgY2xpY2sgb24gTWFzdGVyU2xhdmUgYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZTtUaWNrZXRJRD0kVGlja2V0SURzWzFdJyApXSIpCiAgICAgICAgICAgIC0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgd2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNzdWJtaXRSaWNoVGV4dCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICBzbGVlcCAxOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLnZhbCgnU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIFNsYXZlIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JpY2hUZXh0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBTbGF2ZSBUaWNrZXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nQ2FsbEZvckFjdGlvbiBQcmltYXJ5J11bY29udGFpbnMoLiwnU3VibWl0JyldIiktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwoKICAgICAgICAjIGV4cGFuZCBNaXNjZWxsYW5lb3VzIGRyb3Bkb3duIG1lbnUKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAnJCgiI25hdi1NaXNjZWxsYW5lb3VzIHVsIikuY3NzKHsgImhlaWdodCI6ICJhdXRvIiwgIm9wYWNpdHkiOiAiMTAwIiB9KTsnCiAgICAgICAgKTsKCiAgICAgICAgIyBjbGljayBvbiAnSGlzdG9yeScgYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRUaWNrZXRIaXN0b3J5O1RpY2tldElEPSRUaWNrZXRJRHNbMV0nICldIikKICAgICAgICAgICAgLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuV2lkZ2V0U2ltcGxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIHZlcmlmeSBkeW5hbWljIGZpZWxkIHNsYXZlIHRpY2tldCB1cGRhdGUKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJGaWVsZE5hbWU9TWFzdGVyU2xhdmU7VmFsdWU9U2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIgKSA+IC0xLAogICAgICAgICAgICAiU2xhdmUgZHluYW1pYyBmaWVsZCB1cGRhdGUgdmFsdWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbG9zZSBoaXN0b3J5IHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmNsb3NlKCk7CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCB0aWNrZXRzCiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnVGlja2V0JywKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZW5hYmxlIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6QWR2YW5jZWRFbmFibGVkJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGVuYWJsZSBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpVcGRhdGVNYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2VuZCBlbWFpbHMKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU2VuZG1haWxNb2R1bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnS2VybmVsOjpTeXN0ZW06OkVtYWlsOjpUZXN0JywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGVzdCB1c2VyIElECiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgICAgICMgY3JlYXRlIHRocmVlIHRlc3QgdGlja2V0cwogICAgICAgIG15IEBUaWNrZXRJRHM7CiAgICAgICAgbXkgQFRpY2tldE51bWJlcnM7CiAgICAgICAgbXkgJFRpY2tldFRpdGxlID0gJ01hc3RlclNsYXZlICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIGZvciBteSAkVGlja2V0Q3JlYXRlICggMSAuLiAzICkgewogICAgICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJ1NlbGVuaXVtQ3VzdG9tZXInLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICAgICAgICAgICAgICBPd25lcklEICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgLSBjcmVhdGVkIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQFRpY2tldElEcywgICAgICRUaWNrZXRJRDsKICAgICAgICAgICAgcHVzaCBAVGlja2V0TnVtYmVycywgJFRpY2tldE51bWJlcjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFRpY2tldFNlYXJjaAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0U2VhcmNoIik7CgogICAgICAgICMgd2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlJykubGVuZ3RoIiApOwoKICAgICAgICAjIHNlYXJjaCB0ZXN0IGNyZWF0ZWQgdGlja2V0cyBieSB0aXRsZQogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQXR0cmlidXRlJykudmFsKCdUaXRsZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAgICAgICduYW1lJyApLT5zZW5kX2tleXMoJFRpY2tldFRpdGxlKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBpZD0nU2VhcmNoRm9ybVN1Ym1pdCddW1xAdmFsdWU9J1J1biBzZWFyY2gnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU2VsZWN0IGZpcnN0IHRlc3QgY3JlYXRlZCB0aWNrZXQuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJy5DaGVja2JveFt2YWx1ZT0kVGlja2V0SURzWzBdXScpLmNsaWNrKCk7Iik7CiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdpbnB1dFt2YWx1ZT0kVGlja2V0SURzWzBdXTpjaGVja2VkJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gYnVsayBhbmQgc3dpdGNoIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiQnVsayIsICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgc2V0IHRlc3QgdGlja2V0IGFzIG1hc3RlciB0aWNrZXQKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUnKS52YWwoJ01hc3RlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBvcHVwIGlzIGNvbXBsZXRlbHkgbG9hZGVkLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgU2VsZWN0IHNlY29uZCBhbmQgdGhpcmQgdGVzdCBjcmVhdGVkIHRpY2tldAogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcuQ2hlY2tib3hbdmFsdWU9JFRpY2tldElEc1sxXV0nKS5jbGljaygpOyIpOwogICAgICAgIHNsZWVwIDE7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaW5wdXRbdmFsdWU9JFRpY2tldElEc1sxXV06Y2hlY2tlZCcpLmxlbmd0aCIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcuQ2hlY2tib3hbdmFsdWU9JFRpY2tldElEc1syXV0nKS5jbGljaygpOyIpOwogICAgICAgIHNsZWVwIDE7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaW5wdXRbdmFsdWU9JFRpY2tldElEc1syXV06Y2hlY2tlZCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uIGJ1bGsgYW5kIHN3aXRjaCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJCdWxrIiwgJ2xpbmtfdGV4dCcgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgc2V0IHRlc3QgdGlja2V0cyBhcyBzbGF2ZSB0aWNrZXRzCiAgICAgICAgbXkgJFNsYXZlQXV0b0NvbXBsZXRlID0gIlNsYXZlIG9mIFRpY2tldCMkVGlja2V0TnVtYmVyc1swXTogJFRpY2tldFRpdGxlIjsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUnKS52YWwoJ1NsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0nKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gbWFzdGVyIHRpY2tldCB6b29tIHZpZXcKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFRpY2tldElEc1swXSIpOwoKICAgICAgICAjIHZlcmlmeSBtYXN0ZXItc2xhdmUgdGlja2V0IGxpbmsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUaWNrZXROdW1iZXJzWzFdICkgPiAtMSwKICAgICAgICAgICAgIlNsYXZlIHRpY2tldCBudW1iZXI6ICRUaWNrZXROdW1iZXJzWzFdIC0gZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGlja2V0TnVtYmVyc1syXSApID4gLTEsCiAgICAgICAgICAgICJTbGF2ZSB0aWNrZXQgbnVtYmVyOiAkVGlja2V0TnVtYmVyc1syXSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgdGlja2V0cwogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgLSBkZWxldGVkIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgICAgIFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgKTsKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyk7Cm15ICRMaW5rT2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJFVzZXJPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKbXkgJEN1c3RvbWVyVXNlck9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBzdGFydCBSZXN0b3JlRGF0YWJzZQokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZW5hYmxlIGNvbmZpZyBNYXN0ZXJTbGF2ZTo6Rm9yd2FyZFNsYXZlcwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OkZvcndhcmRTbGF2ZXMnLAogICAgVmFsdWUgPT4gMSwKKTsKCiMgZ2V0IHJhbmRvbSBJRApteSAkUmFuZG9tSUQgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwoKIyBnZXQgbWFzdGVyL3NsYXZlIGR5bmFtaWMgZmllbGQgZGF0YQpteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICBOYW1lID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKKTsKCiMgY3JlYXRlIG5ldyB1c2VyCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlck9iamVjdC0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgICA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgIExhbmd1YWdlID0+ICdlbicKKTsKJFNlbGYtPlRydWUoCiAgICAkVGVzdFVzZXJMb2dpbiwKICAgICJVc2VyQWRkKCkgJFRlc3RVc2VyTG9naW4iLAopOwoKIyBjcmVhdGUgbmV3IGN1c3RvbWVyIHVzZXIKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICBMYW5ndWFnZSA9PiAnZW4nLAopOwokU2VsZi0+VHJ1ZSgKICAgICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAiQ3VzdG9tZXJVc2VyQWRkKCkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiIsCik7CgojIGNyZWF0ZSBmaXJzdCB0ZXN0IHRpY2tldApteSAkTWFzdGVyVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7Cm15ICRNYXN0ZXJUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUTiAgICAgICAgICAgPT4gJE1hc3RlclRpY2tldE51bWJlciwKICAgIFRpdGxlICAgICAgICA9PiAnTWFzdGVyIHVuaXQgdGVzdCB0aWNrZXQgJyAuICRSYW5kb21JRCwKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJObyAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICwKICAgIE93bmVySUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkTWFzdGVyVGlja2V0SUQsCiAgICAiVGlja2V0Q3JlYXRlKCkgVGlja2V0IElEICRNYXN0ZXJUaWNrZXRJRCIsCik7CgojIGNyZWF0ZSBhcnRpY2xlIGZvciB0ZXN0IHRpY2tldApteSAkQXJ0aWNsZUlEID0gJFRpY2tldE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICBTZW5kZXJUeXBlICAgICA9PiAnYWdlbnQnLAogICAgU3ViamVjdCAgICAgICAgPT4gJ01hc3RlciBBcnRpY2xlJywKICAgIEJvZHkgICAgICAgICAgID0+ICdVbml0IHRlc3QgTWFzdGVyVGlja2V0JywKICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgID0+ICdFbWFpbEN1c3RvbWVyJywKICAgIEhpc3RvcnlDb21tZW50ID0+ICdVbml0IHRlc3QgYXJ0aWNsZScsCiAgICBVc2VySUQgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIEFydGljbGUgSUQgJEFydGljbGVJRCIsCik7CgojIHNldCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0Cm15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5WYWx1ZVNldCgKICAgIEZpZWxkSUQgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBWYWx1ZSAgICA9PiBbCiAgICAgICAgewogICAgICAgICAgICBWYWx1ZVRleHQgPT4gJ01hc3RlcicsCiAgICAgICAgfSwKICAgIF0sCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkTWFzdGVyVGlja2V0SUQgRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIE1hc3RlclRpY2tldCIsCik7CgojIGNyZWF0ZSBzZWNvbmQgdGVzdCB0aWNrZXQKbXkgJFNsYXZlVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7Cm15ICRTbGF2ZVRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFROICAgICAgICAgICA9PiAkU2xhdmVUaWNrZXROdW1iZXIsCiAgICBUaXRsZSAgICAgICAgPT4gJ1NsYXZlIHVuaXQgdGVzdCB0aWNrZXQgJyAuICRSYW5kb21JRCwKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJJRCAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiAuICdAbG9jYWx1bml0dGVzdC5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU2xhdmVUaWNrZXRJRCwKICAgICJUaWNrZXRDcmVhdGUoKSBUaWNrZXQgSUQgJFNsYXZlVGlja2V0SUQiLAopOwoKIyBzZXQgdGVzdCB0aWNrZXQgYXMgc2xhdmUgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5WYWx1ZVNldCgKICAgIEZpZWxkSUQgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFZhbHVlICAgID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIFZhbHVlVGV4dCA9PiAiU2xhdmVPZjokTWFzdGVyVGlja2V0TnVtYmVyIiwKICAgICAgICB9LAogICAgXSwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRTbGF2ZVRpY2tldElEIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBTbGF2ZU9mOiRNYXN0ZXJUaWNrZXROdW1iZXIiLAopOwoKIyBhZGQgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiBtYXN0ZXIvc2xhdmUgdGlja2V0cwokU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgU291cmNlT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgU291cmNlS2V5ICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgIFRhcmdldEtleSAgICA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFR5cGUgICAgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJMaW5rQWRkKCkgTWFzdGVyU2xhdmUgbGluayBlc3RhYmxpc2hlZCIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBldmVudCBBcnRpY2xlU2VuZAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGNyZWF0ZSBtYXN0ZXIgdGlja2V0IGFydGljbGUgYW5kIGZvcndhcmQgaXQKbXkgJE1hc3Rlck5ld1N1YmplY3QgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdWJqZWN0QnVpbGQoCiAgICBUaWNrZXROdW1iZXIgPT4gJE1hc3RlclRpY2tldE51bWJlciwKICAgIFN1YmplY3QgICAgICA9PiAnTWFzdGVyIEFydGljbGUnLAogICAgQWN0aW9uICAgICAgID0+ICdGb3J3YXJkJywKKTsKbXkgJEZvcndhcmRBcnRpY2xlSUQgPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlU2VuZCgKICAgIFRpY2tldElEICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICBTZW5kZXJUeXBlICAgICA9PiAnYWdlbnQnLAogICAgRnJvbSAgICAgICAgICAgPT4gJ1NvbWUgQWdlbnQgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciBBIDxjdXN0b21lci1hQGV4YW1wbGUuY29tPicsCiAgICBTdWJqZWN0ICAgICAgICA9PiAkTWFzdGVyTmV3U3ViamVjdCwKICAgIEJvZHkgICAgICAgICAgID0+ICdVbml0IHRlc3QgZm9yd2FyZGVkIGFydGljbGUnLAogICAgQ2hhcnNldCAgICAgICAgPT4gJ2lzby04ODU5LTE1JywKICAgIE1pbWVUeXBlICAgICAgID0+ICd0ZXh0L3BsYWluJywKICAgIEhpc3RvcnlUeXBlICAgID0+ICdGb3J3YXJkJywKICAgIEhpc3RvcnlDb21tZW50ID0+ICdGcm93YXJkZWQgYXJ0aWNsZScsCiAgICBOb0FnZW50Tm90aWZ5ICA9PiAwLAogICAgVXNlcklEICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJBcnRpY2xlU2VuZCgpIEZvcndhcmRlZCBNYXN0ZXJUaWNrZXQgQXJ0aWNsZSBJRCAkRm9yd2FyZEFydGljbGVJRCIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKbXkgQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwpteSAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBhcnRpY2xlIGlzIGNyZWF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IEFydGljbGVTZW5kJywKICAgICJNYXN0ZXJUaWNrZXQgQXJ0aWNsZVNlbmQgZXZlbnQgLSAiLAopOwoKIyBnZXQgc2xhdmUgdGlja2V0IGhpc3RvcnkKbXkgQFNsYXZlSGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKbXkgJFNsYXZlTGFzdEhpc3RvcnlFbnRyeSA9ICRTbGF2ZUhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgYXJ0aWNsZSB0cmllZCB0byBzZW5kCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZUxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXQ6IG5vIGN1c3RvbWVyIGVtYWlsIGZvdW5kLCBzZW5kIG5vIG1hc3RlciBtZXNzYWdlIHRvIGN1c3RvbWVyLicsCiAgICAiU2xhdmVUaWNrZXQgQXJ0aWNsZVNlbmQgZXZlbnQgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgQXJ0aWNsZUNyZWF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGNyZWF0ZSBub3RlIGFydGljbGUgZm9yIG1hc3RlciB0aWNrZXQKbXkgJEFydGljbGVJRENyZWF0ZSA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICBUaWNrZXRJRCAgICAgICA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBBcnRpY2xlVHlwZSAgICA9PiAnbm90ZS1pbnRlcm5hbCcsCiAgICBTZW5kZXJUeXBlICAgICA9PiAnYWdlbnQnLAogICAgU3ViamVjdCAgICAgICAgPT4gJ05vdGUgYXJ0aWNsZScsCiAgICBCb2R5ICAgICAgICAgICA9PiAnVW5pdCB0ZXN0IE1hc3RlclRpY2tldCcsCiAgICBDb250ZW50VHlwZSAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICBIaXN0b3J5VHlwZSAgICA9PiAnQWRkTm90ZScsCiAgICBIaXN0b3J5Q29tbWVudCA9PiAnVW5pdCB0ZXN0IGFydGljbGUnLAogICAgVXNlcklEICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkQXJ0aWNsZUlEQ3JlYXRlLAogICAgIkFydGljbGVDcmVhdGUoKSBOb3RlIEFydGljbGUgSUQgJEFydGljbGVJRENyZWF0ZSBjcmVhdGVkIGZvciBNYXN0ZXJUaWNrZXQgSUQgJE1hc3RlclRpY2tldElEIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IGFydGljbGUgaXMgY3JlYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogQXJ0aWNsZUNyZWF0ZScsCiAgICAiTWFzdGVyVGlja2V0IEFydGljbGVDcmVhdGUgZXZlbnQgLSAiLAopOwoKIyBnZXQgc2xhdmUgdGlja2V0IGhpc3RvcnkKQFNsYXZlSGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNsYXZlTGFzdEhpc3RvcnlFbnRyeSA9ICRTbGF2ZUhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgYXJ0aWNsZSBpcyBjcmVhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZUxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdBZGRlZCBhcnRpY2xlIGJhc2VkIG9uIG1hc3RlciB0aWNrZXQuJywKICAgICJTbGF2ZVRpY2tldCBBcnRpY2xlQ3JlYXRlIGV2ZW50IC0gIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IFRpY2tldFN0YXRlVXBkYXRlCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY2hhbmdlIG1hc3RlciB0aWNrZXQgc3RhdGUgdG8gJ29wZW4nCiRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U3RhdGVTZXQoCiAgICBTdGF0ZSAgICA9PiAnb3BlbicsCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldFN0YXRlU2V0KCkgTWFzdGVyVGlja2V0IHN0YXRlIHVwZGF0ZWQgLSAnb3BlbiciLAopOwoKIyBnZXQgbWFzdGVyIHRpY2tldCBoaXN0b3J5CkBNYXN0ZXJIaXN0b3J5TGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJE1hc3Rlckxhc3RIaXN0b3J5RW50cnkgPSAkTWFzdGVySGlzdG9yeUxpbmVzWy0xXTsKCiMgdmVyaWZ5IG1hc3RlciB0aWNrZXQgc3RhdGUgaXMgdXBkYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0U3RhdGVVcGRhdGUnLAogICAgIk1hc3RlclRpY2tldCBUaWNrZXRTdGF0ZVVwZGF0ZSBldmVudCAtICIsCik7CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgc3RhdGUgaXMgdXBkYXRlZApteSAlU2xhdmVUaWNrZXREYXRhID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgPT4gJFNsYXZlVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFNsYXZlVGlja2V0RGF0YXtTdGF0ZX0sCiAgICAnb3BlbicsCiAgICAiU2xhdmVUaWNrZXQgc3RhdGUgdXBkYXRlZCAtICdvcGVuJyAtICIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBldmVudCBUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGNoYW5nZSBwZW5kaW5nIHRpbWUgZm9yIG1hc3RlciB0aWNrZXQKJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRQZW5kaW5nVGltZVNldCgKICAgIFllYXIgICAgID0+IDAwMDAsCiAgICBNb250aCAgICA9PiAwMCwKICAgIERheSAgICAgID0+IDAwLAogICAgSG91ciAgICAgPT4gMDAsCiAgICBNaW51dGUgICA9PiAwMCwKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVGlja2V0UGVuZGluZ1RpbWVTZXQoKSBNYXN0ZXJUaWNrZXQgcGVuZGluZyB0aW1lIHVwZGF0ZWQiLAopOwoKIyBnZXQgbWFzdGVyIHRpY2tldCBoaXN0b3J5CkBNYXN0ZXJIaXN0b3J5TGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJE1hc3Rlckxhc3RIaXN0b3J5RW50cnkgPSAkTWFzdGVySGlzdG9yeUxpbmVzWy0xXTsKCiMgdmVyaWZ5IG1hc3RlciB0aWNrZXQgcGVuZGluZyB0aW1lIGlzIHVwZGF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFBlbmRpbmdUaW1lVXBkYXRlJywKICAgICJNYXN0ZXJUaWNrZXQgVGlja2V0UGVuZGluZ1RpbWVVcGRhdGUgZXZlbnQgLSAiLAopOwoKIyBnZXQgc2xhdmUgdGlja2V0IGhpc3RvcnkKQFNsYXZlSGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNsYXZlTGFzdEhpc3RvcnlFbnRyeSA9ICRTbGF2ZUhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgcGVuZGluZyB0aW1lIGlzIHVwZGF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJFNsYXZlTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJyUlMDAtMDAtMDAgMDA6MDAnLAogICAgIlNsYXZlVGlja2V0IHBlbmRpbmcgdGltZSB1cGRhdGUgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgVGlja2V0UHJpb3JpdHlVcGRhdGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBjaGFuZ2UgbWFzdGVyIHRpY2tldCBwcmlvcml0eSB0byAnMiBsb3cnCiRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlTZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBQcmlvcml0eSA9PiAnMiBsb3cnLAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUaWNrZXRQcmlvcml0eVNldCgpIE1hc3RlclRpY2tldCBwcmlvcml0eSB1cGRhdGVkIC0gJzIgbG93JyIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBwcmlvcml0eSBpcyB1cGRhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5LT57TmFtZX0sCiAgICAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRQcmlvcml0eVVwZGF0ZScsCiAgICAiTWFzdGVyVGlja2V0IFRpY2tldFByaW9yaXR5VXBkYXRlIGV2ZW50IC0gIiwKKTsKCiMgdmVyaWZ5IHNsYXZlIHRpY2tldCBwcmlvcml0eSBpcyB1cGRhdGVkCiVTbGF2ZVRpY2tldERhdGEgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICBUaWNrZXRJRCA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZVRpY2tldERhdGF7UHJpb3JpdHl9LAogICAgJzIgbG93JywKICAgICJTbGF2ZVRpY2tldCBwcmlvcml0eSB1cGRhdGVkIC0gJzIgbG93JyAtICIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBldmVudCBUaWNrZXRPd25lclVwZGF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGNoYW5nZSBtYXN0ZXIgdGlja2V0IG93bmVyCiRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJTZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBOZXdVc2VyICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVGlja2V0T3duZXJTZXQoKSBNYXN0ZXJUaWNrZXQgb3duZXIgdXBkYXRlZCAtICRUZXN0VXNlckxvZ2luIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IG93bmVyIGlzIHVwZGF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldE93bmVyVXBkYXRlJywKICAgICJNYXN0ZXJUaWNrZXQgVGlja2V0T3duZXJVcGRhdGUgZXZlbnQgLSAiLAopOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IG93bmVyIGlzIHVwZGF0ZWQKJVNsYXZlVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPklzRGVlcGx5KAogICAgJFNsYXZlVGlja2V0RGF0YXtPd25lcn0sCiAgICAkVGVzdFVzZXJMb2dpbiwKICAgICJTbGF2ZVRpY2tldCBvd25lciB1cGRhdGVkIC0gIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgc2V0IG5ldyByZXNwb25zaWJsZSB1c2VyIGZvciBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBOZXdVc2VyICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVGlja2V0UmVzcG9uc2libGVTZXQoKSBNYXN0ZXJUaWNrZXQgcmVzcG9uc2libGUgdXBkYXRlZCAtICRUZXN0VXNlckxvZ2luIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IHJlc3BvbnNpYmxlIHVzZXIgaXMgdXBkYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UmVzcG9uc2libGVVcGRhdGUnLAogICAgIk1hc3RlclRpY2tldCBUaWNrZXRSZXNwb25zaWJsZVVwZGF0ZSBldmVudCAtICIsCik7CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgb3duZXIgaXMgdXBkYXRlZAolU2xhdmVUaWNrZXREYXRhID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgPT4gJFNsYXZlVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+SXNEZWVwbHkoCiAgICAkU2xhdmVUaWNrZXREYXRhe1Jlc3BvbnNpYmxlfSwKICAgICRUZXN0VXNlckxvZ2luLAogICAgIlNsYXZlVGlja2V0IHJlc3BvbnNpYmxlIHVwZGF0ZWQgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgVGlja2V0TG9ja1VwZGF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGxvY2sgbWFzdGVyIHRpY2tldAokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICBMb2NrICAgICA9PiAnbG9jaycsCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldExvY2tTZXQoKSBNYXN0ZXJUaWNrZXQgaXMgbG9ja2VkIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IGlzIGxvY2tlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0TG9ja1VwZGF0ZScsCiAgICAiTWFzdGVyVGlja2V0IFRpY2tldExvY2tVcGRhdGUgZXZlbnQgLSAiLAopOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IGlzIGxvY2tlZAolU2xhdmVUaWNrZXREYXRhID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgPT4gJFNsYXZlVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+SXNEZWVwbHkoCiAgICAkU2xhdmVUaWNrZXREYXRhe0xvY2t9LAogICAgJ2xvY2snLAogICAgIlNsYXZlVGlja2V0IGxvY2sgdXBkYXRlZCAtICIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpPVFJTTWFzdGVyU2xhdmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAopOwoKPWhlYWQxIE5BTUUKCk9UUlNNYXN0ZXJTbGF2ZS5wbSAtIGNvZGUgdG8gZXhlY3V0ZSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24KCj1oZWFkMSBTWU5PUFNJUwoKRnVuY3Rpb25zIGZvciBpbnN0YWxsaW5nIHRoZSBPVFJTTWFzdGVyU2xhdmUgcGFja2FnZS4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ29kZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpPVFJTTWFzdGVyU2xhdmUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyByZWJ1aWxkIFpaWiogZmlsZXMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKS0+V3JpdGVEZWZhdWx0KCk7CgogICAgIyBkZWZpbmUgdGhlIFpaWiBmaWxlcwogICAgbXkgQFpaWkZpbGVzID0gKAogICAgICAgICdaWlpBQXV0by5wbScsCiAgICAgICAgJ1paWkF1dG8ucG0nLAogICAgKTsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzIChtb2RfcGVybCB3b3JrYXJvdW5kKQogICAgZm9yIG15ICRaWlpGaWxlIChAWlpaRmlsZXMpIHsKCiAgICAgICAgUFJFRklYOgogICAgICAgIGZvciBteSAkUHJlZml4IChASU5DKSB7CiAgICAgICAgICAgIG15ICRGaWxlID0gJFByZWZpeCAuICcvS2VybmVsL0NvbmZpZy9GaWxlcy8nIC4gJFpaWkZpbGU7CiAgICAgICAgICAgIG5leHQgUFJFRklYIGlmICEtZiAkRmlsZTsKICAgICAgICAgICAgZG8gJEZpbGU7CiAgICAgICAgICAgIGxhc3QgUFJFRklYOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFsd2F5cyBkaXNjYXJkIHRoZSBjb25maWcgb2JqZWN0IGJlZm9yZSBwYWNrYWdlIGNvZGUgaXMgZXhlY3V0ZWQsCiAgICAjIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb25maWcgb2JqZWN0IHdpbGwgYmUgY3JlYXRlZCBuZXdseSwgc28gdGhhdCBpdAogICAgIyB3aWxsIHVzZSB0aGUgcmVjZW50bHkgd3JpdHRlbiBuZXcgY29uZmlnIGZyb20gdGhlIHBhY2thZ2UKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RzRGlzY2FyZCgKICAgICAgICBPYmplY3RzID0+IFsnS2VybmVsOjpDb25maWcnXSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZHMgbGlzdAogICAgJFNlbGYtPntEeW5hbWljRmllbGRzTGlzdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZXQnXSwKICAgICk7CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0R5bmFtaWNGaWVsZHNMaXN0fSApICkgewogICAgICAgICRTZWxmLT57RHluYW1pY0ZpZWxkc0xpc3R9ID0gW107CiAgICB9CgogICAgIyBjcmVhdGUgYSBkeW5hbWljIGZpZWxkIGxvb2t1cCB0YWJsZSAoYnkgbmFtZSkKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggQHsgJFNlbGYtPntEeW5hbWljRmllbGRzTGlzdH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZDsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGQtPntOYW1lfTsKICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZExvb2t1cH0tPnsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQ29kZUluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIGluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaWYgd2UgZ290IGFuIGluc3RhbGxlZCB2ZXJzaW9uIG9mIE1hc3RlclNsYXZlLCBtaWdyYXRlIHRoZSBkYXRhCiAgICAjIG90aGVyd2lzZSBzZXQgdGhlIGR5bmFtaWMgZmllbGRzCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCA9ICRTZWxmLT5fQ2hlY2tNYXN0ZXJTbGF2ZURhdGEoKTsKICAgIGlmICgkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCkgewoKICAgICAgICAkU2VsZi0+X01pZ3JhdGVPVFJTTWFzdGVyU2xhdmUoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElELAogICAgICAgICAgICBNYXN0ZXJTbGF2ZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+X1NldER5bmFtaWNGaWVsZHMoKTsKICAgIH0KCiAgICAjIHNldCBkYXNoYm9hcmQgY29uZmlnIGlmIG5lZWRlZAogICAgJFNlbGYtPl9TZXREYXNoYm9hcmRDb25maWcoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+X1NldER5bmFtaWNGaWVsZHMoKTsKCiAgICAjIHNldCBkYXNoYm9hcmQgY29uZmlnIGlmIG5lZWRlZAogICAgJFNlbGYtPl9TZXREYXNoYm9hcmRDb25maWcoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVwZ3JhZGUxMjUoKQoKcnVuIHRoZSBjb2RlIHVwZ3JhZGUgcGFydCBmb3IgdmVyc2lvbnMgcHJpb3IgdG8gMS4yLjUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlMTI1KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUxMjUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHVwZ3JhZGUvbWlncmF0ZSBvbmx5IGluIGNhc2UgdGhlcmUgaXMgYSBpbnN0YWxsZWQKICAgICMgdmVyc2lvbiBvZiBPVFJTTWFzdGVyU2xhdmUgdmVyc2lvbiA8IDEuMi41CiAgICAkU2VsZi0+X01pZ3JhdGVPVFJTTWFzdGVyU2xhdmUoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjkxLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzkxKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoYW5nZSBjb25maWd1cmF0aW9ucyB0byBtYXRjaCB0aGUgbmV3IG1vZHVsZSBsb2NhdGlvbi4KICAgICRTZWxmLT5fTWlncmF0ZUNvbmZpZ3MoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVuaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlVW5pbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPl9SZW1vdmVEeW5hbWljRmllbGRzKCk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfU2V0RHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgbmFtZXMgZnJvbSBTeXNDb25maWcKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpIHx8ICdNYXN0ZXJTbGF2ZSc7CgogICAgIyBzZXQgYXR0cmlidXRlcyBvZiBuZXcgZHluYW1pYyBmaWVsZHMKICAgIG15ICVOZXdEeW5hbWljRmllbGRzID0gKAogICAgICAgICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBMYWJlbCAgICAgID0+ICdNYXN0ZXIgVGlja2V0JywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnTWFzdGVyU2xhdmUnLAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEludGVybmFsRmllbGQgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNldCBNYXhGaWVsZE9yZGVyIChuZWVkZWQgZm9yIGFkZGluZyBuZXcgZHluYW1pYyBmaWVsZHMpCiAgICBteSAkTWF4RmllbGRPcmRlciA9IDA7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57RHluYW1pY0ZpZWxkc0xpc3R9ICkgKSB7CiAgICAgICAgJE1heEZpZWxkT3JkZXIgPSAxOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGRzTGlzdH0gfSApIHsKICAgICAgICAgICAgaWYgKCBpbnQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkT3JkZXJ9ID4gaW50ICRNYXhGaWVsZE9yZGVyICkgewogICAgICAgICAgICAgICAgJE1heEZpZWxkT3JkZXIgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRPcmRlcn07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgZm9yIG15ICROZXdGaWVsZE5hbWUgKCBzb3J0IGtleXMgJU5ld0R5bmFtaWNGaWVsZHMgKSB7CgogICAgICAgICMgY2hlY2sgaWYgZHluYW1pYyBmaWVsZCBhbHJlYWR5IGV4aXN0cwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfS0+eyROZXdGaWVsZE5hbWV9ICkgKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmF0aW9uCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkU2VsZi0+e0R5bmFtaWNGaWVsZExvb2t1cH0tPnskTmV3RmllbGROYW1lfTsKCiAgICAgICAgICAgIG15ICRVcGRhdGU7CgogICAgICAgICAgICAjIHVwZGF0ZSBmaWVsZCBjb25maWd1cmF0aW9uIGlmIGl0IHdhcyBvdGhlciB0aGFuIE1hc3RlclNsYXZlIChlLmcuIERyb3Bkb3duKQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IG5lICdNYXN0ZXJTbGF2ZScgKSB7CiAgICAgICAgICAgICAgICBteSAkSUQgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9OwogICAgICAgICAgICAgICAgJXskRHluYW1pY0ZpZWxkQ29uZmlnfSA9ICggJXskRHluYW1pY0ZpZWxkQ29uZmlnfSwgJXsgJE5ld0R5bmFtaWNGaWVsZHN7JE5ld0ZpZWxkTmFtZX0gfSApOwogICAgICAgICAgICAgICAgJFVwZGF0ZSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgZHluYW1pYyBmaWVsZCBleGlzdHMgbWFrZSBzdXJlIGlzIHZhbGlkCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e1ZhbGlkSUR9IG5lICcxJyApIHsKICAgICAgICAgICAgICAgICRVcGRhdGUgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFVwZGF0ZSkgewoKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFJlb3JkZXIgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHNldCBkeW5hbWljIGZpZWxkICckTmV3RmllbGROYW1lJyB0byB2YWxpZCEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW50ZXJuYWxGaWVsZH0gbmUgJzEnICkgewoKICAgICAgICAgICAgICAgICMgdXBkYXRlIEludGVybmFsRmllbGQgdmFsdWUgbWFudWFsbHkgc2luY2UgQVBJIGRvZXMgbm90IHN1cHBvcnQKICAgICAgICAgICAgICAgICMgaW50ZXJuYWxfZmllbGQgdXBkYXRlCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgICAgICBVUERBVEUgZHluYW1pY19maWVsZAogICAgICAgICAgICAgICAgICAgICAgICBTRVQgaW50ZXJuYWxfZmllbGQgPSAxCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3Qgc2V0IGR5bmFtaWMgZmllbGQgJyROZXdGaWVsZE5hbWUnIGFzIGludGVybmFsISIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNsZWFuIGR5bmFtaWMgZmllbGQgY2FjaGUKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBjcmVhdGUgaXQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJE1heEZpZWxkT3JkZXIrKzsKICAgICAgICAgICAgbXkgJElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICAgICAgJXsgJE5ld0R5bmFtaWNGaWVsZHN7JE5ld0ZpZWxkTmFtZX0gfSwKICAgICAgICAgICAgICAgIEZpZWxkT3JkZXIgPT4gJE1heEZpZWxkT3JkZXIsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkSUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgYWRkIGR5bmFtaWMgZmllbGQgJyROZXdGaWVsZE5hbWUnISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZW5hYmxlIGR5bmFtaWMgZmllbGQgZm9yIHRpY2tldCB6b29tCiAgICAjIGdldCBvbGQgY29uZmlndXJhdGlvbgogICAgbXkgJFdpbmRvd0NvbmZpZyAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbScpOwogICAgbXkgJUR5bmFtaWNGaWVsZHMgPSAleyAkV2luZG93Q29uZmlnLT57RHluYW1pY0ZpZWxkfSB8fCB7fSB9OwoKICAgICREeW5hbWljRmllbGRzeyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gPQogICAgICAgIGRlZmluZWQgJER5bmFtaWNGaWVsZHN7JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfQogICAgICAgID8gJER5bmFtaWNGaWVsZHN7JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfQogICAgICAgIDogMTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICBWYWx1ZSA9PiBcJUR5bmFtaWNGaWVsZHMsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX01pZ3JhdGVPVFJTTWFzdGVyU2xhdmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG5hbWVzIGZyb20gU3lzQ29uZmlnCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKQogICAgICAgIHx8ICdNYXN0ZXJTbGF2ZSc7CgogICAgIyBjaGVjayBpZiB0aGVyZSBpc24ndCBhbHJlYWR5IGEgZHluYW1pYyBmaWVsZCB3aXRoIHRoZSBkZXN0aW5lZCBuYW1lCiAgICByZXR1cm4gMSBpZiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9LT57JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSApOwoKICAgIG15ICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjaGVjayBpZiB3ZSBnb3QgYSBEeW5hbWljRmllbGRJRAogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkSUR9ICkgewogICAgICAgICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEID0gJFBhcmFte0R5bmFtaWNGaWVsZElEfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGlmIG5vdDogZ2V0IHRoZSBtaWdyYXRlZCBmaWVsZCBJRCBieSBzZWFyY2hpbmcgZm9yIHBvc3NpYmxlIGRhdGEKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIGRmdi5maWVsZF9pZCBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2ICIKICAgICAgICAgICAgICAgIC4gIldIRVJFIGRmdi52YWx1ZV90ZXh0IExJS0UgJ1NsYXZlT2Y6JScgT1IgZGZ2LnZhbHVlX3RleHQgPSAnTWFzdGVyJyIsCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEID0gJFJvd1swXTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB3ZSBmb3VuZCBhIHZhbGlkIElECiAgICByZXR1cm4gMCBpZiAhJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQ7CgogICAgaWYgKCAkUGFyYW17TWFzdGVyU2xhdmV9ICkgewogICAgICAgICRTZWxmLT5fTWlncmF0ZU1hc3RlclNsYXZlRGF0YSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAjIHRyeSB0byBnZXQgdGhlIGR5bmFtaWMgZmllbGQgIGRhdGEgKGZvciBmaWVsZCBvcmRlciBldGMuKQogICAgbXkgJE9sZER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBJRCA9PiAkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCwKICAgICk7CgogICAgcmV0dXJuIDAgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRPbGREeW5hbWljRmllbGQpOwoKICAgICMgdXBkYXRlIHRoZSBuYW1lIG9mIHRoZSBkeW5hbWljIGZpZWxkIHRvIE1hc3RlclNsYXZlIGFuZCBzdG9yZSBpdAogICAgIyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbgogICAgcmV0dXJuIDAgaWYgISREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAleyRPbGREeW5hbWljRmllbGR9LAogICAgICAgIE5hbWUgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAogICAgICAgIExhYmVsICAgICAgPT4gJ01hc3RlciBUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ01hc3RlclNsYXZlJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgICAgICAgPT4gJycsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXMgPT4gMSwKICAgICAgICB9LAogICAgICAgIEludGVybmFsRmllbGQgPT4gMSwKICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgUmVvcmRlciAgICAgICA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICk7CgogICAgIyB1cGRhdGUgSW50ZXJuYWxGaWVsZCB2YWx1ZSBtYW51YWxseSBzaW5jZSBBUEkgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcm5hbF9maWVsZCB1cGRhdGUKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZHluYW1pY19maWVsZAogICAgICAgICAgICBTRVQgaW50ZXJuYWxfZmllbGQgPSAxCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRC0+e0lEfSBdLAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHNldCBkeW5hbWljIGZpZWxkICckTWFzdGVyU2xhdmVEeW5hbWljRmllbGQnIGFzIGludGVybmFsISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNsZWFuIGR5bmFtaWMgZmllbGQgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICApOwoKICAgICMgYWN0aXZhdGUgdGhlIER5bmFtaWNGaWVsZCBpbiB0aWNrZXQgZGV0YWlscyBibG9jawogICAgbXkgJEtleVN0cmluZyAgICAgICA9ICJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20iOwogICAgbXkgJEV4aXN0aW5nU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgkS2V5U3RyaW5nKSB8fCB7fTsKICAgIG15ICVWYWx1ZXNUb1NldCAgICAgPSAleyAkRXhpc3RpbmdTZXR0aW5nLT57RHluYW1pY0ZpZWxkfSB8fCB7fSB9OwogICAgJFZhbHVlc1RvU2V0e01hc3RlclNsYXZlfSA9IDE7CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgS2V5ICAgPT4gJEtleVN0cmluZyAuICIjIyNEeW5hbWljRmllbGQiLAogICAgICAgIFZhbHVlID0+IFwlVmFsdWVzVG9TZXQsCiAgICApOwp9CgpzdWIgX0NoZWNrTWFzdGVyU2xhdmVEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGlmIG5vdDogZ2V0IHRoZSBtaWdyYXRlZCBmaWVsZCBJRCBieSBzZWFyY2hpbmcgZm9yIHBvc3NpYmxlIGRhdGEKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAiU0VMRUNUIGRmdi5maWVsZF9pZCBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2IFdIRVJFIGRmdi52YWx1ZV90ZXh0ID0gJ1NsYXZlJyIsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEOwp9CgpzdWIgX01pZ3JhdGVNYXN0ZXJTbGF2ZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17RHluYW1pY0ZpZWxkSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBEeW5hbWljRmllbGRJRCBmb3IgTWFzdGVyU2xhdmUgZGF0YSBtaWdyYXRpb24hIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCB0aGUgc2xhdmUgdGlja2V0IGlkcyB3ZSBoYXZlIHRvIHVwZGF0ZQogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiCiAgICAgICAgICAgIFNFTEVDVCBkZnYub2JqZWN0X2lkCiAgICAgICAgICAgIEZST00gZHluYW1pY19maWVsZF92YWx1ZSBkZnYKICAgICAgICAgICAgV0hFUkUgZGZ2LnZhbHVlX3RleHQgPSAnU2xhdmUnCiAgICAgICAgICAgICAgICBBTkQgZGZ2LmZpZWxkX2lkID0gPyIsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0R5bmFtaWNGaWVsZElEfSBdLAogICAgICAgIExpbWl0ID0+IDUwLAogICAgKTsKCiAgICBteSBARHluYW1pY0ZpZWxkRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2goIEBEeW5hbWljRmllbGREYXRhLCAkUm93WzBdICk7CiAgICB9CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBkeW5hbWljIGZpZWxkIGRhdGEgZm9yIHNldHRpbmcgbmV3IHZhbHVlCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZElEfSwKICAgICk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAjIGxvb3Agb3ZlciB0aGUgdGlja2V0IGlkcyB3ZSBoYXZlIHRvIHVwZGF0ZQogICAgT0xEU0xBVkVTVFlMRToKICAgIGZvciBteSAkVGlja2V0SUQgKEBEeW5hbWljRmllbGREYXRhKSB7CgogICAgICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICAgICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgICAgICBPYmplY3QgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgICAgICAgICAgRGlyZWN0aW9uID0+ICdTb3VyY2UnLAogICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHdoYXQgdGlja2V0cyBtaWdodCBiZSB0aGUgbWFzdGVyCiAgICAgICAgbXkgQFBhcmVudFRpY2tldElEcyA9IGtleXMgJXsgJExpbmtMaXN0V2l0aERhdGEtPntUaWNrZXR9LT57UGFyZW50Q2hpbGR9LT57U291cmNlfSB9OwoKICAgICAgICBteSAkVGlja2V0TnVtYmVyOwoKICAgICAgICAjIGlmIHdlIGdvdCBtb3JlIHRoYW4gb25lIHBvc3NpYmxlIG1hc3RlciB0aWNrZXQsIHRyeSB0byBkZXRlcm1pbmUgd2hpY2gKICAgICAgICAjIG9uZSBpcyB0aGUgbWFzdGVyIHdlIGFyZSBsb29raW5nIGZvcgogICAgICAgIGlmICgkI1BhcmVudFRpY2tldElEcykgewoKICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICIKICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgZGZ2Lm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgIEZST00gZHluYW1pY19maWVsZF92YWx1ZSBkZnYKICAgICAgICAgICAgICAgICAgICBXSEVSRSBkZnYudmFsdWVfdGV4dCA9ICdNYXN0ZXInCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYuZmllbGRfaWQgPSA/CiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYub2JqZWN0X2lkIElOICgiCiAgICAgICAgICAgICAgICAgICAgLiBqb2luKCAnLCcsIG1hcCB7ICREQk9iamVjdC0+UXVvdGUoJF8pIH0gQFBhcmVudFRpY2tldElEcyApCiAgICAgICAgICAgICAgICAgICAgLiAnKScsCiAgICAgICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17RHluYW1pY0ZpZWxkSUR9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFBhcmVudFRpY2tldElEczsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICBwdXNoKCBAUGFyZW50VGlja2V0SURzLCAkUm93WzBdICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkI1BhcmVudFRpY2tldElEcykgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZG4ndCBkZXRlcm1pbmUgTWFzdGVyVGlja2V0IGZvciBUaWNrZXRJRCAkVGlja2V0SUQgKFBvc3NpYmxlIE1hc3RlcnM6ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiBqb2luICcsICcsIEBQYXJlbnRUaWNrZXRJRHMKICAgICAgICAgICAgICAgICAgICAgICAgLiAiKSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFRpY2tldE51bWJlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0TnVtYmVyTG9va3VwKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmVudFRpY2tldElEc1swXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkVGlja2V0TnVtYmVyCiAgICAgICAgICAgICAgICA9ICRMaW5rTGlzdFdpdGhEYXRhLT57VGlja2V0fS0+e1BhcmVudENoaWxkfS0+e1NvdXJjZX0tPnsgJFBhcmVudFRpY2tldElEc1swXSB9LT57VGlja2V0TnVtYmVyfTsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIHRvIHZhbGlkCiAgICAgICAgIyBkYXRhIGZvciBPVFJTTWFzdGVyU2xhdmUKICAgICAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVTZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1NsYXZlT2Y6JyAuICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgbWlncmF0aW5nIE1hc3RlclNsYXZlIER5bmFtaWNGaWVsZCAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0R5bmFtaWNGaWVsZElEfQogICAgICAgICAgICAgICAgICAgIC4gIicgZm9yIFRpY2tldElEICciCiAgICAgICAgICAgICAgICAgICAgLiAkVGlja2V0SUQKICAgICAgICAgICAgICAgICAgICAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBzb21lIHJlY3Vyc2lvbiBpZiB3ZSBnb3QgbW9yZSB0aGFuIDUwIHNsYXZlIHRpY2tldHMgaW4gdGhpcyBydW4KICAgICMgZG9pbmcgdGhpcyB0byBoYXZlIGEgYmV0dGVyIHBlcmZvcm1hbmNlCiAgICBpZiAoIDUwID09IHNjYWxhciBARHluYW1pY0ZpZWxkRGF0YSApIHsKICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fTWlncmF0ZU1hc3RlclNsYXZlRGF0YSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZElEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIG1pZ3JhdGluZyBNYXN0ZXJTbGF2ZSBkYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVtb3ZlRHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgbmFtZXMgZnJvbSBTeXNDb25maWcKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpIHx8ICdNYXN0ZXJTbGF2ZSc7CgogICAgIyBjaGVjayBpZiBkeW5hbWljIGZpZWxkIGFscmVhZHkgZXhpc3RzCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0R5bmFtaWNGaWVsZExvb2t1cH0tPnskTWFzdGVyU2xhdmVEeW5hbWljRmllbGR9ICkgKSB7CgogICAgICAgICMgZ2V0IHRoZSBmaWVsZCBJRAogICAgICAgIG15ICREeW5hbWljRmllbGRJRCA9ICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfS0+eyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0tPntJRH07CgogICAgICAgICMgZGVsZXRlIGFsbCBmaWVsZCB2YWx1ZXMKICAgICAgICBteSAkVmFsdWVzRGVsZXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScpLT5BbGxWYWx1ZXNEZWxldGUoCiAgICAgICAgICAgIEZpZWxkSUQgPT4gJER5bmFtaWNGaWVsZElELAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRWYWx1ZXNEZWxldGVTdWNjZXNzKSB7CgogICAgICAgICAgICAjIGRlbGV0ZSBmaWVsZAogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICAgICBSZW9yZGVyID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZWxldGUgZHluYW1pYyBmaWVsZCAnJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZWxldGUgdmFsdWVzIGZvciBkeW5hbWljIGZpZWxkICckTWFzdGVyU2xhdmVEeW5hbWljRmllbGQnISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZGlzYWJsZSBTeXNDb25maWcgc2V0dGluZ3MKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKS0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICBWYWxpZCA9PiAwLAogICAgICAgIEtleSAgID0+ICdEeW5hbWljRmllbGRzOjpEcml2ZXIjIyNNYXN0ZXJTbGF2ZScsCiAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICBEaXNwbGF5TmFtZSAgPT4gJ01hc3RlciAvIFNsYXZlJywKICAgICAgICAgICAgTW9kdWxlICAgICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6Ok1hc3RlclNsYXZlJywKICAgICAgICAgICAgQ29uZmlnRGlhbG9nID0+ICdBZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlJywKICAgICAgICAgICAgRGlzYWJsZWRBZGQgID0+IDEsCiAgICAgICAgfSwKICAgICk7CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICBLZXkgICA9PiAnUHJlQXBwbGljYXRpb25Nb2R1bGUjIyNBZ2VudFByZU1hc3RlclNsYXZlJywKICAgICAgICBWYWx1ZSA9PiAnS2VybmVsOjpNb2R1bGVzOjpBZ2VudFByZU1hc3RlclNsYXZlJywKICAgICk7CgogICAgIyBkaXNjYXJkIGNvbmZpZyBvYmplY3QgYW5kIGR5bmFtaWMgZmllbGQgYmFja2VuZCB0byBwcmV2ZW50IGVycm9yIG1lc3NhZ2VzIGR1ZSBtaXNzaW5nIGRyaXZlcgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgICAgIE9iamVjdHMgPT4gWyAnS2VybmVsOjpDb25maWcnLCAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcgXSwKICAgICk7CgogICAgIyBkaXNhYmxlIGR5bmFtaWMgZmllbGQgZm9yIHRpY2tldCB6b29tCiAgICAjIGdldCBvbGQgY29uZmlndXJhdGlvbgogICAgbXkgJFdpbmRvd0NvbmZpZyAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbScpOwogICAgbXkgJUR5bmFtaWNGaWVsZHMgPSAleyAkV2luZG93Q29uZmlnLT57RHluYW1pY0ZpZWxkfSB8fCB7fSB9OwoKICAgIGlmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkc3skTWFzdGVyU2xhdmVEeW5hbWljRmllbGR9ICkgewogICAgICAgICREeW5hbWljRmllbGRzeyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gPSAwOwogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKS0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnLAogICAgICAgIFZhbHVlID0+IFwlRHluYW1pY0ZpZWxkcywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfU2V0RGFzaGJvYXJkQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBuYW1lcyBmcm9tIFN5c0NvbmZpZwogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykgfHwgJ01hc3RlclNsYXZlJzsKCiAgICAjIGlmIE1hc3RlclNsYXZlIGR5bmFtaWMgZmllbGQgaXMgJ01hc3RlclNsYXZlJyB0aGUgY29uZmlnIGlzIGFscmVhZHkgc2V0LCBub3RoaW5nIGVsc2UgdG8gZG8KICAgIHJldHVybiAxIGlmICggJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIGVxICdNYXN0ZXJTbGF2ZScgKTsKCiAgICAjIG90aGVyd2lzZSBzZXQgdGhlIG5ldyBjb25maWcKICAgICMgYXR0cmlidXRlcyBjb21tb24gZm9yIGJvdGggTWFzdGVyIGFuZCBTbGF2ZSB3aWRnZXRzCiAgICBteSAlQ29tbW9uQ29uZmlnID0gKAogICAgICAgIE1vZHVsZSAgICAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmRUaWNrZXRHZW5lcmljJywKICAgICAgICBGaWx0ZXIgICAgICAgID0+ICdBbGwnLAogICAgICAgIFRpbWUgICAgICAgICAgPT4gJ0FnZScsCiAgICAgICAgTGltaXQgICAgICAgICA9PiAxMCwKICAgICAgICBQZXJtaXNzaW9uICAgID0+ICdydycsCiAgICAgICAgQmxvY2sgICAgICAgICA9PiAnQ29udGVudExhcmdlJywKICAgICAgICBHcm91cCAgICAgICAgID0+ICcnLAogICAgICAgIERlZmF1bHQgICAgICAgPT4gMSwKICAgICAgICBDYWNoZVRUTExvY2FsID0+IDAuNSwKICAgICk7CgogICAgIyBhdHRyaWJ1dGVzIGZvciBNYXN0ZXIgd2lkZ2V0CiAgICBteSAlTWFzdGVyQ29uZmlnID0gKAogICAgICAgIFRpdGxlICAgICAgID0+ICdNYXN0ZXIgVGlja2V0cycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FsbCBtYXN0ZXIgdGlja2V0cycsCiAgICAgICAgQXR0cmlidXRlcyAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIC4gJ19FcXVhbHM9TWFzdGVyOycsCiAgICApOwoKICAgICMgYXR0cmlidXRlcyBmb3IgU2xhdmUgd2lkZ2V0CiAgICBteSAlU2xhdmVDb25maWcgPSAoCiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1NsYXZlIFRpY2tldHMnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdBbGwgc2xhdmUgdGlja2V0cycsCiAgICAgICAgQXR0cmlidXRlcyAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIC4gJ19MaWtlPVNsYXZlKjsnLAogICAgKTsKCiAgICAjIGdldCBTeXNDb25maWcgb2JqZWN0CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgICMgd3JpdGUgY29uZmlndXJhdGlvbnMKICAgICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICBLZXkgICA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzA5MDAtVGlja2V0TWFzdGVyJywKICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICVDb21tb25Db25maWcsCiAgICAgICAgICAgICVNYXN0ZXJDb25maWcsCiAgICAgICAgfSwKICAgICk7CiAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgS2V5ICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQjIyMwOTEwLVRpY2tldFNsYXZlJywKICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICVDb21tb25Db25maWcsCiAgICAgICAgICAgICVTbGF2ZUNvbmZpZywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlQ29uZmlncyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIG1pZ3JhdGUgbWFzdGVyIHNsYXZlIHRpY2tldCBtZW51IFN5c0NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBtYXN0ZXIgc2xhdmUgU3lzQ29uZmlnCiAgICBteSAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZScpOwoKICAgIGlmICggJFNldHRpbmctPnsnNDgwLU1hc3RlclNsYXZlJ30tPntNb2R1bGV9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICAkU2V0dGluZy0+eyc0ODAtTWFzdGVyU2xhdmUnfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldE1lbnU6OkdlbmVyaWMiOwoKICAgICAgICAjIHNldCBuZXcgc2V0dGluZwogICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM0ODAtTWFzdGVyU2xhdmUnLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2V0dGluZy0+eyc0ODAtTWFzdGVyU2xhdmUnfSwKICAgICAgICApOwogICAgfQoKICAgICMgbWlncmF0ZSBtYXN0ZXIgc2xhdmUgZGFzaGJvYXJkIFN5c0NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBtYXN0ZXIgc2xhdmUgU3lzQ29uZmlnCiAgICAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnRGFzaGJvYXJkQmFja2VuZCcpOwoKICAgIEJBQ0tFTkQ6CiAgICBmb3IgbXkgJEJhY2tlbmQgKHF3KDA5MDAtVGlja2V0TWFzdGVyIDA5MTAtVGlja2V0U2xhdmUpKSB7CiAgICAgICAgbmV4dCBCQUNLRU5EIGlmICEkU2V0dGluZy0+eyRCYWNrZW5kfS0+e01vZHVsZX07CgogICAgICAgICMgdXBkYXRlIG1vZHVsZSBsb2NhdGlvbgogICAgICAgICRTZXR0aW5nLT57JEJhY2tlbmR9LT57TW9kdWxlfSA9ICJLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpUaWNrZXRHZW5lcmljIjsKCiAgICAgICAgIyBzZXQgbmV3IHNldHRpbmcKICAgICAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICJEYXNoYm9hcmRCYWNrZW5kIyMjJEJhY2tlbmQiLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2V0dGluZy0+eyRCYWNrZW5kfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTgxMjExMDE1MDI1KzAxJzAwJykKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+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+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE4LTEyLTExVDAxOjUwOjI1KzAxOjAwPC9kYzpkYXRlPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8iIHJkZjphYm91dD0iIj4KPHBkZjpQcm9kdWNlcj5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC9wZGY6UHJvZHVjZXI+CjxwZGY6UERGVmVyc2lvbj4xLjQ8L3BkZjpQREZWZXJzaW9uPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHJkZjphYm91dD0iIj4KPHhtcDpDcmVhdG9yVG9vbD5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMTgtMTItMTFUMDE6NTA6MjUrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDE4LTEyLTExVDAxOjUwOjI1KzAxOjAwPC94bXA6Q3JlYXRlRGF0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YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjMyIDY3OS42MjkgNTQwLjAgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NiAwIFIKL0ggL0kKCj4+CmVuZG9iago1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTUzLjg1OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjY3LjYyOSA1MzkuOTk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjU1LjYyOSAxNzYuMjY2IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NTUuNjI5IDUzOS45OTggNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDQxMS4zNDYgbnVsbF0KPj4KZW5kb2JqCjY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMTk4Ljk5NiA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQzLjYyOSA1MzkuOTk4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAxMDkuODkyIG51bGxdCj4+CmVuZG9iago2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzEuNjI5IDI1MS40NDYgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDYzMS42MjkgNTM5Ljk5NyA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNjU3LjIgbnVsbF0KPj4KZW5kb2JqCjcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxOS42MjkgMjA5LjA3NSA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjE5LjYyOSA1MzkuOTk4IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA2MDUuMiBudWxsXQo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjA3LjYyOSAzMTMuNDUgNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDYwNy42MjkgNTQwLjM0OCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTk1LjYyOSAyMDQuOTc2IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1OTUuNjI5IDUzOS45OTggNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDcwMC44IG51bGxdCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODMuNjI5IDE3My40MDggNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU4My42MjkgNTM5Ljk5OCA1OTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM0IDAgUiAvWFlaIDcyLjAgNjI2LjQgbnVsbF0KPj4KZW5kb2JqCjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3MS42MjkgMTY0LjkxMyA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44MDcgNTcxLjYyOSA1NDAuMTY3IDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzQgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTU5LjYyOSAyMDkuNTUyIDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NTkuNjI5IDUzOS45OTggNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDQ4OS42IG51bGxdCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NDcuNjI5IDIyMS43OTQgNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU0Ny42MjkgNTM5Ljk5OCA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTM1LjYyOSAxNDkuMzkgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUzNS42MjkgNTM5Ljk5OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNjc4LjggbnVsbF0KPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUyMy42MjkgMTk5LjAwNiA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTIzLjYyOSA1MzkuOTk4IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA2MDIuNCBudWxsXQo+PgplbmRvYmoKOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAxOTQuNjQxIDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTExLjYyOSA1MzkuOTk4IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQ5OS42MjkgMTYxLjc4NCA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0OTkuNjI5IDUzOS45OTggNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNjY3LjU1MiBudWxsXQo+PgplbmRvYmoKMTA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ4Ny42MjkgMzc1LjY1NyA0OTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA0ODcuNjI5IDUzOS45OTcgNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNjA1LjEwNyBudWxsXQo+PgplbmRvYmoKMTA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ3NS42MjkgMzM0LjI2NCA0ODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA0NzUuNjI5IDU0MC42OTcgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNDk0LjY2MiBudWxsXQo+PgplbmRvYmoKMTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ2My42MjkgMzI4LjM2NyA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA0NjMuNjI5IDU0MC42OTcgNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMzg0LjIxNyBudWxsXQo+PgplbmRvYmoKMTE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1MS42MjkgMzE2Ljk4OSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NTEuNjI5IDUzOS45OTggNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMzIxLjc3MiBudWxsXQo+PgplbmRvYmoKMTE3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQzOS42MjkgMzkzLjAxOCA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA0MzkuNjI5IDUzOS45OTcgNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMjU5LjMyNyBudWxsXQo+PgplbmRvYmoKMTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQyNy42MjkgMzUzLjcwNSA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4OCA0MjcuNjI5IDU0MC4zNDggNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMTk2Ljg4MiBudWxsXQo+PgplbmRvYmoKMTIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQxNS42MjkgMjc4LjY3MSA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MTUuNjI5IDUzOS45OTggNDI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMTM0LjQzNyBudWxsXQo+PgplbmRvYmoKMTI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQwMy42MjkgMjU2LjE3IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQwMy42MjkgNTM5Ljk5OCA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM5MS42MjkgMjk1Ljk1MyA0MDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzOTEuNjI5IDUzOS45OTcgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNjQ5LjU2NCBudWxsXQo+PgplbmRvYmoKMTMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM3OS42MjkgMjY4LjA0MyAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzNzkuNjI5IDUzOS45OTggMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNTYxLjExNyBudWxsXQo+PgplbmRvYmoKMTM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM2Ny42MjkgMzMwLjE1OCAzNzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0NyAzNjcuNjI5IDU0MC4yMDcgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNDg0LjY3IG51bGxdCj4+CmVuZG9iagoxMzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzU1LjYyOSAzMzcuMzk5IDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDM1NS42MjkgNTQwLjIwOCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA0MDguMjIzIG51bGxdCj4+CmVuZG9iagoxNDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzQzLjYyOSAyODUuNjE0IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDM0My42MjkgNTM5Ljk5NyAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAzMzEuNzc2IG51bGxdCj4+CmVuZG9iagoxNDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzMxLjYyOSAyOTIuODU1IDM0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDMzMS42MjkgNTM5Ljk5NyAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAyNTUuMzI5IG51bGxdCj4+CmVuZG9iagoxNDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzE5LjYyOSAzNjYuODgyIDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDMxOS42MjkgNTM5Ljk5NyAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAxOTAuODgyIG51bGxdCj4+CmVuZG9iagoxNTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzA3LjYyOSAzNjcuNjE5IDMxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDMwNy42MjkgNTM5Ljk5NyAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAxMTQuNDM1IG51bGxdCj4+CmVuZG9iagoxNTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjk1LjYyOSAzMzUuOTc2IDMwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg3IDI5NS42MjkgNTQwLjM0NyAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI4My42MjkgNDUxLjUwOSAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAyODMuNjI5IDU0MC42OTcgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNjE5LjUxOSBudWxsXQo+PgplbmRvYmoKMTU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI3MS42MjkgNDIwLjMyMyAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAyNzEuNjI5IDU0MC42OTcgMjgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNTU3LjQzOCBudWxsXQo+PgplbmRvYmoKMTYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI1OS42MjkgMzg0LjA2NiAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzOCAyNTkuNjI5IDU0MC42OTggMjY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNDgzLjM1NyBudWxsXQo+PgplbmRvYmoKMTY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI0Ny42MjkgNDQ0LjUyNyAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAyNDcuNjI5IDU0MC42OTcgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNDA5LjI3NiBudWxsXQo+PgplbmRvYmoKMTY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDIzNS42MjkgNDE4LjYxIDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDIzNS42MjkgNTQwLjY5NyAyNDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCAzMzUuMTk1IG51bGxdCj4+CmVuZG9iagoxNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjIzLjYyOSA0MjIuNDQ1IDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNTA3IDIyMy42MjkgNTQwLjg2NyAyMzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCAyNDkuMTE0IG51bGxdCj4+CmVuZG9iagoxNzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjExLjYyOSA0MzIuMTE2IDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDIxMS42MjkgNTQwLjY5NyAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCAxNzUuMDMzIG51bGxdCj4+CmVuZG9iagoxNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTk5LjYyOSAzODMuOTI3IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDE5OS42MjkgNTQwLjY5NyAyMDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCAxMTIuOTUyIG51bGxdCj4+CmVuZG9iagoxODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTg3LjYyOSA0MzUuODgxIDE5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDE4Ny42MjkgNTQwLjY5NyAxOTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCA2OTYuMCBudWxsXQo+PgplbmRvYmoKMTgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE3NS42MjkgMzkxLjk1NSAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxNzUuNjI5IDU0MC42OTcgMTg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNjE4LjAwMSBudWxsXQo+PgplbmRvYmoKMTg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE2My42MjkgNDQ0LjgxNiAxNzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxNjMuNjI5IDU0MC42OTcgMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNTUyLjAwMiBudWxsXQo+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE1MS42MjkgNDE0LjIwOCAxNjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjUwNyAxNTEuNjI5IDU0MC44NjcgMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNDc0LjAwMyBudWxsXQo+PgplbmRvYmoKMTkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEzOS42MjkgMzk0LjM2NiAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMzkuNjI5IDU0MC42OTcgMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMzk2LjAwNCBudWxsXQo+PgplbmRvYmoKMTk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEyNy42MjkgNDMyLjE0NiAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMjcuNjI5IDU0MC42OTcgMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMzE4LjAwNSBudWxsXQo+PgplbmRvYmoKMTk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDExNS42MjkgNDI3LjM2NSAxMjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMTUuNjI5IDU0MC42OTcgMTI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMjI4LjAwNiBudWxsXQo+PgplbmRvYmoKMjAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEwMy42MjkgNDE5Ljk4NCAxMTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMDMuNjI5IDU0MC42OTcgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMTUwLjAwNyBudWxsXQo+PgplbmRvYmoKMjA0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDkxLjYyOSA0MzQuODM1IDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDkxLjYyOSA1NDAuNjk3IDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoy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IFIKODEgMCBSCjgyIDAgUgo4NCAwIFIKODUgMCBSCjg3IDAgUgo4OCAwIFIKOTAgMCBSCjkxIDAgUgo5MyAwIFIKOTQgMCBSCjk2IDAgUgo5NyAwIFIKOTkgMCBSCjEwMCAwIFIKMTAyIDAgUgoxMDMgMCBSCjEwNSAwIFIKMTA2IDAgUgoxMDggMCBSCjEwOSAwIFIKMTExIDAgUgoxMTIgMCBSCjExNCAwIFIKMTE1IDAgUgoxMTcgMCBSCjExOCAwIFIKMTIwIDAgUgoxMjEgMCBSCjEyMyAwIFIKMTI0IDAgUgoxMjYgMCBSCjEyNyAwIFIKMTI5IDAgUgoxMzAgMCBSCjEzMiAwIFIKMTMzIDAgUgoxMzUgMCBSCjEzNiAwIFIKMTM4IDAgUgoxMzkgMCBSCjE0MSAwIFIKMTQyIDAgUgoxNDQgMCBSCjE0NSAwIFIKMTQ3IDAgUgoxNDggMCBSCjE1MCAwIFIKMTUxIDAgUgoxNTMgMCBSCjE1NCAwIFIKMTU2IDAgUgoxNTcgMCBSCjE1OSAwIFIKMTYwIDAgUgoxNjIgMCBSCjE2MyAwIFIKMTY1IDAgUgoxNjYgMCBSCjE2OCAwIFIKMTY5IDAgUgoxNzEgMCBSCjE3MiAwIFIKMTc0IDAgUgoxNzUgMCBSCjE3NyAwIFIKMTc4IDAgUgoxODAgMCBSCjE4MSAwIFIKMTgzIDAgUgoxODQgMCBSCjE4NiAwIFIKMTg3IDAgUgoxODkgMCBSCjE5MCAwIFIKMTkyIDAgUgoxOTMgMCBSCjE5NSAwIFIKMTk2IDAgUgoxOTggMCBSCjE5OSAwIFIKMjAxIDAgUgoyMDIgMCBSCjIwNCAwIFIKMjA1IDAgUgoyMDcgMCBSCjIwOCAwIFIKXQplbmRvYmoKMjEyIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0Fubm90cyAyMTEgMCBSCiAgL0NvbnRlbnRzIDIwOSAwIFIKPj4KZW5kb2Jq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Ny4xMzUgNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNzA5LjAwNSA1NDAuNjk3IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NSAwIFIgL1hZWiA3Mi4wIDU3NS4xMzYgbnVsbF0KPj4KZW5kb2JqCjI0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2OTcuMDA1IDM4Ni43MDYgNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNjk3LjAwNSA1NDAuNjk3IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NSAwIFIgL1hZWiA3Mi4wIDQ5OS44MyBudWxsXQo+PgplbmRvYmoKMjQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY4NS4wMDUgNDIzLjA3MiA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA2ODUuMDA1IDU0MC42OTcgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgNDI0LjUyNCBudWxsXQo+PgplbmRvYmoKMjQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY3My4wMDUgNDA5LjU2NSA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzOCA2NzMuMDA1IDU0MC42OTggNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMzQ5LjIxOCBudWxsXQo+PgplbmRvYmoKMjUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY2MS4wMDUgMzk3LjU1MyA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA2NjEuMDA1IDU0MC42OTcgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMjczLjkxMiBudWxsXQo+PgplbmRvYmoKMjUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0OS4wMDUgNDEzLjAyMyA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjY4NyA2NDkuMDA1IDU0MS4wNDcgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMTk4LjYwNiBudWxsXQo+PgplbmRvYmoKMjU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYzNy4wMDUgMzgxLjY4NiA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA2MzcuMDA1IDU0MC42OTcgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgMTM1LjMgbnVsbF0KPj4KZW5kb2JqCjI1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MjUuMDA1IDM4MS41MjUgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODcgNjI1LjAwNSA1NDAuMzQ3IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxMy4wMDUgMzg3LjE1OCA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA2MTMuMDA1IDU0MC4zNDggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2MDEuMDA1IDEyNS4yNzYgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjAxLjAwNSA1MzkuOTk4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTggMCBSIC9YWVogNzIuMCA2MDYuNzI5IG51bGxdCj4+CmVuZG9iagoyNjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTg5LjAwNSAyMzQuMDUxIDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI3IDU4OS4wMDUgNTQwLjM0NyA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE4IDAgUiAvWFlaIDcyLjAgNDQ2LjE3NiBudWxsXQo+PgplbmRvYmoKMjcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3Ny4wMDUgMjI4LjAzOCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA1NzcuMDA1IDU0MC4zNDggNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxOCAwIFIgL1hZWiA3Mi4wIDI5MS40NzcgbnVsbF0KPj4KZW5kb2JqCjI3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NjUuMDA1IDMzOS42MTEgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNTY1LjAwNSA1NDAuMzQ4IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjEgMCBSIC9YWVogNzIuMCA2NDMuMDgzIG51bGxdCj4+CmVuZG9iagoyNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTUzLjAwNSAyODQuMDMxIDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU1My4wMDUgNTM5Ljk5OCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjI4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU0MS4wMDUgMjYxLjcwMyA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NDEuMDA1IDUzOS45OTggNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1MjkuMDA1IDEzMC4xMjkgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTI5LjAwNSA1MzkuOTk4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzMgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTE3LjAwNSAxMTkuMDYgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTE3LjAwNSA1MzkuOTk4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzMgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKMjg5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUwNS4wMDUgMTcxLjkyIDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUwNS4wMDUgNTM5Ljk5OCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMzIDAgUiAvWFlaIDcyLjAgNjI0LjQgbnVsbF0KPj4KZW5kb2JqCjI5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0OTMuMDA1IDE2Ny44MzMgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDkzLjAwNSA1MzkuOTk4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDgxLjAwNSAxNTQuNjY1IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ4MS4wMDUgNTM5Ljk5OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTcgMCBvYmoKPDwgL0xlbmd0aCAyOTggMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nOVdy44luXXc11fcHxDF9wMwBpieh2HvBA3ghaCVDNsLjY1Z+fd9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CmVuZG9iagoxNCAwIG9iago8PAogIC9Gb250IDw8CiAgL0YxNiAzMDkgMCBSCiAgL0YxNSAzMTggMCBSCiAgL0YxOSAzMjcgMCBSCj4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8CiAgL0ltMSA3IDAgUgogIC9JbTIgOSAwIFIKICAvSW0zIDE2IDAgUgogIC9JbTQgMTggMCBSCj4+CiAgL0NvbG9yU3BhY2UgPDwgL0RlZmF1bHRSR0IgNCAwIFIgPj4KPj4KZW5kb2JqCjMzMiAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+PiAxIDw8IC9TIC9yIC9TdCAyID4+IDIgPDwgL1MgL3IgL1N0IDMgPj4gMyA8PCAvUyAvciAvU3QgNCA+PiA0IDw8IC9TIC9EID4+IDEzIDw8IC9TIC9EIC9TdCAxMCA+PiAyMSA8PCAvUyAvRCAvU3QgMTggPj5dID4+CmVuZG9iagp4cmVmCjAgMzMzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMTQ1IDAwMDAwIG4gCjAwMDAwMDI2ODMgMDAwMDAgbiAKMDAwMDAwMjcwMyAwMDAwMCBuIAowMDAwMDAyNzM2IDAwMDAwIG4gCjAwMDAwMDM2ODMgMDAwMDAgbiAKMDAwMDAwMzcwMiAwMDAwMCBuIAowMDAwMDUyMjI3IDAwMDAwIG4gCjAwMDAwNTIyNDggMDAwMDAgbiAKMDAwMDEwNTUwOCAwMDAwMCBuIAowMDAwMTA1NTMwIDAwMDAwIG4gCjAwMDAxMDYwNjEgMDAwMDAgbiAKMDAwMDEwNjA4MSAwMDAwMCBuIAowMDAwMjYxMDA4IDAwMDAwIG4gCjAwMDAyNjA2ODAgMDAwMDAgbiAKMDAwMDEwNjI3NSAwMDAwMCBuIAowMDAwMTEyNDQ2IDAwMDAwIG4gCjAwMDAxMTI0NjcgMDAwMDAgbiAKMDAwMDExOTY0NyAwMDAwMCBuIAowMDAwMTE5NjY4IDAwMDAwIG4gCjAwMDAxMTk3NTMgMDAwMDAgbiAKMDAwMDExOTg5MSAwMDAwMCBuIAowMDAwMTIwNzY4IDAwMDAwIG4gCjAwMDAxMjA3ODggMDAwMDAgbiAKMDAwMDEyMDgxNSAwMDAwMCBuIAowMDAwMTIxMDI2IDAwMDAwIG4gCjAwMDAxMjI2NzEgMDAwMDAgbiAKMDAwMDEyMjY5MiAwMDAwMCBuIAowMDAwMTIyODg2IDAwMDAwIG4gCjAwMDAxMjQwOTEgMDAwMDAgbiAKMDAwMDEyNDExMiAwMDAwMCBuIAowMDAwMTI0MzA2IDAwMDAwIG4gCjAwMDAxMjUxNTUgMDAwMDAgbiAKMDAwMDEyNTE3NSAwMDAwMCBuIAowMDAwMTI1MzY5IDAwMDAwIG4gCjAwMDAxMjU0NjQgMDAwMDAgbiAKMDAwMDEyNTYwMCAwMDAwMCBuIAowMDAwMTI2ODc2IDAwMDAwIG4gCjAwMDAxMjY4OTcgMDAwMDAgbiAKMDAwMDEyNjkyNCAwMDAwMCBuIAowMDAwMTI3MTM1IDAwMDAwIG4gCjAwMDAxMjkxNTggMDAwMDAgbiAKMDAwMDEyOTE3OSAwMDAwMCBuIAowMDAwMTI5MzczIDAwMDAwIG4gCjAwMDAxMzEyMzcgMDAwMDAgbiAKMDAwMDEzMTI1OCAwMDAwMCBuIAowMDAwMTMxNDUyIDAwMDAwIG4gCjAwMDAxMzMyOTYgMDAwMDAgbiAKMDAwMDEzMzMxNyAwMDAwMCBuIAowMDAwMTMzNTExIDAwMDAwIG4gCjAwMDAxMzUzOTEgMDAwMDAgbiAKMDAwMDEzNTQxMiAwMDAwMCBuIAowMDAwMTM1NjA2IDAwMDAwIG4gCjAwMDAxMzczNzkgMDAwMDAgbiAKMDAwMDEzNzQwMCAwMDAwMCBuIAowMDAwMTM3NTk0IDAwMDAwIG4gCjAwMDAxMzc2NzIgMDAwMDAgbiAKMDAwMDEzNzgwOCAwMDAwMCBuIAowMDAwMTM3OTQ1IDAwMDAwIG4gCjAwMDAxMzgwMjMgMDAwMDAgbiAKMDAwMDEzODE2MCAwMDAwMCBuIAowMDAwMTM4MzAwIDAwMDAwIG4gCjAwMDAxMzgzNzggMDAwMDAgbiAKMDAwMDEzODUxNiAwMDAwMCBuIAowMDAwMTM4NjU2IDAwMDAwIG4gCjAwMDAxMzg3MzYgMDAwMDAgbiAKMDAwMDEzODg3NCAwMDAwMCBuIAowMDAwMTM5MDE0IDAwMDAwIG4gCjAwMDAxMzkwOTQgMDAwMDAgbiAKMDAwMDEzOTIzMiAwMDAwMCBuIAowMDAwMTM5MzcyIDAwMDAwIG4gCjAwMDAxMzk0NTAgMDAwMDAgbiAKMDAwMDEzOTU4OCAwMDAwMCBuIAowMDAwMTM5NzI4IDAwMDAwIG4gCjAwMDAxMzk4MDYgMDAwMDAgbiAKMDAwMDEzOTk0MyAwMDAwMCBuIAowMDAwMTQwMDgzIDAwMDAwIG4gCjAwMDAxNDAxNjEgMDAwMDAgbiAKMDAwMDE0MDI5OCAwMDAwMCBuIAowMDAwMTQwNDM4IDAwMDAwIG4gCjAwMDAxNDA1MTYgMDAwMDAgbiAKMDAwMDE0MDY1NCAwMDAwMCBuIAowMDAwMTQwNzk0IDAwMDAwIG4gCjAwMDAxNDA4NzIgMDAwMDAgbiAKMDAwMDE0MTAxMCAwMDAwMCBuIAowMDAwMTQxMTUwIDAwMDAwIG4gCjAwMDAxNDEyMjggMDAwMDAgbiAKMDAwMDE0MTM2NiAwMDAwMCBuIAowMDAwMTQxNTA2IDAwMDAwIG4gCjAwMDAxNDE1ODQgMDAwMDAgbiAKMDAwMDE0MTcyMiAwMDAwMCBuIAowMDAwMTQxODYyIDAwMDAwIG4gCjAwMDAxNDE5NDAgMDAwMDAgbiAKMDAwMDE0MjA3NiAwMDAwMCBuIAowMDAwMTQyMjE2IDAwMDAwIG4gCjAwMDAxNDIyOTQgMDAwMDAgbiAKMDAwMDE0MjQzMiAwMDAwMCBuIAowMDAwMTQyNTcyIDAwMDAwIG4gCjAwMDAxNDI2NTAgMDAwMDAgbiAKMDAwMDE0Mjc4OCAwMDAwMCBuIAowMDAwMTQyOTI5IDAwMDAwIG4gCjAwMDAxNDMwMDggMDAwMDAgbiAKMDAwMDE0MzE0NyAwMDAwMCBuIAowMDAwMTQzMjg5IDAwMDAwIG4gCjAwMDAxNDMzNzAgMDAwMDAgbiAKMDAwMDE0MzUxMCAwMDAwMCBuIAowMDAwMTQzNjUyIDAwMDAwIG4gCjAwMDAxNDM3MzMgMDAwMDAgbiAKMDAwMDE0Mzg3MyAwMDAwMCBuIAowMDAwMTQ0MDE1IDAwMDAwIG4gCjAwMDAxNDQwOTYgMDAwMDAgbiAKMDAwMDE0NDIzNiAwMDAwMCBuIAowMDAwMTQ0Mzc4IDAwMDAwIG4gCjAwMDAxNDQ0NTkgMDAwMDAgbiAKMDAwMDE0NDU5OSAwMDAwMCBuIAowMDAwMTQ0NzQxIDAwMDAwIG4gCjAwMDAxNDQ4MjIgMDAwMDAgbiAKMDAwMDE0NDk2MiAwMDAwMCBuIAowMDAwMTQ1MTA0IDAwMDAwIG4gCjAwMDAxNDUxODUgMDAwMDAgbiAKMDAwMDE0NTMyNSAwMDAwMCBuIAowMDAwMTQ1NDY3IDAwMDAwIG4gCjAwMDAxNDU1NDggMDAwMDAgbiAKMDAwMDE0NTY4OCAwMDAwMCBuIAowMDAwMTQ1ODMwIDAwMDAwIG4gCjAwMDAxNDU5MTEgMDAwMDAgbiAKMDAwMDE0NjA1MCAwMDAwMCBuIAowMDAwMTQ2MTkyIDAwMDAwIG4gCjAwMDAxNDYyNzEgMDAwMDAgbiAKMDAwMDE0NjQxMSAwMDAwMCBuIAowMDAwMTQ2NTUzIDAwMDAwIG4gCjAwMDAxNDY2MzQgMDAwMDAgbiAKMDAwMDE0Njc3NCAwMDAwMCBuIAowMDAwMTQ2OTE2IDAwMDAwIG4gCjAwMDAxNDY5OTcgMDAwMDAgbiAKMDAwMDE0NzEzNyAwMDAwMCBuIAowMDAwMTQ3Mjc5IDAwMDAwIG4gCjAwMDAxNDczNTkgMDAwMDAgbiAKMDAwMDE0NzQ5OSAwMDAwMCBuIAowMDAwMTQ3NjQxIDAwMDAwIG4gCjAwMDAxNDc3MjIgMDAwMDAgbiAKMDAwMDE0Nzg2MiAwMDAwMCBuIAowMDAwMTQ4MDA0IDAwMDAwIG4gCjAwMDAxNDgwODUgMDAwMDAgbiAKMDAwMDE0ODIyNSAwMDAwMCBuIAowMDAwMTQ4MzY3IDAwMDAwIG4gCjAwMDAxNDg0NDggMDAwMDAgbiAKMDAwMDE0ODU4OCAwMDAwMCBuIAowMDAwMTQ4NzMwIDAwMDAwIG4gCjAwMDAxNDg4MTEgMDAwMDAgbiAKMDAwMDE0ODk1MSAwMDAwMCBuIAowMDAwMTQ5MDkzIDAwMDAwIG4gCjAwMDAxNDkxNzQgMDAwMDAgbiAKMDAwMDE0OTMxNCAwMDAwMCBuIAowMDAwMTQ5NDU2IDAwMDAwIG4gCjAwMDAxNDk1MzUgMDAwMDAgbiAKMDAwMDE0OTY3NSAwMDAwMCBuIAowMDAwMTQ5ODE3IDAwMDAwIG4gCjAwMDAxNDk4OTggMDAwMDAgbiAKMDAwMDE1MDAzOCAwMDAwMCBuIAowMDAwMTUwMTgwIDAwMDAwIG4gCjAwMDAxNTAyNjEgMDAwMDAgbiAKMDAwMDE1MDQwMSAwMDAwMCBuIAowMDAwMTUwNTQzIDAwMDAwIG4gCjAwMDAxNTA2MjQgMDAwMDAgbiAKMDAwMDE1MDc2NCAwMDAwMCBuIAowMDAwMTUwOTA2IDAwMDAwIG4gCjAwMDAxNTA5ODcgMDAwMDAgbiAKMDAwMDE1MTEyNiAwMDAwMCBuIAowMDAwMTUxMjY4IDAwMDAwIG4gCjAwMDAxNTEzNDkgMDAwMDAgbiAKMDAwMDE1MTQ4OSAwMDAwMCBuIAowMDAwMTUxNjMxIDAwMDAwIG4gCjAwMDAxNTE3MTIgMDAwMDAgbiAKMDAwMDE1MTg1MiAwMDAwMCBuIAowMDAwMTUxOTk0IDAwMDAwIG4gCjAwMDAxNTIwNzUgMDAwMDAgbiAKMDAwMDE1MjIxNSAwMDAwMCBuIAowMDAwMTUyMzU3IDAwMDAwIG4gCjAwMDAxNTI0MzggMDAwMDAgbiAKMDAwMDE1MjU3OCAwMDAwMCBuIAowMDAwMTUyNzIwIDAwMDAwIG4gCjAwMDAxNTI3OTkgMDAwMDAgbiAKMDAwMDE1MjkzOSAwMDAwMCBuIAowMDAwMTUzMDgxIDAwMDAwIG4gCjAwMDAxNTMxNjIgMDAwMDAgbiAKMDAwMDE1MzMwMiAwMDAwMCBuIAowMDAwMTUzNDQ0IDAwMDAwIG4gCjAwMDAxNTM1MjUgMDAwMDAgbiAKMDAwMDE1MzY2NSAwMDAwMCBuIAowMDAwMTUzODA3IDAwMDAwIG4gCjAwMDAxNTM4ODggMDAwMDAgbiAKMDAwMDE1NDAyOCAwMDAwMCBuIAowMDAwMTU0MTcwIDAwMDAwIG4gCjAwMDAxNTQyNTEgMDAwMDAgbiAKMDAwMDE1NDM5MSAwMDAwMCBuIAowMDAwMTU0NTMzIDAwMDAwIG4gCjAwMDAxNTQ2MTQgMDAwMDAgbiAKMDAwMDE1NDc1NCAwMDAwMCBuIAowMDAwMTU0ODk2IDAwMDAwIG4gCjAwMDAxNTQ5NzcgMDAwMDAgbiAKMDAwMDE1NTExNyAwMDAwMCBuIAowMDAwMTU1MjU5IDAwMDAwIG4gCjAwMDAxNTUzNDAgMDAwMDAgbiAKMDAwMDE1NTQ3OSAwMDAwMCBuIAowMDAwMTU1NjIwIDAwMDAwIG4gCjAwMDAxNTU2OTkgMDAwMDAgbiAKMDAwMDE1NTgzNyAwMDAwMCBuIAowMDAwMTU1OTc3IDAwMDAwIG4gCjAwMDAxNzk4NTYgMDAwMDAgbiAKMDAwMDE3OTg3OSAwMDAwMCBuIAowMDAwMTgwNjg3IDAwMDAwIG4gCjAwMDAxODA5MDEgMDAwMDAgbiAKMDAwMDE4MTYyNCAwMDAwMCBuIAowMDAwMTgxNjQ1IDAwMDAwIG4gCjAwMDAxODE4NDEgMDAwMDAgbiAKMDAwMDE4MzkyMiAwMDAwMCBuIAowMDAwMTgzOTQ0IDAwMDAwIG4gCjAwMDAxODQxNDAgMDAwMDAgbiAKMDAwMDE4NjEyNyAwMDAwMCBuIAowMDAwMTg2MTQ5IDAwMDAwIG4gCjAwMDAxODYzNDUgMDAwMDAgbiAKMDAwMDE4NzM3NiAwMDAwMCBuIAowMDAwMTg3Mzk3IDAwMDAwIG4gCjAwMDAxODc1OTMgMDAwMDAgbiAKMDAwMDE4ODk3MCAwMDAwMCBuIAowMDAwMTg4OTkyIDAwMDAwIG4gCjAwMDAxODkxODggMDAwMDAgbiAKMDAwMDE4OTc4OCAwMDAwMCBuIAowMDAwMTg5ODA5IDAwMDAwIG4gCjAwMDAxOTAwMDUgMDAwMDAgbiAKMDAwMDE5MjA1NyAwMDAwMCBuIAowMDAwMTkyMDc5IDAwMDAwIG4gCjAwMDAxOTIyNzUgMDAwMDAgbiAKMDAwMDE5NDAzNiAwMDAwMCBuIAowMDAwMTk0MDU4IDAwMDAwIG4gCjAwMDAxOTQyNTQgMDAwMDAgbiAKMDAwMDE5NDMzNSAwMDAwMCBuIAowMDAwMTk0NDc1IDAwMDAwIG4gCjAwMDAxOTQ2MTcgMDAwMDAgbiAKMDAwMDE5NDY5OCAwMDAwMCBuIAowMDAwMTk0ODM4IDAwMDAwIG4gCjAwMDAxOTQ5ODAgMDAwMDAgbiAKMDAwMDE5NTA2MCAwMDAwMCBuIAowMDAwMTk1MjAwIDAwMDAwIG4gCjAwMDAxOTUzNDIgMDAwMDAgbiAKMDAwMDE5NTQyMyAwMDAwMCBuIAowMDAwMTk1NTYzIDAwMDAwIG4gCjAwMDAxOTU3MDUgMDAwMDAgbiAKMDAwMDE5NTc4NiAwMDAwMCBuIAowMDAwMTk1OTI2IDAwMDAwIG4gCjAwMDAxOTYwNjggMDAwMDAgbiAKMDAwMDE5NjE0OSAwMDAwMCBuIAowMDAwMTk2Mjg5IDAwMDAwIG4gCjAwMDAxOTY0MzEgMDAwMDAgbiAKMDAwMDE5NjUxMiAwMDAwMCBuIAowMDAwMTk2NjUyIDAwMDAwIG4gCjAwMDAxOTY3OTQgMDAwMDAgbiAKMDAwMDE5Njg3MyAwMDAwMCBuIAowMDAwMTk3MDEzIDAwMDAwIG4gCjAwMDAxOTcxNTUgMDAwMDAgbiAKMDAwMDE5NzIzNSAwMDAwMCBuIAowMDAwMTk3Mzc1IDAwMDAwIG4gCjAwMDAxOTc1MTcgMDAwMDAgbiAKMDAwMDE5NzU5NyAwMDAwMCBuIAowMDAwMTk3NzM2IDAwMDAwIG4gCjAwMDAxOTc4NzggMDAwMDAgbiAKMDAwMDE5Nzk2MCAwMDAwMCBuIAowMDAwMTk4MTAwIDAwMDAwIG4gCjAwMDAxOTgyNDIgMDAwMDAgbiAKMDAwMDE5ODMyNCAwMDAwMCBuIAowMDAwMTk4NDY0IDAwMDAwIG4gCjAwMDAxOTg2MDYgMDAwMDAgbiAKMDAwMDE5ODY4OCAwMDAwMCBuIAowMDAwMTk4ODI4IDAwMDAwIG4gCjAwMDAxOTg5NzAgMDAwMDAgbiAKMDAwMDE5OTA1MiAwMDAwMCBuIAowMDAwMTk5MTkyIDAwMDAwIG4gCjAwMDAxOTkzMzQgMDAwMDAgbiAKMDAwMDE5OTQxNCAwMDAwMCBuIAowMDAwMTk5NTUzIDAwMDAwIG4gCjAwMDAxOTk2OTUgMDAwMDAgbiAKMDAwMDE5OTc3NSAwMDAwMCBuIAowMDAwMTk5OTE0IDAwMDAwIG4gCjAwMDAyMDAwNTYgMDAwMDAgbiAKMDAwMDIwMDEzNiAwMDAwMCBuIAowMDAwMjAwMjc0IDAwMDAwIG4gCjAwMDAyMDA0MTYgMDAwMDAgbiAKMDAwMDIwMDQ5NiAwMDAwMCBuIAowMDAwMjAwNjM1IDAwMDAwIG4gCjAwMDAyMDA3NzcgMDAwMDAgbiAKMDAwMDIwMDg1NyAwMDAwMCBuIAowMDAwMjAwOTk3IDAwMDAwIG4gCjAwMDAyMDExMzkgMDAwMDAgbiAKMDAwMDIwMTIxOSAwMDAwMCBuIAowMDAwMjAxMzU4IDAwMDAwIG4gCjAwMDAyMDE1MDAgMDAwMDAgbiAKMDAwMDIxMjE5MCAwMDAwMCBuIAowMDAwMjEyMjEzIDAwMDAwIG4gCjAwMDAyMTI1NTQgMDAwMDAgbiAKMDAwMDIxMjc2OCAwMDAwMCBuIAowMDAwMjEzNjgyIDAwMDAwIG4gCjAwMDAyMTM3MDMgMDAwMDAgbiAKMDAwMDIxMzg5OSAwMDAwMCBuIAowMDAwMjE0MTY0IDAwMDAwIG4gCjAwMDAyMjg4MTMgMDAwMDAgbiAKMDAwMDIyODc5MCAwMDAwMCBuIAowMDAwMjI4OTEzIDAwMDAwIG4gCjAwMDAyMjg5MzMgMDAwMDAgbiAKMDAwMDIyOTU4OCAwMDAwMCBuIAowMDAwMjI5MDk4IDAwMDAwIG4gCjAwMDAyMzAxNzMgMDAwMDAgbiAKMDAwMDIzMDE5NCAwMDAwMCBuIAowMDAwMjMwNDU0IDAwMDAwIG4gCjAwMDAyNDcwNjcgMDAwMDAgbiAKMDAwMDI0NzA0NCAwMDAwMCBuIAowMDAwMjQ3MTcyIDAwMDAwIG4gCjAwMDAyNDcxOTIgMDAwMDAgbiAKMDAwMDI0Nzg5OSAwMDAwMCBuIAowMDAwMjQ3MzUyIDAwMDAwIG4gCjAwMDAyNDg1NDggMDAwMDAgbiAKMDAwMDI0ODU2OSAwMDAwMCBuIAowMDAwMjQ4ODMxIDAwMDAwIG4gCjAwMDAyNTk0NTcgMDAwMDAgbiAKMDAwMDI1OTQzNCAwMDAwMCBuIAowMDAwMjU5NTU2IDAwMDAwIG4gCjAwMDAyNTk1NzYgMDAwMDAgbiAKMDAwMDI2MDE1MSAwMDAwMCBuIAowMDAwMjU5NzQwIDAwMDAwIG4gCjAwMDAyNjA2NTkgMDAwMDAgbiAKMDAwMDI2MDg5OSAwMDAwMCBuIAowMDAwMjYxMjM4IDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAzMzEgMCBSCiAgL0luZm8gMSAwIFIKICAvSUQgWzw5OTFEOTIzMDA5OUYwMTA1MTRDNzU4RTk0QkI5NDhCNz4gPDk5MUQ5MjMwMDk5RjAxMDUxNEM3NThFOTRCQjk0OEI3Pl0KICAvU2l6ZSAzMzMKPj4Kc3RhcnR4cmVmCjI2MTQwMQolJUVPRgo=