OTRSMasterSlave
6.0.21
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
- Improved breadcrumb.
- Removed outdated information about max_allowed_packet.
- Fixed: Error log is created while non MasterSlave ticket is set (bug#14899).
- Fixed: Can not select the "UnsetSlave" and the "UnsetMaster" values on the "Update/Add Ticket Attributes" section of Generic Agent view (bug#14778).
- Fixed: After unset a Master ticket, the ticket link is not updated (bug#14781).
- Updated framework files to 6.0.23.
- Fixed: MasterSlave dynamic field is not shown in AgentTicketMasterSlave screen when Note is disabled (bug#14780).
- Remove OCP package from ondemand config.
- Stabilized Selenium test AgentTicketCreateMasterSlave.t.
- Improved Selenium test AgentTicketCreateMasterSlave.t.
- Updated framework files to OTRS 6.0.21.
- Updated framework files to OTRS 6.0.20.
- Updated translations.
- Updated framework files to OTRS 6.0.19.
- Updated framework files to OTRS 6.0.18.
- Updated translations.
- Updated framework files to OTRS 6.0.17.
- Fixed bug#14350 ReplaceCustomerRealName is not working.
- Updated framework files to OTRS 6.0.16.
- Updated copyright.
- Code cleanup.
- Updated framework files to OTRS 6.0.15.
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 6.0.13
- Fixed: Generic Agent log errors when master ticket is not available (bug#14082).
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 6.0.11.
- Updated license information.
- Added missing Change log.
- Fixed: It is old setting values in the System Configuration of MasterSlave view (bug#13896).
- Updated framework files to OTRS 6.0.9.
- Fixed: Master / Slave dynamic field add screen is not modern (bug#13740).
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 6.0.8.
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 6.0.7.
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 6.0.6.
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 6.0.5.
- Fixed bug#12951 - Untranslated strings in TicketZoom screen.
- Fixed bug#10415 - RichTextWidth and RichTextHeight settings missing.
- Fixed bug#13257 - Legacy default subject in AgentTicketMasterSlave screen.
- Fixed bug#8957 - MasterTicket field in MasterSlave action can't be set as mandatory.
- Fixed bug#13306 - internal mail is sent to customer.
- Updated translations, thanks to all translators.
- Updated framework files to OTRS 6.0.3.
- Improved wording, thanks to Balázs Úr.
- Updated documentation (Config chapter).
- Updated translations, thanks to all translators.
- Updated translations, thanks to all translators.
- Initial version for OTRS 6.
- Updated translations, thanks to all translators.
- Replaced UserFistname, UserLastname in favor of a more flexible UserFullname, thanks to Dian Tong Software.
Includes "Ticket Master/Slave" feature.
Enthält "Ticket Master/Slave" Funktionalität.
A „mester/alárendelt jegy” funkciót tartalmazza.
6.0.x
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to install the OTRS package OTRSMasterSlave.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está a punto de instalar 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 telepítésére készül.<br/>
<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();
eb14b536299d9df45db62ae304c4ff5d3c153d9b
2019-12-13 14:24:33
opms.otrs.com
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkNoYW5nZXMiPgogICAgPFNldHRpbmcgTmFtZT0iTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6Ok1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTWFzdGVyU2xhdmU6OlVuc2V0TWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpVcGRhdGVNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpGb2xsb3dVcGRhdGVkTWFzdGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9Ik1hc3RlclNsYXZlOjpGb3J3YXJkU2xhdmVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgJ2ZvcndhcmQnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgJ2ZvcndhcmQnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVcGRhdGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6Ok1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6Ok1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+QXJ0aWNsZUNyZWF0ZXxBcnRpY2xlU2VuZHxUaWNrZXRTdGF0ZVVwZGF0ZXxUaWNrZXRQcmlvcml0eVVwZGF0ZXxUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZXxUaWNrZXRMb2NrVXBkYXRlfFRpY2tldE93bmVyVXBkYXRlfFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZUFwcGxpY2F0aW9uTW9kdWxlIyMjQWdlbnRQcmVNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPktlcm5lbDo6TW9kdWxlczo6QWdlbnRQcmVNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50VGlja2V0TWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VGlja2V0IE1hc3RlclNsYXZlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPk1hc3RlclNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjMDA0LU9UUlNNYXN0ZXJTbGF2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRpY2tldEFjdGlvbi5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UaWNrZXRNYXN0ZXJTbGF2ZS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjIzAwNC1PVFJTTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNDgwLU1hc3RlclNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRab29tOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldE1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50VGlja2V0TWFzdGVyU2xhdmU7VGlja2V0SUQ9WyUgRGF0YS5UaWNrZXRJRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQb3B1cFR5cGUiPlRpY2tldEFjdGlvbjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNSZXF1aXJlZExvY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzbid0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjVGlja2V0VHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1NlcnZpY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI093bmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjT3duZXJNYW5kYXRvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyBpZiB0aWNrZXQgb3duZXIgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1Jlc3BvbnNpYmxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1Jlc3BvbnNpYmxlTWFuZGF0b3J5IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIGlmIHRpY2tldCByZXNwb25zaWJsZSBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjU3RhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNTdGF0ZVR5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5vcGVuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Y2xvc2VkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+cGVuZGluZyByZW1pbmRlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnBlbmRpbmcgYXV0bzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1N0YXRlRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJFbnRpdHkiIFZhbHVlRW50aXR5VHlwZT0iU3RhdGUiIFZhbHVlUmVnZXg9IiI+cGVuZGluZyByZW1pbmRlcjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI05vdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjTm90ZU1hbmRhdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIGlmIG5vdGUgbXVzdCBiZSBmaWxsZWQgaW4gYnkgdGhlIGFnZW50LiBDYW4gYmUgb3ZlcndyaXR0ZW4gYnkgVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI1N1YmplY3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNCb2R5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNSaWNoVGV4dFdpZHRoIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyU/JCI+NjIwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjUmljaFRleHRIZWlnaHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyU/JCI+MTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjSW52b2x2ZWRBZ2VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNJbmZvcm1BZ2VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0lzVmlzaWJsZUZvckN1c3RvbWVyRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGlmIHRoZSBNYXN0ZXJTbGF2ZSBub3RlIGlzIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBieSBkZWZhdWx0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjUHJpb3JpdHkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNQcmlvcml0eURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJFbnRpdHkiIFZhbHVlRW50aXR5VHlwZT0iUHJpb3JpdHkiIFZhbHVlUmVnZXg9IiI+MyBub3JtYWw8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNUaXRsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0hpc3RvcnlUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+QWRkTm90ZTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0hpc3RvcnlDb21tZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+JSVNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI01hc3RlclNsYXZlTWFuZGF0b3J5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldE1hc3RlclNsYXZlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFzaGJvYXJkQmFja2VuZCMjIzA5MDAtVGlja2V0TWFzdGVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RGFzaGJvYXJkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6VGlja2V0R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+TWFzdGVyIFRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkFsbCBtYXN0ZXIgdGlja2V0czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+RHluYW1pY0ZpZWxkX01hc3RlclNsYXZlX0VxdWFscz1NYXN0ZXI7U3RhdGVUeXBlPW9wZW47U3RhdGVUeXBlPW5ldzs8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZpbHRlciI+QWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbWl0Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVybWlzc2lvbiI+cnc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50TGFyZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhY2hlVFRMTG9jYWwiPjAuNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZSI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJOYW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlcklEIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVzY2FsYXRpb25SZXNwb25zZVRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXNjYWxhdGlvblNvbHV0aW9uVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFc2NhbGF0aW9uVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFc2NhbGF0aW9uVXBkYXRlVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXROdW1iZXIiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lciI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZW5kaW5nVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXNwb25zaWJsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRhc2hib2FyZEJhY2tlbmQjIyMwOTEwLVRpY2tldFNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpEYXNoYm9hcmQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpUaWNrZXRHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5TbGF2ZSBUaWNrZXRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BbGwgc2xhdmUgdGlja2V0czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+RHluYW1pY0ZpZWxkX01hc3RlclNsYXZlX0xpa2U9U2xhdmUqO1N0YXRlVHlwZT1vcGVuO1N0YXRlVHlwZT1uZXc7PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGaWx0ZXIiPkFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGltZSI+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+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJSZXBsYWNlQ3VzdG9tZXJSZWFsTmFtZU9uU2xhdmVBcnRpY2xlVHlwZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXJ0aGVyIHZlcnNpb25zIG9mIE9UUlNNYXN0ZXJTbGF2ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0TWFzdGVyU2xhdmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZW1haWwtZXh0ZXJuYWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImVtYWlsLWludGVybmFsIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJlbWFpbC1ub3RpZmljYXRpb24tZXh0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJlbWFpbC1ub3RpZmljYXRpb24taW50Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwaG9uZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZmF4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJzbXMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IndlYnJlcXVlc3QiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtaW50ZXJuYWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtZXh0ZXJuYWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtcmVwb3J0Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJSZXBsYWNlQ3VzdG9tZXJSZWFsTmFtZU9uU2xhdmVBcnRpY2xlQ29tbXVuaWNhdGlvbkNoYW5uZWxzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRNYXN0ZXJTbGF2ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFbWFpbCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iQUNMS2V5c0xldmVsMzo6QWN0aW9ucyMjIzg4OC1PVFJTTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciAnQWN0aW9uJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlRpY2tldDo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6RHJpdmVyIyMjTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIGJhY2tlbmQgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6RHJpdmVyUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk1hc3RlciAvIFNsYXZlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzYWJsZWRBZGQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIEZpZWxkcyBEcm9wLWRvd24gQmFja2VuZCBHVUk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUjIyMwMDQtT1RSU01hc3RlclNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUjIyMwMDQtT1RSU01hc3RlclNsYXZlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkJ1bGtNb2R1bGUjIyMwMTAtTWFzdGVyU2xhdmUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRCdWxrOjpNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6VGlja2V0QnVsazo6TWFzdGVyU2xhdmU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNzX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Rvdm9sdWplIHDFmWlkw6F2w6Fuw60gcG96bsOhbWVrIHDFmWkgem9icmF6ZW7DrSBOYWTFmcOtemVuw6lobyAvIFBvZMWZw616ZW7DqWhvIHYgZGV0YWlsdSB0aWtldHUgLSBBZ2VudFRpY2tldFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdabcSbbmEgc3RhdnUgTmFkxZnDrXplbsO9L1BvZMWZw616ZW7DvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdVcsSNdWplLCB6ZGEgamUgdnnFvmFkb3bDoW5vIHV6YW1rbnV0w60gdGlrZXR1IHDFmWkgem9icmF6ZW7DrSBOYWTFmcOtemVuw6lobyAvIFBvZMWZw616ZW7DqWhvIHYgZGV0YWlsdSB0aWtldHUgdiBBZ2VudFRpY2tldFpvb20uIChOZW7DrS1saSB0aWtldCB6YXTDrW0gdXplbcSNZW4sIGJ1ZGUgdXphbcSNZW4gYSBzdMOhdmFqw61jw60gYWdlbnQgYnVkZSBhdXRvbWF0aWNreSB1csSNZW4gamFrbyB2bGFzdG7DrWsuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBNYXN0ZXJTbGF2ZSBub3RlIGlzIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgZGVmYXVsdG7DrSBuw6FzbGVkdWrDrSBzdGF2IHRpa2V0dSBwbyBwxZlpZMOhbsOtIHBvem7DoW1reSAtIHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IEFnZW50VGlja2V0Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGRlZmF1bHRuw60gcHJpb3JpdHUgdGlrZXR1IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBBZ2VudFRpY2tldFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIGtvbWVudMOhxZkgaGlzdG9yaWUgcHJvIGFrY2kgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70sIGtvbWVudMOhxZkgamUgcG91xb5pdCB2IGhpc3RvcmlpIHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcsSNdWplIHR5cCBoaXN0b3JpZSBwcm8gYWtjaSB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSwgdHlwIGplIHBvdcW+aXQgdiBoaXN0b3JpaSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXLEjXVqZSBkYWzFocOtIHN0YXYgdGlrZXR1IHBvIHDFmWlkw6Fuw60gcG96bsOhbWt5IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva3VkIGplIHDFmWlkw6FuYSBwb3puw6Fta2EgYWdlbnRlbSwgdXLEjcOtIHN0YXYgdGlrZXR1IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gLSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cnkgbmFzdGF2ZW7DrSBuw6FzdMSbbmt5IHYgcMWZZWhsZWR1IG5hZMWZw616ZW7DvWNoIHRpa2V0xa8gdiByb3pocmFuw60gYWdlbnRhLiAiTGltaXQiIGplIG1ub8W+c3R2w60gc3RhbmRhcmRuxJsgdmlkaXRlbG7DvWNoIHZzdHVwxa8uICJHcm91cCIgc2UgcG91xb7DrXbDoSBrIG9tZXplbsOtIHDFmcOtc3R1cHUgayBwbHVnaW51IChuYXDFmS46IEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiB1csSNdWplLCB6ZGEgamUgcGx1Z2luIHBvdm9sZW4gc3RhbmRhcmRuxJsgbmVibyB6ZGEgamVqIG11c8OtIHXFvml2YXRlbCBwb3ZvbGl0IG1hbnXDoWxuxJsuICJDYWNoZVRUTExvY2FsIiBqZSBjYWNob3ZhY8OtIMSNYXMgcGx1Z2ludSAtICB2IG1pbnV0w6FjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cnkgbmFzdGF2ZW7DrSBuw6FzdMSbbmt5IHBybyBwxZllaGxlZCBwb2TFmcOtemVuw71jaCB0aWtldMWvIHYgcm96aHJhbsOtIGFnZW50YS4gIkxpbWl0IiBqZSBtbm/FvnN0dsOtIHN0YW5kYXJkbsSbIHZpZGl0ZWxuw71jaCB2c3R1cMWvLiAiR3JvdXAiIHNlIHBvdcW+w612w6EgayBvbWV6ZW7DrSBwxZnDrXN0dXB1IGsgcGx1Z2ludSAobmFwxZkuOiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgdXLEjXVqZSwgemRhIGplIHBsdWdpbiBwb3ZvbGVuIHN0YW5kYXJkbsSbIG5lYm8gemRhIGplaiBtdXPDrSB1xb5pdmF0ZWwgcG92b2xpdCBtYW51w6FsbsSbLiAiQ2FjaGVUVExMb2NhbCIgamUgY2FjaG92YWPDrSDEjWFzIHBsdWdpbnUgLSB2IG1pbnV0w6FjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlZ2lzdHJhY2UgbW9kdWx1IHVkw6Fsb3N0w60gdGlrZXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgdcW+w612w6Fuw60gem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgZGVmYXVsdG7DrSB0ZXh0IHTEm2xhIHBvem7DoW1reSBwxZlpZGFuw6kgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgZGVmYXVsdG7DrSBzdWJqZWt0IHBvem7DoW1layB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXLEjXVqZSB6b2Rwb3bEm2Ruw6lobyBhZ2VudGEgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdVcsSNdWplIHNlcnZpcyB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhLiAoTXVzw60gYsO9dCBha3Rpdm92w6FuIFRpY2tldDo6U2VydmljZS4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VyxI11amUgdmxhc3Ruw61rYSB0aWtldHUgdiB6b2JyYXplbsOtIE5hZMWZw616ZW7DvSAvIFBvZMWZw616ZW7DvSB2IGRldGFpbHUgdGlrZXR1IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnVXLEjXVqZSB0eXAgdGlrZXR1IHYgem9icmF6ZW7DrSBOYWTFmcOtemVuw70gLyBQb2TFmcOtemVuw70gdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuIChNdXPDrSBiw710IGFrdGl2b3bDoW4gVGlja2V0OjpUeXBlLiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXp1amUgbGluayB2IG1lbnUsICBrdGVyw70gc2xvdcW+w60ga2Ugem3Em27EmyBzdGF0dXN1IHRpa2V0dSB2IG5hZMWZw616ZW7DvSAvIHBvZMWZw616ZW7DvSwgdiBkZXRhaWx1IHRpa2V0dSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXp1amUgc2V6bmFtIHbFoWVjaCBhZ2VudMWvLCBrdGXFmcOtIHNlIHBvZMOtbGVsaSBuYSB0aWtldHUsICB2IHpvYnJhemVuw60gTmFkxZnDrXplbsO9IC8gUG9kxZnDrXplbsO9IHYgZGV0YWlsdSB0aWtldHUgdiByb3pocmFuw60gYWdlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhenVqZSBzZXpuYW0gbW/Fvm7DvWNoIGFnZW50xa8gKHbFoWljaG5pIGFnZW50aSBtb2hvdWPDrSBwxZlpZGF0IHBvem7DoW1rdSBrIGZyb250xJsvdGlrZXR1KSwgYWJ5IGJ5bG8gbW/Fvm5vIHVyxI1pdCwga2RvIGJ1ZGUgbyBwb3puw6FtY2UgaW5mb3Jtb3bDoW4gLSB2IHpvYnJhemVuw60gTmFkxZnDrXplbsOpaG8vUG9kxZnDrXplbsOpaG8gemF6b29tb3ZhbsOpaG8gdGlrZXR1IHYgYWdlbnRza8OpbSBwcm9zdMWZZWTDrS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXJ0aGVyIHZlcnNpb25zIG9mIE9UUlNNYXN0ZXJTbGF2ZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnRmVsZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ01hc3Rlci9TbGF2ZS1TdGF0dXMgdmVyd2FsdGVuIGbDvHIgJXMlcyVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05ldWVzIE1hc3Rlci1UaWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ0F1ZmhlYmVuIGRlcyBNYXN0ZXItVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdBdWZoZWJlbiBkZXMgU2xhdmUtVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnU2xhdmUgdm9uICVzJXMlczogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ0F1ZmhlYmVuIGRlciBNYXN0ZXItVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnQXVmaGViZW4gZGVyIFNsYXZlLVRpY2tldHMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlcyd9ID0gJ1NsYXZlIHZvbiAlcyVzJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ01hc3Rlci1UaWNrZXQnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdBbGxlIE1hc3Rlci1UaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnQWxsZSBTbGF2ZS1UaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmxhdWJ0IGRhcyBoaW56dWbDvGdlbiB2b24gTm90aXplbiBpbiBkZXIgTWFzdGVyU2xhdmUtQW5zaWNodCBlaW5lcyBhdWZnZXJ1ZmVuZW4gVGlja2V0cyBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ0RlbiBNYXN0ZXJTbGF2ZS1TdGF0dXMgZGVzIFRpY2tldHMgw6RuZGVybi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdEeW5hbWlzY2hlcyBGZWxkIGbDvHIgZGFzIE1hc3Rlci1UaWNrZXQtRmVhdHVyZSBkZWZpbmllcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10LCBvYiBkaWVzZXIgU2NyZWVuIGltIEFnZW50ZW4tSW50ZXJmYWNlIGRhcyBTcGVycmVuIGRlcyBUaWNrZXRzIHZvcmF1c3NldHp0LiBEYXMgVGlja2V0IHdpcmQgKGZhbGxzIG7DtnRpZykgZ2VzcGVycnQgdW5kIGRlciBha3R1ZWxsZSBBZ2VudCB3aXJkIGFscyBCZXNpdHplciBnZXNldHp0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBNYXN0ZXJTbGF2ZSBub3RlIGlzIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBvYiBkaWUgTWFzdGVyU2xhdmUtTm90aXogc3RhbmRhcmRtw6TDn2lnIGbDvHIgS3VuZGVuIHNpY2h0YmFyIGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIEZvbGdlc3RhdHVzIGbDvHIgVGlja2V0cywgZsO8ciBkaWUgaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZWluZSBOb3RpeiBoaW56dWdlZsO8Z3Qgd3VyZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGllIHN0YW5kYXJkbcOkw59pZ2UgVGlja2V0LVByaW9yaXTDpHQgZsO8ciBUaWNrZXRzIGltIE1hc3RlclNsYXZlLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIEhpc3Rvcmllbi1Lb21tZW50YXIgdm9uIFRpY2tldC1Ba3Rpb25lbiBpbSBNYXN0ZXJTbGF2ZS1CaWxkc2NoaXJtLCB3ZWxjaGVyIGbDvHIgZGllIFRpY2tldC1IaXN0b3JpZSBpbSBBZ2VudGVuLUludGVyZmFjZSB2ZXJ3ZW5kZXQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlc3RpbW10IGRlbiBIaXN0b3JpZW4tVHlwIHZvbiBUaWNrZXQtQWt0aW9uZW4gaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSwgd2VsY2hlciBmw7xyIGRpZSBUaWNrZXQtSGlzdG9yaWUgaW0gQWdlbnRlbi1JbnRlcmZhY2UgdmVyd2VuZGV0IHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gRm9sZ2VzdGF0dXMgZsO8ciBUaWNrZXRzLCBmw7xyIGRpZSBpbSBNYXN0ZXJTbGF2ZS1CaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZSBlaW5lIE5vdGl6IGhpbnp1Z2Vmw7xndCB3dXJkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICdEYXMgZXJ3ZWl0ZXJ0ZSBWZXJoYWx0ZW4gZGVzIE1hc3RlclNsYXZlLUZlYXR1cmVzIGFrdGl2aWVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmllcnQgZGllIEZ1bmt0aW9uYWxpdMOkdCwgZGFzcyBTbGF2ZS1UaWNrZXRzIGRlbSBNYXN0ZXItVGlja2V0IGltIGVyd2VpdGVydGVuIE1hc3RlclNsYXZlLVZlcmhhbHRlbiB6dW0gbmV1ZW4gTWFzdGVyIGZvbGdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGRpZSBGdW5rdGlvbmFsaXTDpHQgenVtIMOEbmRlcm4gZGVzIE1hc3RlclNsYXZlLVN0YXR1cyBlaW5lcyBUaWNrZXRzIGltIGVyd2VpdGVydGVuIE1hc3RlclNsYXZlLU1vZHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICdBa3RpdmllcnQgZGllIEZ1bmt0aW9uIHp1bSBXZWl0ZXJsZWl0ZW4gdm9uIEFydGlrZWxuIGRlcyBUeXBzIFwnV2VpdGVybGVpdGVuXCcgenUgZGVuIEt1bmRlbiBkZXMgU2xhdmUtVGlja2V0cy4gU3RhbmRhcmRtw6TDn2lnIChkZWFrdGl2aWVydCkgd2VyZGVuIGtlaW5lIEFydGlrZWwgZGVzIFR5cHMgXCdXZWl0ZXJsZWl0ZW5cJyBhbiBkaWUgU2xhdmUtVGlja2V0cyB3ZWl0ZXJnZWxlaXRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmllcnQgaW0gZGllIEZ1bmt0aW9uLCBpbSBlcndlaXRlcnRlbiBNYXN0ZXJTbGF2ZS1WZXJoYWx0ZW4gZWluZSBFbHRlcm4tS2luZC1CZXppZWh1bmcgbmFjaCBkZW0gw4RuZGVybiBkZXMgTWFzdGVyU2xhdmUtU3RhdHVzIHp1IGJlaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGltIGRpZSBGdW5rdGlvbiwgaW0gZXJ3ZWl0ZXJ0ZW4gTWFzdGVyU2xhdmUtVmVyaGFsdGVuIGVpbmUgRWx0ZXJuLUtpbmQtQmV6aWVodW5nIG5hY2ggZGVtIEF1ZmzDtnNlbiBkZXMgTWFzdGVyU2xhdmUtU3RhdHVzIHp1IGJlaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVydCBkaWUgRnVua3Rpb24genVtIEF1ZmhlYmVuIGRlcyBNYXN0ZXJTbGF2ZS1TdGF0dXMgZWluZXMgVGlja2V0cyBpbSBlcndlaXRlcnRlbiBNYXN0ZXJTbGF2ZS1WZXJoYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VybcO2Z2xpY2h0IGRhcyDDhG5kZXJuIGRlcyBUSWNrZXQtU3RhdHVzIGJlaW0gSGluenVmw7xnZW4gZWluZXIgTm90aXogaW5uZXJoYWxiIGRlcyBNYXN0ZXJTbGF2ZS1CaWxkc2NoaXJtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNYXN0ZXIgLyBTbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ01hc3Rlci1UaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnTWFzdGVyU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01hc3RlclNsYXZlLU1vZHVsIGbDvHIgVGlja2V0LVNhbW1lbGFrdGlvbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdFaW5zdGVsbHVuZyBkZXIgw5xiZXJzaWNodHNzZWl0ZW5wYXJhbWV0ZXIgZsO8ciBNYXN0ZXIgVGlja2V0cyBpbiBkZXIgQWdlbnRlbm9iZXJmbMOkY2hlLiAiTGltaXQiIGdpYnQgZGllIEFuemFobCBkZXIgc3RhbmRhcmRtw6TDn2lnIGRhcmdlc3RlbGx0ZW4gRWludHLDpGdlIGFuLiAiR3JvdXAiIHdpcmQgdmVyd2VuZGV0LCB1bSBkZW4gWnVncmlmZiBhdWYgZGFzIFBsdWdpbiB6dSBiZWdyZW56ZW4gKGJzcHcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBiZXN0aW1tdCwgb2IgZGFzIFBsdWdpbiBzdGFuZGFyZG3DpMOfaWcgYWt0aXZpZXJ0IGlzdCBvZGVyIG9iIGRlciBCZW51dHplciBlcyBzZWxic3QgYWt0aXZpZXJlbiBtdXNzLiAiQ2FjaGVUVExMb2NhbCIgaXN0IGRpZSBDYWNoaW5nLVplaXQgZGVzIFBsdWdpbnMsIGFuZ2VnZWJlbiBpbiBNaW51dGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ0VpbnN0ZWxsdW5nIGRlciDDnGJlcnNpY2h0c3NlaXRlbnBhcmFtZXRlciBmw7xyIFNsYXZlIFRpY2tldHMgaW4gZGVyIEFnZW50ZW5vYmVyZmzDpGNoZS4gIkxpbWl0IiBnaWJ0IGRpZSBBbnphaGwgZGVyIHN0YW5kYXJkbcOkw59pZyBkYXJnZXN0ZWxsdGVuIEVpbnRyw6RnZSBhbi4gIkdyb3VwIiB3aXJkIHZlcndlbmRldCwgdW0gZGVuIFp1Z3JpZmYgYXVmIGRhcyBQbHVnaW4genUgYmVncmVuemVuIChic3B3LiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgYmVzdGltbXQsIG9iIGRhcyBQbHVnaW4gc3RhbmRhcmRtw6TDn2lnIGFrdGl2aWVydCBpc3Qgb2RlciBvYiBkZXIgQmVudXR6ZXIgZXMgc2VsYnN0IGFrdGl2aWVyZW4gbXVzcy4gIkNhY2hlVFRMTG9jYWwiIGlzdCBkaWUgQ2FjaGluZy1aZWl0IGRlcyBQbHVnaW5zLCBhbmdlZ2ViZW4gaW4gTWludXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlZ2lzdHJpZXJ1bmcgZGVzIFRpY2tldC1FdmVudC1Nb2R1bHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlbsO2dGlndGUgQmVyZWNodGlndW5nZW4gZsO8ciBkaWUgQW56ZWlnZSBkZXMgTWFzdGVyU2xhdmUtRGlhbG9ncyBpbSBUaWNrZXQtWm9vbS1EaWFsb2cgZGVzIEFnZW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuJ30gPSAnTGVndCBmZXN0LCBvYiBNYXN0ZXIgLyBTbGF2ZSBGZWxkIGR1cmNoIGVpbmVuIEFnZW50ZW4gYXVzZ2V3w6RobHQgc2VpbiBtdXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gc3RhbmRhcmRtw6TDn2lnZW4gVGV4dCBlaW5lciBOb3RpeiBmw7xyIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gc3RhbmRhcmRtw6TDn2lnZW4gQmV0cmVmZiBlaW5lciBOb3RpeiBmw7xyIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gdmVyYW50d29ydGxpY2hlbiBBZ2VudGVuIGVpbmVzIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUgQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZsO8ciBlaW4gYXVmZ2VydWZlbmVzIFRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdCZXN0aW1tdCBkZW4gU2VydmljZSBlaW5lcyBUaWNrZXRzIGltIE1hc3RlclNsYXZlLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW4tSW50ZXJmYWNlIGbDvHIgZWluIGF1ZmdlcnVmZW5lcyBUaWNrZXQgKFRpY2tldDo6U2VydmljZSBtdXNzIGFrdGl2aWVydCBzZWluKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIEJlc2l0emVyIGVpbmVzIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZsO8ciBlaW4gYXVmZ2VydWZlbmVzIFRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnQmVzdGltbXQgZGVuIFRpY2tldC1UeXAgZWluZXMgVGlja2V0cyBpbSBNYXN0ZXJTbGF2ZS1CaWxkc2NoaXJtIGRlcyBBZ2VudGVuLUludGVyZmFjZSBmw7xyIGVpbiBhdWZnZXJ1ZmVuZXMgVGlja2V0IChUaWNrZXQ6OlR5cGUgbXVzcyBha3RpdmllcnQgc2VpbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayB6dW0gw4RuZGVybiBkZXMgTWFzdGVyU2xhdmUtU3RhdHVzIGVpbmVzIFRpY2tldHMgaW0gTWVuw7wgZGVyIFRpY2tldC1ab29tLUFuc2ljaHQgZGVzIEFnZW50ZW4gYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lIExpc3RlIGFsbGVyIGludm9sdmllcnRlbiBBZ2VudGVuIGbDvHIgZGFzIGdld8OkaGx0ZSBUaWNrZXQgaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgTGlzdGUgYWxsZXIgbcO2Z2xpY2hlbiBBZ2VudGVuIChhbGxlIEFnZW50ZW4gbWl0IE5vdGl6IEJlcmVjaHRpZ3VuZyBhdWYgZGVyIFF1ZXVlL2RlbSBUaWNrZXQpIGbDvHIgZGFzIGdld8OkaGx0ZSBUaWNrZXQgaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBQcmlvcml0w6R0IGVpbmVzIFRpY2tldHMgaW0gTWFzdGVyU2xhdmUtQmlsZHNjaGlybSBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgZsO8ciBlaW4gYXVmZ2VydWZlbmVzIFRpY2tldCBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZGFzIFRpdGVsLUZlbGQgaW4gZGVyIE1hc3RlclNsYXZlLU9iZXJmbMOkY2hlIGVpbmVzIGF1ZmdlcnVmZW5lbiBUaWNrZXRzIGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ1NsYXZlLVRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICdHaWJ0IGRpZSB2ZXJzY2hpZWRlbmVuIEFydGlrZWwtS29tbXVuaWthdGlvbnNrYW7DpGxlIGFuLCBiZWkgZGVuZW4gZGVyIGVjaHRlIE5hbWUgdm9tIEVsdGVybi1UaWNrZXQgZHVyY2ggZGVuIGltIEtpbmQtVGlja2V0IGVyc2V0enQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnRGllc2VzIE1vZHVsIGFrdGl2aWVydCBkYXMgTWFzdGVyL1NsYXZlLUZlbGQgaW4gZGVyIEFuemVpZ2UgZsO8ciBlaW4gbmV1ZXMgRW1haWwtIG9kZXIgVGVsZWZvbi1UaWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICdEaWVzZSBFaW5zdGVsbHVuZyBpc3QgdmVyYWx0ZXQgdW5kIHdpcmQgaW4gd2VpdGVyZW4gVmVyc2lvbmVuIHZvbiBPVFJTTWFzdGVyU2xhdmUgZW50ZmVybnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdUaWNrZXQgTWFzdGVyU2xhdmUuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQ2FtcG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdHZXN0aW9uYXIgZXN0YXMgTWFlc3Ryby9Fc2NsYXZvIHBhcmEgJXMlcyVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ051ZXZvIFRpY2tldCBNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdSZW1vdmVyIGVzdGFkbyBUaWNrZXQgTWFlc3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdSZW1vdmVyIGVzdGFkbyBUaWNrZXQgRXNjbGF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnRXNjbGF2byBkZSAlcyVzJXM6JXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ1JlbW92ZXIgZXN0YWRvIE1hZXN0cm8gZGUgVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnUmVtdmVyIGVzdGFkbyBFc2NsYXZvIGRlIFRpY2tldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlcyd9ID0gJ0VzY2xhdm8gZGUgJXMlcyVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdUaWNrZXQgTWFlc3Rybyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ1RvZG9zIGxvcyB0aWNrZXRzIG1hZXN0cm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnVG9kb3MgbG9zIHRpY2tldHMgZXNjbGF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYcOxYWRpciBub3RhcyBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ01vZGlmaWNhIGVsIGVzdGFkbyBNYWVzdHJvLUVzY2xhdm8gZGVsIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdEZWZpbmUgZWwgbm9tYnJlIGRlbCBjYW1wbyBkaW7DoW1pY28gcGFyYSBlbCBmdW5jaW9uYWxpZGFkIGRlIHRpY2tldCBtYWVzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBibG9xdWVvIHJlcXVlcmlkbyBpbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZSAoc2kgZWwgdGlja2V0IG5vIGhhIHNpZG8gYmxvcXVlYWRvIGF1biwgZWwgdGlja2V0IHNlIGJsb3F1ZWEgeSBlbCBhZ2VudGUgYWN0dWFsIHNlIGNvbnZlcnRpcsOhIGF1dG9tw6F0aWNhbWVudGUgZW4gZWwgZHVlw7FvIGRlbCBtaXNtbykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIE1hc3RlclNsYXZlIG5vdGUgaXMgdmlzaWJsZSBmb3IgdGhlIGN1c3RvbWVyIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdEZWZpbmUgc2kgbGEgbm90YSBkZSBNYWVzdHJvLUVzbGF2byBlcyB2aXNpYmxlIHBvciBkZWZlY3RvIHBhcmEgbGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlbCB0aWNrZXQgZGVzcHXDqXMgZGUgYcOxYWRpciB1bmEgbm90YSwgZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxhIHByaW9yaWRhZCBwb3IgZGVmZWN0byBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBjb21lbnRhcmlvIGRlbCBoaXN0b3JpYWwgcGFyYSBsYSBhY2Npw7NuIGRlIGxhIHBhbnRhbGxhIGRlbCB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvLCBxdWUgZXMgdXNhZG8gcGFyYSBlbCBoaXN0b3JpYWwgZGVsIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHRpcG8gZGUgaGlzdG9yaWFsIHBhcmEgbGEgYWNjacOzbiBkZSBsYSBwYW50YWxsYSBkZWwgdGlja2V0IE1hZXN0cm8tRXNjbGF2bywgcXVlIGVzIHVzYWRvIHBhcmEgZWwgaGlzdG9yaWFsIGRlbCB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlc3B1w6lzIGRlIGHDsWFkaXIgdW5hIG5vdGEsIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ0hhYmlsaXRhIGxhIHBhcnRlIGF2YW56YWRhIGRlIGxhIGZ1bmNpb25hbGlkYWQgTWFlc3Ryb0VzY2xhdm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBmdW5jaW9uYWxpZGFkIGVuIGxhIHF1ZSB0aWNrZXRzIGVzY2xhdm9zIHNpZ3VlbiBhbCB0aWNrZXQgbWFlc3RybyBoYWNpYSB1biBudWV2byBtYWVzdHJvIGVuIGVsIG1vZG8gYXZhbnphZG8gZGUgTWFzdGVyU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgZnVuY2lvbmFsaWRhZCBkZSBjYW1iaWFyIGVsIGVzdGFkbyBNYWVzdHJvRXNjbGF2byBkZSB1biB0aWNrZXQgZW4gZWwgbW9kbyBhdmFuemFkbyBkZSBNYWVzdHJvRXNjbGF2by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgZnVuY2lvbmFsaWRhZCBkZSByZS1lbnZpYXIgYXJ0w61jdWxvcyBkZSB0aXBvIFwnZm9yd2FyZFwnIGRlIHVuIHRpY2tldCBtYWVzdHJvIGhhY2lhIGxvcyBjbGllbnRlcyBkZSBzdXMgdGlja2V0IGVzY2xhdm9zLiBQb3Igb21pc2nDs24gKGRlc2hhYml0YWRvKSBubyByZS1lbnZpYXLDoSBhcnTDrWN1bG9zIGRlIHRpcG8gXCdmb3J3YXJkXCcgaGFjaWEgbG9zIHRpY2tldHMgZXNjbGF2b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgZnVuY2lvbmFsaWRhZCBkZSBtYW50ZW5lciBsb3MgdsOtbmN1bG9zIHBhZHJlLWhpam8gZGVzcHXDqXMgZGUgY2FtYmlhciBlbCBlc3RhZG8gZGUgTWFlc3Ryb0VzY2xhdm8gZW4gZWwgbW9kbyBhdmFuemFkbyBkZSBNYWVzdHJvRXNjbGF2by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGxhIGZ1bmNpb25hbGlkYWQgZGUgbWFudGVuZXIgbG9zIHbDrW5jdWxvcyBwYWRyZS1oaWpvIGRlc3B1w6lzIGRlIHJlbW92ZXIgZWwgZXN0YWRvIGRlIE1hZXN0cm9Fc2NsYXZvICBlbiBlbCBtb2RvIGF2YW56YWRvIGRlIE1hZXN0cm9Fc2NsYXZvLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBmdW5jaW9uYWxpZGFkIGRlIHJlbW92ZXIgZWwgZXN0YWRvIGRlIE1hZXN0cm9Fc2NsYXZvIGRlIHVuIHRpY2tldCBlbiBlbCBtb2RvIGF2YW56YWRvIGRlIE1hZXN0cm9Fc2NsYXZvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaSB1bmEgbm90YSBlcyBhw7FhZGlkYSBwb3IgdW4gYWdlbnRlLCBmaWphIGVsIGVzdGFkbyBkZWwgdGlja2V0IGVuIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hZXN0cm8gLyBFc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnVGlja2V0cyBNYWVzdHJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ01hZXN0cm9Fc2NsYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNw7NkdWxvIE1hc3RlclNsYXZlIHBhcmEgbGEgb3BjacOzbiBkZSBUaWNrZXRzIHBvciBMb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYmFja2VuZCBkZWwgcGFuZWwgcHJpbmNpcGFsIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHRpY2tldHMgbWFlc3Ryb3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0IiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdyb3VwIiBzZSB1c2EgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyB0aWVuZSBxdWUgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZW4gbWludXRvcyBwYXJhIGxhIGNhY2jDqSBkZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYmFja2VuZCBkZWwgcGFuZWwgcHJpbmNpcGFsIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHRpY2tldHMgZXNjbGF2b3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0IiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdyb3VwIiBzZSB1c2EgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyB0aWVuZSBxdWUgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZW4gbWludXRvcyBwYXJhIGxhIGNhY2jDqSBkZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1byBkZSBldmVudG8gcGFyYSB0aWNrZXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgdXNhciBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZGUgdW4gdGlja2V0LCBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuJ30gPSAnRXN0YWJsZWNlIHNpIGVsIGFnZW50ZSBkZWJlIHNlbGVjY2lvbmFyIGVsIGNhbXBvIE1hZXN0cm8gLyBFc2NsYXZvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIHRleHRvIGRlbCBjdWVycG8gcG9yIGRlZmVjdG8gZGUgbGFzIG5vdGFzIGHDsWFkaWRhcyBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmlqYSBlbCBhc3VudG8gcG9yIGRlZmVjdG8gZGUgbGFzIG5vdGFzIGHDsWFkaWRhcyBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmlqYSBlbCBhZ2VudGUgcmVzcG9uc2FibGUgZGUgdW4gdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnRmlqYSBlbCBzZXJ2aWNpbyBkZSB1biB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZSAoVGlja2V0OjpTZXJ2aWNlIHJlcXVpcmUgc2VyIGFjdGl2YWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmlqYSBlbCBkdWXDsW8gZGUgdW4gdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgdGlwbyBkZSB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZSAoVGlja2V0OjpUeXBlIHJlcXVpcmUgc2VyIGFjdGl2YWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGNhbWJpYXIgZWwgZXN0YXR1cyBNYWVzdHJvLUVzY2xhdm8gZGUgdW4gdGlja2V0LCBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuYSBsaXN0YSBkZSB0b2RvcyBsb3MgYWdlbnRlcyBpbnZvbHVjcmFkb3MgY29uIGVzdGUgdGlja2V0LCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuYSBsaXN0YSBkZSB0b2RvcyBsb3MgcG9zaWJsZXMgYWdlbnRlcyAodG9kb3MgbG9zIGFnZW50ZXMgY29uIHBlcm1pc29zICJub3RhIiBlbiBsYSBmaWxhL3RpY2tldCkgcGFyYSBkZXRlcm1pbmFyIHF1acOpbiBkZWJlcsOhIHNlciBpbmZvcm1hZG8gYWNlcmNhIGRlIGVzdGEgbm90YSwgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSBsYXMgb3BjaW9uZXMgZGUgcHJpb3JpZGFkIGRlIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcgTXVlc3RyYSBlbCBjYW1wbyBkZSB0w610dWxvIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdUaWNrZXQgRXNjbGF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICdFc3BlY2lmaWNhIGxvcyBkaWZlcmVudGVzIGNhbmFsZXMgZGUgY29tdW5pY2FjacOzbiBkZSBhcnTDrWN1bG9zIGVuIGxvcyBjdWFsZXMgc2UgcmVlbXBsYXphcsOhIGVsIG5vbWJyZSByZWFsIGRlIHRpY2tldCBNYWVzdHJvIGNvbiBlbCBub21icmUgZGVsIHRpY2tldCBFc2NsYXZvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdFc3RlIG3Ds2R1bG8gYWN0aXZhIGVsIGNhbXBvIE1hZXN0cm8vRXNjbGF2byBlbiB1bmEgbnVldmEgcGFudGFsbGEgZGUgdGlja2V0IHBvciBlbWFpbCBvIHBvciB0ZWzDqWZvbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICdFc3RhIGNvbmZpZ3VyYWNpw7NuIGVzIG9ic29sZXRhIHkgc2Vyw6EgcmVtb3ZpZGEgZW4gZnV0dXJhcyB2ZXJzaW9uZXMgZGUgT1RSU01hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnVGlja2V0IE1hZXN0cm9Fc2NsYXZvJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQ2FtcG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdHZXN0aW9uYXIgZWwgZXN0YWRvIE1hZXN0cm8vRXNjbGF2byBwYXJhICAlcyVzJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnTnVldm8gdGlja2V0IG1hZXN0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ0Rlc2FjdGl2YXIgdGlja2V0IG1hZXN0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnRGVzYWN0aXZhciB0aWNrZXQgZXNjbGF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnRXNjbGF2byBkZSAlcyVzJXM6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdEZXNhY3RpdmFyIHRpY2tldHMgbWFlc3Ryb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJ0Rlc2FjdGl2YXIgdGlja2V0cyBlc2NsYXZvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlcyd9ID0gJ0VzY2xhdm8gZGUgJXMlcyVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdUaWNrZXQgTWFlc3Rybyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ1RvZG9zIGxvcyBUaWNrZXRzIG1hZXN0cm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnVG9kb3MgbG9zIFRpY2tldHMgZXNjbGF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYcOxYWRpciBub3RhcyBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ01vZGlmaWNhIGVsIGVzdGFkbyBNYWVzdHJvLUVzY2xhdm8gZGVsIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdEZWZpbmUgZWwgbm9tYnJlIGRlbCBjYW1wbyBkaW7DoW1pY28gcGFyYSBsYSBmdW5jacOzbiBkZSB0aWNrZXQgbWFlc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYmxvcXVlbyByZXF1ZXJpZG8gaW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgKHNpIGVsIHRpY2tldCBubyBoYSBzaWRvIGJsb3F1ZWFkbyBhdW4sIGVsIHRpY2tldCBzZSBibG9xdWVhIHkgZWwgYWdlbnRlIGFjdHVhbCBzZSBjb252ZXJ0aXLDoSBhdXRvbcOhdGljYW1lbnRlIGVuIGVsIGR1ZcOxbyBkZWwgbWlzbW8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBNYXN0ZXJTbGF2ZSBub3RlIGlzIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhIG5vdGEgTWFlc3Ryb0VzY2xhdm8gZXMgdmlzaWJsZSBwYXJhIGVsIGNsaWVudGUgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlbCB0aWNrZXQgZGVzcHXDqXMgZGUgYcOxYWRpciB1bmEgbm90YSwgZW4gbGEgcGFudGFsbGEgZGUgdGlja2V0IE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxhIHByaW9yaWRhZCBwb3IgZGVmZWN0byBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBjb21lbnRhcmlvIGRlbCBoaXN0b3JpYWwgcGFyYSBsYSBhY2Npw7NuIGRlIGxhIHBhbnRhbGxhIGRlbCB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvLCBxdWUgZXMgdXNhZG8gcGFyYSBlbCBoaXN0b3JpYWwgZGVsIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHRpcG8gZGUgaGlzdG9yaWFsIHBhcmEgbGEgYWNjacOzbiBkZSBsYSBwYW50YWxsYSBkZWwgdGlja2V0IE1hZXN0cm8tRXNjbGF2bywgcXVlIGVzIHVzYWRvIHBhcmEgZWwgaGlzdG9yaWFsIGRlbCB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzaWd1aWVudGUgZXN0YWRvIGRlc3B1w6lzIGRlIGHDsWFkaXIgdW5hIG5vdGEsIGVuIGxhIHBhbnRhbGxhIGRlIHRpY2tldCBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ0FjdGl2YSBsYSBwYXJ0ZSBNYWVzdHJvLUVzY2xhdm8gYXZhbnphZGEgZGUgbGEgZnVuY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gZGUgcXVlIGxvcyB0aWNrZXRzIGVzY2xhdm9zIHNpZ3VlbiBlbCB0aWNrZXQgbWFlc3RybyBhIHVuIG51ZXZvIG1hZXN0cm8gZW4gZWwgbW9kbyBNYWVzdHJvLUVzY2xhdm8gYXZhbnphZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0FjdGl2YSBsYSBmdW5jacOzbiBxdWUgY2FtYmllIGVsIGVzdGFkbyBNYWVzdHJvLUVzY2xhdm8gZGUgdW4gdGlja2V0IGVuIGVsIG1vZG8gTWFlc3Ryby1Fc2NsYXZvIGF2YW56YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBjYXJhY3RlcsOtc3RpY2EgcGFyYSByZWVudmlhciBhcnTDrWN1bG9zIGRlc2RlIGVsIHRpcG8gXCdyZWVudmlhclwnIGRlIHVuIHRpY2tldCBtYWVzdHJvIGEgbG9zIGNsaWVudGVzIGRlIGxvcyB0aWNrZXRzIGVzY2xhdm9zLiBQb3IgZGVmZWN0byAoZGVzaGFiaWxpdGFkbykgbm8gcmVlbnZpYXLDoSBhcnTDrWN1bG9zIGRlbCB0aXBvIFwncmVlbnZpYXJcJyBhIGxvcyB0aWNrZXRzIGVzY2xhdm9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgcXVlIGxhIGNhcmFjdGVyw61zdGljYSBwYXJhIG1hbnRlbmVyIGVsIGVubGFjZSBwYWRyZS1oaWpvIGRlc3B1w6lzIGRlbCBjYW1iaW8gZGUgZXN0YWRvIE1hZXN0cm9Fc2NsYXZvIGVuIGVsIG1vZG8gYXZhbnphZG8gTWFlc3Ryb0VzY2xhdm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBjYXJhY3RlcsOtc3RpY2EgcGFyYSBtYW50ZW5lciBlbCBlbmxhY2UgcGFkcmUtaGlqbyBkZXNwdcOpcyBkZSBkZXNhY3RpdmFyIGVsIGVzdGFkbyBNYWVzdHJvRXNjbGF2byBlbiBlbCBhdmFuemFkbyBkZSBNYWVzdHJvRXNjbGF2by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBjYXJhY3RlcsOtc3RpY2EgcGFyYSBkZXNhY3RpdmFyIGVsIGVzdGFkbyBkZSBNYWVzdHJvRXNjbGFkbyBkZSB1biB0aWNrZXQgZW4gZWwgbW9kbyBhdmFuemFkbyBkZSBNYWVzdHJvRXNjbGF2by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2kgdW5hIG5vdGEgZXMgYcOxYWRpZGEgcG9yIHVuIGFnZW50ZSwgZmlqYSBlbCBlc3RhZG8gZGVsIHRpY2tldCBlbiBlbiBsYSBwYW50YWxsYSBkZSB0aWNrZXQgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNYWVzdHJvIC8gRXNjbGF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ1RpY2tldHMgTWFlc3Ryb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNYWVzdHJvLUVzY2xhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ03Ds2R1bG8gRXNjbGF2byBNYWVzdHJvIHBhcmEgbWF5b3IgY2FyYWN0ZXLDrXN0aWNhcyBkZSBlbnRyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgZWwgZGFzaGJvYXJkIGJhY2tlbmQgZGUgbGEgdmlzdGEgZGUgbG9zIHRpY2tldHMgbWFlc3Ryb3MgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gIkxpbWl0ZSIgZXMgZWwgbnVtZXJvIGRlIGVudHJhZGFzIGEgbW9zdHJhciBwb3IgZGVmZWN0by4gIkdydXBvIiBlcyB1c2FkbyBwYXJhIHJlc3RyaW5naXIgZWwgYWNjZXNvIGEgZWwgcGx1Z2luIChFLkouIEdydXBvOiBhZG1pbjtncnVwbzE7Z3J1cG8yOykuICJEZWZlY3RvIiBkZXRlcm1pbmEgc2kgZWwgcGx1Z2luIGVzIGFjdGl2YWRvIHBvciBkZWZlY3RvIMOzIHNpIGVsIHVzdWFyaW8gbmVjZXNpdGEgYWN0aXZhcmxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgZXMgaG9yYSBjYWNoZSBlbiBtaW51dG9zIHBhcmEgZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgZGVsIGJhY2tlbmQgZGVsIHBhbmVsIHByaW5jaXBhbCBkZSBsYSB2aXN0YSBkZWwgdGlja2V0IGVzY2xhdm8gZGVsIGludGVyZmFjZSBkZWwgYWdlbnRlLiAiTGltaXRlIiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGEgbW9zdHJhZGFzIHBvciBkZWZlY3RvLiAiR3J1cG8iZXMgdXNhZG8gcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKEVqbS4gR3J1cG86IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmVjdG8iIGRldGVybWluYSBzaSBlbCBwbHVnaW4gZXMgaGFiaWxpdGFkbyBwb3IgZGVmZWN0byBvIHNpIGVsIHVzdWFyaW8gbmVjZXNpdGEgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZGUgY2FjaGUgZW4gbWludXRvcyBwYXJhIGVsIHBsdWdpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gZGUgZXZlbnRvIGRlIHRpY2tldHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVlcmlkb3MgcGFyYSB1c2FyIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBkZSB1biB0aWNrZXQsIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyBpZiBNYXN0ZXIgLyBTbGF2ZSBmaWVsZCBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC4nfSA9ICdFc3RhYmxlY2Ugc2kgZWwgYWdlbnRlIGRlYmUgc2VsZWNjaW9uYXIgZWwgY2FtcG8gTWFlc3RybyAvIEVzY2xhdm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZpamEgZWwgdGV4dG8gZGVsIGN1ZXJwbyBwb3IgZGVmZWN0byBkZSBsYXMgbm90YXMgYcOxYWRpZGFzIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGFzdW50byBwb3IgZGVmZWN0byBkZSBsYXMgbm90YXMgYcOxYWRpZGFzIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGFnZW50ZSByZXNwb25zYWJsZSBkZSB1biB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdGaWphIGVsIHNlcnZpY2lvIGRlIHVuIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIChUaWNrZXQ6OlNlcnZpY2UgcmVxdWlyZSBzZXIgYWN0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGaWphIGVsIGR1ZcOxbyBkZSB1biB0aWNrZXQgZW4gbGEgcGFudGFsbGEgTWFlc3Ryby1Fc2NsYXZvIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnRmlqYSBlbCB0aXBvIGRlIHRpY2tldCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIChUaWNrZXQ6OlR5cGUgcmVxdWlyZSBzZXIgYWN0aXZhZG8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgY2FtYmlhciBlbCBlc3RhdHVzIE1hZXN0cm8tRXNjbGF2byBkZSB1biB0aWNrZXQsIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyB0aWNrZXQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW5hIGxpc3RhIGRlIHRvZG9zIGxvcyBhZ2VudGVzIGludm9sdWNyYWRvcyBjb24gZXN0ZSB0aWNrZXQsIGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW5hIGxpc3RhIGRlIHRvZG9zIGxvcyBwb3NpYmxlcyBhZ2VudGVzICh0b2RvcyBsb3MgYWdlbnRlcyBjb24gcGVybWlzb3MgIm5vdGEiIGVuIGxhIGZpbGEvdGlja2V0KSBwYXJhIGRldGVybWluYXIgcXVpw6luIGRlYmVyw6Egc2VyIGluZm9ybWFkbyBhY2VyY2EgZGUgZXN0YSBub3RhLCBlbiBsYSBwYW50YWxsYSBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgdmlzdGEgZGV0YWxsYWRhIGRlIGRpY2hvIHRpY2tldCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGxhcyBvcGNpb25lcyBkZSBwcmlvcmlkYWQgZGUgdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgZWwgY2FtcG8gdMOtdHVsbyBkZWwgdGlja2V0IGVuIGxhIHBhbnRhbGxhIE1hZXN0cm8tRXNjbGF2byBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gdGlja2V0IGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdUaWNrZXRzIGVzY2xhdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnRXN0ZSBtw7NkdWxvIGFjdGl2YSBlbCBjYW1wbyBNYWVzdHJvLUVzY2xhdm8gZW4gbGEgcGFudGFsbGEgZGUgdW4gbnVldm8gdGlja2V0IGRlIGVtYWlsIG8gZGUgdGVsw6lmb25vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdUaWNrZXQgTWFlc3Ryby1Fc2NsYXZvLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQ2hhbXAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdHw6lyZXIgbGUgc3RhdHV0IG1hw650cmUtZXNjbGF2ZSBwb3VyICVzICVzICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05vdXZlYXUgdGlja2V0IG1hw650cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ05lIHBsdXMgZMOpZmluaXIgY2UgdGlja2V0IGVuIHRhbnQgcXVlIHRpY2tldCBtYcOudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ05lIHBsdXMgZMOpZmluaXIgY2UgdGlja2V0IGVuIHRhbnQgcXVlIHRpY2tldCBlc2NsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICdFc2NsYXZlIGR1ICVzICVzICVzIDogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ05lIHBsdXMgZMOpZmluaXIgY2VzIHRpY2tldHMgZW4gdGFudCBxdWUgdGlja2V0cyBtYcOudHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnTmUgcGx1cyBkw6lmaW5pciBjZXMgdGlja2V0cyBlbiB0YW50IHF1ZSB0aWNrZXRzIGVzY2xhdmVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01hw650cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzJ30gPSAnRXNjbGF2ZSBkdSAlcyAlcyAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnVGlja2V0IG1hw650cmUnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdUb3VzIGxlcyB0aWNrZXRzIG1hw650cmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnVG91cyBsZXMgdGlja2V0cyBlc2NsYXZlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2UgbFwnYWpvdXQgZGUgbm90ZXMgZFwndW4gdGlja2V0IG1hw650cmUgLyBlc2NsYXZlIGRlcHVpcyBsYSB2dWUgZMOpdGFpbGzDqWUgZGUgbFwnaW50ZXJmYWNlIG9ww6lyYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdDaGFuZ2VyIGxcJ8OpdGF0IG1hw650cmUgLyBlc2NsYXZlIGRcJ3VuIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWHDrnRyZSAvIEVzY2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICdUaWNrZXRzIG1hw650cmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnTWHDrnRyZSAvIEVzY2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyBpZiBNYXN0ZXIgLyBTbGF2ZSBmaWVsZCBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ1RpY2tldHMgZXNjbGF2ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJ1RpY2tldCBtYcOudHJlIC8gZXNjbGF2ZS4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmdsX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQ2FtcG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ1ByaW5jaXBhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdDYW1iaWFyIG8gZXN0YWRvIEFtb0VzY3Jhdm8gZG8gdMOtY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnTWV6xZEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICclcyVzJXMgbWVzdGVyL2Fsw6FyZW5kZWx0IMOhbGxhcG90w6FuYWsga2V6ZWzDqXNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ8OaaiBtZXN0ZXJqZWd5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdNZXN0ZXJqZWd5IHTDtnJsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdBbMOhcmVuZGVsdCBqZWd5IHTDtnJsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJXMlcyVzIGFsw6FyZW5kZWx0amU6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdNZXN0ZXJqZWd5ZWsgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdBbMOhcmVuZGVsdCBqZWd5ZWsgdMO2cmzDqXNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01lc3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICclcyVzJXMgYWzDoXJlbmRlbHRqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnTWVzdGVyamVneSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ8OWc3N6ZXMgbWVzdGVyamVneSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ8OWc3N6ZXMgYWzDoXJlbmRlbHQgamVneSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGVoZXTFkXbDqSB0ZXN6aSBqZWd5emV0ZWsgaG96esOhYWTDoXPDoXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ1bDoWx0b3p0YXNzYSBtZWcgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCDDoWxsYXBvdMOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdNZWdoYXTDoXJvenphIGEgZGluYW1pa3VzIG1lesWRIG5ldsOpdCBhIG1lc3RlcmplZ3kgZnVua2Npw7Nuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgc3rDvGtzw6lnZXMtZSBqZWd5esOhcm9sw6FzIGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gKGhhIGEgamVneSBtw6lnIG5pbmNzIHrDoXJvbHZhLCBha2tvciBhIGplZ3kgesOhcm9sdmEgbGVzeiwgw6lzIGF6IGFrdHXDoWxpcyDDvGd5aW50w6l6xZEgYXV0b21hdGlrdXNhbiBhbm5hayB0dWxhamRvbm9zYWvDqW50IGxlc3ogYmXDoWxsw610dmEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBNYXN0ZXJTbGF2ZSBub3RlIGlzIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBhIG1lc3Rlci1hbMOhcmVuZGVsdCBqZWd5emV0IGFsYXDDqXJ0ZWxtZXpldHRlbiBsw6F0aGF0w7MgbGVneWVuIGF6IMO8Z3lmw6lsbmVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGVneSBqZWd5IGFsYXDDqXJ0ZWxtZXpldHQga8O2dmV0a2V6xZEgw6FsbGFwb3TDoXQgZWd5IGplZ3l6ZXQgaG96esOhYWTDoXNhIHV0w6FuIGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGplZ3lwcmlvcml0w6FzdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXp0IGF6IGVsxZF6bcOpbnkgbWVnamVneXrDqXN0IGhhdMOhcm96emEgbWVnIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkSBtxbF2ZWxldMOpbsOpbCwgYW1lbHlldCBhIGplZ3kgZWzFkXptw6lueWVpbsOpbCBzem9rdGFrIGhhc3puw6FsbmkgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXp0IGF6IGVsxZF6bcOpbnkgdMOtcHVzdCBoYXTDoXJvenphIG1lZyBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZEgbcWxdmVsZXTDqW7DqWwsIGFtZWx5ZXQgYSBqZWd5IGVsxZF6bcOpbnllaW7DqWwgc3pva3RhayBoYXN6bsOhbG5pIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgZWd5IGplZ3kga8O2dmV0a2V6xZEgw6FsbGFwb3TDoXQgZWd5IGplZ3l6ZXQgaG96esOhYWTDoXNhIHV0w6FuIGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnRW5nZWTDqWx5ZXppIGEgZnVua2Npw7Mgc3BlY2nDoWxpcyBtZXN0ZXItYWzDoXJlbmRlbHQgcsOpc3rDqXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYXp0IGEgZnVua2Npw7N0LCBob2d5IGF6IGFsw6FyZW5kZWx0IGplZ3llayBhIG1lc3RlcmplZ3lldCBrw7Z2ZXNzw6lrIGVneSDDumogbWVzdGVyaGV6IGEgc3BlY2nDoWxpcyBtZXN0ZXItYWzDoXJlbmRlbHQgbcOzZGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEgZnVua2Npw7N0IGVneSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCDDoWxsYXBvdMOhbmFrIG1lZ3bDoWx0b3p0YXTDoXPDoWhveiBhIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IG3Ds2RiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ0VuZ2Vkw6lseWV6aSBhIGZ1bmtjacOzdCBhIGJlamVneXrDqXNlayB0b3bDoWJiw610w6Fzw6Fob3ogZWd5IG1lc3RlcmplZ3kg4oCedG92w6FiYsOtdMOhc+KAnSB0w61wdXPDoWLDs2wgYXogYWzDoXJlbmRlbHQgamVneWVrIMO8Z3lmZWxlaWhlei4gQWxhcMOpcnRlbG1lemV0dGVuIChsZXRpbHR2YSkgbmVtIGZvZyBiZWplZ3l6w6lzZWtldCB0b3bDoWJiw610YW5pIGEg4oCedG92w6FiYsOtdMOhc+KAnSB0w61wdXNiw7NsIGF6IGFsw6FyZW5kZWx0IGplZ3lla2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYSBmdW5rY2nDs3QgYSBzesO8bMWRLWd5ZXJtZWsga2FwY3NvbGF0IG1lZ3RhcnTDoXPDoWhveiBhIG1lc3Rlci1hbMOhcmVuZGVsdCDDoWxsYXBvdCBtZWd2w6FsdG96dGF0w6FzYSB1dMOhbiBhIHNwZWNpw6FsaXMgbWVzdGVyLWFsw6FyZW5kZWx0IG3Ds2RiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYSBmdW5rY2nDs3QgYSBzesO8bMWRLWd5ZXJtZWsga2FwY3NvbGF0IG1lZ3RhcnTDoXPDoWhveiBhIG1lc3Rlci1hbMOhcmVuZGVsdCDDoWxsYXBvdCB0w7ZybMOpc2UgdXTDoW4gYSBzcGVjacOhbGlzIG1lc3Rlci1hbMOhcmVuZGVsdCBtw7NkYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0VuZ2Vkw6lseWV6aSBhIGZ1bmtjacOzdCBlZ3kgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3TDoW5hayB0w7ZybMOpc8OpaGV6IGEgc3BlY2nDoWxpcyBtZXN0ZXItYWzDoXJlbmRlbHQgbcOzZGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGEgZWd5IMO8Z3lpbnTDqXrFkSBob3p6w6FhZG90dCBlZ3kgbWVnamVneXrDqXN0LCBha2tvciBiZcOhbGzDrXRqYSBhIGplZ3kgw6FsbGFwb3TDoXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICdNZXN0ZXIgLyBhbMOhcmVuZGVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ01lc3RlcmplZ3llayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ01lc3Rlci1hbMOhcmVuZGVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTWVzdGVyLWFsw6FyZW5kZWx0IG1vZHVsIGEgamVneSB0w7ZtZWdlcyBmdW5rY2nDs2rDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgbWVzdGVyamVneWVpIMOhdHRla2ludMWRasOpbmVrIHZlesOpcmzFkXB1bHQgaMOhdHTDqXJwcm9ncmFtasOhaG96LiBBIOKAnkxpbWl04oCdIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBiZWplZ3l6w6lzZWsgc3rDoW1hLiBBIOKAnkdyb3Vw4oCdIGhhc3puw6FsaGF0w7MgYSBob3p6w6Fmw6lyw6lzIGtvcmzDoXRvesOhc8OhaG96IGEgYsWRdsOtdG3DqW55cmUgKHDDqWxkw6F1bCBHcm91cDogYWRtaW47Y3NvcG9ydDE7Y3NvcG9ydDI7KS4gQSDigJ5EZWZhdWx04oCdIGplbHppLCBob2d5IGEgYsWRdsOtdG3DqW55IGFsYXDDqXJ0ZWxtZXpldHRlbiBlbmdlZMOpbHllenZlIHZhbiwgdmFneSBob2d5IGEgZmVsaGFzem7DoWzDs25hayBrw6l6emVsIGtlbGwgZW5nZWTDqWx5ZXpuaWUgYXp0LiBBIOKAnkNhY2hlVFRMTG9jYWzigJ0gYSBixZF2w610bcOpbnkgZ3lvcnPDrXTDs3TDoXIgaWRlamUgcGVyY2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBhbMOhcmVuZGVsdCBqZWd5ZWkgw6F0dGVraW50xZFqw6luZWsgdmV6w6lybMWRcHVsdCBow6F0dMOpcnByb2dyYW1qw6Fob3ouIEEg4oCeTGltaXTigJ0gYXogYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610ZXR0IGJlamVneXrDqXNlayBzesOhbWEuIEEg4oCeR3JvdXDigJ0gaGFzem7DoWxoYXTDsyBhIGhvenrDoWbDqXLDqXMga29ybMOhdG96w6Fzw6Fob3ogYSBixZF2w610bcOpbnlyZSAocMOpbGTDoXVsIEdyb3VwOiBhZG1pbjtjc29wb3J0MTtjc29wb3J0MjspLiBBIOKAnkRlZmF1bHTigJ0gamVsemksIGhvZ3kgYSBixZF2w610bcOpbnkgYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6dmUgdmFuLCB2YWd5IGhvZ3kgYSBmZWxoYXN6bsOhbMOzbmFrIGvDqXp6ZWwga2VsbCBlbmdlZMOpbHllem5pZSBhenQuIEEg4oCeQ2FjaGVUVExMb2NhbOKAnSBhIGLFkXbDrXRtw6lueSBneW9yc8OtdMOzdMOhciBpZGVqZSBwZXJjYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnQSBqZWd5IGVzZW3DqW55IG1vZHVsIHJlZ2lzenRyw6FjacOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyBpZiBNYXN0ZXIgLyBTbGF2ZSBmaWVsZCBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC4nfSA9ICdCZcOhbGzDrXRqYSwgaG9neSBheiDDvGd5aW50w6l6xZFuZWsga2kga2VsbCB2w6FsYXN6dGFuaWEgYSBtZXN0ZXIvYWzDoXJlbmRlbHQgbWV6xZF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBheiBhbGFww6lydGVsbWV6ZXR0IHTDtnJ6c3N6w7Z2ZWdldCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gaG96esOhYWRvdHQgamVneXpldGVrbsOpbCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBheiBhbGFww6lydGVsbWV6ZXR0IHTDoXJneWF0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBob3p6w6FhZG90dCBqZWd5emV0ZWtuw6lsIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGEgamVneSBmZWxlbMWRcyDDvGd5aW50w6l6xZFqw6l0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYSBzem9sZ8OhbHRhdMOhc3QgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiAoYSBUaWNrZXQ6OlNlcnZpY2UgbGVoZXTFkXPDqWduZWsgYWt0aXbDoWx2YSBrZWxsIGxlbm5pZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGEgamVneSB0dWxhamRvbm9zw6F0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGEgamVneSB0w61wdXPDoXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiAoYSBUaWNrZXQ6OlR5cGUgbGVoZXTFkXPDqWduZWsgYWt0aXbDoWx2YSBrZWxsIGxlbm5pZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQgw6FsbGFwb3TDoW5hayBtZWd2w6FsdG96dGF0w6Fzw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBqZWd5bmFnecOtdMOhcyBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBhIGplZ3llbiByw6lzenQgdmV2xZEgw7Zzc3plcyDDvGd5aW50w6l6xZEgbGlzdMOhasOhdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdqZWxlbsOtdGkgYXogw7Zzc3plcyBsZWhldHPDqWdlcyDDvGd5aW50w6l6xZEgKGEgdsOhcsOzbGlzdMOhbiB2YWd5IGplZ3llbiBqZWd5emV0IGpvZ29zdWx0c8OhZ2dhbCByZW5kZWxrZXrFkSDDtnNzemVzIMO8Z3lpbnTDqXrFkSkgbGlzdMOhasOhdCBlZ3kgbmFnecOtdG90dCBqZWd5bmVrIGEgamVneSBtZXN0ZXItYWzDoXJlbmRlbHQga8OpcGVybnnFkWrDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGFubmFrIG1lZ2hhdMOhcm96w6Fzw6Fob3osIGhvZ3kga2l0IGtlbGwgdMOhasOpa296dGF0bmkgZXJyxZFsIGEgamVneXpldHLFkWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBhIGplZ3kgcHJpb3JpdMOhc2kgbGVoZXTFkXPDqWdla2V0IGVneSBuYWd5w610b3R0IGplZ3luZWsgYSBqZWd5IG1lc3Rlci1hbMOhcmVuZGVsdCBrw6lwZXJuecWRasOpbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBhIGPDrW1tZXrFkXQgZWd5IG5hZ3nDrXRvdHQgamVneW5layBhIGplZ3kgbWVzdGVyLWFsw6FyZW5kZWx0IGvDqXBlcm55xZFqw6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ0Fsw6FyZW5kZWx0IGplZ3llayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ01lZ2FkamEgYSBrw7xsw7ZuYsO2esWRIGJlamVneXrDqXMga29tbXVuaWvDoWNpw7NzIGNzYXRvcm7DoWthdCwgYWhvbCBhIG1lc3RlcmplZ3liZW4gbMOpdsWRIHZhbMOzZGkgbsOpdiBraSBsZXN6IGNzZXLDqWx2ZSBheiBhbMOhcmVuZGVsdCBqZWd5YmVuIGzDqXbFkXZlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnRXogYSBtb2R1bCBiZWthcGNzb2xqYSBhIG1lc3Rlci9hbMOhcmVuZGVsdCBtZXrFkXQgYXogw7pqIGUtbWFpbCDDqXMgdGVsZWZvbm9zIGplZ3kga8OpcGVybnnFkWvDtm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBlbGF2dWx0LCDDqXMgZWwgbGVzeiB0w6F2b2zDrXR2YSBheiBPVFJTTWFzdGVyU2xhdmUga8Opc8WRYmJpIHZlcnppw7NpYsOzbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJ0plZ3kgbWVzdGVyLWFsw6FyZW5kZWx0Lic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQmlkYW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ1Rpa2V0IG1hc3RlciBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdUaWRhayBwZXJsdSBzZXQgdGlrZXQgbWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ0xlcGFza2FuIHNldCB0aWtldCBzbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdNZWxlcGFzIHRpa2V0IG1hc3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnTWVsZXBhc2thbiB0aWtldCBzbGF2ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdJbmR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ1NlbXVhIHRpa2V0IG1hc3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ1NlbXVhIHRpa2V0IHNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gbWVuYW1iYWhrYW4gY2F0YXRhbiBkYWxhbSBsYXlhciB0aWtldCBtYXN0ZXIgc2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdNZW5ndWJhaCBrZWFkYWFuIE1hc3RlciBzbGF2ZSB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdNZW5kZWZpbmlzaWthbiBuYW1hIGZpZWxkIHlhbmcgZGluYW1pcyB1bnR1ayBmaXR1ciB1dGFtYSB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBqaWthIGt1bmNpIHRpa2V0IGRpcGVybHVrYW4gZGkgbGF5YXIgTWFzdGVyU2xhdmUgdGlrZXQgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4gKGppa2EgdGlrZXQgdGlkYWsgdGVya3VuY2kgbGFnaSwgdGlrZXQgYWthbiB0ZXJrdW5jaSBkYW4gYWdlbiBzYWF0IGluaSBha2FuIGRpYXR1ciBzZWNhcmEgb3RvbWF0aXMgc2ViYWdhaSBwZW1pbGlrbnlhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBkZWZhdWx0IHN0YXRlIGJlcmlrdXRueWEgdGlrZXQgc2V0ZWxhaCBtZW5hbWJhaGthbiBjYXRhdGFuLCBkYWxhbSB0aWtldCBHdXJ1IGxheWFyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHByaW9yaXRhcyB0aWtldCBkZWZhdWx0IGRpIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGtvbWVudGFyIHNlamFyYWggdW50dWsgdGluZGFrYW4gdGlrZXQgbWFzdGVyc2xhdmUgcGFkYSBsYXlhciwgeWFuZyBha2FuIGRpZ3VuYWthbiB1bnR1ayBzZWphcmFoIHRpa2V0IGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gamVuaXMgc2VqYXJhaCB1bnR1ayB0aW5kYWthbiB0aWtldCBtYXN0ZXIgc2xhdmUgZGkgbGF5YXIsIHlhbmcgYWthbiBkaWd1bmFrYW4gdW50dWsgc2VqYXJhaCB0aWtldCBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHN0YXRlIGJlcmlrdXRueWEgdGlrZXQgc2V0ZWxhaCBtZW5hbWJhaGthbiBjYXRhdGFuLCBkYWxhbSBsYXlhciB0aWtldCBNYXN0ZXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnTWVtdW5na2lua2FuIE1hc3RlciBzbGF2ZSBiYWdpYW4gZGFyaSBmaXR1ciB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ01lbmdha3RpZmthbiBmaXR1ciB0aWtldCBzbGF2ZSB1bnR1ayBtZW5naWt1dGkgdGlrZXQgbWFzdGVyIGJhcnUgZGFsYW0gbW9kdXMgTWFzdGVyIFNsYXZlIGNhbmdnaWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciB1bnR1ayBtZW5ndWJhaCBrZWFkYWFuIE1hc3RlciBzbGF2ZSBkYXJpIHRpa2V0IGRhbGFtIG1vZHVzIE1hc3RlciBTbGF2ZSBjYW5nZ2loLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgdW50dWsgbWVuZXJ1c2thbiBhcnRpa2VsIGRhcmkgamVuaXMgXCdtYWp1XCcgZGFyaSB0aWtldCBtYXN0ZXIgdW50dWsgcGVsYW5nZ2FuIGRhcmkgdGlrZXQgc2xhdmUuIFNlY2FyYSBkZWZhdWx0IChjYWNhdCkgaXR1IHRpZGFrIGFrYW4gbWVuZXJ1c2thbiBhcnRpa2VsIGRhcmkgamVuaXMgXCdtYWp1XCcgdW50dWsgdGlrZXQgc2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIHVudHVrIG1lbmphZ2EgbGluayBvcmFuZ3R1YS1hbmFrIHNldGVsYWggcGVydWJhaGFuIGRhcmkgc3RhdGUgTWFzdGVyIHNsYXZlIGRhbGFtIG1vZHVzIE1hc3RlciBTbGF2ZSBjYW5nZ2loLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIHVudHVrIG1lbmphZ2EgbGluayBvcmFuZ3R1YS1hbmFrIHNldGVsYWggZGlzZXQgZGFyaSBuZWdhcmEgTWFzdGVyIHNsYXZlIGRhbGFtIG1vZHVzIE1hc3RlciBTbGF2ZSBjYW5nZ2loLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciB5YW5nIHRpZGFrIGRpIHNldCBNYXN0ZXIgc2xhdmUgZGFyaSB0aWtldCBkYWxhbSBtb2R1cyBNYXN0ZXIgU2xhdmUgY2FuZ2dpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSmlrYSBjYXRhdGFuIGRpdGFtYmFoa2FuIG9sZWggYWdlbiwgbWVuZXRhcGthbiBrZWFkYWFuIHRpa2V0IGRpIHRpa2V0IGxheWFyIE1hc3RlclNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hc3Rlci9TbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ1Rpa2V0IE1hc3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ01hc3RlclNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNb2R1bCBNYXN0ZXJTbGF2ZSB1bnR1ayBmaXR1ciB0aWtldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgYmFja2VuZCBkYXNoYm9hcmQgdGlrZXQgbWVuZ3Vhc2FpIGdhbWJhcmFuIGRhcmkgYW50YXJtdWthIGFnZW4uICJCYXRhcyIgYWRhbGFoIGp1bWxhaCBlbnRyaSB5YW5nIGRpdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0LiAiR3J1cCIgZGlndW5ha2FuIHVudHVrIG1lbWJhdGFzaSBha3NlcyBrZSBwbHVnaW4gKGUgZyBHcnVwOiBBZG1pbjtncm91cDEsZ3JvdXAyOykuICJEZWZhdWx0IiBtZW5lbnR1a2FuIGFwYWthaCBwbHVnaW4gZGlha3RpZmthbiBzZWNhcmEgZGVmYXVsdCBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgbWVuZ2FrdGlma2FubnlhIHNlY2FyYSBtYW51YWwuICJDYWNoZVRUTExvY2FsIiBhZGFsYWggd2FrdHUgY2FjaGUgZGkgbWVuaXQgdW50dWsgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBiYWNrZW5kIGRhc2hib2FyZCB0aWtldCBidWRhayBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLiAiQmF0YXMiIGFkYWxhaCBqdW1sYWggZW50cmkgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdC4gIkdydXAiIGRpZ3VuYWthbiB1bnR1ayBtZW1iYXRhc2kgYWtzZXMga2UgcGx1Z2luIChlIGcgR3J1cDogQWRtaW47Z3JvdXAxLGdyb3VwMjspLiAiRGVmYXVsdCIgbWVuZW50dWthbiBhcGFrYWggcGx1Z2luIGRpYWt0aWZrYW4gc2VjYXJhIGRlZmF1bHQgYXRhdSBqaWthIHBlbmdndW5hIHBlcmx1IG1lbmdha3RpZmthbm55YSBzZWNhcmEgbWFudWFsLiAiQ2FjaGVUVExMb2NhbCIgYWRhbGFoIHdha3R1IGNhY2hlIGRpIG1lbml0IHVudHVrIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1BlbmRhZnRhcmFuIG1vZHVsIGFjYXJhIHRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBsYXlhIHRpa2V0IE1hc3RlclNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIGlmIE1hc3RlciAvIFNsYXZlIGZpZWxkIG11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGFnZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5nYXR1ciB0ZWtzIHR1YnVoIGRlZmF1bHQgdW50dWsgY2F0YXRhbiBkaXRhbWJhaGthbiBkYWxhbSBsYXlhciB0aWtldCBNYXN0ZXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5nYXR1ciBUZWtzIFR1YnVoIGJhd2FhbiB1bnR1ayByZXZpZXcgQ2F0YXRhbiBkaXRhbWJhaGthbiBoZWFydHMgVGlrZXQgTGF5YXIgU2xhdmUgRGFyaSBUaWtldCBZYW5nIGRpcGVyYmVzYXIgZGkgQW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQgYWdlbiB5YW5nIGJlcnRhbmdndW5nIGphd2FiIGRhcmkgdGlrZXQgZGkgbGF5YXIgdGlrZXQgTWFzdGVyIFNsYXZlIGRhcmkgdGlrZXQgeWFuZyBkaXBlcmJlc2FyIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ1NldCBsYXlhbmFuIGRhbGFtIHRpa2V0IEd1cnUgbGF5YXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4gKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZXRhcGthbiBwZW1pbGlrIHRpa2V0IGRpIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnTWVuZXRhcGthbiBqZW5pcyB0aWtldCBkaSBsYXlhciB0aWtldCBNYXN0ZXIgU2xhdmUgZGFyaSB0aWtldCB5YW5nIGRpcGVyYmVzYXIgZGkgYW50YXJtdWthIGFnZW4gIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZ3ViYWggc3RhdHVzIE1hc3RlciBzbGF2ZSBkYXJpIHRpa2V0IGRhbGFtIHRhbXBpbGFuIHpvb20gdGlrZXQgZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGRhZnRhciBzZW11YSBhZ2VuIHlhbmcgdGVybGliYXQgcGFkYSB0aWtldCBpbmksIGRhbGFtIGxheWFyIHRpa2V0IE1hc3RlciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gZGFmdGFyIHNlbXVhIGFnZW4geWFuZyBtdW5na2luIChzZW11YSBhZ2VuIGRlbmdhbiBpemluIGNhdGF0YW4gZGkgYW50cmlhbiAvIHRpa2V0KSB1bnR1ayBtZW5lbnR1a2FuIHNpYXBhIHlhbmcgaGFydXMgZGliZXJpdGFodSB0ZW50YW5nIGNhdGF0YW4gaW5pLCBkaSBsYXlhciBNYXN0ZXJTbGF2ZSB0aWtldCBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGlsaWhhbiBwcmlvcml0YXMgdGlrZXQgZGkgdGlrZXQgR3VydSBsYXlhciBTbGF2ZSBkYXJpIHRpa2V0IHlhbmcgZGlwZXJiZXNhciBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdUaWtldCBzbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdNb2R1bCBpbmkgbWVuZ2FrdGlma2FuIGJpZGFuZyBNYXN0ZXIgLyBTbGF2ZSBkaSBiYXJ1IGxheWFyIGVtYWlsIGRhbiB0aWtldCB0ZWxlcG9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdUaWtldCBNYXN0ZXJTbGF2ZS4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIE1hc3RlclNsYXZlIG5vdGUgaXMgdmlzaWJsZSBmb3IgdGhlIGN1c3RvbWVyIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIGlmIE1hc3RlciAvIFNsYXZlIGZpZWxkIG11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGFnZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAn44OV44Kj44O844Or44OJJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJXMlcyVz44Gu44Oe44K544K/L+OCueODrOODvOODluOCueODhuODvOOCv+OCueOCkueuoeeQhuOBmeOCiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICfmlrDjgZfjgYTjg57jgrnjgr/jg7zjg4HjgrHjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ+ODnuOCueOCv+ODvOODgeOCseODg+ODiOOCkuino+mZpOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICfjgrnjg6zjg7zjg5bjg4HjgrHjg4Pjg4jjgpLop6PpmaTjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyVzJXMlc+OBruOCueODrOODvOODljogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ+ODnuOCueOCv+ODvOODgeOCseODg+ODiOOCkuino+mZpOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAn44K544Os44O844OW44OB44Kx44OD44OI44KS6Kej6Zmk44GZ44KLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ+ODnuOCueOCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ+ODnuOCueOCv+ODvCDjg4HjgrHjg4Pjg4gnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICfjgZnjgbnjgabjga7jg57jgrnjgr/jg7zjg4HjgrHjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICfjgZnjgbnjgabjga7jgrnjg6zjg7zjg5bjg4HjgrHjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOOCueODrOOCpOODlueUu+mdouOBp+OAgeazqOmHiOOBrui/veWKoOOCkuioseWPr+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW54q25rOB44KS5aSJ5pu044GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAn44Oe44K544K/44O844O744K544Os44O844OW5YuV55qE44OV44Kj44O844Or44OJ5ZCN44KS6Kit5a6a44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIE1hc3RlclNsYXZlIG5vdGUgaXMgdmlzaWJsZSBmb3IgdGhlIGN1c3RvbWVyIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K5IOOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgeODh+ODleOCqeODq+ODiOOBriDjg4HjgrHjg4Pjg4gg5YSq5YWI5bqm44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jg4HjgrHjg4Pjg4jlsaXmrbTjgafkvb/nlKjjgZXjgozjgovjgIHjg4HjgrHjg4Pjg4jjg7vjg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgqLjgq/jgrfjg6fjg7PjgavplqLjgZnjgovlsaXmrbTjgrPjg6Hjg7Pjg4jjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruODgeOCseODg+ODiOWxpeattOOBp+S9v+eUqOOBleOCjOOCi+OAgeODgeOCseODg+ODiOODu+ODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOCouOCr+OCt+ODp+ODs+OBq+mWouOBmeOCi+WxpeattOOCv+OCpOODl+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ+ODnuOCueOCv+ODvCAvIOOCueODrOODvOODlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ+ODnuOCueOCv+ODvOODgeOCseODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ+ODnuOCueOCv+ODvOODu+OCueODrOODvOODlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTWFzdGVyU2xhdmUg44Oi44K444Ol44O844Or44Gu44OB44Kx44OD44OI5LiA5ous5Yem55CG5qmf6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAn44OB44Kx44OD44OI44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44Gu55m76YyyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBp+OAgeOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBruW/heimgeOBquioseWPr+OBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIGlmIE1hc3RlciAvIFNsYXZlIGZpZWxkIG11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGFnZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgafjgIHov73liqDjgZXjgozjgZ/jg6Hjg6Ljga7jg4fjg5Xjgqnjg6vjg4jjga7mnKzmlofjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgei/veWKoOOBleOCjOOBn+ODoeODouOBruODh+ODleOCqeODq+ODiOOBruS7tuWQjeOCkuioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Gn44CB44OB44Kx44OD44OI44Gu6LKs5Lu744KS5pyJ44GZ44KL5ouF5b2T6ICF44KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu44K644O844Og44GV44KM44Gf44OB44Kx44OD44OI44Gu44OB44Kx44OD44OI44Gu44Oe44K544K/44O844O744K544Os44O844OW55S76Z2i44Gn44CB44K144O844OT44K544KS6Kit5a6a44GX44G+44GZIChUaWNrZXQ6OlNlcnZpY2XjgpLmnInlirnjgajjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZkp44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOOBleOCjOOBn+ODgeOCseODg+ODiOOBruODnuOCueOCv+ODvOODu+OCueODrOODvOODlueUu+mdouOBp+OAgeODgeOCseODg+ODiOaJgOacieiAheOCkuioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jgrrjg7zjg6DjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7jg4HjgrHjg4Pjg4jjga7jg57jgrnjgr/jg7zjg7vjgrnjg6zjg7zjg5bnlLvpnaLjgafjgIHjg4HjgrHjg4Pjg4jjg7vjgr/jgqTjg5fjgpLoqK3lrprjgZfjgb7jgZkoVGlja2V0OjpUeXBl44KS5pyJ5Yq544Go44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICfjgrnjg6zjg7zjg5bjg4HjgrHjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAn44GT44Gu44Oi44K444Ol44O844Or44Gv44CB5paw6KaP44Oh44O844OrL+mbu+ipseODgeOCseODg+ODiOOBq+OAgeODnuOCueOCv+ODvC/jgrnjg6zjg7zjg5bjg4HjgrHjg4Pjg4jmrITjgpLov73liqDjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXJ0aGVyIHZlcnNpb25zIG9mIE9UUlNNYXN0ZXJTbGF2ZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAn44Oe44K544K/44O844O744K544Os44O844OW44OB44Kx44OD44OIJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQmlkYW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ1Rpa2V0IE1hc3RlciBCYWhhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ1Rpa2V0IE1hc3RlciBUaWRhayBEaXRldGFwa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ1Rpa2V0IFNsYXZlIFRpZGFrIERpdGV0YXBrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzOiAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML1RpY2tldEJ1bGsvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnSW5kdWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWJlbmFya2FuIG1lbmFtYmFoIG5vdGEgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgYmFnaSB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnVWJhaCBrZWFkYWFuIHRpa2V0IE1hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBqaWthIGt1bmNpIHRpa2V0IGRpcGVybHVrYW4gZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbiAoamlrYSB0aWtldCBpdHUgdGlkYWsgZGlrdW5jaSBsYWdpLCB0aWtldCB5YW5nIGFrYW4gZGlrdW5jaSBkYW4gZWplbiBzZW1hc2EgYWthbiBkaXRldGFwa2FuIHNlY2FyYSBhdXRvbWF0aWsgc2ViYWdhaSBwZW1pbGlrbnlhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga2VhZGFhbiBkZWZhdWx0IHNldGVydXNueWEgYmFnaSB0aWtldCBzZWxlcGFzIG1lbmFtYmFoIG5vdGEsIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtldXRhbWFhbiB0aWtldCBkZWZhdWx0IGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga29tZW4gc2VqYXJhaCBiYWdpIGtlc2FuIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0LCB5YW5nIGFrYW4gZGlndW5ha2FuIHVudHVrIHNlamFyYWggdGlrZXQgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBqZW5pcyBzZWphcmFoIGJhZ2kgdGluZGFrYW4gc2tyaW4gdGlrZXQgTWFzdGVyU2xhdmUsIHlhbmcgYWthbiBkaWd1bmFrYW4gdW50dWsgc2VqYXJhaCB0aWtldCBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtlYWRhYW4gc2V0ZXJ1c255YSBiYWdpIHRpa2V0IHNlbGVwYXMgbWVuYW1iYWggbm90YSwgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byB1bnNldCB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSmlrYSBub3RhIGRpdGFtYmFoIG9sZWggZWplbiwgdGV0YXBrYW4ga2VhZGFhbiB0aWtldCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hc3RlciAvIFNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNb2R1bCBNYXN0ZXJTbGF2ZSB1bnR1ayBjaXJpIEJ1bGsgVGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBiYWhhZ2lhbiBiZWxha2FuZyBwYXBhbiBwZW11a2EgZGFyaXBhZGEgZ2FtYmFyYW4ga2VzZWx1cnVoYW4gdGlrZXQgbWFzdGVyIGFudGFyYSBtdWthIGVqZW4uICJIYWQiIGFkYWxhaCBiaWxhbmdhbiBwZW55ZXJ0YWFuIGRpdHVuanVra2FuIHNlY2FyYSBkZWZhdWx0LiAiS3VtcHVsYW4iIGRpZ3VuYWthbiB1bnR1ayBtZW55ZWthdCBha3NlcyBrZXBhZGEgbWFzdWsgKGNvbnRvaDogS3VtcHVsYW46IGFkbWluOyBrdW1wdWxhbjE7IGt1bXB1bGFuMjspLiAiRGVmYXVsdCIgbWVuZW50dWthbiBqaWthIHBsdWdpbiBpbmkgZGlha3RpZmthbiBzZWNhcmEgZGVmYXVsdCBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgdW50dWsgbWVtYm9sZWhrYW4gc2VjYXJhIG1hbnVhbC4gIkNhY2hlVFRMTG9jYWwiIGFkYWxhaCBtYXNhIGNhY2hlIGRhbGFtIG1pbml0IHVudHVrIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgYmFoYWdpYW4gYmVsYWthbmcgcGFwYW4gcGVtdWthIGRhcmlwYWRhIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIHRpa2V0IHNsYXZlIGFudGFyYSBtdWthIGVqZW4uICJIYWQiIGFkYWxhaCBiaWxhbmdhbiBwZW55ZXJ0YWFuIGRpdHVuanVra2FuIHNlY2FyYSBkZWZhdWx0LiAiS3VtcHVsYW4iIGRpZ3VuYWthbiB1bnR1ayBtZW55ZWthdCBha3NlcyBrZXBhZGEgbWFzdWsgKGNvbnRvaDogS3VtcHVsYW46IGFkbWluOyBrdW1wdWxhbjE7IGt1bXB1bGFuMjspLiAiRGVmYXVsdCIgbWVuZW50dWthbiBqaWthIHBsdWdpbiBpbmkgZGlha3RpZmthbiBzZWNhcmEgZGVmYXVsdCBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgdW50dWsgbWVtYm9sZWhrYW4gc2VjYXJhIG1hbnVhbC4gIkNhY2hlVFRMTG9jYWwiIGFkYWxhaCBtYXNhIGNhY2hlIGRhbGFtIG1pbml0IHVudHVrIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1BlbmRhZnRhcmFuIHRpa2V0IG1vZHVsIGFjYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4gdGVrcyBiYWRhbiBkZWZhdWx0IHVudHVrIG5vdGEgZGl0YW1iYWggZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBzdWJqZWsgZGVmYXVsdCB1bnR1ayBub3RhIGRpdGFtYmFoIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQgZWplbiB5YW5nIGJlcnRhbmdndW5namF3YWIgYmFnaSB0aWtldCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ1NldCBwZXJraGlkbWF0YW4gZGkgc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbiAoVGlrZXQ6OlBlcmtoaWRtYXRhbiBwZXJsdSBkaWFrdGlma2FuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IHBlbWlsaWsgdGlrZXQgZGFsYW0gc2tyaW4gTWFzdGVyU2xhdmUgdGlrZXQgdGlrZXQgZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnTWVuZXRhcGthbiBqZW5pcyB0aWtldCB5YW5nIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4gKFRpa2V0OjpKZW5pcyBwZXJsdSBkaWFrdGlma2FuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW51a2FyIHN0YXR1cyBNYXN0ZXJTbGF2ZSBiYWdpIHRpa2V0IGRhbGFtIHBhbmRhbmdhbiB6dW0gdGlrZXQgYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtYXBhcmthbiBzZW5hcmFpIHNlbXVhIGVqZW4geWFuZyB0ZXJsaWJhdCBkYWxhbSB0aWtldCBpbmksIGRhbGFtIHNrcmluIE1hc3RlclNsYXZlIHRpa2V0IHRpa2V0IGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWFwYXJrYW4gc2VuYXJhaSBzZW11YSBrZW11bmdraW5hbiBlamVuIChzZW11YSBlamVuIGRlbmdhbiBrZWJlbmFyYW4gbm90YSBtZW5nZW5haSBiYXJpc2FuL3Rpa2V0KSB1bnR1ayBtZW5lbnR1a2FuIHNpYXBhIHlhbmcgcGVybHUgZGliZXJpdGFodSB0ZW50YW5nIG5vdGEgaW5pLCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwaWxpaGFuIGtldXRhbWFhbiB0aWtldCBkYWxhbSBza3JpbiBNYXN0ZXJTbGF2ZSB0aWtldCB0aWtldCBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdNb2R1bCBpbmkgbWVuZ2FrdGlma2FuIG1lZGFuIE1hc3Rlci9TbGF2ZSBkaSBza3JpbiBlbWVsIGRhbiB0aWtldCB0ZWxlZm9uIGJhcnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnUG9sZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ1VzdGF3IHN0YW4gTmFkcnrEmWRueS9Qb2RyesSZZG55IGRsYSAlcyVzJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAnTm93ZSB6Z8WCb3N6ZW5pZSBuYWRyesSZZG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICdXecWCxIVjeiB3YXJ0b8WbxIcgTmFkcnrEmWRueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICdXecWCxIVjeiB3YXJ0b8WbxIcgUG9kcnrEmWRueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnUG9kcnrEmWRuZSBkbyAlcyVzJXM6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdXeWN6ecWbxIcgd2FydG/Fm8SHIE5hZHJ6xJlkbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJ1d5Y3p5xZvEhyB3YXJ0b8WbxIcgUG9kcnrEmWRueSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdOYWRyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlcyd9ID0gJ1BvZHJ6xJlkbnkgZG8gJXMlcyVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdaZ8WCb3N6ZW5pZSBuYWRyesSZZG5lJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnV3N6eXN0a2llIHpnxYJvc3plbmlhIG5hZHJ6xJlkbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICdXc3p5c3RraWUgemfFgm9zemVuaWEgcG9kcnrEmWRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG96d2FsYSBuYSBkb2RhbmllIG5vdGF0a2kgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHd5d2/FgmFueW0geiBwcnp5YmxpxbxvbmVnbyB3aWRva3UgemfFgm9zemVuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgdGhlIHRpY2tldC4nfSA9ICdabWllxYQgc3RhbiB6Z8WCb3N6ZW5pYSBkbGEgTmFkcnrEmWRueS9Qb2RyesSZZG55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ09rcmXFm2xhIG5henfEmSBwb2xhIGR5bmFtaWN6bmVnbyBkbGEgZnVua2Nqb25hbG5vxZtjaSB6Z8WCb3N6ZW5pYSBuYWRyesSZZG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGN6eSB3eW1hZ2FuYSBqZXN0IHphYmxva293YW5pZSB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEgKGplxZtsaSB6Z8WCb3N6ZW5pZSBuaWUgamVzdCBqZXN6Y3plIHphYmxva293YW5lLCBzdGFqZSBzacSZwqB6YWJsb2tvd2FuZSwgYSBiaWXFvMSFY3kgYWdlbnQgc3RhamUgc2nEmSBqZWdvIHfFgmHFm2NpY2llbGVtKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbnkgbmFzdMSZcG55IHN0YW4gemfFgm9zemVuaWEgcG8gZG9kYW5pdSBub3RhdGtpIG5hIGVrcmFuaWUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbnkgcHJpb3J5dGV0IHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGtvbWVudGFyeiBoaXN0b3JpaSBkbGEgYWtjamkgemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkga3TDs3J5IHpvc3RhbmllIHXFvHl0eSB3IGhpc3RvcmlpIHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgdHlwIGhpc3RvcmlpIGRsYSBha2NqaSB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSBrdMOzcnkgem9zdGFuaWUgdcW8eXR5IHcgaGlzdG9yaWkgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBuYXN0xJlwbnkgc3RhbiB6Z8WCb3N6ZW5pYSBwbyBkb2Rhbml1IG5vdGF0a2kgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBwYXJ0IG9mIHRoZSBmZWF0dXJlLid9ID0gJ1fFgsSFY3phIHphYXdhbnNvd2FuxIUgY3rEmcWbxIcgZnVua2Nqb25hbG5vxZtjaSBOYWRyesSZZG55L1BvZHJ6xJlkbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdXxYLEhWN6YSBmdW5rY2pvbmFsbm/Fm8SHIHRyeWJ1IHphYXdhbnNvd2FuZWdvIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSwgdyBrdMOzcmVqIHpnxYJvc3plbmlhIHBvZHJ6xJlkbmUgcG9kxIXFvGFqxIUgemEgemfFgm9zemVuaWVtIG5hZHJ6xJlkbnltIGRvIG5vd2VnbyB6Z8WCb3N6ZW5pYSBuYWRyesSZZG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjam9uYWxub8WbxIcgdHJ5YnUgemFhd2Fuc293YW5lZ28gTmFkcnrEmWRueS9Qb2RyesSZZG55IHVtb8W8bGl3aWFqxIVjxIUgem1pYW7EmSBzdGFudSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyB6Z8WCb3N6ZW5pdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyBvZiBhIG1hc3RlciB0aWNrZXQgdG8gdGhlIGN1c3RvbWVycyBvZiB0aGUgc2xhdmUgdGlja2V0cy4gQnkgZGVmYXVsdCAoZGlzYWJsZWQpIGl0IHdpbGwgbm90IGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIHRvIHRoZSBzbGF2ZSB0aWNrZXRzLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyBwcnplc3nFgmFuaWEgYXJ0eWt1xYLDs3cgdHlwdSAicHJ6ZWthxbwiIHplIHpnxYJvc3plbmlhIG5hZHJ6xJlkbmVnbyBkbyBrbGllbnTDs3cgemfFgm9zemXFhCBwb2RyesSZZG55Y2guIERvbXnFm2xuaWUgKHd5xYLEhWN6b25lKSBhcnR5a3XFgnkgdHlwdSAicHJ6ZWthxbwiIG5pZSBzxIUgcHJ6ZWthenl3YW5lIGRvIHpnxYJvc3plxYQgcG9kcnrEmWRueWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjam9uYWxub8WbxIcgdHJ5YnUgemFhd2Fuc293YW5lZ28gTmFkcnrEmWRueS9Qb2RyesSZZG55LCBwb2xlZ2FqxIVjxIUgbmEgdXRyenltYW5pdSBwb8WCxIVjemVuaWEgcm9kemljLWR6aWVja28gcG8gem1pYW5pZSB6YWxlxbxub8WbY2kgTmFkcnrEmWRueS9Qb2RyesSZZG55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyB0cnlidSB6YWF3YW5zb3dhbmVnbyBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHBvbGVnYWrEhWPEhSBuYSB1dHJ6eW1hbml1IHBvxYLEhWN6ZW5pYSByb2R6aWMtZHppZWNrbyBwbyB1c3VuacSZY2l1IHphbGXFvG5vxZtjaSBOYWRyesSZZG55L1BvZHJ6xJlkbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2Nqb25hbG5vxZvEhyB0cnlidSB6YWF3YW5zb3dhbmVnbyBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHVzdXdhbmlhIHN0YW51IE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB6ZSB6Z8WCb3N6ZW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50LCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSmXFm2xpIGFnZW50IGRvZGEgbm90YXRrxJksIHRvIHVzdGF3aWFueSBqZXN0IHN0YW4gemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgb2tuYSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ05hZHJ6xJlkbnkgLyBQb2RyesSZZG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAnWmfFgm9zemVuaWEgbmFkcnrEmWRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ05hZHJ6xJlkbnkvUG9kcnrEmWRueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnTW9kdcWCIE5hZHJ6xJlkbnljaC9Qb2RyesSZZG55Y2ggZGxhIGZ1bmtjamkgZ3J1cG93eWNoIHpnxYJvc3plxYQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyIG9rbmEgcHVscGl0dSB6Z8WCb3N6ZcWEIG5hZHJ6xJlkbnljaCBpbnRlcmZlanN1IGFnZW50YS4gIkxpbWl0IiBqZXN0IGxpY3pixIUgd2llcnN6eSBwb2thenl3YW7EhSBkb215xZtsbmllLiAiR3JvdXAiIGplc3QgdcW8eXdhbmEgZG8gb2dyYW5pY3plbmlhIGRvc3TEmXB1IGRvIHd0eWN6a2kgKG5wLjogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIG9rcmXFm2xhIGN6eSB3dHljemthIGplc3QgZG9tecWbbG5pZSB3xYLEhWN6b25hIGx1YiBjenkgdcW8eXRrb3duaWsgbW/FvGUgd8WCxIVjennEhyBqxIUgcsSZY3puaWUuICJDYWNoZVRUTExvY2FsIiBqZXN0IGN6YXNlbSBwb2RhbnltIHcgbWludXRhY2ggb2tyZcWbbGFqxIVjeW0gY3phcyBjYWNoZVwnb3dhbmlhIHd0eWN6a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldHIgb2tuYSBwdWxwaXR1IHpnxYJvc3plxYQgcG9kcnrEmWRueWNoIGludGVyZmVqc3UgYWdlbnRhLiAiTGltaXQiIGplc3QgbGljemLEhSB3aWVyc3p5IHBva2F6eXdhbsSFIGRvbXnFm2xuaWUuICJHcm91cCIgamVzdCB1xbx5d2FuYSBkbyBvZ3JhbmljemVuaWEgZG9zdMSZcHUgZG8gd3R5Y3praSAobnAuOiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2tyZcWbbGEgY3p5IHd0eWN6a2EgamVzdCBkb215xZtsbmllIHfFgsSFY3pvbmEgbHViIGN6eSB1xbx5dGtvd25payBtb8W8ZSB3xYLEhWN6ecSHIGrEhSByxJljem5pZS4gIkNhY2hlVFRMTG9jYWwiIGplc3QgY3phc2VtIHBvZGFueW0gdyBtaW51dGFjaCBva3JlxZtsYWrEhWN5bSBjemFzIGNhY2hlXCdvd2FuaWEgd3R5Y3praS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlamVzdHJhY2phIG1vZHXFgnUgemRhcnplxYQgemfFgm9zemVuaWEsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwcmF3bmllbmlhIHd5bWFnYW5lIGRvIHXFvHl3YW5pYSBla3JhbnUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyBpZiBNYXN0ZXIgLyBTbGF2ZSBmaWVsZCBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC4nfSA9ICdPa3JlxZtsYSwgY3p5IHBvbGUgTmFkcnrEmWRueS9Qb2RyesSZZG55IG11c2kgYnnEhyB3eWJyYW5lIHByemV6IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBkb215xZtsbsSFIHRyZcWbxIcgbm90YXRraSBkb2Rhd2FuZWogZG8gemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBkb215xZtsbnkgdGVtYXQgZGxhIG5vdGF0ZWsgZG9kYXdhbnljaCBkbyB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIHN6Y3plZ8OzxYLDs3cgemfFgm9zemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIG9kcG93aWVkemlhbG5lZ28gemEgemfFgm9zemVuaWUgYWdlbnRhIG5hIGVrcmFuaWUgTmFkcnrEmWRueS9Qb2RyesSZZG55IHcgb2tuaWUgc3pjemVnw7PFgsOzdyB6Z8WCb3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdVc3Rhd2lhIHVzxYJ1Z8SZIHcgemfFgm9zemVuaXUgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhIChUaWNrZXQ6OlNlcnZpY2UgbXVzaSBiecSHIGFrdHl3b3dhbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIHfFgmHFm2NpY2llbGEgemfFgm9zemVuaWEgbmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnkgdyBva25pZSBzemN6ZWfDs8WCw7N3IHpnxYJvc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdVc3Rhd2lhIHR5cCB6Z8WCb3N6ZW5pYSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSwgd3l3b8WCYW55bSB6IHByenlibGnFvG9uZWdvIHdpZG9rdSB6Z8WCb3N6ZW5pYSB3IGludGVyZmVqc2llIGFnZW50IChUaWNrZXQ6OlR5cGUgbXVzaSBiecSHIGFrdHl3b3dhbnkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hIGVrcmFuaWUgcHJ6eWJsacW8b25lZ28gd2lkb2t1IHpnxYJvc3plbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLCBwb2thenVqZSBsaW5rIHcgbWVudSBkbyB6bWlhbnkgc3RhbnUgTmFkcnrEmWRueS9Qb2RyesSZZG55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmEgZWtyYW5pZSBOYWRyesSZZG55L1BvZHJ6xJlkbnksIHd5d2/FgmFueW0geiBwcnp5YmxpxbxvbmVnbyB3aWRva3UgemfFgm9zemVuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEsIHBva2F6dWplIGxpc3TEmSB3c3p5c3RraWNoIGFnZW50w7N3IHphYW5nYcW8b3dhbnljaCB3IHpnxYJvc3plbmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSwgd3l3b8WCYW55bSB6IHByenlibGnFvG9uZWdvIHdpZG9rdSB6Z8WCb3N6ZW5pYSB3IGludGVyZmVqc2llIGFnZW50YSwgcG9rYXp1amUgbGlzdMSZIHdzenlzdGtpY2ggbW/FvGxpd3ljaCBhZ2VudMOzdyAod3N6eXN0a2ljaCBhZ2VudMOzdyB6IHVwcmF3bmllbmlhbWkgZG8gbm90YXRlayB3IGtvbGVqY2UvemfFgm9zemVuaXUpLCB3IGNlbHUgb2tyZcWbbGVuaWEga3RvIHBvd2luaWVuIGJ5xIcgcG9pbmZvcm1vd2FueSBvIHRlaiBub3RhdGNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2thenVqZSBvcGNqZSBwcmlvcnl0ZXR1IHpnxYJvc3plbmlhIG5hIGVrcmFuaWUgTmFkcnrEmWRueS9Qb2RyesSZZG55LCB3eXdvxYJhbnltIHogcHJ6eWJsacW8b25lZ28gd2lkb2t1IHpnxYJvc3plbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIHBvbGUgdHl0dcWCdSBuYSBla3JhbmllIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IHN6Y3plZ8OzxYJhY2ggemfFgm9zemVuaWEgdyBpbnRlZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ1pnxYJvc3plbmlhIHBvZHJ6xJlkbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnVGVuIG1vZHXFgiBha3R5d3VqZSBwb2xlIE5hZHJ6xJlkbnkvUG9kcnrEmWRueSB3IG9rbmllIG5vd2VnbyB6Z8WCb3N6ZW5pYSBlLW1haWwgaSB0ZWxlZm9uaWN6bmVnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdaZ8WCb3N6ZW5pZSBOYWRyesSZZG5lL1BvZHJ6xJlkbmUnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQ2FtcG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdHZXJlbmNpYXIgZXN0YWRvIGRlIE1lc3RyZS9Fc2NyYXZvIHBhcmEgJXMlcyVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05vdm8gQ2hhbWFkbyBNZXN0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ0Rlc2ZhemVyIENoYW1hZG8gTWVzdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ0Rlc2ZhemVyIENoYW1hZG8gRXNjcmF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnRXNjcmF2byBkZSAlcyVzJXM6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdMaW1wYXIgQ2hhbWFkb3MgTWVzdHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnTGltcGFyIENoYW1hZG9zIEVzY3Jhdm9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01lc3RyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICdFc2NyYXZvIGRlICVzJXMlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnQ2hhbWFkbyBNZXN0cmUnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdUb2RvcyBjaGFtYWRvcyBtZXN0cmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnVG9kb3MgY2hhbWFkb3MgZXNjcmF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYWRpY2lvbmFyIG5vdGFzIG5hIHRlbGEgIk1hc3RlclNsYXZlIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnQWx0ZXJhIG8gZXN0YWRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnRGVmaW5lIG8gbm9tZSBkbyBjYW1wbyBkaW7Dom1pY28gcGFyYSBhIGZ1bmNpb25hbGlkYWRlIGRlIGNoYW1hZG8gbWVzdHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0RlZmluZSBzZSB1bSBibG9xdWVpbyBkZSB0aWNrZXQgw6kgcmVxdWVyaWRvIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlIChzZSBvIHRpY2tldCBhaW5kYSBuw6NvIGVzdGl2ZXIgYmxvcXVlYWRvLCBvIHRpY2tldCBzZXLDoSBibG9xdWVhZG8gZSBvIGFnZW50ZSBjb3JyZW50ZSBzZXLDoSBhdXRvbWF0aWNhbWVudGUgZGVmaW5pZG8gY29tbyBvIHNldSBwcm9wcmlldMOhcmlvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0RlZmluZSBzZSBhIG5vdGEgTWVzdHJlRXNjcmF2byBmaWNhIHZpc8OtdmVsIHBhcmEgbyBjbGllbnRlIGNvbW8gcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gcHLDs3hpbW8gZXN0YWRvIHBhZHLDo28gZGUgdW0gdGlja2V0IGFww7NzIHVtYSBub3RhIHRlciBzaWRvIGFkaWNpb25hZGEsIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHByaW9yaWRhZGUgcGFkcsOjbyBkbyB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBjb21lbnTDoXJpbyBkZSBoaXN0w7NyaWNvIHBhcmEgYSBhw6fDo28gZGUgdGVsYSBNYXN0ZXJTbGF2ZSBkbyB0aWNrZXQsIHF1ZSDDqSB1dGlsaXphZGEgcGFyYSBvIGhpc3TDs3JpY28gZG8gdGlja2V0IG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyB0aXBvIGRlIGhpc3TDs3JpY28gcGFyYSBhIGHDp8OjbyBkYSB0ZWxhIE1hc3RlclNsYXZlIGRvIHRpY2tldCwgcXVlIMOpIHV0aWxpemFkbyBwYXJhIG8gaGlzdMOzcmljbyBkbyB0aWNrZXQgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHByw7N4aW1vIGVzdGFkbyBkZSB1bSB0aWNrZXQgYXDDs3MgdW1hIG5vdGEgdGVyIHNpZG8gYWRpY2lvbmFkYSwgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnSGFiaWxpdGEgYXMgZnVuY2lvbmFsaWRhZGVzIGF2YW7Dp2FkYXMgZG8gTWFzdGVyU2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIGRlIGNoYW1hZG9zIGVzY3Jhdm9zIHNlZ3VpcmVtIGNoYW1hZG9zIG1lc3RyZSBwYXJhIHVtIG5vdm8gbWVzdHJlIG5vIG1vZG8gYXZhbsOnYWRvIGRvIE1hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIGRlIGFsdGVyYXIgZXN0YWRvIGRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8gbm8gbW9kbyBhdmFuw6dhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgZW5jYW1pbmhhciBhcnRpZ29zIGRvIHRpcG8gXCdmb3J3YXJkXCcgZGUgdW0gY2hhbWFkbyBtZXN0cmUgcGFyYSBvcyBjbGllbnRlcyBkb3MgY2hhbWFkb3MgZXNjcmF2b3MuIFBvciBwYWRyw6NvIChkZXNhYmlsaXRhZG8pIG9zIGFydGlnb3MgbsOjbyBzw6NvIGVuY2FtaW5oYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIHF1ZSBtYW50ZW0gbyBsaW5rIHBhaS1maWxobyBhcMOzcyBhIGFsdGVyYcOnw6NvIGRvIGVzdGFkbyBkZSBNYXN0ZXJTbGF2ZSBubyBtb2RvIGF2YW7Dp2FkbyBkbyBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbWFudGVyIGEgYXNzb2NpYcOnw6NvIHBhaS1maWxobyBkZXBvaXMgZGUgbGltcGFyIG8gZXN0YWRvIGRlIE1hc3RlclNsYXZlIG5vIG1vZG8gYXZhbsOnYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbGltcGFyIG8gZXN0YWRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8gbm8gbW9kbyBhdmFuw6dhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NlIHVtYSBub3RhIGZvciBhZGljaW9uYWRhIHBvciB1bSBhZ2VudGUsIGRlZmluZSBvIGVzdGFkbyBkbyB0aWNrZXQgbmEgdGVsYSBkZSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWVzdHJlIC8gRXNjcmF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ0NoYW1hZG9zIE1lc3RyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNZXN0cmVFc2NyYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNw7NkdWxvIE1lc3RyZUVzY3Jhdm8gcGFyYSBmdW5jaW9uYWxpZGFkZSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgY2hhbWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZG8gcGFpbmVsIGRlIHZpc8OjbyBnZXJhbCBkZSB0aWNrZXRzIG1lc3RyZSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLiAiTGltaXRlIiDDqSBhIHF1YW50aWRhZGUgZGUgcmVnaXN0cm9zIGV4aWJpZGEgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMikuICJQYWRyw6NvIiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgaGFiaWxpdGFkbyBwb3IgcGFkcsOjbyBvdSBzZSBvIHVzdcOhcmlvIHByZWNpc2EgaGFiaWxpdMOhLWxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6kgbyB0ZW1wbyBkZSBjYWNoZSBlbSBtaW51dG9zIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZG8gcGFpbmVsIGRlIHZpc8OjbyBnZXJhbCBkZSB0aWNrZXRzIG1lc3RyZSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLiAiTGltaXRlIiDDqSBhIHF1YW50aWRhZGUgZGUgcmVnaXN0cm9zIGV4aWJpZGEgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMikuICJQYWRyw6NvIiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgaGFiaWxpdGFkbyBwb3IgcGFkcsOjbyBvdSBzZSBvIHVzdcOhcmlvIHByZWNpc2EgaGFiaWxpdMOhLWxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6kgbyB0ZW1wbyBkZSBjYWNoZSBlbSBtaW51dG9zIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdSZWdpc3RybyBkbyBtw7NkdWxvIGRlIGV2ZW50b3MgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyByZXF1ZXJpZGFzIHBhcmEgdXNhciBhIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyBpZiBNYXN0ZXIgLyBTbGF2ZSBmaWVsZCBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC4nfSA9ICdEZWZpbmUgc2UgbyBjYW1wbyBNZXN0cmUvIEVzY3Jhdm8gZGV2ZSBzZXIgc2VsZWNpb25hZG8gcGVsbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGNvcnBvIGRvIHRleHRvIHBhZHLDo28gcGFyYSBub3RhcyBhZGljaW9uYWRhcyBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhc3N1bnRvIHBhZHLDo28gcGFyYSBub3RhcyBhZGljaW9uYWRhcyBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhZ2VudGUgcmVzcG9uc8OhdmVsIGRvIHRpY2tldCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnRGVmaW5lIG8gc2VydmnDp28gbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUgKFRpY2tldDo6U2VydmljZSBwcmVjaXNhIHNlciBhdGl2YWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gcHJvcHJpZXTDoXJpbyBkbyB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdEZWZpbmUgbyB0aXBvIGRvIHRpY2tldCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUgKFRpY2tldDo6VHlwZSBwcmVjaXNhIHNlciBhdGl2YWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhbHRlcmFyIG8gZXN0YWRvIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBuYSB0ZWxhIGRlIGRldGFsaGUgZGUgdGlja2V0IGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bWEgbGlzdGEgZGUgdG9kb3Mgb3MgYWdlbnRlcyBlbnZvbHZpZG9zIG5lc3RlIHRpY2tldCwgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bWEgbGlzdGEgZGUgdG9kb3Mgb3MgYWdlbnRlcyBwb3Nzw612ZWlzICh0b2RvcyBvcyBhZ2VudGVzIGNvbSBwZXJtaXNzw6NvIGRlIG5vdGEgbmEgZmlsYS90aWNrZXQpIHBhcmEgZGV0ZXJtaW5hciBxdWVtIGRldmUgc2VyIGluZm9ybWFkbyBzb2JyZSBlc3RhIG5vdGEsIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgYXMgb3DDp8O1ZXMgZGUgcHJpb3JpZGFkZSBkZSB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyB0w610dWxvIG5hIHRlbGEgZGUgdW0gY2hhbWFkbyBNZXN0cmVFc2NyYXZvIGRlIHVtIGNoYW1hZG8gYWJlcnRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdDaGFtYWRvcyBFc2NyYXZvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdFc3RlIG3Ds2R1bG8gYXRpdmEgbyBjYW1wbyBNZXN0cmUvRXNjcmF2byBuYXMgdGVsYXMgZGUgbm92byBjaGFtYWRvIGZvbmUvZS1tYWlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdDaGFtYWRvIE1lc3RyZUVzY3Jhdm8nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnQ2FtcG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICdHZXJlbmNpYXIgZXN0YWRvIGRlIE1lc3RyZS9Fc2NyYXZvIHBhcmEgJXMlcyVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ05vdm8gQ2hhbWFkbyBNZXN0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldCd9ID0gJ0Rlc2ZhemVyIENoYW1hZG8gTWVzdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ0Rlc2ZhemVyIENoYW1hZG8gRXNjcmF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnRXNjcmF2byBkZSAlcyVzJXM6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICdMaW1wYXIgQ2hhbWFkb3MgTWVzdHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnTGltcGFyIENoYW1hZG9zIEVzY3Jhdm9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01lc3RyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICdFc2NyYXZvIGRlICVzJXMlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnQ2hhbWFkbyBNZXN0cmUnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdUb2RvcyBjaGFtYWRvcyBtZXN0cmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnVG9kb3MgY2hhbWFkb3MgZXNjcmF2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYWRpY2lvbmFyIG5vdGFzIG5hIHRlbGEgIk1hc3RlclNsYXZlIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnQWx0ZXJhIG8gZXN0YWRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnRGVmaW5lIG8gbm9tZSBkbyBjYW1wbyBkaW7Dom1pY28gcGFyYSBhIGZ1bmNpb25hbGlkYWRlIGRlIGNoYW1hZG8gbWVzdHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ0RlZmluZSBzZSB1bSBibG9xdWVpbyBkZSB0aWNrZXQgw6kgcmVxdWVyaWRvIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlIChzZSBvIHRpY2tldCBhaW5kYSBuw6NvIGVzdGl2ZXIgYmxvcXVlYWRvLCBvIHRpY2tldCBzZXLDoSBibG9xdWVhZG8gZSBvIGFnZW50ZSBjb3JyZW50ZSBzZXLDoSBhdXRvbWF0aWNhbWVudGUgZGVmaW5pZG8gY29tbyBvIHNldSBwcm9wcmlldMOhcmlvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0RlZmluZSBzZSBhIG5vdGEgTWVzdHJlRXNjcmF2byBmaWNhIHZpc8OtdmVsIHBhcmEgbyBjbGllbnRlIGNvbW8gcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gcHLDs3hpbW8gZXN0YWRvIHBhZHLDo28gZGUgdW0gdGlja2V0IGFww7NzIHVtYSBub3RhIHRlciBzaWRvIGFkaWNpb25hZGEsIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHByaW9yaWRhZGUgcGFkcsOjbyBkbyB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBjb21lbnTDoXJpbyBkZSBoaXN0w7NyaWNvIHBhcmEgYSBhw6fDo28gZGUgdGVsYSBNYXN0ZXJTbGF2ZSBkbyB0aWNrZXQsIHF1ZSDDqSB1dGlsaXphZGEgcGFyYSBvIGhpc3TDs3JpY28gZG8gdGlja2V0IG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgdHlwZSBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyB0aXBvIGRlIGhpc3TDs3JpY28gcGFyYSBhIGHDp8OjbyBkYSB0ZWxhIE1hc3RlclNsYXZlIGRvIHRpY2tldCwgcXVlIMOpIHV0aWxpemFkbyBwYXJhIG8gaGlzdMOzcmljbyBkbyB0aWNrZXQgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHByw7N4aW1vIGVzdGFkbyBkZSB1bSB0aWNrZXQgYXDDs3MgdW1hIG5vdGEgdGVyIHNpZG8gYWRpY2lvbmFkYSwgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnSGFiaWxpdGEgYXMgZnVuY2lvbmFsaWRhZGVzIGF2YW7Dp2FkYXMgZG8gTWFzdGVyU2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIGRlIGNoYW1hZG9zIGVzY3Jhdm9zIHNlZ3VpcmVtIGNoYW1hZG9zIG1lc3RyZSBwYXJhIHVtIG5vdm8gbWVzdHJlIG5vIG1vZG8gYXZhbsOnYWRvIGRvIE1hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIGRlIGFsdGVyYXIgZXN0YWRvIGRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8gbm8gbW9kbyBhdmFuw6dhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgZW5jYW1pbmhhciBhcnRpZ29zIGRvIHRpcG8gXCdmb3J3YXJkXCcgZGUgdW0gY2hhbWFkbyBtZXN0cmUgcGFyYSBvcyBjbGllbnRlcyBkb3MgY2hhbWFkb3MgZXNjcmF2b3MuIFBvciBwYWRyw6NvIChkZXNhYmlsaXRhZG8pIG9zIGFydGlnb3MgbsOjbyBzw6NvIGVuY2FtaW5oYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIGNoYW5nZSBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bmNpb25hbGlkYWRlIHF1ZSBtYW50ZW0gbyBsaW5rIHBhaS1maWxobyBhcMOzcyBhIGFsdGVyYcOnw6NvIGRvIGVzdGFkbyBkZSBNYXN0ZXJTbGF2ZSBubyBtb2RvIGF2YW7Dp2FkbyBkbyBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbWFudGVyIGEgYXNzb2NpYcOnw6NvIHBhaS1maWxobyBkZXBvaXMgZGUgbGltcGFyIG8gZXN0YWRvIGRlIE1hc3RlclNsYXZlIG5vIG1vZG8gYXZhbsOnYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbGltcGFyIG8gZXN0YWRvIE1hc3RlclNsYXZlIGRlIHVtIGNoYW1hZG8gbm8gbW9kbyBhdmFuw6dhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NlIHVtYSBub3RhIGZvciBhZGljaW9uYWRhIHBvciB1bSBhZ2VudGUsIGRlZmluZSBvIGVzdGFkbyBkbyB0aWNrZXQgbmEgdGVsYSBkZSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciAvIFNsYXZlJ30gPSAnTWVzdHJlIC8gRXNjcmF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJ0NoYW1hZG9zIE1lc3RyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICdNZXN0cmVFc2NyYXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICdNw7NkdWxvIE1lc3RyZUVzY3Jhdm8gcGFyYSBmdW5jaW9uYWxpZGFkZSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgY2hhbWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZG8gcGFpbmVsIGRlIHZpc8OjbyBnZXJhbCBkZSB0aWNrZXRzIG1lc3RyZSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLiAiTGltaXRlIiDDqSBhIHF1YW50aWRhZGUgZGUgcmVnaXN0cm9zIGV4aWJpZGEgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMikuICJQYWRyw6NvIiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgaGFiaWxpdGFkbyBwb3IgcGFkcsOjbyBvdSBzZSBvIHVzdcOhcmlvIHByZWNpc2EgaGFiaWxpdMOhLWxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6kgbyB0ZW1wbyBkZSBjYWNoZSBlbSBtaW51dG9zIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZG8gcGFpbmVsIGRlIHZpc8OjbyBnZXJhbCBkZSB0aWNrZXRzIG1lc3RyZSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLiAiTGltaXRlIiDDqSBhIHF1YW50aWRhZGUgZGUgcmVnaXN0cm9zIGV4aWJpZGEgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMikuICJQYWRyw6NvIiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgaGFiaWxpdGFkbyBwb3IgcGFkcsOjbyBvdSBzZSBvIHVzdcOhcmlvIHByZWNpc2EgaGFiaWxpdMOhLWxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6kgbyB0ZW1wbyBkZSBjYWNoZSBlbSBtaW51dG9zIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdHJhdGlvbiBvZiB0aGUgdGlja2V0IGV2ZW50IG1vZHVsZS4nfSA9ICdSZWdpc3RybyBkbyBtw7NkdWxvIGRlIGV2ZW50b3MgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyByZXF1ZXJpZGFzIHBhcmEgdXNhciBhIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyBpZiBNYXN0ZXIgLyBTbGF2ZSBmaWVsZCBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC4nfSA9ICdEZWZpbmUgc2UgbyBjYW1wbyBNZXN0cmUvIEVzY3Jhdm8gZGV2ZSBzZXIgc2VsZWNpb25hZG8gcGVsbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGNvcnBvIGRvIHRleHRvIHBhZHLDo28gcGFyYSBub3RhcyBhZGljaW9uYWRhcyBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhc3N1bnRvIHBhZHLDo28gcGFyYSBub3RhcyBhZGljaW9uYWRhcyBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHJlc3BvbnNpYmxlIGFnZW50IG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhZ2VudGUgcmVzcG9uc8OhdmVsIGRvIHRpY2tldCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnRGVmaW5lIG8gc2VydmnDp28gbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUgKFRpY2tldDo6U2VydmljZSBwcmVjaXNhIHNlciBhdGl2YWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gcHJvcHJpZXTDoXJpbyBkbyB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdEZWZpbmUgbyB0aXBvIGRvIHRpY2tldCBuYSB0ZWxhIE1hc3RlclNsYXZlIGRlIHRpY2tldCBkZSB1bSB0aWNrZXQgZGV0YWxoYWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUgKFRpY2tldDo6VHlwZSBwcmVjaXNhIHNlciBhdGl2YWRvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhbHRlcmFyIG8gZXN0YWRvIE1hc3RlclNsYXZlIGRlIHVtIHRpY2tldCBuYSB0ZWxhIGRlIGRldGFsaGUgZGUgdGlja2V0IGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bWEgbGlzdGEgZGUgdG9kb3Mgb3MgYWdlbnRlcyBlbnZvbHZpZG9zIG5lc3RlIHRpY2tldCwgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bWEgbGlzdGEgZGUgdG9kb3Mgb3MgYWdlbnRlcyBwb3Nzw612ZWlzICh0b2RvcyBvcyBhZ2VudGVzIGNvbSBwZXJtaXNzw6NvIGRlIG5vdGEgbmEgZmlsYS90aWNrZXQpIHBhcmEgZGV0ZXJtaW5hciBxdWVtIGRldmUgc2VyIGluZm9ybWFkbyBzb2JyZSBlc3RhIG5vdGEsIG5hIHRlbGEgTWFzdGVyU2xhdmUgZGUgdGlja2V0IGRlIHVtIHRpY2tldCBkZXRhbGhhZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgYXMgb3DDp8O1ZXMgZGUgcHJpb3JpZGFkZSBkZSB0aWNrZXQgbmEgdGVsYSBNYXN0ZXJTbGF2ZSBkZSB0aWNrZXQgZGUgdW0gdGlja2V0IGRldGFsaGFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyB0w610dWxvIG5hIHRlbGEgZGUgdW0gY2hhbWFkbyBNZXN0cmVFc2NyYXZvIGRlIHVtIGNoYW1hZG8gYWJlcnRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICdDaGFtYWRvcyBFc2NyYXZvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICdFc3RlIG3Ds2R1bG8gYXRpdmEgbyBjYW1wbyBNZXN0cmUvRXNjcmF2byBuYXMgdGVsYXMgZGUgbm92byBjaGFtYWRvIGZvbmUvZS1tYWlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICdDaGFtYWRvIE1lc3RyZUVzY3Jhdm8nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAn0J/QvtC70LUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50VGlja2V0TWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRgdGC0LDRgtGD0YHQvtC8INCT0LvQsNCy0L3QsNGPL9CS0LXQtNC+0LzQsNGPINC00LvRjyAlcyVzJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0TWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBNYXN0ZXIgVGlja2V0J30gPSAn0J3QvtCy0LDRjyBNYXN0ZXIg0LfQsNGP0LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IE1hc3RlciBUaWNrZXQnfSA9ICfQodC90Y/RgtGMINC30L3QsNGH0LXQvdC40LUgTWFzdGVyINC30LDRj9Cy0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXQnfSA9ICfQodC90Y/RgtGMINC30L3QsNGH0LXQvdC40LUgU2xhdmUg0LfQsNGP0LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICfQktC10LTQvtC80LDRjyDQvtGCICVzJXMlczogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ9Cj0LHRgNCw0YLRjCDQs9C70LDQstC90YvQtSDQt9Cw0Y/QstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJ9Cj0LHRgNCw0YLRjCDQstC10LTQvtC80YvQtSDQt9Cw0Y/QstC60LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAn0JPQu9Cw0LLQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICfQk9C70LDQstC90LDRjyDQt9Cw0Y/QstC60LAnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICfQktGB0LUg0LPQu9Cw0LLQvdGL0LUg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAn0JLRgdC1INCy0LXQtNC+0LzRi9C1INC30LDRj9Cy0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC30LLQvtC70Y/QtdGCINC00L7QsdCw0LLQuNGC0Ywg0YHQvtC+0LHRidC10L3QuNC1INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0YHQvtGB0YLQvtGP0L3QuNC1IE1hc3RlclNsYXZlINC00LvRjyDRjdGC0L7QuSDQt9Cw0Y/QstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAn0JfQsNC00LDQtdGCINC40LzRjyDQtNC40L3QsNC80LjRh9C10YHQutC+0LPQviDQv9C+0LvRjyDQtNC70Y8g0YTRg9C90LrRhtC40Lgg0LPQu9Cw0LLQvdC+0Lkg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdGC0YHRjyDQu9C4INCx0LvQvtC60LjRgNC+0LLQutCwINC30LDRj9Cy0LrQuCDQv9GA0Lgg0L/RgNC40LzQtdC90LXQvdC40Lgg0L7Qv9GG0LjQuCBNYXN0ZXJTbGF2ZSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAgKNC10YHQu9C4INC30LDRj9Cy0LrQsCDQtdGJ0LUg0L3QtSDQt9Cw0LHQu9C+0LrQuNGA0L7QstCw0L3QsCwg0L7QvdCwINCx0LvQvtC60LjRgNGD0LXRgtGB0Y8g0Lgg0YLQtdC60YPRidC40Lkg0LDQs9C10L3RgiDRgdGC0LDQvdC+0LLQuNGC0YHRjyDQtdC1INCS0LvQsNC00LXQu9GM0YbQtdC8KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQu9C10LTRg9GO0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LfQsNGP0LLQutC4INC/0L7RgdC70LUg0LTQvtCx0LDQstC70LXQvdC40Y8g0LfQsNC80LXRgtC60Lgg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INC/0YDQuCDQtdC1INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGD0LzQsNC70YfQuNCy0LDQtdC80YvQuSDQv9GA0LjQvtGA0LjRgtC10YIg0LfQsNGP0LLQutC4INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgtC10LrRgdGCINC60L7QvNC80LXQvdGC0LDRgNC40Y8g0LIg0LfQsNC/0LjRgdC4INC40YHRgtC+0YDQuNC4INC/0YDQuCDQstGL0LfQvtCy0LUgTWFzdGVyU2xhdmUg0Y3QutGA0LDQvdCwICwg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0LjQvyDQt9Cw0L/QuNGB0Lgg0LjRgdGC0L7RgNC40Lgg0L/RgNC4INCy0YvQt9C+0LLQtSBNYXN0ZXJTbGF2ZSDRjdC60YDQsNC90LAgLCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQu9C10LTRg9GO0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQtNC70Y8g0LfQsNGP0LLQutC4INC/0L7RgdC70LUg0LTQvtCx0LDQstC70LXQvdC40Y8g0LfQsNC80LXRgtC60Lgg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INC/0YDQuCDQtdC1INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAn0JLQutC70Y7Rh9Cw0LXRgiDRgNCw0YHRiNC40YDQtdC90L3Ri9C1INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0LTQu9GPIE1hc3RlclNsYXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRoYXQgc2xhdmUgdGlja2V0cyBmb2xsb3cgdGhlIG1hc3RlciB0aWNrZXQgdG8gYSBuZXcgbWFzdGVyIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC/0LXRgNC10LTQsNGH0Lgg0LLQtdC00L7QvNGL0YUg0LfQsNGP0LLQvtC6INCz0LvQsNCy0L3QvtC5INC30LDRj9Cy0LrQuCDQuiDQvdC+0LLQvtC5INCz0LvQsNCy0L3QvtC5INCyINGA0LDRgdGI0LjRgNC10L3QvdC+0Lwg0YDQtdC20LjQvNC1IE1hc3RlclNsYXZlIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8gTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINGA0LDRgdGI0LjRgNC10L3QvdC+0Lwg0YDQtdC20LjQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGZvcndhcmQgYXJ0aWNsZXMgZnJvbSB0eXBlIFwnZm9yd2FyZFwnIG9mIGEgbWFzdGVyIHRpY2tldCB0byB0aGUgY3VzdG9tZXJzIG9mIHRoZSBzbGF2ZSB0aWNrZXRzLiBCeSBkZWZhdWx0IChkaXNhYmxlZCkgaXQgd2lsbCBub3QgZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgdG8gdGhlIHNsYXZlIHRpY2tldHMuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0L/QtdGA0LXRgdGL0LvQutC4INGB0L7QvtCx0YnQtdC90LjQuS/Qt9Cw0LzQtdGC0L7QuiDQv9GA0Lgg0L/QtdGA0LXRgdGL0LvQutC1INCz0LvQsNCy0L3QvtC5INC30LDRj9Cy0LrQuCAg0LrQu9C40LXQvdGC0LDQvCDQstC10LTQvtC80YvRhSDQt9Cw0Y/QstC+0LouINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOICjQstGL0LrQu9GO0YfQtdC90L4pINCyINCy0LXQtNC+0LzRi9C1INC30LDRj9Cy0LrQuCDQvdC40YfQtdCz0L4g0L3QtSDQv9C10YDQtdGB0YvQu9Cw0LXRgtGB0Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGB0L7RhdGA0LDQvdC40YLRjCDRgdCy0Y/Qt9GMINGA0L7QtNC40YLQtdC70Ywt0L/QvtGC0L7QvNC+0Log0LTQu9GPINC30LDRj9Cy0L7Quiwg0L/QvtGB0LvQtSDQuNC30LzQtdC90LXQvdC40Y8g0L/RgNC40LfQvdCw0LrQsCBNYXN0ZXJTbGF2ZSDQsiDRgNCw0YHRiNC40YDQtdC90L3QvtC8INGA0LXQttC40LzQtSBNYXN0ZXJTbGF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDRgdC+0YXRgNCw0L3QuNGC0Ywg0YHQstGP0LfRjCDRgNC+0LTQuNGC0LXQu9GMLdC/0L7RgtC+0LzQvtC6INC00LvRjyDQt9Cw0Y/QstC+0LosINC/0L7RgdC70LUg0YHQvdGP0YLQuNGPINC/0YDQuNC30L3QsNC60LAgTWFzdGVyU2xhdmUg0LIg0YDQsNGB0YjQuNGA0LXQvdC90L7QvCDRgNC10LbQuNC80LUgTWFzdGVyU2xhdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0YHQsdGA0L7RgdC40YLRjCDRg9GB0YLQsNC90L7QstC70LXQvdC90L7QtSDRgdC+0YHRgtC+0Y/QvdC40LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINGA0LDRgdGI0LjRgNC10L3QvdC+0Lwg0YDQtdC20LjQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiBhIG5vdGUgaXMgYWRkZWQgYnkgYW4gYWdlbnQsIHNldHMgdGhlIHN0YXRlIG9mIHRoZSB0aWNrZXQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQldGB0LvQuCDRgdC+0L7QsdGJ0LXQvdC40LUv0LfQsNC80LXRgtC60LAg0LTQvtCx0LDQstC70LXQvdCwINCw0LPQtdC90YLQvtC8LCDQt9Cw0LTQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNC1INC30LDRj9Cy0LrQuCDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ01hc3RlciAvIFNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAn0JPQu9Cw0LLQvdGL0LUg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnTWFzdGVyU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01hc3RlclNsYXZlINC80L7QtNGD0LvRjCDQtNC70Y8g0YTRg9C90LrRhtC40Lgg0JzQsNGB0YHQvtCy0L7QtSDQtNC10LnRgdGC0LLQuNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIG1hc3RlciB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGA0LDQt9C00LXQu9CwINCU0LDQudC00LbQtdGB0YLQsCDRgSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5INC+IG1hc3RlciDQt9Cw0Y/QstC60LDRhSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuICJHcm91cCIg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC00L7RgdGC0YPQv9CwINC6INGA0LDQt9C00LXQu9GDICjQvdCw0L/RgNC40LzQtdGALCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgLSDQt9Cw0LTQsNC10YIsINCx0YPQtNC10YIg0LvQuCDRgNCw0LfQtNC10Lsg0LTQvtGB0YLRg9C/0LXQvSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQuNC70Lgg0LDQs9C10L3RgiDQtNC+0LvQttC10L0g0LDQutGC0LjQstC40YDQvtCy0LDRgtGMINC10LPQviDQstGA0YPRh9C90YPRji4gIkNhY2hlVFRMTG9jYWwiIC0g0LLRgNC10LzRjyDQvtCx0L3QvtCy0LvQtdC90LjRjyDQutGN0YjQsCDQsiDQvNC40L3Rg9GC0LDRhSDQtNC70Y8g0Y3RgtC+0LPQviDRgNCw0LfQtNC10LvQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGA0LDQt9C00LXQu9CwINCU0LDQudC00LbQtdGB0YLQsCDRgSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5INC+IHNsYXZlINC30LDRj9Cy0LrQsNGFINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gIkdyb3VwIiDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40Y8g0LTQvtGB0YLRg9C/0LAg0Log0YDQsNC30LTQtdC70YMgKNC90LDQv9GA0LjQvNC10YAsIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiAtINC30LDQtNCw0LXRgiwg0LHRg9C00LXRgiDQu9C4INGA0LDQt9C00LXQuyDQtNC+0YHRgtGD0L/QtdC9INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC40LvQuCDQsNCz0LXQvdGCINC00L7Qu9C20LXQvSDQsNC60YLQuNCy0LjRgNC+0LLQsNGC0Ywg0LXQs9C+INCy0YDRg9GH0L3Rg9GOLiAiQ2FjaGVUVExMb2NhbCIgLSDQstGA0LXQvNGPINC+0LHQvdC+0LLQu9C10L3QuNGPINC60Y3RiNCwINCyINC80LjQvdGD0YLQsNGFINC00LvRjyDRjdGC0L7Qs9C+INGA0LDQt9C00LXQu9CwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQvNC+0LTRg9C70Y8g0L7QsdGA0LDQsdC+0YLQutC4INGB0L7QsdGL0YLQuNC5INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNCw0LLQsCwg0YLRgNC10LHRg9C10LzRi9C1INC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDRhNGD0L3QutGG0LjQuCBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC+0Log0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIGlmIE1hc3RlciAvIFNsYXZlIGZpZWxkIG11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGFnZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgtC10LrRgdGCINGB0L7QvtCx0YnQtdC90LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQv9GA0Lgg0LTQvtCx0LDQstC70LXQvdC40Lgg0YHQvtC+0LHRidC10L3QuNGPINC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgc3ViamVjdCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgtC10LzRgyDRgdC+0L7QsdGJ0LXQvdC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L/RgNC4INC00L7QsdCw0LLQu9C10L3QuNC4INGB0L7QvtCx0YnQtdC90LjRjyDQvdCwINGN0LrRgNCw0L3QtSBNYXN0ZXJTbGF2ZSDQt9Cw0Y/QstC60Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCe0YLQstC10YLRgdGC0LLQtdC90L3QvtCz0L4g0LfQsCDQt9Cw0Y/QstC60YMg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQtdGA0LLQuNGBINC00LvRjyDQt9Cw0Y/QstC60Lgg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gKNCf0LDRgNCw0LzQtdGC0YAgVGlja2V0OjpTZXJ2aWNlINC00L7Qu9C20LXQvSDQsdGL0YLRjCDQstC60LvRjtGH0LXQvSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQktC70LDQtNC10LvRjNGG0LAg0LfQsNGP0LLQutC4INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgtC40L8g0LfQsNGP0LLQutC4INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuICjQn9Cw0YDQsNC80LXRgtGAIFRpY2tldDo6U2VydmljZSDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0LLQutC70Y7Rh9C10L0pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdGB0YvQu9C60YMg0LIg0LzQtdC90Y4g0LTQu9GPINC40LfQvNC10L3QtdC90LjRjyBNYXN0ZXJTbGF2ZSDRgdGC0LDRgtGD0YHQsCAg0L3QsCDRjdC60YDQsNC90LUg0L/RgNC+0YHQvNC+0YLRgNCwINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDRgdC/0LjRgdC+0Log0LLRgdC10YUg0L/RgNC40LLQu9C10LrQsNC10LzRi9GFINCw0LPQtdC90YLQvtCyINC/0L4g0Y3RgtC+0Lkg0LfQsNGP0LLQutC1INC90LAg0Y3QutGA0LDQvdC1IE1hc3RlclNsYXZlINC30LDRj9Cy0LrQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDRgdC/0LjRgdC+0Log0LLRgdC10YUg0LTQvtGB0YLRg9C/0L3Ri9GFINCw0LPQtdC90YLQvtCyICjQstGB0LXRhSDQsNCz0LXQvdGC0L7QsiDRgSDQv9GA0LDQstCw0LzQuCBub3RlINC00LvRjyDQvtGH0LXRgNC10LTQuC/Qt9Cw0Y/QstC60LgpLCDRh9GC0L7QsdGLINC30LDQtNCw0YLRjCDQutC+0LPQviDQvdGD0LbQvdC+INC40L3RhNC+0YDQvNC40YDQvtCy0LDRgtGMINC+0LEg0Y3RgtC+0Lkg0LfQsNC80LXRgtC60LUg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LjQt9C80LXQvdC40YLRjCDQv9GA0LjQvtGA0LjRgtC10YIg0L3QsCDRjdC60YDQsNC90LUgTWFzdGVyU2xhdmUg0LfQsNGP0LLQutC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAn0JLQtdC00L7QvNGL0LUg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJ9Ct0YLQvtGCINC80L7QtNGD0LvRjCDQstC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LLRi9Cx0L7RgNCwIG1hc3Rlci9zbGF2ZSDQvtC/0YbQuNC4INC90LAg0Y3QutGA0LDQvdC1INGB0L7Qt9C00LDQvdC40Y8g0LfQsNGP0LLQutC4LCDQvdCwINC+0YHQvdC+0LLQtSDRgtC10LvQtdGE0L7QvdC90L7Qs9C+INC30LLQvtC90LrQsCDQuNC70Lgg0L/QuNGB0YzQvNCwINC60LvQuNC10L3RgtCwINCw0LPQtdC90YLQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICfQl9Cw0Y/QstC60LAgTWFzdGVyU2xhdmUnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICfQn9C+0ZnQtSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSDRgdGC0LDRgtGD0YHQvtC8INCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQt9CwICVzJXMlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICfQndC+0LLQuCDQs9C70LDQstC90Lgg0YLQuNC60LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAn0J7Qv9C+0LfQvtCy0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LUg0LPQu9Cw0LLQvdC+0LMg0YLQuNC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ9Ce0L/QvtC30L7QstC4INC/0L7QtNC10YjQsNCy0LDRmtC1INC30LDQstC40YHQvdC+0LMg0YLQuNC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICfQl9Cw0LLQuNGB0L3QuCDQvtC0ICVzJXMlczogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ9Ce0L/QvtC30L7QstC4INC/0L7QtNC10YjQsNCy0LDRmtC1INCz0LvQsNCy0L3QuNGFINGC0LjQutC10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAn0J7Qv9C+0LfQvtCy0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LUg0LfQsNCy0LjRgdC90LjRhSDRgtC40LrQtdGC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAn0JPQu9Cw0LLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlcyd9ID0gJ9CX0LDQstC40YHQvdC4INC+0LQgJXMlcyVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICfQk9C70LDQstC90Lgg0YLQuNC60LXRgic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ9Ch0LLQuCDQs9C70LDQstC90Lgg0YLQuNC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAn0KHQstC4INC30LDQstC40YHQvdC4INGC0LjQutC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQvtC30LLQvtGZ0LDQstCwINC00L7QtNCw0LLQsNGa0LUg0LHQtdC70LXRiNC60Lgg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINC+0L/QtdGA0LDRgtC10YDRgdC60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ9Cf0YDQvtC80LXQvdC4INCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDRgdGC0LDRgtGD0YEg0YLQuNC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ9CU0LXRhNC40L3QuNGI0LUg0LTQuNC90LDQvNC40YfQutC4INC90LDQt9C40LIg0L/QvtGZ0LAg0LfQsCDRhNGD0L3QutGG0LjRmNGDINCz0LvQsNCy0L3QvtCzINGC0LjQutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC00LAg0LvQuCDRmNC1INC/0L7RgtGA0LXQsdC90L4g0LfQsNC60ZnRg9GH0LDRgtC4INCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC9INGC0LjQutC10YLQsCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsCAo0LDQutC+INGC0LjQutC10YIg0ZjQvtGIINGD0LLQtdC6INC90LjRmNC1INC30LDQutGZ0YPRh9Cw0L0sINGC0LjQutC10YIg0ZvQtSDQtNC+0LHQuNGC0Lgg0YHRgtCw0YLRg9GBINC30LDQutGZ0YPRh9Cw0L0g0Lgg0YLRgNC10L3Rg9GC0L3QuCDQvtC/0LXRgNCw0YLQtdGAINGb0LUg0LHQuNGC0Lgg0LDRg9GC0L7QvNCw0YLRgdC60Lgg0L/QvtGB0YLQsNCy0ZnQtdC9INC60LDQviDQstC70LDRgdC90LjQuikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIE1hc3RlclNsYXZlIG5vdGUgaXMgdmlzaWJsZSBmb3IgdGhlIGN1c3RvbWVyIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INGD0LrQvtC70LjQutC+INGY0LUgTWFzdGVyU2xhdmUg0L3QsNC/0L7QvNC10L3QsCDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQstC40LTRmdC40LLQsCDQt9CwINC60LvQuNGY0LXQvdGCINC60L7RgNC40YHQvdC40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQvdCw0YDQtdC00L3QuCDRgdGC0LDRgtGD0YEg0YLQuNC60LXRgtCwINC/0L7RgdC70LUg0LTQvtC00LDQstCw0ZnQsCDQsdC10LvQtdGI0LrQtSwg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQuNC+0YDQuNGC0LXRgiDRgtC40LrQtdGC0LAg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC60L7QvNC10L3RgtCw0YAg0LfQsCDQuNGB0YLQvtGA0LjRmNCw0YIg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGB0LrQvtGYINCw0LrRhtC40ZjQuCwg0YjRgtC+INGb0LUg0YHQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0LfQsCDQuNGB0YLQvtGA0LjRmNCw0YIg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgtC40L8g0LjRgdGC0L7RgNC40ZjQsNGC0LAg0LfQsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGB0LrRgyDQsNC60YbQuNGY0YMsINGI0YLQviDRm9C1INGB0LUg0LrQvtGA0LjRgdGC0LjRgtC4INC30LAg0LjRgdGC0L7RgNC40ZjQsNGCINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L3QsNGA0LXQtNC90Lgg0YHRgtCw0YLRg9GBINGC0LjQutC10YLQsCDQv9C+0YHQu9C1INC00L7QtNCw0LLQsNGZ0LAg0LHQtdC70LXRiNC60LUsINC90LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAn0JDQutGC0LjQstC40YDQsCDQvdCw0L/RgNC10LTQvdC4INC00LXQviDRhNGD0L3QutGG0LjRmNC1INCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0aGF0IHNsYXZlIHRpY2tldHMgZm9sbG93IHRoZSBtYXN0ZXIgdGlja2V0IHRvIGEgbmV3IG1hc3RlciBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INGB0LLQvtGY0YHRgtCy0LAg0LTQsCDQt9Cw0LLQuNGB0L3QuCDRgtC40LrQtdGCINC/0YDQsNGC0Lgg0LPQu9Cw0LLQvdC4INC90LAg0L3QvtCy0Lgg0LPQu9Cw0LLQvdC4INGDINC90LDQv9GA0LXQtNC90L7QvCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LzQvtC00YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INGE0YPQvdC60YbQuNGY0LUg0LfQsCDQv9GA0L7QvNC10L3RgyDRgdGC0LDRmtCwINGC0LjQutC10YLQsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90LggINGDINC90LDQv9GA0LXQtNC90L7QvCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LzQvtC00YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INGB0LLQvtGY0YHRgtCy0LAg0LfQsCDQv9GA0L7RgdC70LXRktC40LLQsNGa0LUg0YfQu9Cw0L3QsNC60LAg0YLQuNC/0LAgItC/0YDQvtGB0LvQtdC00LgiINCz0LvQsNCy0L3QvtCzINGC0LjQutC10YLQsCDQutC+0YDQuNGB0L3QuNGG0LjQvNCwINC30LDQstC40YHQvdC40YUg0YLQuNC60LXRgtCwLiDQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRmNC1ICjQuNGB0LrRmdGD0YfQtdC90L4pINC00LAg0YHQtSDQvdC40YjRgtCwINC90LUg0L/RgNC+0YHQu9C10ZLRg9GY0LUg0LfQsNCy0LjRgdC90LjQvCDRgtC40LrQtdGC0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INGE0YPQvdC60YbQuNGY0LUg0LfQsCDQt9Cw0LTRgNC20LDQstCw0ZrQtSDQstC10LfQtSDQvdCw0LTRgNC10ZLQtdC90Lgt0L/QvtC00YDQtdGS0LXQvdC4INC/0L7RgdC70LUg0LjQt9C80LXQvdC1INGB0YLQsNGa0LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INGDINC90LDQv9GA0LXQtNC90L7QvCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LzQvtC00YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciB1bnNldCBvZiB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICfQkNC60YLQuNCy0LjRgNCw0ZrQtSDRhNGD0L3QutGG0LjRmNC1INC30LAg0LfQsNC00YDQttCw0LLQsNGa0LUg0LLQtdC30LUg0L3QsNC00YDQtdGS0LXQvdC4LdC/0L7QtNGA0LXRktC10L3QuCDQv9C+0YHQu9C1INC+0L/QvtC30LjQstCwINC/0L7QtNC10YjQsNCy0LDRmtCwINGB0YLQsNGa0LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4ICDRgyDQvdCw0L/RgNC10LTQvdC+0Lwg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INC80L7QtNGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIHVuc2V0IHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldCBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INGE0YPQvdC60YbQuNGY0LUg0LfQsCDQvtC/0L7Qt9C40LIg0L/QvtC00LXRiNCw0LLQsNGa0LAg0YHRgtCw0ZrQsCDRgtC40LrQtdGC0LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INGDINC90LDQv9GA0LXQtNC90L7QvCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LzQvtC00YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CQ0LrQviDRmNC1INC+0L/QtdGA0LDRgtC10YAg0LTQvtC00LDQviDQvdCw0L/QvtC80LXQvdGDLCDQv9C+0LTQtdGI0LDQstCwINGB0YLQsNGC0YPRgSDRgtC40LrQtdGC0LAg0L3QsCDQtdC60YDQsNC90YMg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INGC0LjQutC10YLQsCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ9CT0LvQsNCy0L3QuCAvINC30LDQstC40YHQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAn0JPQu9Cw0LLQvdC4INGC0LjQutC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJ9CT0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAn0JzQvtC00YPQuyDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LfQsCDRhNGD0L3QutGG0LjRmNGDINC80LDRgdC+0LLQvdC1INC+0LHRgNCw0LTQtSDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC00L7QtNCw0YLQsNC6INC/0YDQtdCz0LvQtdC00LAg0LPQu9Cw0LLQvdC40YUg0YLQuNC60LXRgtCwINC60L7QvdGC0YDQvtC70L3QtSDRgtCw0LHQu9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4gIkxpbWl0IiDRmNC1INCx0YDQvtGYINC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INC/0YDQuNC60LDQt9Cw0L3QuNGFINGC0LjQutC10YLQsC4gIkdyb3VwIiDRgdC1INC60L7RgNC40YHRgtC4INC00LAg0L7Qs9GA0LDQvdC40YfQuCDQv9GA0LjRgdGC0YPQvyDQtNC+0LTQsNGC0LrRgyAo0L3Qv9GALiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIg0L7QtNGA0LXRktGD0ZjQtSDQtNCwINC70Lgg0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQsNC60YLQuNCy0LjRgNCw0L0g0LjQu9C4INC00LAg0ZjQtSDQv9C+0YLRgNC10LHQvdC+INC00LAg0LPQsCDQutC+0YDQuNGB0L3QuNC6INC80LDQvdGD0LXQu9C90L4g0LDQutGC0LjQstC40YDQsC4gIkNhY2hlVFRMTG9jYWwiINGY0LUg0LLRgNC10LzQtSDRgyDQvNC40L3Rg9GC0LjQvNCwINC30LAg0LrQtdGIINC00L7QtNCw0YLQutCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQtNC+0LTQsNGC0LDQuiDQv9GA0LXQs9C70LXQtNCwINC30LDQstC40YHQvdC40YUg0YLQuNC60LXRgtCwINC60L7QvdGC0YDQvtC70L3QtSDRgtCw0LHQu9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4gIkxpbWl0IiDRmNC1INCx0YDQvtGYINC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INC/0YDQuNC60LDQt9Cw0L3QuNGFINGC0LjQutC10YLQsC4gIkdyb3VwIiDRgdC1INC60L7RgNC40YHRgtC4INC00LAg0L7Qs9GA0LDQvdC40YfQuCDQv9GA0LjRgdGC0YPQvyDQtNC+0LTQsNGC0LrRgyAo0L3Qv9GALiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIg0L7QtNGA0LXRktGD0ZjQtSDQtNCwINC70Lgg0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQsNC60YLQuNCy0LjRgNCw0L0g0LjQu9C4INC00LAg0ZjQtSDQv9C+0YLRgNC10LHQvdC+INC00LAg0LPQsCDQutC+0YDQuNGB0L3QuNC6INC80LDQvdGD0LXQu9C90L4g0LDQutGC0LjQstC40YDQsC4gIkNhY2hlVFRMTG9jYWwiINGY0LUg0LLRgNC10LzQtSDRgyDQvNC40L3Rg9GC0LjQvNCwINC30LAg0LrQtdGIINC00L7QtNCw0YLQutCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ9Cg0LXQs9C40YHRgtGA0LDRhtC40ZjQsCDQvNC+0LTRg9C70LAg0LTQvtCz0LDRktCw0ZjQsCDQt9CwINGC0LjQutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0L/RhdC+0LTQvdCwINC00L7Qt9Cy0L7Qu9CwINC30LAg0YPQv9C+0YLRgNC10LHRgyDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdCwINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyBpZiBNYXN0ZXIgLyBTbGF2ZSBmaWVsZCBtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBhZ2VudC4nfSA9ICfQlNC10YTQuNC90LjRiNC1INC00LAg0LvQuCDQv9C+0ZnQtSDQk9C70LDQstC90LggLyDQl9Cw0LLQuNGB0L3QuCDQvNC+0YDQsCDQsdC40YLQuCDQv9C+0LTQtdGI0LXQvdC+INC+0LQg0YHRgtGA0LDQvdC1INC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgdCw0LTRgNC20LDRmCDQt9CwINC90LDQv9C+0LzQtdC90LUg0LTQvtC00LDRgtC1INC90LAg0L3QsCDQk9C70LDQstC90Lgv0JfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC10LTQvNC10YIg0LfQsCDQvdCw0L/QvtC80LXQvdC1INC00L7QtNCw0YLQtSDQvdCwINCT0LvQsNCy0L3QuC/Ql9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQvtC00LPQvtCy0L7RgNC90L7QsyDQvtC/0LXRgNCw0YLQtdGA0LAg0LfQsCDRgtC40LrQtdGCINC90LAg0LXQutGA0LDQvdGDINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCAg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YHQtdGA0LLQuNGBINC90LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAgKFRpY2tldDo6U2VydmljZSDQvNC+0YDQsCDQsdC40YLQuCDQsNC60YLQuNCy0LjRgNCw0L0pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INCy0LvQsNGB0L3QuNC60LAg0YLQuNC60LXRgtCwINC90LAg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQuNC60LDQt9CwINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YLQuNC/INGC0LjQutC10YLQsCDQvdCwINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LjQutCw0LfQsCDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwIChUaWNrZXQ6OlR5cGUg0LzQvtGA0LAg0LHQuNGC0Lgg0LDQutGC0LjQstC40YDQsNC9KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LjQt9C80LXQvdGDINCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDRgdGC0LDRgtGD0YHQsCDRgtC40LrQtdGC0LAg0L3QsCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LfRg9GY0LUg0LvQuNGB0YLRgyDRgdCy0LjRhSDQvtC/0LXRgNCw0YLQtdGA0LAg0YPQutGZ0YPRh9C10L3QuNGFINGDINC+0LLQsNGYINGC0LjQutC10YIg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINC00LXRgtCw0ZnQvdC+0LMg0L/RgNC40LrQsNC30LAg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC70LjRgdGC0YMg0YHQstC40YUg0LzQvtCz0YPRm9C40YUg0L7Qv9C10YDQsNGC0LXRgNCwICjRgdCy0Lgg0L7Qv9C10YDQsNGC0LXRgNC4INGB0LAg0LTQvtC30LLQvtC70L7QvCDQt9CwINC90LDQv9C+0LzQtdC90YMg0LfQsCDRgNC10LQv0YLQuNC60LXRgikg0YDQsNC00Lgg0YPRgtCy0YDRktC40LLQsNGa0LAg0LrQviDRgtGA0LXQsdCwINC00LAg0LHRg9C00LUg0LjQvdGE0L7RgNC80LjRgdCw0L0g0L4g0L7QstC+0Zgg0L3QsNC/0L7QvNC10L3QuCwg0L3QsCDQs9C70LDQstC90Lgv0LfQsNCy0LjRgdC90Lgg0LXQutGA0LDQvdGDINGC0LjQutC10YLQsCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC+0L/RhtC40ZjQtSDQv9GA0LjQvtGA0LjRgtC10YLQsCDRgtC40LrQtdGC0LAg0L3QsCDQtdC60YDQsNC90YMg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INGC0LjQutC10YLQsCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpdGxlIGZpZWxkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC90LDRgdC70L7QstC90LAg0L/QvtGZ0LAg0L3QsCDQtdC60YDQsNC90YMg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4INGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIFRpY2tldHMnfSA9ICfQl9Cw0LLQuNGB0L3QuCDRgtC40LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAn0J7QstCw0Zgg0LzQvtC00YPQuyDQsNC60YLQuNCy0LjRgNCwINC/0L7RmdC1INCz0LvQsNCy0L3QuC/Qt9Cw0LLQuNGB0L3QuCDQvdCwINC10LrRgNCw0L3RgyDQvdC+0LLQuNGFINC40LzQtdGY0Lsg0YLQuNC60LXRgtCwINC4INGC0LjQutC10YLQsCDQv9C+0LfQuNCy0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IE1hc3RlclNsYXZlLid9ID0gJ9Ci0LjQutC10YIg0LPQu9Cw0LLQvdC4L9C30LDQstC40YHQvdC4Lic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fT1RSU01hc3RlclNsYXZlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQnfSA9ICdQb2xqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFuYWdlIE1hc3Rlci9TbGF2ZSBzdGF0dXMgZm9yICVzJXMlcyd9ID0gJ1VwcmF2bGphbmplIHN0YXR1c29tIGdsYXZuaS96YXZpc25pIHphICVzJXMlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IE1hc3RlciBUaWNrZXQnfSA9ICdOb3ZpIGdsYXZuaSB0aWtldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnT3Bvem92aSBwb2RlxaFhdmFuamUgZ2xhdm5vZyB0aWtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0J30gPSAnT3Bvem92aSBwb2RlxaFhdmFuamUgemF2aXNub2cgdGlrZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICdaYXZpc25pIG9kICVzJXMlczogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ09wb3pvdmkgcG9kZcWhYXZhbmplIGdsYXZuaWggdGlrZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldHMnfSA9ICdPcG96b3ZpIHBvZGXFoWF2YW5qZSB6YXZpc25paCB0aWtldGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnR2xhdm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlcyd9ID0gJ1phdmlzbmkgb2QgJXMlcyVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICdHbGF2bmkgdGlrZXQnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICdTdmkgZ2xhdm5pIHRpa2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ1N2aSB6YXZpc25pIHRpa2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG96dm9samF2YSBkb2RhdmFuamUgYmVsZcWha2kgbmEgZ2xhdm5pL3phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSBvcGVyYXRlcnNrb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ1Byb21lbmkgZ2xhdm5pL3phdmlzbmkgc3RhdHVzIHRpa2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICdEZWZpbmnFoWUgZGluYW1pxI1raSBuYXppdiBwb2xqYSB6YSBmdW5rY2lqdSBnbGF2bm9nIHRpa2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdPZHJlxJF1amUgZGEgbGkgamUgcG90cmVibm8gemFrbGp1xI1hdGkgZ2xhdm5pL3phdmlzbmkgZWtyYW4gdGlrZXRhIG5hIGRldGFsam5vbSBwcmlrYXp1IHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhIChha28gdGlrZXQgam/FoSB1dmVrIG5pamUgemFrbGp1xI1hbiwgdGlrZXQgxIdlIGRvYml0aSBzdGF0dXMgemFrbGp1xI1hbiBpIHRyZW51dG5pIG9wZXJhdGVyIMSHZSBiaXRpIGF1dG9tYXRza2kgcG9zdGF2bGplbiBrYW8gdmxhc25paykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIE1hc3RlclNsYXZlIG5vdGUgaXMgdmlzaWJsZSBmb3IgdGhlIGN1c3RvbWVyIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdEZWZpbmnFoWUgdWtvbGlrbyBqZSBNYXN0ZXJTbGF2ZSBuYXBvbWVuYSBwb2RyYXp1bWV2YW5vIHZpZGxqaXZhIHphIGtsaWplbnQga29yaXNuaWtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG9kcmF6dW1ldmFuaSBuYXJlZG5pIHN0YXR1cyB0aWtldGEgcG9zbGUgZG9kYXZhbGphIGJlbGXFoWtlLCBuYSBnbGF2bmkvemF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgcHJpb3JpdGV0IHRpa2V0YSBuYSBnbGF2bmkvemF2aXNuaSBla2FudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSBjb21tZW50IGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBrb21lbnRhciB6YSBpc3RvcmlqYXQgbmEgZ2xhdm5pL3phdmlzbmkgZWtyYW5za29qIGFrY2lqaSwgxaF0byDEh2Ugc2Uga29yaXN0aXRpIHphIGlzdG9yaWphdCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHRpcCBpc3RvcmlqYXRhIHphIGdsYXZuaS96YXZpc25pIGVrcmFuc2t1IGFrY2lqdSwgxaF0byDEh2Ugc2Uga29yaXN0aXRpIHphIGlzdG9yaWphdCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIG5hcmVkbmkgc3RhdHVzIHRpa2V0YSBwb3NsZSBkb2RhdmFsamEgYmVsZcWha2UsIG5hIGdsYXZuaS96YXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgcGFydCBvZiB0aGUgZmVhdHVyZS4nfSA9ICdBa3RpdmlyYSBuYXByZWRuaSBkZW8gZnVua2NpamUgZ2xhdm5pL3phdmlzbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmlyYW5qZSBzdm9qc3R2YSBkYSB6YXZpc25pIHRpa2V0IHByYXRpIGdsYXZuaSBuYSBub3ZpIGdsYXZuaSB1IG5hcHJlZG5vbSBnbGF2bmkvemF2aXNuaSBtb2R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdGUgb2YgYSB0aWNrZXQgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICdBa3RpdmlyYW5qZSBmdW5rY2lqZSB6YSBwcm9tZW51IHN0YW5qYSB0aWtldGEgZ2xhdm5pL3phdmlzbmkgIHUgbmFwcmVkbm9tIGdsYXZuaS96YXZpc25pIG1vZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ0FrdGl2aXJhbmplIHN2b2pzdHZhIHphIHByb3NsZcSRaXZhbmplIMSNbGFuYWthIHRpcGEgInByb3NsZWRpIiBnbGF2bm9nIHRpa2V0YSBrb3Jpc25pY2ltYSB6YXZpc25paCB0aWtldGEuIFBvZHJhenVtZXZhbm8gamUgKGlza2xqdcSNZW5vKSBkYSBzZSBuacWhdGEgbmUgcHJvc2xlxJF1amUgemF2aXNuaW0gdGlrZXRpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8ga2VlcCBwYXJlbnQtY2hpbGQgbGluayBhZnRlciBjaGFuZ2Ugb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWt0aXZpcmFuamUgZnVua2NpamUgemEgemFkcsW+YXZhbmplIHZlemUgbmFkcmXEkWVuaS1wb2RyZcSRZW5pIHBvc2xlIGl6bWVuZSBzdGFuamEgZ2xhdm5pL3phdmlzbmkgdSBuYXByZWRub20gZ2xhdm5pL3phdmlzbmkgbW9kdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBrZWVwIHBhcmVudC1jaGlsZCBsaW5rIGFmdGVyIHVuc2V0IG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ0FrdGl2aXJhbmplIGZ1bmtjaWplIHphIHphZHLFvmF2YW5qZSB2ZXplIG5hZHJlxJFlbmktcG9kcmXEkWVuaSBwb3NsZSBvcG96aXZhIHBvZGXFoWF2YW5qYSBzdGFuamEgZ2xhdm5pL3phdmlzbmkgIHUgbmFwcmVkbm9tIGdsYXZuaS96YXZpc25pIG1vZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnQWt0aXZpcmFuamUgZnVua2NpamUgemEgb3Bveml2IHBvZGXFoWF2YW5qYSBzdGFuamEgdGlrZXRhIGdsYXZuaS96YXZpc25pIHUgbmFwcmVkbm9tIGdsYXZuaS96YXZpc25pIG1vZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FrbyBqZSBvcGVyYXRlciBkb2RhbyBuYXBvbWVudSwgcG9kZcWhYXZhIHN0YXR1cyB0aWtldGEgbmEgZWtyYW51IGdsYXZuaS96YXZpc25pIHRpa2V0YSBuYSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJ0dsYXZuaSAvIHphdmlzbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICdHbGF2bmkgdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAnR2xhdm5pL3phdmlzbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ01vZHVsIGdsYXZuaS96YXZpc25pIHphIGZ1bmtjaWp1IG1hc292bmUgb2JyYWRlIHRpa2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGRvZGF0YWsgcHJlZ2xlZGEgZ2xhdm5paCB0aWtldGEga29udHJvbG5lIHRhYmxlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuICJMaW1pdCIgamUgYnJvaiBwb2RyYXp1bWV2YW5vIHByaWthemFuaWggdGlrZXRhLiAiR3JvdXAiIHNlIGtvcmlzdGkgZGEgb2dyYW5pxI1pIHByaXN0dXAgZG9kYXRrdSAobnByLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2RyZcSRdWplIGRhIGxpIGplIHBvZHJhenVtZXZhbm8gYWt0aXZpcmFuIGlsaSBkYSBqZSBwb3RyZWJubyBkYSBnYSBrb3Jpc25payBtYW51ZWxubyBha3RpdmlyYS4gIkNhY2hlVFRMTG9jYWwiIGplIHZyZW1lIHUgbWludXRpbWEgemEga2XFoSBkb2RhdGthLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgZG9kYXRhayBwcmVnbGVkYSB6YXZpc25paCB0aWtldGEga29udHJvbG5lIHRhYmxlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuICJMaW1pdCIgamUgYnJvaiBwb2RyYXp1bWV2YW5vIHByaWthemFuaWggdGlrZXRhLiAiR3JvdXAiIHNlIGtvcmlzdGkgZGEgb2dyYW5pxI1pIHByaXN0dXAgZG9kYXRrdSAobnByLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2RyZcSRdWplIGRhIGxpIGplIHBvZHJhenVtZXZhbm8gYWt0aXZpcmFuIGlsaSBkYSBqZSBwb3RyZWJubyBkYSBnYSBrb3Jpc25payBtYW51ZWxubyBha3RpdmlyYS4gIkNhY2hlVFRMTG9jYWwiIGplIHZyZW1lIHUgbWludXRpbWEgemEga2XFoSBkb2RhdGthLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgZG9nYcSRYWphIHphIHRpa2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVvcGhvZG5hIGRvenZvbGEgemEgdXBvdHJlYnUgZ2xhdm5pL3phdmlzbmkgZWtyYW5hIGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIGlmIE1hc3RlciAvIFNsYXZlIGZpZWxkIG11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGFnZW50Lid9ID0gJ0RlZmluacWhZSBkYSBsaSBwb2xqZSBHbGF2bmkgLyBaYXZpc25pIG1vcmEgYml0aSBwb2RlxaFlbm8gb2Qgc3RyYW5lIG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBib2R5IHRleHQgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgc2FkcsW+YWogemEgbmFwb21lbmUgZG9kYXRlIG5hIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHByZWRtZXQgemEgbmFwb21lbmUgZG9kYXRlIG5hIEdsYXZuaS9aYXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBvZGdvdm9ybm9nIG9wZXJhdGVyYSB6YSB0aWtldCBuYSBla3JhbnUgZ2xhdm5pL3phdmlzbmkgIGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBzZXJ2aWNlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBzZXJ2aXMgbmEgZ2xhdm5pL3phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhIChUaWNrZXQ6OlNlcnZpY2UgbW9yYSBiaXRpIGFrdGl2aXJhbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSB2bGFzbmlrYSB0aWtldGEgbmEgZ2xhdm5pL3phdmlzbmkgZWtyYW51IGRldGFsam5vZyBwcmlrYXphIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdPZHJlxJF1amUgdGlwIHRpa2V0YSBuYSBnbGF2bmkvemF2aXNuaSBla3JhbnUgZGV0YWxqbm9nIHByaWthemEgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEgKFRpY2tldDo6VHlwZSBtb3JhIGJpdGkgYWt0aXZpcmFuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBpem1lbnUgZ2xhdm5pL3phdmlzbmkgc3RhdHVzYSB0aWtldGEgbmEgZGV0YWxqbm9tIHByaWthenUgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgbGlzdHUgc3ZpaCBvcGVyYXRlcmEgdWtsanXEjWVuaWggdSBvdmFqIHRpa2V0IG5hIGdsYXZuaS96YXZpc25pIGVrcmFudSBkZXRhbGpub2cgcHJpa2F6YSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIGxpc3R1IHN2aWggbW9ndcSHaWggb3BlcmF0ZXJhIChzdmkgb3BlcmF0ZXJpIHNhIGRvenZvbG9tIHphIG5hcG9tZW51IHphIHJlZC90aWtldCkgcmFkaSB1dHZyxJFpdmFuamEga28gdHJlYmEgZGEgYnVkZSBpbmZvcm1pc2FuIG8gb3ZvaiBuYXBvbWVuaSwgbmEgZ2xhdm5pL3phdmlzbmkgZWtyYW51IHRpa2V0YSBuYSBkZXRhbGpub20gcHJpa2F6dSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIG9wY2lqZSBwcmlvcml0ZXRhIHRpa2V0YSBuYSBla3JhbnUgZ2xhdm5pL3phdmlzbmkgdGlrZXRhIG5hIGRldGFsam5vbSBwcmlrYXp1IHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgbmFzbG92bmEgcG9samEgbmEgZWtyYW51IGdsYXZuaS96YXZpc25pIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnWmF2aXNuaSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWVzIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHdoZXJlIHRoZSByZWFsIG5hbWUgZnJvbSBNYXN0ZXIgdGlja2V0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb25lIGluIHRoZSBTbGF2ZSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtb2R1bGUgYWN0aXZhdGVzIE1hc3Rlci9TbGF2ZSBmaWVsZCBpbiBuZXcgZW1haWwgYW5kIHBob25lIHRpY2tldCBzY3JlZW5zLid9ID0KICAgICAgICAnT3ZhaiBtb2R1bCBha3RpdmlyYSBwb2xqZSBnbGF2bmkvemF2aXNuaSBuYSBla3JhbnUgbm92aWggaW1lamwgdGlrZXRhIGkgdGlrZXRhIHBveml2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXJ0aGVyIHZlcnNpb25zIG9mIE9UUlNNYXN0ZXJTbGF2ZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnVGlrZXQgZ2xhdm5pL3phdmlzbmkuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgb2YgJXMlcyVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXQnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgbWFzdGVyIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHNsYXZlIHRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGFkZGluZyBub3RlcyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZHluYW1pYyBmaWVsZCBuYW1lIGZvciBtYXN0ZXIgdGlja2V0IGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgYSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoaWYgdGhlIHRpY2tldCBpc25cJ3QgbG9ja2VkIHlldCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyBpdHMgb3duZXIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIE1hc3RlclNsYXZlIG5vdGUgaXMgdmlzaWJsZSBmb3IgdGhlIGN1c3RvbWVyIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIHNsYXZlIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIGlmIE1hc3RlciAvIFNsYXZlIGZpZWxkIG11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGFnZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGNoYW5nZSB0aGUgTWFzdGVyU2xhdmUgc3RhdHVzIG9mIGEgdGlja2V0IGluIHRoZSB0aWNrZXQgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBwb3NzaWJsZSBhZ2VudHMgKGFsbCBhZ2VudHMgd2l0aCBub3RlIHBlcm1pc3Npb25zIG9uIHRoZSBxdWV1ZS90aWNrZXQpIHRvIGRldGVybWluZSB3aG8gc2hvdWxkIGJlIGluZm9ybWVkIGFib3V0IHRoaXMgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aXRsZSBmaWVsZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmllcyB0aGUgZGlmZmVyZW50IGFydGljbGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyB3aGVyZSB0aGUgcmVhbCBuYW1lIGZyb20gTWFzdGVyIHRpY2tldCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIG9uZSBpbiB0aGUgU2xhdmUgdGlja2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbW9kdWxlIGFjdGl2YXRlcyBNYXN0ZXIvU2xhdmUgZmllbGQgaW4gbmV3IGVtYWlsIGFuZCBwaG9uZSB0aWNrZXQgc2NyZWVucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1cnRoZXIgdmVyc2lvbnMgb2YgT1RSU01hc3RlclNsYXZlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBNYXN0ZXJTbGF2ZS4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAnVWdhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGlja2V0QnVsay9NYXN0ZXJTbGF2ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5zZXQgU2xhdmUgVGlja2V0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdGdXp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIG1hc3RlciB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBzbGF2ZSB0aWNrZXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBhZGRpbmcgbm90ZXMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSdWh1c3Uga3VvbmdlemEgdmlkb2tlemkga2F0aWthIHNrcmluaSB5YSBNa3V1TXR1bXdhIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiB0aGUgdGlja2V0Lid9ID0gJ0JhZGlsaXNoYSBoYWxpIHlhIE1rdXUvbXR1bXdhIHlhIHRpa2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBkeW5hbWljIGZpZWxkIG5hbWUgZm9yIG1hc3RlciB0aWNrZXQgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBhIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChpZiB0aGUgdGlja2V0IGlzblwndCBsb2NrZWQgeWV0LCB0aGUgdGlja2V0IGdldHMgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIGl0cyBvd25lcikuJ30gPQogICAgICAgICdGYWZhbnVhIGthbWEga3VmdW5nYSBrd2EgdGlrZXRpIGt1bmFoaXRhamlrYSBrYXRpa2Egc2tyaW5pIHlhIHRpa2V0aSB5YSAgbWt1dW10dW13YSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEgKGthbWEgdGlrZXRpIGhhaWphZnVuZ3dhIGJhZG8sIHRpa2V0aSB6aXBhdHdlIGt1ZnVuZ3dhIG5hIHdha2FsYSB3YSBzYXNhIGF0YWZhbnl3YSBhdXRvbWF0aWtpIGt1d2EgbW1pbGlraSB3YWtlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgTWFzdGVyU2xhdmUgbm90ZSBpcyB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IG5leHQgc3RhdGUgb2YgYSB0aWNrZXQgYWZ0ZXIgYWRkaW5nIGEgbm90ZSwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kgbGEgaGFsaSBpeWFqbyB5YSB0aWtldGkgYmFhZGEgeWEga3VvbmdlemEga2lkb2tlem8sIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lwYXVtYmVsZSBjaGFndW8tbXNpbmdpIGNoYSB0aWtldGkga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGhpc3RvcmlhIHlhIG1hb25pIGt3YSBraXRlbmRvIGNoYSBza3JpbmkgeWEgdGlrZXRpIG1rdXVtdHVtd2EsIGFtYmF5byBpbmF0dW1pa2EgbmEgaGlzdG9yaWEgeWEgdGlrZXRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmFmYW51YSBhaW5hIHlhIGhpc3RvcmlhIGt3YSBraXRlbmRvIGNoYSBza3JpbmkgeWEgbWt1dW10dW13YSBjaGEgdGlrZXRpLCBhbWJhY2hvIGtpbmF0dW1pa2EgbmEgaGlzdG9yaWEgeWEgdGlrZXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbmV4dCBzdGF0ZSBvZiBhIHRpY2tldCBhZnRlciBhZGRpbmcgYSBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZhZmFudWEgaGFsaSBpbmF5b2Z1YXRhIHlhIHRpa2V0aSBiYWFkYSB5YSBrdW9uZ2V6YSBraWRva2V6bywga2F0aWthIHNrcmluaSB5YSBta3V1bXR1bXdhIHlhIHRpa2V0aSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0thbWEga2lkb2tlem8ga2ltZW9uZ2V6d2EgbmEgd2FrYWxhLCBpbmF3ZWthIGhhbGkgeWEgdGlrZXRpIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgLyBTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXJTbGF2ZSBtb2R1bGUgZm9yIFRpY2tldCBCdWxrIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRhIGt3YSBiYWNrZW5kIHlhIGRhc2lib2RpIHlhIG1hcGl0aW8geWEgdGlrZXRpIGt1dSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gXCdcJ0tpa29tb1wnXCcgbmkgbmFtYmEgeWEgdmlwZW5nZWUgaGFsaXNpIHZpbmF2eW9vbnllc2h3YSBrd2EgbWNoYWd1by1oYWxpc2kuIFwnXCdLaWt1bmRpXCdcJyBraW5hdHVtaWthIGt1enVpYSBrdWZpa2lhIGt1Y2hvbWVrYSAobWZhbm8gS2lrdW5kaTpVdGF3YWxhO2tpa3VuZGkgY2hhIDE7a2lrdW5kaSBjaGEgMjspLiBcJ1wnQ2hhZ3VvLW1zaW5naVwnXCcgaW5haGFraWtpIGthbWEgbWNob21la28gdW1ld2V6ZXNod2Ega3dhIG1jaGFndW8tbXNpbmdpIGF1IGthbWEgbXR1bWl6aSBhbmFoaXRhamkga3V3ZXplc2hhIGt3YSBta29uby4gXCdcJ0hpZmFkaGltdWRhVFRMS2lhbWJvXCdcJyBuaSBtdWRhIHdhIGhpZmFkaGkgbXVkYSBrYXRpa2EgZGFraWthIGt3YSBtY2hvbWVrby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0YSBrd2EgYmFja2VuZCB5YSBkYXNpYm9kaSB5YSBtYXBpdGlvIHlhIHRpa2V0aSB0dW13YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gXCdcJ0tpa29tb1wnXCcgbmkgbmFtYmEgeWEgdmlwZW5nZWUgaGFsaXNpIHZpbmF2eW9vbnllc2h3YSBrd2EgbWNoYWd1by1oYWxpc2kuIFwnXCdLaWt1bmRpXCdcJyBraW5hdHVtaWthIGt1enVpYSBrdWZpa2lhIGt1Y2hvbWVrYSAobWZhbm8gS2lrdW5kaTpVdGF3YWxhO2tpa3VuZGkgY2hhIDE7a2lrdW5kaSBjaGEgMjspLiBcJ1wnQ2hhZ3VvLW1zaW5naVwnXCcgaW5haGFraWtpIGthbWEgbWNob21la28gdW1ld2V6ZXNod2Ega3dhIG1jaGFndW8tbXNpbmdpIGF1IGthbWEgbXR1bWl6aSBhbmFoaXRhamkga3V3ZXplc2hhIGt3YSBta29uby4gXCdcJ0hpZmFkaGltdWRhVFRMS2lhbWJvXCdcJyBuaSBtdWRhIHdhIGhpZmFkaGkgbXVkYSBrYXRpa2EgZGFraWthIGt3YSBtY2hvbWVrby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ1VzYWppbGkgd2Ega2lwaW1vIGNoYSB0dWtpbyBsYSB0aWtldGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2VzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYXdla2EgbWF0aW5pIGtpaW5pIGtpbGljaG9vbmdlendhIGNoYSBjaGFndW8tbXNpbmdpIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dXdhIHlhIHRpa2V0aSBrYXRpa2EgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IHN1YmplY3QgZm9yIG5vdGVzIGFkZGVkIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBzb21vIGxhIGNoYWd1by1tc2luZ2kga3dhIGtpcGVuZ2VsZSBraWxpY2hvb25nZXp3YSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHV3YSB5YSB0aWtldGkga2F0aWthIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYXdla2Egd2FrYWxhIGFtYmF5ZSBhbmFodXNpa2EgbmEgdGlrZXRpIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthdCBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdJbmF3ZWthIGh1ZHVtYSBrYXRpa2Egc2tyaW5pIHlhIG1rdXVtdHVtd2EgeWEgdGlrZXRpIHlhIHRpa2V0aSBpbGl5b2t1endhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYSAoVGlrZXRpOjpIdWR1bWEgaW5heW9oaXRhamkga3VhbWlsaXNod2EpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgb3duZXIgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIG1taWxpa2kgd2EgdGlrZXRpIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aWNrZXQgdHlwZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICdJbmF3ZWthIGFpbmEgeWEgdGlrZXRpIGthdGlrYSBza3JpbmkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhICh0aWtldGk6OiBhaW5hIGluYXlvaXRhamkga3VhbWlsaXNod2EpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBjaGEga3ViYWRpbGlzaGEgaGFkaGkgeWEgbWt1dW10dW13YSB5YSB0aWtldGkga2F0aWthIG1hbmRoYXJpIGlsaXlva3V6d2EgeWEgdGlrZXRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnZvbHZlZCBhZ2VudHMgb24gdGhpcyB0aWNrZXQsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBvcm9kaGEgeWEgbWF3YWthbGEgd290ZSB3YW5hb2h1c2lrYSBuYSB0aWtldGkgaGlpLCBrYXRpa2Egc2tyaW5pIHlhIHRpa2V0aSBta3V1L210dW13YSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIHBvc3NpYmxlIGFnZW50cyAoYWxsIGFnZW50cyB3aXRoIG5vdGUgcGVybWlzc2lvbnMgb24gdGhlIHF1ZXVlL3RpY2tldCkgdG8gZGV0ZXJtaW5lIHdobyBzaG91bGQgYmUgaW5mb3JtZWQgYWJvdXQgdGhpcyBub3RlLCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEgb3JvZGhhIHlhIHdha2FsYSB3b3RlIHdhbmFvd2V6YSAobWF3YWthbGEgd290ZSB3ZW55ZSBraWRva2V6byBjaGEgcnVodXNhIHlhIHRpa2V0aS9mb2xlbmkpIGt1dGFtYnVhIG5hbmkgYXRhYXJpZml3ZSBrdWh1c3Uga2lkb2tlem8gaGlraSwga2F0aWthIHNrcmluaSB5YSB0aWtldGkgbWt1dW10dW13YSB5YSB0aWtldGkgaWxpeW9rdXp3YSBrYXRpa2Ega2lvbGVzdXJhIGNod2Egd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGlja2V0IHByaW9yaXR5IG9wdGlvbnMgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIG1hY2hhZ3VvIHlhIGtpcGF1bWJlbGUgeWEgdGlrZXRpIGthdGlrYSBza3JpbmkgeWEgdGlrZXRpIG1rdXVtdHVtd2EgeWEgdGlrZXRpIGlsaXlva3V6d2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXJ0aGVyIHZlcnNpb25zIG9mIE9UUlNNYXN0ZXJTbGF2ZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAn4Lif4Li04Lil4LiU4LmMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ+C4leC4seC5i+C4p+C4oeC4suC4quC5gOC4leC4reC4o+C5jOC5g+C4q+C4oeC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAn4Lii4LiB4LmA4Lil4Li04LiB4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiV4Lix4LmL4Lin4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ+C4ouC4geC5gOC4peC4tOC4geC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4leC4seC5i+C4p1NsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NsYXZlIG9mICVzJXMlczogJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ+C4oeC4suC4quC5gOC4leC4reC4o+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lit4LiZ4Li44LiN4Liy4LiV4LmD4Lir4LmJ4LmA4Lie4Li04LmI4Lih4LmC4LiZ4LmJ4LiV4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4luC5ieC4suC4q+C4suC4geC4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C5g+C4iuC5ieC4leC4seC5i+C4p+C4peC5h+C4reC4hOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4p01hc3RlclNsYXZl4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICjguJfguLPguIHguLLguKPguKXguYfguK3guITguJXguLHguYvguKfguJbguYnguLLguKvguLLguIHguJXguLHguYvguKfguKLguLHguIfguYTguKHguYjguYTguJTguYnguKXguYfguK3guITguYHguKXguLDguKPguLDguJrguLjguYPguKvguYnguYDguK3guYDguKLguYjguJnguJXguYzguJvguLHguIjguIjguLjguJrguLHguJnguYDguJvguYfguJnguYDguIjguYnguLLguILguK3guIfguK3guLHguJXguYLguJnguKHguLHguJXguLQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIE1hc3RlclNsYXZlIG5vdGUgaXMgdmlzaWJsZSBmb3IgdGhlIGN1c3RvbWVyIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiW4Lix4LiU4LmE4Lib4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Lir4Lil4Lix4LiH4LiI4Liy4LiB4LmA4Lie4Li04LmI4Lih4LmC4LiZ4LmJ4LiV4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4peC4s+C4lOC4seC4muC4hOC4p+C4suC4oeC4quC4s+C4hOC4seC4jeC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4p01hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IGNvbW1lbnQgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiB4Liy4Lij4LmB4Liq4LiU4LiH4LiE4Lin4Liy4Lih4LmA4Lir4LmH4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LiB4Lij4Liw4LiX4Liz4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54LihIOC4i+C4tuC5iOC4h+C4l+C4s+C5g+C4q+C5ieC5gOC4geC4tOC4lOC4hOC4p+C4suC4oeC4hOC4uOC5ieC4meC5gOC4hOC4ouC5g+C4meC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoaXN0b3J5IHR5cGUgZm9yIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIGFjdGlvbiwgd2hpY2ggZ2V0cyB1c2VkIGZvciB0aWNrZXQgaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lib4Lij4Liw4LmA4Lig4LiX4Lib4Lij4Liw4Lin4Lix4LiV4Li04Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LiB4Lij4Liw4LiX4Liz4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LiB4Lij4Liw4LiX4Liz4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54LihIOC4i+C4tuC5iOC4h+C4l+C4s+C5g+C4q+C5ieC5gOC4geC4tOC4lOC4hOC4p+C4suC4oeC4hOC4uOC5ieC4meC5gOC4hOC4ouC5g+C4meC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiW4Lix4LiU4LmE4Lib4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Lir4Lil4Lix4LiH4LiI4Liy4LiB4LmA4Lie4Li04LmI4Lih4LmC4LiZ4LmJ4LiV4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5gOC4i+C4leC4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYzguKvguLLguIHguYDguK3guYDguKLguYjguJnguJXguYzguYTguJTguYnguYDguJ7guLTguYjguKHguYLguJnguYnguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICfguKHguLLguKrguYDguJXguK3guKPguYwvU2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyU2xhdmUgbW9kdWxlIGZvciBUaWNrZXQgQnVsayBmZWF0dXJlLid9ID0gJ+C5guC4oeC4lOC4ueC4pSDguKHguLLguKrguYDguJXguK3guKPguYwvU2xhdmUg4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Li44LiT4Lil4Lix4LiB4Lip4LiT4Liw4LiB4Lil4Li44LmI4Lih4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgbWFzdGVyIHRpY2tldHMgb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC5geC4lOC4iuC4muC4reC4o+C5jOC4lOC5gOC4muC4t+C5ieC4reC4h+C4q+C4peC4seC4h+C4guC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4leC4seC5i+C4p21hc3RlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guKrguYDguK3guYDguKLguYjguJnguJXguYwgIuC4iOC4s+C4geC4seC4lCIg4LiE4Li34Lit4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4LiC4Lit4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LmB4Liq4LiU4LiH4LmC4LiU4Lii4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZICLguIHguKXguLjguYjguKEiIOC4iOC4sOC4luC4ueC4geC4meC4s+C4oeC4suC5g+C4iuC5ieC5gOC4nuC4t+C5iOC4reC4iOC4s+C4geC4seC4lOC4geC4suC4o+C5gOC4guC5ieC4suC4luC4tuC4h+C4m+C4peC4seC5iuC4geC4reC4tOC4mSAo4LmA4LiK4LmI4LiZ4LiB4Lil4Li44LmI4LihOiDguJzguLnguYnguJTguLnguYHguKXguKPguLDguJrguJo7IOC4geC4peC4uOC5iOC4oSAxOyDguIHguKXguLjguYjguKEyOykgIuC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSIg4Lij4Liw4Lia4Li44Lin4LmI4Liy4LiW4LmJ4Liy4Lib4Lil4Lix4LmK4LiB4Lit4Li04LiZ4LiW4Li54LiB4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LmC4LiU4Lii4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Lir4Lij4Li34Lit4Lir4Liy4LiB4Lic4Li54LmJ4LmD4LiK4LmJ4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmA4Lie4Li34LmI4Lit4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LmE4LiU4LmJ4LiU4LmJ4Lin4Lii4LiV4LiZ4LmA4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgc2xhdmUgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiU4LiK4Lia4Lit4Lij4LmM4LiU4LmA4Lia4Li34LmJ4Lit4LiH4Lir4Lil4Lix4LiH4LiC4Lit4LiH4Lig4Liy4Lie4Lij4Lin4Lih4LiV4Lix4LmL4Linc2xhdmUgdOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4quC5gOC4reC5gOC4ouC5iOC4meC4leC5jCAi4LiI4Liz4LiB4Lix4LiUIiDguITguLfguK3guIHguLPguKvguJnguJTguIjguLPguJnguKfguJnguILguK3guIfguKPguLLguKLguIHguLLguKPguJfguLXguYjguYHguKrguJTguIfguYLguJTguKLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJkgIuC4geC4peC4uOC5iOC4oSIg4LiI4Liw4LiW4Li54LiB4LiZ4Liz4Lih4Liy4LmD4LiK4LmJ4LmA4Lie4Li34LmI4Lit4LiI4Liz4LiB4Lix4LiU4LiB4Liy4Lij4LmA4LiC4LmJ4Liy4LiW4Li24LiH4Lib4Lil4Lix4LmK4LiB4Lit4Li04LiZICjguYDguIrguYjguJnguIHguKXguLjguYjguKE6IOC4nOC4ueC5ieC4lOC4ueC5geC4peC4o+C4sOC4muC4mjsg4LiB4Lil4Li44LmI4LihIDE7IOC4geC4peC4uOC5iOC4oTI7KSAi4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZIiDguKPguLDguJrguLjguKfguYjguLLguJbguYnguLLguJvguKXguLHguYrguIHguK3guLTguJnguJbguLnguIHguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYLguJTguKLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguKvguKPguLfguK3guKvguLLguIHguJzguLnguYnguYPguIrguYnguJXguYnguK3guIfguIHguLLguKPguYDguJ7guLfguYjguK3guYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYTguJTguYnguJTguYnguKfguKLguJXguJnguYDguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0cmF0aW9uIG9mIHRoZSB0aWNrZXQgZXZlbnQgbW9kdWxlLid9ID0gJ+C4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC4guC4reC4h+C5guC4oeC4lOC4ueC4peC4leC4seC5i+C4p+C4geC4tOC4iOC4geC4o+C4o+C4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LmD4LiZ4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgaWYgTWFzdGVyIC8gU2xhdmUgZmllbGQgbXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgYWdlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlZmF1bHQgYm9keSB0ZXh0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4o+C4sOC4muC4uOC4guC5ieC4reC4hOC4p+C4suC4oeC4quC5iOC4p+C4meC5gOC4meC4t+C5ieC4reC4q+C4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC5guC4meC5ieC4leC4l+C4teC5iOC4luC4ueC4geC5gOC4nuC4tOC5iOC4oeC5gOC4guC5ieC4suC4oeC4suC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4o+C4sOC4muC4uOC4q+C4seC4p+C4guC5ieC4reC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC5guC4meC5ieC4leC4l+C4teC5iOC4luC4ueC4geC5gOC4nuC4tOC5iOC4oeC5gOC4guC5ieC4suC4oeC4suC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgcmVzcG9uc2libGUgYWdlbnQgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC5gOC4reC5gOC4ouC5iOC4meC4leC5jOC4l+C4teC5iOC4o+C4seC4muC4nOC4tOC4lOC4iuC4reC4muC4leC4seC5i+C4p+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgc2VydmljZSBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIHguLLguKPguJrguKPguLTguIHguLLguKPguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKcgTWFzdGVyU2xhdmUg4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICjguJXguLHguYvguKcgOjrguIHguLLguKPguJrguKPguLTguIHguLLguKPguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguYDguJvguLTguJTguYPguIrguYnguIfguLLguJkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCBvd25lciBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC5gOC4iOC5ieC4suC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IHR5cGUgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lib4Lij4Liw4LmA4Lig4LiX4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAo4LiV4Lix4LmL4LinIDo64Lib4Lij4Liw4LmA4Lig4LiX4LiV4Lix4LmL4Lin4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0dXMgb2YgYSB0aWNrZXQgaW4gdGhlIHRpY2tldCB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC5gOC4m+C4peC4teC5iOC4ouC4meC4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguYPguJnguIHguLLguKPguIvguLnguKHguJXguLHguYvguKfguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgaW52b2x2ZWQgYWdlbnRzIG9uIHRoaXMgdGlja2V0LCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4o+C4suC4ouC4iuC4t+C5iOC4reC4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jOC4l+C4teC5iOC5gOC4geC4teC5iOC4ouC4p+C4guC5ieC4reC4h+C4geC4seC4muC4leC4seC5i+C4p+C4meC4teC5ieC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4leC4seC5i+C4pyBNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiK4Li34LmI4Lit4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LiX4Li14LmI4LmA4Lib4LmH4LiZ4LmE4Lib4LmE4LiU4LmJ4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguYDguK3guYDguKLguYjguJnguJXguYzguJfguLHguYnguIfguKvguKHguJTguJfguLXguYjguYTguJTguYnguKPguLHguJrguYLguJnguYnguJXguK3guJnguLjguI3guLLguJXguLTguYPguJnguITguLTguKcv4LiV4Lix4LmL4LinKSDguYDguJ7guLfguYjguK3guIHguLPguKvguJnguJTguKfguYjguLLguYPguITguKPguITguKfguKPguKPguLLguKLguIfguLLguJnguYDguIHguLXguYjguKLguKfguIHguLHguJrguYLguJnguYnguJXguJnguLXguYnguYPguJnguYPguJnguKvguJnguYnguLLguIjguK3guJXguLHguYvguKdNYXN0ZXJTbGF2ZSDguILguK3guIfguJXguLHguYvguKfguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIHRpY2tldCBwcmlvcml0eSBvcHRpb25zIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4Lil4Liz4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Liq4Liz4LiE4Lix4LiN4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiV4Lix4LmL4LinIE1hc3RlclNsYXZlIOC4guC4reC4h+C4leC4seC5i+C4p+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguJnguLXguYnguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguJ/guLTguKXguJTguYwgTWFzdGVyIC9TbGF2ZSDguYPguJnguKvguJnguYnguLLguIjguK3guK3guLXguYDguKHguKXguYPguKvguKHguYjguYHguKXguLDguJXguLHguYvguKfguYLguJfguKPguKjguLHguJ7guJfguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXJ0aGVyIHZlcnNpb25zIG9mIE9UUlNNYXN0ZXJTbGF2ZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX09UUlNNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkJ30gPSAn5a2X5q61JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldE1hc3RlclNsYXZlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW5hZ2UgTWFzdGVyL1NsYXZlIHN0YXR1cyBmb3IgJXMlcyVzJ30gPSAn566h55CGJXMlcyVz55qEIOS4uy/ku44g54q25oCBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldE1hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgTWFzdGVyIFRpY2tldCd9ID0gJ+aWsOW7uuS4u+W3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0J30gPSAn5Li75bel5Y2V6L2s5Li65pmu6YCa5bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Vuc2V0IFNsYXZlIFRpY2tldCd9ID0gJ+S7juW3peWNlei9rOS4uuaZrumAmuW3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXM6ICVzJ30gPSAnJXMlcyVz55qE5LuO5bel5Y2V77yaJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRCdWxrL01hc3RlclNsYXZlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBNYXN0ZXIgVGlja2V0cyd9ID0gJ+WPlua2iOS4u+W3peWNleiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbnNldCBTbGF2ZSBUaWNrZXRzJ30gPSAn5Y+W5raI5LuO5bel5Y2V6K6+572uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTWFzdGVyU2xhdmUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ+S4uyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbGF2ZSBvZiAlcyVzJXMnfSA9ICclcyVzJXPnmoTku47lt6XljZUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIFRpY2tldCd9ID0gJ+S4u+W3peWNlSc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBtYXN0ZXIgdGlja2V0cyd9ID0gJ+aJgOacieeahOS4u+W3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgc2xhdmUgdGlja2V0cyd9ID0gJ+aJgOacieeahOS7juW3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgYWRkaW5nIG5vdGVzIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5Li7L+S7juW3peWNleivpuaDheeql+WPo+WFgeiuuOa3u+WKoOWkh+azqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIHRoZSB0aWNrZXQuJ30gPSAn5L+u5pS55bel5Y2V5Li7L+S7jueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGR5bmFtaWMgZmllbGQgbmFtZSBmb3IgbWFzdGVyIHRpY2tldCBmZWF0dXJlLid9ID0gJ+WumuS5ieS4u+W3peWNleWKn+iDveeahOWKqOaAgeWtl+auteWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGlmIHRoZSB0aWNrZXQgaXNuXCd0IGxvY2tlZCB5ZXQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgaXRzIG93bmVyKS4nfSA9CiAgICAgICAgJ+WumuS5ieacjeWKoeS6uuWRmOeVjOmdouWcqOW3peWNleS4u+S7juiuvue9rueql+WPo+aYr+WQpumcgOimgeW3peWNlemUgeWumu+8iOWmguaenOW3peWNlei/mOayoeaciemUgeWumu+8jOWImeW3peWNleiiq+mUgeWumuS4lOW9k+WJjeacjeWKoeS6uuWRmOiiq+iHquWKqOiuvue9ruS4uuW3peWNleaJgOacieiAhe+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBNYXN0ZXJTbGF2ZSBub3RlIGlzIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn5a6a5LmJ6buY6K6k5oOF5Ya15LiL5a6i5oi35piv5ZCm5Y+v5Lul55yL5YiwTWFzdGVyU2xhdmXnmoTlpIfms6jjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Zyo5bel5Y2V5Li75LuO6K6+572u56qX5Y+j5re75Yqg5aSH5rOo5ZCO55qE6buY6K6k5LiL5LiA5Liq5bel5Y2V54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgdGlja2V0IHByaW9yaXR5IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Zyo5bel5Y2V5Li75LuO6K6+572u56qX5Y+j5re75Yqg5aSH5rOo5ZCO5bel5Y2V55qE6buY6K6k5LyY5YWI57qn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhpc3RvcnkgY29tbWVudCBmb3IgdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gYWN0aW9uLCB3aGljaCBnZXRzIHVzZWQgZm9yIHRpY2tldCBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlt6XljZXkuLvku47orr7nva7nqpflj6Pmk43kvZznmoTljoblj7Lms6jph4rvvIzku6XnlKjkuo7mnI3liqHkurrlkZjnlYzpnaLnmoTlt6XljZXljoblj7LjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGlzdG9yeSB0eXBlIGZvciB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBhY3Rpb24sIHdoaWNoIGdldHMgdXNlZCBmb3IgdGlja2V0IGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieW3peWNleS4u+S7juiuvue9rueql+WPo+aTjeS9nOeahOWOhuWPsuexu+Wei++8jOS7peeUqOS6juacjeWKoeS6uuWRmOeVjOmdoueahOW3peWNleWOhuWPsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBuZXh0IHN0YXRlIG9mIGEgdGlja2V0IGFmdGVyIGFkZGluZyBhIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Zyo5bel5Y2V5Li75LuO6K6+572u56qX5Y+j5re75Yqg5aSH5rOo5ZCO55qE5LiL5LiA5Liq5bel5Y2V54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIHBhcnQgb2YgdGhlIGZlYXR1cmUuJ30gPSAn5ZCv55So5Li75LuO5Yqf6IO955qE6auY57qn5qih5byP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdGhhdCBzbGF2ZSB0aWNrZXRzIGZvbGxvdyB0aGUgbWFzdGVyIHRpY2tldCB0byBhIG5ldyBtYXN0ZXIgaW4gdGhlIGFkdmFuY2VkIE1hc3RlclNsYXZlIG1vZGUuJ30gPQogICAgICAgICflkK/nlKjpq5jnuqfkuLvku47mqKHlvI/kuIvku47lt6XljZXpmo/kuLvlt6XljZXliLDkuIDkuKrmlrDnmoTkuLvlt6XljZXnmoTlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyB0aGUgZmVhdHVyZSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn5ZCv55So5pys5Yqf6IO95ZCO77yM5Y+v5L+u5pS55LiA5Liq5bel5Y2V5Zyo6auY57qn5Li75LuO5qih5byP5LiL55qE5Li75LuO54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gZm9yd2FyZCBhcnRpY2xlcyBmcm9tIHR5cGUgXCdmb3J3YXJkXCcgb2YgYSBtYXN0ZXIgdGlja2V0IHRvIHRoZSBjdXN0b21lcnMgb2YgdGhlIHNsYXZlIHRpY2tldHMuIEJ5IGRlZmF1bHQgKGRpc2FibGVkKSBpdCB3aWxsIG5vdCBmb3J3YXJkIGFydGljbGVzIGZyb20gdHlwZSBcJ2ZvcndhcmRcJyB0byB0aGUgc2xhdmUgdGlja2V0cy4nfSA9CiAgICAgICAgJ+WQr+eUqOacrOWKn+iDveWQju+8jOWwhuKAnOi9rOWPkeKAneexu+Wei+eahOS4u+W3peWNleS/oeS7tui9rOWPkeWIsOS7juW3peWNleeahOWuouaIt+OAgum7mOiupO+8iOW3suemgeeUqO+8ieS4jei9rOWPkeKAnOi9rOWPkeKAneexu+Wei+eahOS/oeS7tuWIsOS7juW3peWNleOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgY2hhbmdlIG9mIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBpbiB0aGUgYWR2YW5jZWQgTWFzdGVyU2xhdmUgbW9kZS4nfSA9CiAgICAgICAgJ+WQr+eUqOacrOWKn+iDveWQju+8jOWcqOmrmOe6p+S4u+S7juaooeW8j+S4i+S/ruaUueS4u+S7jueKtuaAgeWQjuS/neaMgeeItuWtkOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIHRoZSBmZWF0dXJlIHRvIGtlZXAgcGFyZW50LWNoaWxkIGxpbmsgYWZ0ZXIgdW5zZXQgb2YgdGhlIE1hc3RlclNsYXZlIHN0YXRlIGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn5ZCv55So5pys5Yqf6IO95ZCO77yM5Zyo6auY57qn5Li75LuO5qih5byP5LiL5Y+W5raI5Li75LuO54q25oCB5ZCO5L+d5oyB54i25a2Q6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgdGhlIGZlYXR1cmUgdG8gdW5zZXQgdGhlIE1hc3RlclNsYXZlIHN0YXRlIG9mIGEgdGlja2V0IGluIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZSBtb2RlLid9ID0KICAgICAgICAn5ZCv55So5pys5Yqf6IO95ZCO77yM5Y+v5Y+W5raI5LiA5Liq5bel5Y2V5Zyo6auY57qn5Li75LuO5qih5byP5LiL55qE5Li75LuO54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudCwgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS4uy/ku47lt6XljZXor6bmg4Xnqpflj6PvvIzlpoLmnpzmnI3liqHkurrlkZjmt7vliqDkuoblpIfms6jvvIzorr7nva7lt6XljZXnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyIC8gU2xhdmUnfSA9ICfkuLsv5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlciBUaWNrZXRzJ30gPSAn5Li75bel5Y2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlJ30gPSAn5Li75LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3RlclNsYXZlIG1vZHVsZSBmb3IgVGlja2V0IEJ1bGsgZmVhdHVyZS4nfSA9ICflt6XljZXmibnph4/mk43kvZzlip/og73nmoTkuLvku47lt6XljZXmibnph4/orr7nva7mqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBtYXN0ZXIgdGlja2V0cyBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAn5a6a5LmJ5pyN5Yqh5Lq65ZGY55WM6Z2i5Luq6KGo5p2/5Li75bel5Y2V5qaC6KeI5ZCO56uv55qE5Y+C5pWw44CC4oCcTGltaXTvvIjpmZDliLbvvInlrprkuYnpu5jorqTmmL7npLrnmoTmnaHnm67mlbDvvJvigJxHUk9VUO+8iOe7hO+8ieeUqOS6juWIsOacrOaPkuS7tueahOiuv+mXruadg+mZkOmZkOWItu+8iOWmgiBHcm91cDphZG1pbjtncm91cDE7Z3JvdXAy77yJ77yb4oCcRGVmYXVsdO+8iOm7mOiupO+8ieKAneS7o+ihqOi/meS4quaPkuS7tuaYr+m7mOiupOWQr+eUqOi/mOaYr+mcgOimgeeUqOaIt+aJi+WKqOWQr+eUqO+8m+KAnENhY2hlVFRMTG9jYWzigJ3ooajmmI7mnKzmj5Lku7bnmoTnvJPlrZjov4fmnJ/ml7bpl7TvvIjljZXkvY3vvJrliIbpkp/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBzbGF2ZSB0aWNrZXRzIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICflrprkuYnmnI3liqHkurrlkZjnlYzpnaLku6rooajmnb/ku47lt6XljZXmpoLop4jlkI7nq6/nmoTlj4LmlbDjgILigJxMaW1pdO+8iOmZkOWItu+8ieWumuS5iem7mOiupOaYvuekuueahOadoeebruaVsO+8m+KAnEdST1VQ77yI57uE77yJ55So5LqO5Yiw5pys5o+S5Lu255qE6K6/6Zeu5p2D6ZmQ6ZmQ5Yi277yI5aaCIEdyb3VwOmFkbWluO2dyb3VwMTtncm91cDLvvInvvJvigJxEZWZhdWx077yI6buY6K6k77yJ4oCd5Luj6KGo6L+Z5Liq5o+S5Lu25piv6buY6K6k5ZCv55So6L+Y5piv6ZyA6KaB55So5oi35omL5Yqo5ZCv55So77yb4oCcQ2FjaGVUVExMb2NhbOKAneihqOaYjuacrOaPkuS7tueahOe8k+WtmOi/h+acn+aXtumXtO+8iOWNleS9je+8muWIhumSn++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RyYXRpb24gb2YgdGhlIHRpY2tldCBldmVudCBtb2R1bGUuJ30gPSAn5rOo5YaM5Yiw5bel5Y2V5LqL5Lu25qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqOS4u+S7juW3peWNleivpuaDheeql+WPo+W/hemcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIGlmIE1hc3RlciAvIFNsYXZlIGZpZWxkIG11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGFnZW50Lid9ID0gJ+iuvue9ruacjeWKoeS6uuWRmOaYr+WQpuW/hemhu+mAieaLqeS4u+S7juWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZWZhdWx0IGJvZHkgdGV4dCBmb3Igbm90ZXMgYWRkZWQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICforr7nva7mnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6Pmt7vliqDlpIfms6jnmoTnmoTpu5jorqTmraPmlofmlofmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVmYXVsdCBzdWJqZWN0IGZvciBub3RlcyBhZGRlZCBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+iuvue9ruacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+a3u+WKoOWkh+azqOeahOeahOm7mOiupOS4u+mimOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSByZXNwb25zaWJsZSBhZ2VudCBvZiB0aGUgdGlja2V0IGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6K6+572u5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5bel5Y2V55qE6LSf6LSj5Lq644CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHNlcnZpY2UgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLid9ID0KICAgICAgICAn6K6+572u5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5bel5Y2V55qE5pyN5Yqh77yI6ZyA6KaB5r+A5rS75bel5Y2VOjrmnI3liqHvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgdGlja2V0IG93bmVyIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6K6+572u5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j5bel5Y2V55qE5omA5pyJ6ICF44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIHRpY2tldCB0eXBlIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS4nfSA9CiAgICAgICAgJ+iuvue9ruacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+iuvue9ruW3peWNleeahOexu+Wei++8iOmcgOimgea/gOa0u+W3peWNlTo657G75Z6L77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBjaGFuZ2UgdGhlIE1hc3RlclNsYXZlIHN0YXR1cyBvZiBhIHRpY2tldCBpbiB0aGUgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5bel5Y2V6K+m5oOF6KeG5Zu+5Lit77yM5Li65L+u5pS55Li75LuO5bel5Y2V54q25oCB6I+c5Y2V5pi+56S65LiA5Liq6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGlzdCBvZiBhbGwgdGhlIGludm9sdmVkIGFnZW50cyBvbiB0aGlzIHRpY2tldCwgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6PvvIzmmL7npLrov5nkuKrlt6XljZXnm7jlhbPnmoTmiYDmnInmnI3liqHkurrlkZjliJfooajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaXN0IG9mIGFsbCB0aGUgcG9zc2libGUgYWdlbnRzIChhbGwgYWdlbnRzIHdpdGggbm90ZSBwZXJtaXNzaW9ucyBvbiB0aGUgcXVldWUvdGlja2V0KSB0byBkZXRlcm1pbmUgd2hvIHNob3VsZCBiZSBpbmZvcm1lZCBhYm91dCB0aGlzIG5vdGUsIGluIHRoZSB0aWNrZXQgTWFzdGVyU2xhdmUgc2NyZWVuIG9mIGEgem9vbWVkIHRpY2tldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Li75LuO5bel5Y2V6K+m5oOF56qX5Y+j77yM5pi+56S66L+Z5Liq5bel5Y2V5omA5pyJ5Y+v6IO955qE5pyN5Yqh5Lq65ZGY77yI6ZyA6KaB5YW35pyJ6L+Z5Liq6Zif5YiX5oiW5bel5Y2V55qE5aSH5rOo5p2D6ZmQ77yJ5YiX6KGo77yM55So5LqO56Gu5a6a6LCB5bCG5pS25Yiw5YWz5LqO6L+Z5Liq5aSH5rOo55qE6YCa55+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSB0aWNrZXQgcHJpb3JpdHkgb3B0aW9ucyBpbiB0aGUgdGlja2V0IE1hc3RlclNsYXZlIHNjcmVlbiBvZiBhIHpvb21lZCB0aWNrZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4u+S7juW3peWNleivpuaDheeql+WPo+aYr+WQpuaYvuekuuW3peWNleS8mOWFiOe6p+eahOmAiemhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgdGl0bGUgZmllbGQgaW4gdGhlIHRpY2tldCBNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgYSB6b29tZWQgdGlja2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuLvku47lt6XljZXor6bmg4Xnqpflj6PmmL7npLrlt6XljZXmoIfpopjlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2xhdmUgVGlja2V0cyd9ID0gJ+S7juW3peWNlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpZXMgdGhlIGRpZmZlcmVudCBhcnRpY2xlIGNvbW11bmljYXRpb24gY2hhbm5lbHMgd2hlcmUgdGhlIHJlYWwgbmFtZSBmcm9tIE1hc3RlciB0aWNrZXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvbmUgaW4gdGhlIFNsYXZlIHRpY2tldC4nfSA9CiAgICAgICAgJ+aMh+WumuS4jeWQjOeahOS/oeS7tumAmuS/oea4oOmBk++8jOWFtuS4reS4u+W3peWNleeahOecn+WunuWnk+WQjeWwhuabv+aNouS4uuS7juW3peWNleS4reeahOecn+WunuWnk+WQjeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1vZHVsZSBhY3RpdmF0ZXMgTWFzdGVyL1NsYXZlIGZpZWxkIGluIG5ldyBlbWFpbCBhbmQgcGhvbmUgdGlja2V0IHNjcmVlbnMuJ30gPQogICAgICAgICfov5nkuKrmqKHlnZfnlKjmnaXmv4DmtLvmlrDlu7rpgq7ku7Yv55S16K+d5bel5Y2V56qX5Y+j55qE5Li75LuO5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnVydGhlciB2ZXJzaW9ucyBvZiBPVFJTTWFzdGVyU2xhdmUuJ30gPQogICAgICAgICfmraTorr7nva7lt7LlvIPnlKjvvIzkvJrlnKjlsIbmnaXniYjmnKznmoQgT1RSU01hc3RlclNsYXZlIOS4reenu+mZpOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgTWFzdGVyU2xhdmUuJ30gPSAn5Li75LuO5bel5Y2V44CCJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZCcgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGRBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2VBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdVbmRlZmluZWQgc3ViYWN0aW9uLicpLAogICAgKTsKfQoKc3ViIF9BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkTmVlZGVkIChxdyhPYmplY3RUeXBlIEZpZWxkVHlwZSBGaWVsZE9yZGVyKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05lZWQgJXMnLCAkTmVlZGVkICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBvYmplY3QgdHlwZSBhbmQgZmllbGQgdHlwZSBkaXNwbGF5IG5hbWUKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRPYmplY3RUeXBlTmFtZQogICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlJyktPnsgJEdldFBhcmFte09iamVjdFR5cGV9IH0tPntEaXNwbGF5TmFtZX0gfHwgJyc7CiAgICBteSAkRmllbGRUeXBlTmFtZSA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkczo6RHJpdmVyJyktPnsgJEdldFBhcmFte0ZpZWxkVHlwZX0gfS0+e0Rpc3BsYXlOYW1lfSB8fCAnJzsKCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgTW9kZSAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgQnJlYWRjcnVtYlRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAtPlRyYW5zbGF0ZSggJ0FkZCAlcyBmaWVsZCcsICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmllbGRUeXBlTmFtZSkgKSwKICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICApOwp9CgpzdWIgX0FkZEFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJUVycm9yczsKICAgIG15ICVHZXRQYXJhbTsKCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBMYWJlbCBGaWVsZE9yZGVyKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKICAgICAgICBpZiAoICEkR2V0UGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRFcnJvcnN7ICROZWVkZWQgLiAnU2VydmVyRXJyb3InIH0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3sgJE5lZWRlZCAuICdTZXJ2ZXJFcnJvck1lc3NhZ2UnIH0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBpcyBhbHBoYW51bWVyaWMKICAgICAgICBpZiAoICRHZXRQYXJhbXtOYW1lfSAhfiBte1xBICg/OiBbYS16QS1aXSB8IFxkICkrIFx6fXhtcyApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0KICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSgnVGhlIGZpZWxkIGRvZXMgbm90IGNvbnRhaW4gb25seSBBU0NJSSBsZXR0ZXJzIGFuZCBudW1iZXJzLicpOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIGlzIGR1cGxpY2F0ZWQKICAgICAgICBteSAlRHluYW1pY0ZpZWxkc0xpc3QgPSAlewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgICAgICkKICAgICAgICB9OwoKICAgICAgICAlRHluYW1pY0ZpZWxkc0xpc3QgPSByZXZlcnNlICVEeW5hbWljRmllbGRzTGlzdDsKCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkc0xpc3R7ICRHZXRQYXJhbXtOYW1lfSB9ICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGVyZSBpcyBhbm90aGVyIGZpZWxkIHdpdGggdGhlIHNhbWUgbmFtZS4nKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkR2V0UGFyYW17RmllbGRPcmRlcn0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgZmllbGQgb3JkZXIgaXMgbnVtZXJpYyBhbmQgcG9zaXRpdmUKICAgICAgICBpZiAoICRHZXRQYXJhbXtGaWVsZE9yZGVyfSAhfiBte1xBICg/OiBcZCApKyBcen14bXMgKSB7CgogICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MKICAgICAgICAgICAgJEVycm9yc3tGaWVsZE9yZGVyU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcnN7RmllbGRPcmRlclNlcnZlckVycm9yTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoZSBmaWVsZCBtdXN0IGJlIG51bWVyaWMuJyk7CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkQ29uZmlnUGFyYW0gKHF3KCBPYmplY3RUeXBlIE9iamVjdFR5cGVOYW1lIEZpZWxkVHlwZSBGaWVsZFR5cGVOYW1lIFZhbGlkSUQgKSkgewogICAgICAgICRHZXRQYXJhbXskQ29uZmlnUGFyYW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJENvbmZpZ1BhcmFtICk7CiAgICB9CgogICAgIyB1bmNvcnJlY3RhYmxlIGVycm9ycwogICAgaWYgKCAhJEdldFBhcmFte1ZhbGlkSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgVmFsaWRJRCcpLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXR1cm4gdG8gYWRkIHNjcmVlbiBpZiBlcnJvcnMKICAgIGlmICglRXJyb3JzKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd1NjcmVlbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRXJyb3JzLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIE1vZGUgPT4gJ0FkZCcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBzcGVjaWZpYyBjb25maWcKICAgIG15ICRGaWVsZENvbmZpZyA9IHsKICAgICAgICBEZWZhdWx0VmFsdWUgICAgICAgPT4gJycsCiAgICAgICAgUG9zc2libGVOb25lICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzID0+IDEsCiAgICB9OwoKICAgICMgY3JlYXRlIGEgbmV3IGZpZWxkCiAgICBteSAkRmllbGRJRCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEFkZCgKICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICBMYWJlbCAgICAgID0+ICRHZXRQYXJhbXtMYWJlbH0sCiAgICAgICAgRmllbGRPcmRlciA9PiAkR2V0UGFyYW17RmllbGRPcmRlcn0sCiAgICAgICAgRmllbGRUeXBlICA9PiAkR2V0UGFyYW17RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlID0+ICRHZXRQYXJhbXtPYmplY3RUeXBlfSwKICAgICAgICBDb25maWcgICAgID0+ICRGaWVsZENvbmZpZywKICAgICAgICBWYWxpZElEICAgID0+ICRHZXRQYXJhbXtWYWxpZElEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhJEZpZWxkSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ291bGQgbm90IGNyZWF0ZSB0aGUgbmV3IGZpZWxkJyksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gIkFjdGlvbj1BZG1pbkR5bmFtaWNGaWVsZCIsCiAgICApOwp9CgpzdWIgX0NoYW5nZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkTmVlZGVkIChxdyhPYmplY3RUeXBlIEZpZWxkVHlwZSkpIHsKICAgICAgICAkR2V0UGFyYW17JE5lZWRlZH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmVlZGVkICk7CiAgICAgICAgaWYgKCAhJE5lZWRlZCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5lZWRlZCApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgb2JqZWN0IHR5cGUgYW5kIGZpZWxkIHR5cGUgZGlzcGxheSBuYW1lCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkT2JqZWN0VHlwZU5hbWUKICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpLT57ICRHZXRQYXJhbXtPYmplY3RUeXBlfSB9LT57RGlzcGxheU5hbWV9IHx8ICcnOwogICAgbXkgJEZpZWxkVHlwZU5hbWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZHM6OkRyaXZlcicpLT57ICRHZXRQYXJhbXtGaWVsZFR5cGV9IH0tPntEaXNwbGF5TmFtZX0gfHwgJyc7CgogICAgbXkgJEZpZWxkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CgogICAgaWYgKCAhJEZpZWxkSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJRCcpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBkYXRhCiAgICBteSAkRHluYW1pY0ZpZWxkRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIElEID0+ICRGaWVsZElELAogICAgKTsKCiAgICAjIGNoZWNrIGZvciB2YWxpZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGREYXRhKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgZHluYW1pYyBmaWVsZCAlcycsICRGaWVsZElEICksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgJSR7RHluYW1pY0ZpZWxkRGF0YX0sCiAgICAgICAgSUQgICAgICAgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgTW9kZSAgICAgICAgICAgPT4gJ0NoYW5nZScsCiAgICAgICAgQnJlYWRjcnVtYlRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAtPlRyYW5zbGF0ZSggJ0NoYW5nZSAlcyBmaWVsZCcsICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmllbGRUeXBlTmFtZSkgKSwKICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICApOwp9CgpzdWIgX0NoYW5nZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJUVycm9yczsKICAgIG15ICVHZXRQYXJhbTsKCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBMYWJlbCBGaWVsZE9yZGVyKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKICAgICAgICBpZiAoICEkR2V0UGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRFcnJvcnN7ICROZWVkZWQgLiAnU2VydmVyRXJyb3InIH0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3sgJE5lZWRlZCAuICdTZXJ2ZXJFcnJvck1lc3NhZ2UnIH0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRGaWVsZElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0lEJyApOwogICAgaWYgKCAhJEZpZWxkSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJRCcpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGRhdGEKICAgIG15ICREeW5hbWljRmllbGREYXRhID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIElEID0+ICRGaWVsZElELAogICAgKTsKCiAgICAjIGNoZWNrIGZvciB2YWxpZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGREYXRhKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgZHluYW1pYyBmaWVsZCAlcycsICRGaWVsZElEICksCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRHZXRQYXJhbXtOYW1lfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIGlzIGxvd2VyY2FzZQogICAgICAgIGlmICggJEdldFBhcmFte05hbWV9ICF+IG17XEEgKD86IFthLXpBLVpdIHwgXGQgKSsgXHp9eG1zICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPQogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdUaGUgZmllbGQgZG9lcyBub3QgY29udGFpbiBvbmx5IEFTQ0lJIGxldHRlcnMgYW5kIG51bWJlcnMuJyk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgaXMgZHVwbGljYXRlZAogICAgICAgIG15ICVEeW5hbWljRmllbGRzTGlzdCA9ICV7CiAgICAgICAgICAgICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICAgICAgICAgKQogICAgICAgIH07CgogICAgICAgICVEeW5hbWljRmllbGRzTGlzdCA9IHJldmVyc2UgJUR5bmFtaWNGaWVsZHNMaXN0OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRzTGlzdHsgJEdldFBhcmFte05hbWV9IH0gJiYKICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNMaXN0eyAkR2V0UGFyYW17TmFtZX0gfSBuZSAkRmllbGRJRAogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGVyZSBpcyBhbm90aGVyIGZpZWxkIHdpdGggdGhlIHNhbWUgbmFtZS4nKTsKICAgICAgICB9CgogICAgICAgICMgaWYgaXQncyBhbiBpbnRlcm5hbCBmaWVsZCwgaXQncyBuYW1lIHNob3VsZCBub3QgY2hhbmdlCiAgICAgICAgaWYgKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkRGF0YS0+e0ludGVybmFsRmllbGR9ICYmCiAgICAgICAgICAgICREeW5hbWljRmllbGRzTGlzdHsgJEdldFBhcmFte05hbWV9IH0gbmUgJEZpZWxkSUQKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgZm9yIHRoaXMgZmllbGQgc2hvdWxkIG5vdCBjaGFuZ2UuJyk7CiAgICAgICAgICAgICRQYXJhbXtJbnRlcm5hbEZpZWxkfSAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkRGF0YS0+e0ludGVybmFsRmllbGR9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRHZXRQYXJhbXtGaWVsZE9yZGVyfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBvcmRlciBpcyBudW1lcmljIGFuZCBwb3NpdGl2ZQogICAgICAgIGlmICggJEdldFBhcmFte0ZpZWxkT3JkZXJ9ICF+IG17XEEgKD86IFxkICkrIFx6fXhtcyApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3Jze0ZpZWxkT3JkZXJTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tGaWVsZE9yZGVyU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIGZpZWxkIG11c3QgYmUgbnVtZXJpYy4nKTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRDb25maWdQYXJhbSAocXcoIE9iamVjdFR5cGUgT2JqZWN0VHlwZU5hbWUgRmllbGRUeXBlIEZpZWxkVHlwZU5hbWUgVmFsaWRJRCApKSB7CiAgICAgICAgJEdldFBhcmFteyRDb25maWdQYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkQ29uZmlnUGFyYW0gKTsKICAgIH0KCiAgICAjIHVuY29ycmVjdGFibGUgZXJyb3JzCiAgICBpZiAoICEkR2V0UGFyYW17VmFsaWRJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBWYWxpZElEJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJldHVybiB0byBjaGFuZ2Ugc2NyZWVuIGlmIGVycm9ycwogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVFcnJvcnMsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgSUQgICA9PiAkRmllbGRJRCwKICAgICAgICAgICAgTW9kZSA9PiAnQ2hhbmdlJywKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHNwZWNpZmljIGNvbmZpZwogICAgbXkgJEZpZWxkQ29uZmlnID0gewogICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICA9PiAnJywKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXMgPT4gMSwKICAgIH07CgogICAgIyB1cGRhdGUgZHluYW1pYyBmaWVsZCAoRmllbGRUeXBlIGFuZCBPYmplY3RUeXBlIGNhbm5vdCBiZSBjaGFuZ2VkOyB1c2Ugb2xkIHZhbHVlcykKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgIElEICAgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAkR2V0UGFyYW17TGFiZWx9LAogICAgICAgIEZpZWxkT3JkZXIgPT4gJEdldFBhcmFte0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJER5bmFtaWNGaWVsZERhdGEtPntGaWVsZFR5cGV9LAogICAgICAgIE9iamVjdFR5cGUgPT4gJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfSwKICAgICAgICBDb25maWcgICAgID0+ICRGaWVsZENvbmZpZywKICAgICAgICBWYWxpZElEICAgID0+ICRHZXRQYXJhbXtWYWxpZElEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCB1cGRhdGUgdGhlIGZpZWxkICVzJywgJEdldFBhcmFte05hbWV9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gIkFjdGlvbj1BZG1pbkR5bmFtaWNGaWVsZCIsCiAgICApOwp9CgpzdWIgX1Nob3dTY3JlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RGlzcGxheUZpZWxkTmFtZX0gPSAnTmV3JzsKCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ2hhbmdlJyApIHsKICAgICAgICAkUGFyYW17U2hvd1dhcm5pbmd9ICAgICAgPSAnU2hvd1dhcm5pbmcnOwogICAgICAgICRQYXJhbXtEaXNwbGF5RmllbGROYW1lfSA9ICRQYXJhbXtOYW1lfTsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIGdldCBhbGwgZmllbGRzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiBvcmRlciBudW1iZXJzIChpcyBhbHJlYWR5IHNvcnRlZCkuCiAgICBteSBARHluYW1pY2ZpZWxkT3JkZXJMaXN0OwogICAgbXkgJUR5bmFtaWNmaWVsZE5hbWVzTGlzdDsKICAgIGZvciBteSAkRHluYW1pY2ZpZWxkICggQHskRHluYW1pY0ZpZWxkTGlzdH0gKSB7CiAgICAgICAgcHVzaCBARHluYW1pY2ZpZWxkT3JkZXJMaXN0LCAkRHluYW1pY2ZpZWxkLT57RmllbGRPcmRlcn07CiAgICAgICAgJER5bmFtaWNmaWVsZE5hbWVzTGlzdHsgJER5bmFtaWNmaWVsZC0+e0ZpZWxkT3JkZXJ9IH0gPSAkRHluYW1pY2ZpZWxkLT57TGFiZWx9OwogICAgfQoKICAgICMgd2hlbiBhZGRpbmcgd2UgbmVlZCB0byBjcmVhdGUgYW4gZXh0cmEgb3JkZXIgbnVtYmVyIGZvciB0aGUgbmV3IGZpZWxkCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQWRkJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIGxhc3QgZWxlbWVudCBmb3JtIHRoZSBvcmRlciBsaXN0IGFuZCBhZGQgMQogICAgICAgIG15ICRMYXN0T3JkZXJOdW1iZXIgPSAkRHluYW1pY2ZpZWxkT3JkZXJMaXN0Wy0xXTsKICAgICAgICAkTGFzdE9yZGVyTnVtYmVyKys7CgogICAgICAgICMgYWRkIHRoaXMgbmV3IG9yZGVyIG51bWJlciB0byB0aGUgZW5kIG9mIHRoZSBsaXN0CiAgICAgICAgcHVzaCBARHluYW1pY2ZpZWxkT3JkZXJMaXN0LCAkTGFzdE9yZGVyTnVtYmVyOwogICAgfQoKICAgICMgc2hvdyB0aGUgbmFtZXMgb2YgdGhlIG90aGVyIGZpZWxkcyB0byBlYXNlIG9yZGVyaW5nCiAgICBteSAlT3JkZXJOYW1lc0xpc3Q7CiAgICBteSAkQ3VycmVudGx5VGV4dCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudGx5JykgLiAnOiAnOwogICAgZm9yIG15ICRPcmRlck51bWJlciAoIHNvcnQgQER5bmFtaWNmaWVsZE9yZGVyTGlzdCApIHsKICAgICAgICAkT3JkZXJOYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSA9ICRPcmRlck51bWJlcjsKICAgICAgICBpZiAoICREeW5hbWljZmllbGROYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSAmJiAkT3JkZXJOdW1iZXIgbmUgJFBhcmFte0ZpZWxkT3JkZXJ9ICkgewogICAgICAgICAgICAkT3JkZXJOYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSA9ICRPcmRlck51bWJlciAuICcgLSAnCiAgICAgICAgICAgICAgICAuICRDdXJyZW50bHlUZXh0CiAgICAgICAgICAgICAgICAuICREeW5hbWljZmllbGROYW1lc0xpc3R7JE9yZGVyTnVtYmVyfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9yZGVyU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVPcmRlck5hbWVzTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICdGaWVsZE9yZGVyJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtGaWVsZE9yZGVyfSB8fCAxLAogICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnVzc1cGMgVmFsaWRhdGVfTnVtYmVyIE1vZGVybml6ZScsCiAgICApOwoKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgIyBjcmVhdGUgdGhlIFZhbGlkaXR5IHNlbGVjdAogICAgbXkgJFZhbGlkaXR5U3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VmFsaWRJRH0gfHwgMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1c1MHBjIE1vZGVybml6ZScsCiAgICApOwoKICAgICMgY3JlYXRlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdGVtcGxhdGUKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1ZhbHVlVGVtcGxhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFJlYWRvbmx5SW50ZXJuYWxGaWVsZCA9ICcnOwoKICAgICMgSW50ZXJuYWwgZmllbGRzIGNhbiBub3QgYmUgZGVsZXRlZCBhbmQgbmFtZSBzaG91bGQgbm90IGNoYW5nZS4KICAgIGlmICggJFBhcmFte0ludGVybmFsRmllbGR9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdJbnRlcm5hbEZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgICRSZWFkb25seUludGVybmFsRmllbGQgPSAncmVhZG9ubHk9InJlYWRvbmx5Iic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBWYWxpZGl0eVN0cmcgICAgICAgICAgPT4gJFZhbGlkaXR5U3RyZywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkT3JkZXJTdHJnID0+ICREeW5hbWljRmllbGRPcmRlclN0cmcsCiAgICAgICAgICAgIFJlYWRvbmx5SW50ZXJuYWxGaWVsZCA9PiAkUmVhZG9ubHlJbnRlcm5hbEZpZWxkLAogICAgICAgIH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRQcmVNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgcHJldmVudCB1c2VkIG9uY2Ugd2FybmluZwp1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZG8gb25seSB1c2UgdGhpcyBpbiBwaG9uZSBhbmQgZW1haWwgdGlja2V0CiAgICByZXR1cm4gaWYgKCAkU2VsZi0+e0FjdGlvbn0gIX4gL15BZ2VudFRpY2tldChFbWFpbHxQaG9uZSkkLyApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKSB8fCAnJzsKCiAgICAjIHJldHVybiBpZiBubyBjb25maWcgb3B0aW9uIGlzIHVzZWQKICAgIHJldHVybiBpZiAhJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkOwoKICAgICMgc2V0IGR5bmFtaWMgZmllbGQgYXMgc2hvd24KICAgICRDb25maWdPYmplY3QtPnsiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259In0tPntEeW5hbWljRmllbGR9LT57JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSA9IDE7CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyAkb3JpZ2luOiBvdHJzIC0gYWViMzNkODAwNzE2ZTJhNjY1MzU5N2FhODYzMTRjNGNiZGFkYjY3OCAtIEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QWN0aW9uQ29tbW9uLnBtCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQojcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0QWN0aW9uQ29tbW9uOwoKIyBUaGlzIG1vZHVsZSB1c2VzIEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGFzIGEgYmFzZSwgZm9yIGVhc3kgdXBkYXRlIGFuZCBmcmFtZXdvcmsgY29tcGF0aWJpbGl0eQojIHNwZWNpYWwgbWFya2VycyBoYXMgYmVlbiBzZXQgYWxvbmcgdGhlIGZpbGUgdG8gZWFzeSBzcG90IHRoZSBkaWZmZXJlbmNlcyBpbnRyb2R1Y2VkIGJ5CiMgT1RSU01hc3RlclNsYXZlIHBhY2thZ2UKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0TWFzdGVyU2xhdmU7CiMgLS0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkVtYWlsUGFyc2VyOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgVHJ5IHRvIGxvYWQgZHJhZnQgaWYgcmVxdWVzdGVkLgogICAgaWYgKAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntGb3JtRHJhZnR9CiAgICAgICAgJiYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xvYWRGb3JtRHJhZnQnICkKICAgICAgICAmJiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybURyYWZ0SUQnICkKICAgICAgICApCiAgICB7CiAgICAgICAgJFNlbGYtPntMb2FkZWRGb3JtRHJhZnRJRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkxvYWRGb3JtRHJhZnQoCiAgICAgICAgICAgIEZvcm1EcmFmdElEID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtRHJhZnRJRCcgKSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgYXJ0aWNsZSBmb3Igd2hvbSB0aGlzIHNob3VsZCBiZSBhIHJlcGx5LCBpZiBhdmFpbGFibGUKICAgIG15ICRSZXBseVRvQXJ0aWNsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdSZXBseVRvQXJ0aWNsZScgKSB8fCAnJzsKICAgIG15ICRUaWNrZXRJRCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaWNrZXRJRCcgKSAgICAgICB8fCAnJzsKCiAgICAjIGNoZWNrIGlmIFJlcGx5VG9BcnRpY2xlIHJlYWxseSBiZWxvbmdzIHRvIHRoZSB0aWNrZXQKICAgIG15ICVSZXBseVRvQXJ0aWNsZUNvbnRlbnQ7CiAgICBteSBAUmVwbHlUb0FkcmVzc2VzOwogICAgaWYgKCRSZXBseVRvQXJ0aWNsZSkgewoKICAgICAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFRpY2tldElELAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFJlcGx5VG9BcnRpY2xlLAogICAgICAgICk7CiAgICAgICAgJVJlcGx5VG9BcnRpY2xlQ29udGVudCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIEFydGljbGVJRCAgICAgPT4gJFJlcGx5VG9BcnRpY2xlLAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gICAgICAgID0gJFJlcGx5VG9BcnRpY2xlOwogICAgICAgICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSA9IFwlUmVwbHlUb0FydGljbGVDb250ZW50OwoKICAgICAgICAjIGdldCBzZW5kZXIgb2Ygb3JpZ2luYWwgbm90ZSAodG8gaW5mb3JtIHNlbmRlciBhYm91dCBhbnN3ZXIpCiAgICAgICAgaWYgKCAkUmVwbHlUb0FydGljbGVDb250ZW50e0NyZWF0ZUJ5fSApIHsKICAgICAgICAgICAgbXkgQFJlcGx5VG9TZW5kZXJJRCA9ICggJFJlcGx5VG9BcnRpY2xlQ29udGVudHtDcmVhdGVCeX0gKTsKICAgICAgICAgICAgJFNlbGYtPntSZXBseVRvU2VuZGVyVXNlcklEfSA9IFxAUmVwbHlUb1NlbmRlcklEOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBhcnRpY2xlIGJlbG9uZ3MgdG8gb3RoZXIgdGlja2V0LCBkb24ndCB1c2UgaXQgYXMgcmVwbHkKICAgICAgICBpZiAoICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7VGlja2V0SUR9IG5lICRTZWxmLT57VGlja2V0SUR9ICkgewogICAgICAgICAgICAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSA9ICIiOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBhcnRpY2xlIGlzIG5vdCBvZiB0eXBlIG5vdGUtaW50ZXJuYWwsIGRvbid0IHVzZSBpdCBhcyByZXBseQogICAgICAgIGlmICgKICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpIG5lICdJbnRlcm5hbCcKICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpIGVxICdJbnRlcm5hbCcKICAgICAgICAgICAgICAgICYmICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7U2VuZGVyVHlwZX0gbmUgJ2FnZW50JwogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRTZWxmLT57UmVwbHlUb0FydGljbGV9ID0gIiI7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGZvcm0gaWQKICAgICRTZWxmLT57Rm9ybUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CgogICAgIyBjcmVhdGUgZm9ybSBpZAogICAgaWYgKCAhJFNlbGYtPntGb3JtSUR9ICkgewogICAgICAgICRTZWxmLT57Rm9ybUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyktPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFNlbGYtPntUaWNrZXRJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gVGlja2V0SUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgY2hlY2sgcGVybWlzc2lvbnMKICAgIG15ICRBY2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRQZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICRDb25maWctPntQZXJtaXNzaW9ufSwKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0KICAgICk7CgogICAgIyBlcnJvciBzY3JlZW4sIGRvbid0IHNob3cgdGlja2V0CiAgICBpZiAoICEkQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnWW91IG5lZWQgJXMgcGVybWlzc2lvbnMhJywgJENvbmZpZy0+e1Blcm1pc3Npb259ICksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICBteSAlUG9zc2libGVBY3Rpb25zID0gKCAxID0+ICRTZWxmLT57QWN0aW9ufSApOwoKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0FjdGlvbicsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgbXkgJUFjbEFjdGlvbiA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbEFjdGlvbkRhdGEoKTsKCiAgICAjIGNoZWNrIGlmIEFDTCByZXN0cmljdGlvbnMgZXhpc3QKICAgIGlmICggJEFDTCB8fCBJc0hhc2hSZWZXaXRoRGF0YSggXCVBY2xBY3Rpb24gKSApIHsKCiAgICAgICAgbXkgJUFjbEFjdGlvbkxvb2t1cCA9IHJldmVyc2UgJUFjbEFjdGlvbjsKCiAgICAgICAgIyBzaG93IGVycm9yIHNjcmVlbiBpZiBBQ0wgcHJvaGliaXRzIHRoaXMgYWN0aW9uCiAgICAgICAgaWYgKCAhJEFjbEFjdGlvbkxvb2t1cHsgJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBmb3IgZmFpbGVkIGRyYWZ0IGxvYWRpbmcgcmVxdWVzdC4KICAgIGlmICgKICAgICAgICAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTG9hZEZvcm1EcmFmdCcgKQogICAgICAgICYmICEkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdMb2FkaW5nIGRyYWZ0IGZhaWxlZCEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJExvYWRlZEZvcm1EcmFmdDsKICAgIGlmICggJFNlbGYtPntMb2FkZWRGb3JtRHJhZnRJRH0gKSB7CiAgICAgICAgJExvYWRlZEZvcm1EcmFmdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGb3JtRHJhZnQnKS0+Rm9ybURyYWZ0R2V0KAogICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfSwKICAgICAgICAgICAgR2V0Q29udGVudCAgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBBcnRpY2xlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBPbmx5TGFzdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmIChAQXJ0aWNsZXMpIHsKICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlID0gJEFydGljbGVzWzBdOwoKICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlU3lzdGVtVGltZTsKICAgICAgICAgICAgaWYgKCAkTGFzdEFydGljbGUtPntDcmVhdGVUaW1lfSApIHsKICAgICAgICAgICAgICAgIG15ICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkTGFzdEFydGljbGUtPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWUgPSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGb3JtRHJhZnRTeXN0ZW1UaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJExvYWRlZEZvcm1EcmFmdC0+e0NoYW5nZVRpbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdFN5c3RlbVRpbWUgPSAkRm9ybURyYWZ0U3lzdGVtVGltZU9iamVjdC0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgaWYgKCAhJExhc3RBcnRpY2xlU3lzdGVtVGltZSB8fCAkRm9ybURyYWZ0U3lzdGVtVGltZSA8PSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lICkgewogICAgICAgICAgICAgICAgJFBhcmFte0Zvcm1EcmFmdE91dGRhdGVkfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkTG9hZGVkRm9ybURyYWZ0KSApIHsKCiAgICAgICAgJExvYWRlZEZvcm1EcmFmdC0+e0NoYW5nZUJ5TmFtZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRMb2FkZWRGb3JtRHJhZnQtPntDaGFuZ2VCeX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdQcm9wZXJ0aWVzJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRm9ybURyYWZ0ICAgICAgPT4gJENvbmZpZy0+e0Zvcm1EcmFmdH0sCiAgICAgICAgICAgIEZvcm1EcmFmdElEICAgID0+ICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9LAogICAgICAgICAgICBGb3JtRHJhZnRUaXRsZSA9PiAkTG9hZGVkRm9ybURyYWZ0ID8gJExvYWRlZEZvcm1EcmFmdC0+e1RpdGxlfSA6ICcnLAogICAgICAgICAgICBGb3JtRHJhZnRNZXRhICA9PiAkTG9hZGVkRm9ybURyYWZ0LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIFJlcGx5VG9BcnRpY2xlID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IHJpZ2h0IGhlYWRlcgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSGVhZGVyJyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsb2NrIHN0YXRlCiAgICBpZiAoICRDb25maWctPntSZXF1aXJlZExvY2t9ICkgewogICAgICAgIGlmICggISRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICkgKSB7CgogICAgICAgICAgICBteSAkTG9jayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIExvY2sgICAgID0+ICdsb2NrJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRMb2NrKSB7CgogICAgICAgICAgICAgICAgIyBTZXQgbmV3IG93bmVyIGlmIHRpY2tldCBvd25lciBpcyBkaWZmZXJlbnQgdGhlbiBsb2dnZWQgdXNlci4KICAgICAgICAgICAgICAgIGlmICggJFRpY2tldHtPd25lcklEfSAhPSAkU2VsZi0+e1VzZXJJRH0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgUmVtZW1iZXIgcHJldmlvdXMgb3duZXIsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byByZXN0b3JlIHRpY2tldCBvd25lciBvbiB1bmRvIGFjdGlvbi4KICAgICAgICAgICAgICAgICAgICAkUGFyYW17UHJldmlvdXNPd25lcn0gPSAkVGlja2V0e093bmVySUR9OwoKICAgICAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBTaG93IGxvY2sgc3RhdGUuCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQcm9wZXJ0aWVzTG9jaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRUaWNrZXRPYmplY3QtPk93bmVyQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIE93bmVySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFRpY2tldHtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+V2FybmluZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnU29ycnksIHlvdSBuZWVkIHRvIGJlIHRoZSB0aWNrZXQgb3duZXIgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4nKSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNoYW5nZSB0aGUgb3duZXIgZmlyc3QuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgYmFjayBsaW5rCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0QmFjaycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJEtleSAoCiAgICAgICAgcXcoCiAgICAgICAgTmV3U3RhdGVJRCBOZXdQcmlvcml0eUlEIFRpbWVVbml0cyBJc1Zpc2libGVGb3JDdXN0b21lciBUaXRsZSBCb2R5IFN1YmplY3QgTmV3UXVldWVJRAogICAgICAgIFllYXIgTW9udGggRGF5IEhvdXIgTWludXRlIE5ld093bmVySUQgTmV3UmVzcG9uc2libGVJRCBUeXBlSUQgU2VydmljZUlEIFNMQUlECiAgICAgICAgRXhwYW5kIFJlcGx5VG9BcnRpY2xlIFN0YW5kYXJkVGVtcGxhdGVJRCBDcmVhdGVBcnRpY2xlIEZvcm1EcmFmdElEIFRpdGxlCiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICAkR2V0UGFyYW17JEtleX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CiAgICB9CgogICAgIyBBQ0wgY29tcGF0aWJpbGl0eSB0cmFuc2xhdGlvbgogICAgbXkgJUFDTENvbXBhdEdldFBhcmFtID0gKAogICAgICAgIFN0YXRlSUQgICAgICAgPT4gJEdldFBhcmFte05ld1N0YXRlSUR9LAogICAgICAgIFByaW9yaXR5SUQgICAgPT4gJEdldFBhcmFte05ld1ByaW9yaXR5SUR9LAogICAgICAgIFF1ZXVlSUQgICAgICAgPT4gJEdldFBhcmFte05ld1F1ZXVlSUR9LAogICAgICAgIE93bmVySUQgICAgICAgPT4gJEdldFBhcmFte05ld093bmVySUR9LAogICAgICAgIFJlc3BvbnNpYmxlSUQgPT4gJEdldFBhcmFte05ld1Jlc3BvbnNpYmxlSUR9LAogICAgKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIHZhbHVlcyBmb3JtIGh0dHAgcmVxdWVzdAogICAgbXkgJUR5bmFtaWNGaWVsZFZhbHVlczsKCiAgICAjIGRlZmluZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gc2hvdyBiYXNlZCBvbiB0aGUgb2JqZWN0IHR5cGUKICAgIG15ICRPYmplY3RUeXBlID0gWydUaWNrZXQnXTsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKSB8fCAnJzsKICAgIG15ICRNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZCA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OkFkdmFuY2VkRW5hYmxlZCcpIHx8IDA7CiMgLS0tCgogICAgIyBvbmx5IHNjcmVlbnMgdGhhdCBhZGQgbm90ZXMgY2FuIG1vZGlmeSBBcnRpY2xlIGR5bmFtaWMgZmllbGRzCiAgICBpZiAoICRDb25maWctPntOb3RlfSApIHsKICAgICAgICAkT2JqZWN0VHlwZSA9IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdOwogICAgfQojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgaWYgKCRNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZCkgewogICAgICAgIG15ICREaXNwbGF5ID0gJENvbmZpZy0+e01hc3RlclNsYXZlTWFuZGF0b3J5fSA/IDIgOiAxOwogICAgICAgICRDb25maWctPntEeW5hbWljRmllbGR9LT57JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSA9ICREaXNwbGF5OwogICAgfQojIC0tLQoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIG15ICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAkT2JqZWN0VHlwZSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMgaW50byBhIHN0cnVjdHVyZSBmb3IgQUNMcwogICAgbXkgJUR5bmFtaWNGaWVsZEFDTFBhcmFtZXRlcnM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZEl0ZW0gKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZEl0ZW07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIWRlZmluZWQgJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkSXRlbX07CgogICAgICAgICREeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkSXRlbSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkSXRlbX07CiAgICB9CiAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IFwlRHluYW1pY0ZpZWxkQUNMUGFyYW1ldGVyczsKCiAgICAjIHRyYW5zZm9ybSBwZW5kaW5nIHRpbWUsIHRpbWUgc3RhbXAgYmFzZWQgb24gdXNlciB0aW1lIHpvbmUKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRHZXRQYXJhbXtZZWFyfQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte01vbnRofQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte0RheX0KICAgICAgICAmJiBkZWZpbmVkICRHZXRQYXJhbXtIb3VyfQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte01pbnV0ZX0KICAgICAgICApCiAgICB7CiAgICAgICAgJUdldFBhcmFtID0gJExheW91dE9iamVjdC0+VHJhbnNmb3JtRGF0ZVNlbGVjdGlvbigKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXdyYXAgYm9keSBpZiBubyByaWNoIHRleHQgaXMgdXNlZAogICAgaWYgKCAkR2V0UGFyYW17Qm9keX0gJiYgISRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICRHZXRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPldyYXBQbGFpblRleHQoCiAgICAgICAgICAgIE1heENoYXJhY3RlcnMgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUnKSwKICAgICAgICAgICAgUGxhaW5UZXh0ICAgICA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1cGxvYWQgY2FjaGUgb2JqZWN0CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgIGlmICgKICAgICAgICAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N0b3JlJwogICAgICAgIHx8ICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9CiAgICAgICAgKQogICAgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N0b3JlJyApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwogICAgICAgIH0KCiAgICAgICAgJEdldFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSAvLz0gMDsKCiAgICAgICAgIyBzdG9yZSBhY3Rpb24KICAgICAgICBteSAlRXJyb3I7CgogICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBhbmQgdmFsaWRhdGUgZHJhZnQgYWN0aW9uLgogICAgICAgIG15ICRGb3JtRHJhZnRBY3Rpb24gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybURyYWZ0QWN0aW9uJyApOwogICAgICAgIGlmICggJEZvcm1EcmFmdEFjdGlvbiAmJiAhJENvbmZpZy0+e0Zvcm1EcmFmdH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdGb3JtRHJhZnQgZnVuY3Rpb25hbGl0eSBkaXNhYmxlZCEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVGb3JtRHJhZnRSZXNwb25zZTsKCiAgICAgICAgIyBDaGVjayBkcmFmdCBuYW1lLgogICAgICAgIGlmICgKICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbgogICAgICAgICAgICAmJiAoICRGb3JtRHJhZnRBY3Rpb24gZXEgJ0FkZCcgfHwgJEZvcm1EcmFmdEFjdGlvbiBlcSAnVXBkYXRlJyApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtRHJhZnRUaXRsZScgKTsKCiAgICAgICAgICAgICMgQSBkcmFmdCBuYW1lIGlzIHJlcXVpcmVkLgogICAgICAgICAgICBpZiAoICEkVGl0bGUgKSB7CgogICAgICAgICAgICAgICAgJUZvcm1EcmFmdFJlc3BvbnNlID0gKAogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgiRHJhZnQgbmFtZSBpcyByZXF1aXJlZCEiKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ2hvc2VuIGRyYWZ0IG5hbWUgbXVzdCBiZSB1bmlxdWUuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEZvcm1EcmFmdExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Rm9ybURyYWZ0JyktPkZvcm1EcmFmdExpc3RHZXQoCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIERSQUZUOgogICAgICAgICAgICAgICAgZm9yIG15ICRGb3JtRHJhZnQgKCBAeyRGb3JtRHJhZnRMaXN0fSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBObyBleGlzdGluZyBkcmFmdCB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUIGlmICRUaXRsZSBuZSAkRm9ybURyYWZ0LT57VGl0bGV9OwoKICAgICAgICAgICAgICAgICAgICAjIFNhbWUgbmFtZSBmb3IgdXBkYXRlIG9uIGV4aXN0aW5nIGRyYWZ0LgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkRm9ybURyYWZ0QWN0aW9uIGVxICdVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gZXEgJEZvcm1EcmFmdC0+e0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBBbm90aGVyIGRyYWZ0IHdpdGggdGhlIGNob3NlbiBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgICAgICAgICAgICAgICAgICVGb3JtRHJhZnRSZXNwb25zZSA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAiRm9ybURyYWZ0IG5hbWUgJXMgaXMgYWxyZWFkeSBpbiB1c2UhIiwgJFRpdGxlICksCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBsYXN0IERSQUZUOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFBlcmZvcm0gZHJhZnQgYWN0aW9uIGluc3RlYWQgb2Ygc2F2aW5nIGZvcm0gZGF0YSBpbiB0aWNrZXQvYXJ0aWNsZS4KICAgICAgICBpZiAoICRGb3JtRHJhZnRBY3Rpb24gJiYgISVGb3JtRHJhZnRSZXNwb25zZSApIHsKCiAgICAgICAgICAgICMgUmVzZXQgRm9ybURyYWZ0SUQgdG8gcHJldmVudCB1cGRhdGluZyBleGlzdGluZyBkcmFmdC4KICAgICAgICAgICAgaWYgKCAkRm9ybURyYWZ0QWN0aW9uIGVxICdBZGQnICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gKSB7CiAgICAgICAgICAgICAgICAkUGFyYW1PYmplY3QtPntRdWVyeX0tPnBhcmFtKAogICAgICAgICAgICAgICAgICAgIC1uYW1lICA9PiAnRm9ybURyYWZ0SUQnLAogICAgICAgICAgICAgICAgICAgIC12YWx1ZSA9PiAnJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGb3JtRHJhZnRBY3Rpb25PazsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbiBlcSAnQWRkJwogICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgICggJEZvcm1EcmFmdEFjdGlvbiBlcSAnVXBkYXRlJyAmJiAkR2V0UGFyYW17Rm9ybURyYWZ0SUR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbk9rID0gJFBhcmFtT2JqZWN0LT5TYXZlRm9ybURyYWZ0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlICAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBPdmVycmlkZVBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlcGx5VG9BcnRpY2xlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJEZvcm1EcmFmdEFjdGlvbk9rKSB7CiAgICAgICAgICAgICAgICAkRm9ybURyYWZ0UmVzcG9uc2V7U3VjY2Vzc30gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJUZvcm1EcmFmdFJlc3BvbnNlID0gKAogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHBlcmZvcm0gcmVxdWVzdGVkIGRyYWZ0IGFjdGlvbiEnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCVGb3JtRHJhZnRSZXNwb25zZSkgewoKICAgICAgICAgICAgIyBidWlsZCBKU09OIG91dHB1dAogICAgICAgICAgICBteSAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlRm9ybURyYWZ0UmVzcG9uc2UsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHN0YXRlIG9iamVjdAogICAgICAgIG15ICRTdGF0ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpOwoKICAgICAgICAjIGNoZWNrIHBlbmRpbmcgdGltZQogICAgICAgIGlmICggJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICBteSAlU3RhdGVEYXRhID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgICAgIElEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgc3RhdGUgdHlwZQogICAgICAgICAgICBpZiAoICRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9ecGVuZGluZy9pICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICAgICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnsnRGF0ZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY3JlYXRlIGRhdGV0aW1lIG9iamVjdAogICAgICAgICAgICAgICAgbXkgJFBlbmRpbmdEYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmQgPT4gMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBjdXJyZW50IHN5c3RlbSBlcG9jaAogICAgICAgICAgICAgICAgbXkgJEN1clN5c3RlbURhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBkYXRlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgISRQZW5kaW5nRGF0ZVRpbWVPYmplY3QKICAgICAgICAgICAgICAgICAgICB8fCAkUGVuZGluZ0RhdGVUaW1lT2JqZWN0IDwgJEN1clN5c3RlbURhdGVUaW1lT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsnRGF0ZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e05vdGV9ICYmICRDb25maWctPntOb3RlTWFuZGF0b3J5fSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgc3ViamVjdAogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17U3ViamVjdH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J1N1YmplY3RJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGJvZHkKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte0JvZHl9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeydCb2R5SW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBvd25lcgogICAgICAgIGlmICggJENvbmZpZy0+e093bmVyfSAmJiAkQ29uZmlnLT57T3duZXJNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3T3duZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld093bmVySW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayByZXNwb25zaWJsZQogICAgICAgIGlmICggJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSAmJiAkQ29uZmlnLT57UmVzcG9uc2libGVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld1Jlc3BvbnNpYmxlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB0aXRsZQogICAgICAgIGlmICggJENvbmZpZy0+e1RpdGxlfSAmJiAhJEdldFBhcmFte1RpdGxlfSApIHsKICAgICAgICAgICAgJEVycm9yeydUaXRsZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHR5cGUKICAgICAgICBpZiAoCiAgICAgICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSApCiAgICAgICAgICAgICYmCiAgICAgICAgICAgICggJENvbmZpZy0+e1RpY2tldFR5cGV9ICkgJiYKICAgICAgICAgICAgKCAhJEdldFBhcmFte1R5cGVJRH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRXJyb3J7J1R5cGVJREludmFsaWQnfSA9ICcgU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBzZXJ2aWNlCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpCiAgICAgICAgICAgICYmICRDb25maWctPntTZXJ2aWNlfQogICAgICAgICAgICAmJiAkR2V0UGFyYW17U0xBSUR9CiAgICAgICAgICAgICYmICEkR2V0UGFyYW17U2VydmljZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRXJyb3J7J1NlcnZpY2VJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbWFuZGF0b3J5IHNlcnZpY2UKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2V9CiAgICAgICAgICAgICYmICRDb25maWctPntTZXJ2aWNlTWFuZGF0b3J5fQogICAgICAgICAgICAmJiAhJEdldFBhcmFte1NlcnZpY2VJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEVycm9yeydTZXJ2aWNlSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG1hbmRhdG9yeSBzbGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2V9CiAgICAgICAgICAgICYmICRDb25maWctPntTTEFNYW5kYXRvcnl9CiAgICAgICAgICAgICYmICEkR2V0UGFyYW17U0xBSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnU0xBSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG1hbmRhdG9yeSBxdWV1ZQogICAgICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSAmJiAkQ29uZmlnLT57UXVldWVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3UXVldWVJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld1F1ZXVlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBtYW5kYXRvcnkgc3RhdGUKICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gJiYgJENvbmZpZy0+e1N0YXRlTWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeydOZXdTdGF0ZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdGltZSB1bml0cywgYnV0IG9ubHkgaWYgdGhlIGN1cnJlbnQgc2NyZWVuIGhhcyBhIG5vdGUKICAgICAgICAjICAgKGFjY291bnRlZCB0aW1lIGNhbiBvbmx5IGJlIHN0b3JlZCBpZiBhbmQgYXJ0aWNsZSBpcyBnZW5lcmF0ZWQpCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e05vdGV9CiAgICAgICAgICAgICYmICRHZXRQYXJhbXtUaW1lVW5pdHN9IGVxICcnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnVGltZVVuaXRzSW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGV4cGFuZAogICAgICAgIGlmICggJEdldFBhcmFte0V4cGFuZH0gKSB7CiAgICAgICAgICAgICVFcnJvciA9ICgpOwogICAgICAgICAgICAkRXJyb3J7RXhwYW5kfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBodG1sIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15IEBUaWNrZXRUeXBlRHluYW1pY0ZpZWxkczsKICAgICAgICBteSBAQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRzOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgISRNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZAogICAgICAgICAgICAgICAgJiYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQojIC0tLQoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJXskUG9zc2libGVWYWx1ZXN9OwogICAgICAgICAgICAgICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICAgICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICRQb3NzaWJsZVZhbHVlcy0+eyRffSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVmFsaWRhdGlvblJlc3VsdDsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkICkgewogICAgICAgICAgICAgICAkUG9zc2libGVWYWx1ZXNGaWx0ZXIgPSAkU2VsZi0+X0dldE1hc3RlclNsYXZlRGF0YSgKICAgICAgICAgICAgICAgIFRpY2tldCA9PiBcJVRpY2tldCwKICAgICAgICAgICAgICAgIE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQojIC0tLQoKICAgICAgICAgICAgIyBEbyBub3QgdmFsaWRhdGUgb25seSBpZiBvYmplY3QgdHlwZSBpcyBBcnRpY2xlIGFuZCBDcmVhdGVBcnRpY2xlIHZhbHVlIGlzIG5vdCBkZWZpbmVkLgogICAgICAgICAgICBpZiAoICEoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnQXJ0aWNsZScgJiYgISRHZXRQYXJhbXtDcmVhdGVBcnRpY2xlfSApICkgewoKICAgICAgICAgICAgICAgICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkVmFsaWRhdGlvblJlc3VsdCkgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IHBlcmZvcm0gdmFsaWRhdGlvbiBvbiBmaWVsZCAlcyEnLCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFByb3BhZ2F0ZSB2YWxpZGF0aW9uIGVycm9yIHRvIHRoZSBFcnJvciB2YXJpYWJsZSB0byBiZSBkZXRlY3RlZCBieSB0aGUgZnJvbnRlbmQuCiAgICAgICAgICAgICAgICBpZiAoICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdUaWNrZXQnICkgewoKICAgICAgICAgICAgICAgICMgR2V0IGZpZWxkIGh0bWwuCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgICAgICAgICAgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntFcnJvck1lc3NhZ2V9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSAgICAgICAgICAgID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgICA9PiAkU2VsZi0+X0dldEZpZWxkc1RvVXBkYXRlKCksCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQFRpY2tldFR5cGVEeW5hbWljRmllbGRzLCB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnQXJ0aWNsZScgKSB7CiAgICAgICAgICAgICAgICBteSAkQ2xhc3MgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICAgICAgbXkgJE1hbmRhdG9yeVRvb2x0aXAgPSAwOwoKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzcyAgICAgICAgICAgID0gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJE1hbmRhdG9yeVRvb2x0aXAgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEdldCBmaWVsZCBodG1sLgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFNlcnZlckVycm9yICAgICAgICAgID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnkgICAgICAgICAgICA9PiAoICRDbGFzcyBlcSAnVmFsaWRhdGVfUmVxdWlyZWQnICkgPyAxIDogMCwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgICA9PiAkU2VsZi0+X0dldEZpZWxkc1RvVXBkYXRlKCksCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEFydGljbGVUeXBlRHluYW1pY0ZpZWxkcywgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnlUb29sdGlwID0+ICRNYW5kYXRvcnlUb29sdGlwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc2F2ZSBmb3JtIGlmIGEgZHJhZnQgd2FzIGxvYWRlZC4KICAgICAgICBpZiAoICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9ICkgewogICAgICAgICAgICAlRXJyb3IgPSAoIExvYWRlZEZvcm1EcmFmdCA9PiAxICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGVycm9ycwogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgVGltZVVuaXRzUmVxdWlyZWQgPT4gKAogICAgICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICAgICAgICAgID8gJ1ZhbGlkYXRlX1JlcXVpcmVkJwogICAgICAgICAgICAgICAgICAgIDogJycKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAgICAgVGlja2V0VHlwZUR5bmFtaWNGaWVsZHMgID0+IFxAVGlja2V0VHlwZUR5bmFtaWNGaWVsZHMsCiAgICAgICAgICAgICAgICBBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHMgPT4gXEBBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZHMsCgogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdGl0bGUKICAgICAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgPT4gJEdldFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdHlwZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSAmJiAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1R5cGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCAgID0+ICRHZXRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBzZXJ2aWNlCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VydmljZVNldCgKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUFDTENvbXBhdEdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgID0+ICRHZXRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtTTEFJRH0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTTEFTZXQoCiAgICAgICAgICAgICAgICAgICAgU0xBSUQgICAgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkVW5sb2NrT25Bd2F5ID0gMTsKCiAgICAgICAgIyBtb3ZlIHRpY2tldCB0byBhIG5ldyBxdWV1ZSwgYnV0IG9ubHkgaWYgdGhlIHF1ZXVlIHdhcyBjaGFuZ2VkCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnLT57UXVldWV9CiAgICAgICAgICAgICYmICRHZXRQYXJhbXtOZXdRdWV1ZUlEfQogICAgICAgICAgICAmJiAkR2V0UGFyYW17TmV3UXVldWVJRH0gbmUgJFRpY2tldHtRdWV1ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBtb3ZlIHRpY2tldCAoc2VuZCBub3RpZmljYXRpb24gaWYgbm8gbmV3IG93bmVyIGlzIHNlbGVjdGVkKQogICAgICAgICAgICBteSAkQm9keUFzVGV4dCA9ICcnOwogICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgJEJvZHlBc1RleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8IDAsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEJvZHlBc1RleHQgPSAkR2V0UGFyYW17Qm9keX0gfHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkTW92ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFF1ZXVlU2V0KAogICAgICAgICAgICAgICAgUXVldWVJRCAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gJEdldFBhcmFte05ld1VzZXJJRH0sCiAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgICAgICAgPT4gJEJvZHlBc1RleHQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRNb3ZlICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBvd25lcgogICAgICAgIG15IEBOb3RpZnlEb25lOwogICAgICAgIGlmICggJENvbmZpZy0+e093bmVyfSApIHsKICAgICAgICAgICAgbXkgJEJvZHlUZXh0ID0gJExheW91dE9iamVjdC0+UmljaFRleHQyQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtOZXdPd25lcklEfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkR2V0UGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCAgID0+ICRCb2R5VGV4dCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkVW5sb2NrT25Bd2F5ID0gMDsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgb3duZXIgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3T3duZXJJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyByZXNwb25zaWJsZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgICAgICAgICBteSAkQm9keVRleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgTmV3VXNlcklEID0+ICRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgPT4gJEJvZHlUZXh0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgcmVzcG9uc2libGUgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIG5vdGUKICAgICAgICBteSAkQXJ0aWNsZUlEID0gJyc7CiAgICAgICAgbXkgJFJldHVyblVSTDsKCiAgICAgICAgIyBzZXQgcHJpb3JpdHkKICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gJiYgJEdldFBhcmFte05ld1ByaW9yaXR5SUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBQcmlvcml0eUlEID0+ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgc3RhdGUKICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gJiYgJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1bmxvY2sgdGhlIHRpY2tldCBhZnRlciBjbG9zZQogICAgICAgICAgICBteSAlU3RhdGVEYXRhID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgICAgIElEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHVubG9jayBvbiBjbG9zZSBzdGF0ZQogICAgICAgICAgICBpZiAoICRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9eY2xvc2UvaSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgcGVuZGluZyB0aW1lIG9uIHBlbmRpbmcgc3RhdGUKICAgICAgICAgICAgZWxzaWYgKCAkU3RhdGVEYXRhe1R5cGVOYW1lfSA9fiAvXnBlbmRpbmcvaSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBwZW5kaW5nIHRpbWUKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlZGlyZWN0IHBhcmVudCB3aW5kb3cgdG8gbGFzdCBzY3JlZW4gb3ZlcnZpZXcgb24gY2xvc2VkIHRpY2tldHMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15jbG9zZS9pCiAgICAgICAgICAgICAgICAmJiAhJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpSZWRpcmVjdEFmdGVyQ2xvc2VEaXNhYmxlZCcpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRSZXR1cm5VUkwgPSAkU2VsZi0+e0xhc3RTY3JlZW5PdmVydmlld30gfHwgJ0FjdGlvbj1BZ2VudERhc2hib2FyZCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte0NyZWF0ZUFydGljbGV9CiAgICAgICAgICAgICYmICRDb25maWctPntOb3RlfQogICAgICAgICAgICAmJiAoICRHZXRQYXJhbXtTdWJqZWN0fSB8fCAkR2V0UGFyYW17Qm9keX0gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte1N1YmplY3R9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3ViamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1YmplY3QgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRDb25maWctPntTdWJqZWN0fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtTdWJqZWN0fSA9ICRTdWJqZWN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJEdldFBhcmFte1N1YmplY3R9CiAgICAgICAgICAgICAgICAgICAgfHwgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyBzdWJqZWN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHByZSBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCBzdWJtaXQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCVVcGxvYWRTdHVmZikgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudHMsIFwlVXBsb2FkU3R1ZmY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRNaW1lVHlwZSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICRNaW1lVHlwZSA9ICd0ZXh0L2h0bWwnOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHVudXNlZCBpbmxpbmUgaW1hZ2VzCiAgICAgICAgICAgICAgICBteSBATmV3QXR0YWNobWVudERhdGE7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElEID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID1+IC9pbWFnZS9pICkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSBlcSAnaW5saW5lJyApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50SURIVE1MUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3b3JrYXJvdW5kIGZvciBsaW5rIGVuY29kZSBvZiByaWNoIHRleHQgZWRpdG9yLCBzZWUgYnVnIzUwNTMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17Qm9keX0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWdub3JlIGF0dGFjaG1lbnQgaWYgbm90IGxpbmtlZCBpbiBib2R5CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0JvZHl9ICF+IC8oXFEkQ29udGVudElESFRNTFF1b3RlXEV8XFEkQ29udGVudElEXEUpL2k7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGlubGluZSBpbWFnZXMgYW5kIG5vcm1hbCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIHB1c2ggQE5ld0F0dGFjaG1lbnREYXRhLCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAQXR0YWNobWVudHMgPSBATmV3QXR0YWNobWVudERhdGE7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaHRtbCBkb2N1bWVudAogICAgICAgICAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRnJvbSA9ICJcIiRTZWxmLT57VXNlckZ1bGxuYW1lfVwiIDwkU2VsZi0+e1VzZXJFbWFpbH0+IjsKICAgICAgICAgICAgbXkgQE5vdGlmeVVzZXJJRHM7CgogICAgICAgICAgICAjIGdldCBsaXN0IG9mIHVzZXJzIHRoYXQgd2lsbCBiZSBpbmZvcm1lZCB3aXRob3V0IHNlbGVjdGlvbiBpbiBpbmZvcm1lZC9pbnZvbHZlZCBsaXN0CiAgICAgICAgICAgIG15IEBVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24KICAgICAgICAgICAgICAgID0gc3BsaXQoICcsJywgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1VzZXJMaXN0V2l0aG91dFNlbGVjdGlvbicgKSB8fCAiIiApOwoKICAgICAgICAgICAgIyBnZXQgaW5mb3JtIHVzZXIgbGlzdAogICAgICAgICAgICBteSBASW5mb3JtVXNlcklEID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0luZm9ybVVzZXJJRCcgKTsKCiAgICAgICAgICAgICMgZ2V0IGludm9sdmVkIHVzZXIgbGlzdAogICAgICAgICAgICBteSBASW52b2x2ZWRVc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW52b2x2ZWRVc2VySUQnICk7CgogICAgICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlVc2VySURzLCBASW5mb3JtVXNlcklEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE5vdGlmeVVzZXJJRHMsIEBJbnZvbHZlZFVzZXJJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE5vdGlmeVVzZXJJRHMsIEBVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb247CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudFRpY2tldEVtYWlsT3V0Ym91bmQnICkgewogICAgICAgICAgICAgICAgJEFydGljbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6OkVtYWlsJyktPkFydGljbGVTZW5kKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEZyb20sCiAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICAgICAgICAgICAgID0+ICRDb25maWctPntIaXN0b3J5Q29tbWVudH0sCiAgICAgICAgICAgICAgICAgICAgRm9yY2VOb3RpZmljYXRpb25Ub1VzZXJJRCAgICAgICA9PiBcQE5vdGlmeVVzZXJJRHMsCiAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiAgICAgICAgICAgICAgICAgICAgVW5sb2NrT25Bd2F5ICAgICAgICAgICAgICAgICAgICA9PiAkVW5sb2NrT25Bd2F5LAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgICAgICAgICAgICAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEFydGljbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6OkludGVybmFsJyktPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICAgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgICAgICAgICBNaW1lVHlwZSAgICAgICAgICAgICAgICAgICAgICAgID0+ICRNaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnLT57SGlzdG9yeVR5cGV9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlDb21tZW50fSwKICAgICAgICAgICAgICAgICAgICBGb3JjZU5vdGlmaWNhdGlvblRvVXNlcklEICAgICAgID0+IFxATm90aWZ5VXNlcklEcywKICAgICAgICAgICAgICAgICAgICBFeGNsdWRlTXV0ZU5vdGlmaWNhdGlvblRvVXNlcklEID0+IFxATm90aWZ5RG9uZSwKICAgICAgICAgICAgICAgICAgICBVbmxvY2tPbkF3YXkgICAgICAgICAgICAgICAgICAgID0+ICRVbmxvY2tPbkF3YXksCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCAgICAgICAgICAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggISRBcnRpY2xlSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0aW1lIGFjY291bnRpbmcKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17VGltZVVuaXRzfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEFjY291bnRUaW1lKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBUaW1lVW5pdCAgPT4gJEdldFBhcmFte1RpbWVVbml0c30sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIHByZSBzdWJtaXR0ZWQgYXR0YWNobWVudHMKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0gKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGR5bmFtaWMgZmllbGRzCiAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJE1hc3RlclNsYXZlQWR2YW5jZWRFbmFibGVkCiAgICAgICAgICAgICAgICAmJiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiMgLS0tCgogICAgICAgICAgICAjIHNldCB0aGUgb2JqZWN0IElEIChUaWNrZXRJRCBvciBBcnRpY2xlSUQpIGRlcGVuZGluZyBvbiB0aGUgZmllbGQgY29uZmlncmF0aW9uCiAgICAgICAgICAgIG15ICRPYmplY3RJRCA9ICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnQXJ0aWNsZScgPyAkQXJ0aWNsZUlEIDogJFNlbGYtPntUaWNrZXRJRH07CgogICAgICAgICAgICAjIHNldCB0aGUgdmFsdWUKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBJZiBmb3JtIHdhcyBjYWxsZWQgYmFzZWQgb24gYSBkcmFmdCwKICAgICAgICAjICAgZGVsZXRlIGRyYWZ0IHNpbmNlIGl0cyBjb250ZW50IGhhcyBub3cgYmVlbiB1c2VkLgogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte0Zvcm1EcmFmdElEfQogICAgICAgICAgICAmJiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZvcm1EcmFmdCcpLT5Gb3JtRHJhZnREZWxldGUoCiAgICAgICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkR2V0UGFyYW17Rm9ybURyYWZ0SUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgZGVsZXRlIGRyYWZ0IScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBsb2FkIG5ldyBVUkwgaW4gcGFyZW50IHdpbmRvdyBhbmQgY2xvc2UgcG9wdXAKICAgICAgICAkUmV0dXJuVVJMIHx8PSAiQWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kU2VsZi0+e1RpY2tldElEfTtBcnRpY2xlSUQ9JEFydGljbGVJRCI7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Qb3B1cENsb3NlKAogICAgICAgICAgICBVUkwgPT4gJFJldHVyblVSTCwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhVcGRhdGUnICkgewogICAgICAgIG15ICVUaWNrZXQgICAgICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyICAgPSAkVGlja2V0e0N1c3RvbWVyVXNlcklEfTsKICAgICAgICBteSAkRWxlbWVudENoYW5nZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CgogICAgICAgIG15ICRTZXJ2aWNlSUQ7CgogICAgICAgICMgZ2V0IHNlcnZpY2UgdmFsdWUgZnJvbSBwYXJhbSBpZiBmaWVsZCBpcyB2aXNpYmxlIGluIHRoZSBzY3JlZW4KICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJENvbmZpZy0+e1NlcnZpY2V9ICkgewogICAgICAgICAgICAkU2VydmljZUlEID0gJEdldFBhcmFte1NlcnZpY2VJRH0gfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSB1c2UgdGlja2V0IHNlcnZpY2UgdmFsdWUgc2luY2UgaXQgY2FuJ3QgYmUgY2hhbmdlZAogICAgICAgIGVsc2lmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKICAgICAgICAgICAgJFNlcnZpY2VJRCA9ICRUaWNrZXR7U2VydmljZUlEfSB8fCAnJzsKICAgICAgICB9CgogICAgICAgIG15ICRRdWV1ZUlEID0gJEdldFBhcmFte05ld1F1ZXVlSUR9IHx8ICRUaWNrZXR7UXVldWVJRH07CiAgICAgICAgbXkgJFN0YXRlSUQgPSAkR2V0UGFyYW17TmV3U3RhdGVJRH0gfHwgJFRpY2tldHtTdGF0ZUlEfTsKCiAgICAgICAgIyBnZXQgbGlzdCB0eXBlCiAgICAgICAgbXkgJFRyZWVWaWV3ID0gMDsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgICAgICRUcmVlVmlldyA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkT3duZXJzID0gJFNlbGYtPl9HZXRPd25lcnMoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUXVldWVJRCAgPT4gJFF1ZXVlSUQsCiAgICAgICAgICAgIFN0YXRlSUQgID0+ICRTdGF0ZUlELAogICAgICAgICAgICBBbGxVc2VycyA9PiAkR2V0UGFyYW17T3duZXJBbGx9LAogICAgICAgICk7CiAgICAgICAgbXkgJE9sZE93bmVycyA9ICRTZWxmLT5fR2V0T2xkT3duZXJzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFF1ZXVlSUQgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgQWxsVXNlcnMgPT4gJEdldFBhcmFte093bmVyQWxsfSwKICAgICAgICApOwogICAgICAgIG15ICRSZXNwb25zaWJsZVVzZXJzID0gJFNlbGYtPl9HZXRSZXNwb25zaWJsZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBRdWV1ZUlEICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIEFsbFVzZXJzID0+ICRHZXRQYXJhbXtPd25lckFsbH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUHJpb3JpdGllcyA9ICRTZWxmLT5fR2V0UHJpb3JpdGllcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgbXkgJFNlcnZpY2VzID0gJFNlbGYtPl9HZXRTZXJ2aWNlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkQ3VzdG9tZXJVc2VyLAogICAgICAgICAgICBRdWV1ZUlEICAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgPT4gJFN0YXRlSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkVHlwZXMgPSAkU2VsZi0+X0dldFR5cGVzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRDdXN0b21lclVzZXIsCiAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICAgICA9PiAkU3RhdGVJRCwKICAgICAgICApOwogICAgICAgIG15ICROZXdRdWV1ZXMgPSAkU2VsZi0+X0dldFF1ZXVlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgcmVzZXQgcHJldmlvdXMgU2VydmljZUlEIHRvIHJlc2V0IFNMQS1MaXN0IGlmIG5vIHNlcnZpY2UgaXMgc2VsZWN0ZWQKICAgICAgICBpZiAoICFkZWZpbmVkICRTZXJ2aWNlSUQgfHwgISRTZXJ2aWNlcy0+eyRTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICAkU2VydmljZUlEID0gJyc7CiAgICAgICAgfQogICAgICAgIG15ICRTTEFzID0gJFNlbGYtPl9HZXRTTEFzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRDdXN0b21lclVzZXIsCiAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICAgICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgU2VydmljZUlEICAgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICApOwogICAgICAgIG15ICROZXh0U3RhdGVzID0gJFNlbGYtPl9HZXROZXh0U3RhdGVzKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRDdXN0b21lclVzZXIgfHwgJycsCiAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICAgICA9PiAkU3RhdGVJRCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBEeW5hbWljIEZpZWxkcyBQb3NzaWJsZSBWYWx1ZXMgdmlhIEFKQVgKICAgICAgICBteSBARHluYW1pY0ZpZWxkQUpBWDsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzQUNMUmVkdWNpYmxlOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgUXVldWVJRCAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXN9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICkgfHwgJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgIHB1c2goCiAgICAgICAgICAgICAgICBARHluYW1pY0ZpZWxkQUpBWCwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN0YW5kYXJkVGVtcGxhdGVzID0gJFNlbGYtPl9HZXRTdGFuZGFyZFRlbXBsYXRlcygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBRdWV1ZUlEID0+ICRRdWV1ZUlEIHx8ICcnLAogICAgICAgICk7CgogICAgICAgIG15IEBUZW1wbGF0ZUFKQVg7CgogICAgICAgICMgdXBkYXRlIHRpY2tldCBib2R5IGFuZCBhdHRhY2hlbWVudHMgaWYgbmVlZGVkLgogICAgICAgIGlmICggJEVsZW1lbnRDaGFuZ2VkIGVxICdTdGFuZGFyZFRlbXBsYXRlSUQnICkgewogICAgICAgICAgICBteSBAVGlja2V0QXR0YWNobWVudHM7CiAgICAgICAgICAgIG15ICRUZW1wbGF0ZVRleHQ7CgogICAgICAgICAgICAjIHJlbW92ZSBhbGwgYXR0YWNobWVudHMgZnJvbSB0aGUgVXBsb2FkIGNhY2hlCiAgICAgICAgICAgIG15ICRSZW1vdmVTdWNjZXNzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkUmVtb3ZlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkZvcm0gYXR0YWNobWVudHMgY291bGQgbm90IGJlIGRlbGV0ZWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSB0ZW1wbGF0ZSB0ZXh0IGFuZCBzZXQgbmV3IGF0dGFjaG1lbnRzIGlmIGEgdGVtcGxhdGUgaXMgc2VsZWN0ZWQKICAgICAgICAgICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJEdldFBhcmFte1N0YW5kYXJkVGVtcGxhdGVJRH0gKSApIHsKICAgICAgICAgICAgICAgIG15ICRUZW1wbGF0ZUdlbmVyYXRvciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpOwoKICAgICAgICAgICAgICAgICMgc2V0IHRlbXBsYXRlIHRleHQsIHJlcGxhY2Ugc21hcnQgdGFncyAobGltaXRlZCBhcyB0aWNrZXQgaXMgbm90IGNyZWF0ZWQpCiAgICAgICAgICAgICAgICAkVGVtcGxhdGVUZXh0ID0gJFRlbXBsYXRlR2VuZXJhdG9yLT5UZW1wbGF0ZSgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRHZXRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgaWYgUmVwbHlUb0FydGljbGUgaXMgZ2l2ZW4sIGdldCB0aGlzIGFydGljbGUgdG8gZ2VuZXJhdGUKICAgICAgICAgICAgICAgICMgdGhlIHF1b3RlZCBhcnRpY2xlIGNvbnRlbnQKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGFydGljbGUgdG8gcXVvdGUKICAgICAgICAgICAgICAgICAgICBteSAkQm9keSA9ICRMYXlvdXRPYmplY3QtPkFydGljbGVRdW90ZSgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZENhY2hlT2JqZWN0ID0+ICRVcGxvYWRDYWNoZU9iamVjdCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHByZXBhcmUgcXVvdGVkIGJvZHkgY29udGVudAogICAgICAgICAgICAgICAgICAgICRCb2R5ID0gJFNlbGYtPl9HZXRRdW90ZWRSZXBseUJvZHkoCiAgICAgICAgICAgICAgICAgICAgICAgICV7ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSB9LAogICAgICAgICAgICAgICAgICAgICAgICBCb2R5ID0+ICRCb2R5LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wbGF0ZVRleHQgPSAkVGVtcGxhdGVUZXh0IC4gJzxicj48YnI+JyAuICRCb2R5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRlbXBsYXRlVGV4dCA9ICRUZW1wbGF0ZVRleHQgLiAiXG5cbiIgLiAkQm9keTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgU3RkQXR0YWNobWVudE9iamVjdAogICAgICAgICAgICAgICAgbXkgJFN0ZEF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RkQXR0YWNobWVudCcpOwoKICAgICAgICAgICAgICAgICMgYWRkIHN0ZC4gYXR0YWNobWVudHMgdG8gdGlja2V0CiAgICAgICAgICAgICAgICBteSAlQWxsU3RkQXR0YWNobWVudHMgPSAkU3RkQXR0YWNobWVudE9iamVjdC0+U3RkQXR0YWNobWVudFN0YW5kYXJkVGVtcGxhdGVNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkVGVtcGxhdGVJRCA9PiAkR2V0UGFyYW17U3RhbmRhcmRUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgKCBzb3J0IGtleXMgJUFsbFN0ZEF0dGFjaG1lbnRzICkgewogICAgICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50c0RhdGEgPSAkU3RkQXR0YWNobWVudE9iamVjdC0+U3RkQXR0YWNobWVudEdldCggSUQgPT4gJF8gKTsKICAgICAgICAgICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAlQXR0YWNobWVudHNEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZW5kIGEgbGlzdCBvZiBhdHRhY2htZW50cyBpbiB0aGUgdXBsb2FkIGNhY2hlIGJhY2sgdG8gdGhlIGNsaWVudHNpZGUgSmF2YVNjcmlwdAogICAgICAgICAgICAgICAgIyB3aGljaCByZW5kZXJzIHRoZW4gdGhlIGxpc3Qgb2YgY3VycmVudGx5IHVwbG9hZGVkIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICAgICBAVGlja2V0QXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBUaWNrZXRBdHRhY2htZW50cykgewogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57RmlsZXNpemV9ID0gJExheW91dE9iamVjdC0+SHVtYW5SZWFkYWJsZURhdGFTaXplKAogICAgICAgICAgICAgICAgICAgICAgICBTaXplID0+ICRBdHRhY2htZW50LT57RmlsZXNpemV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEBUZW1wbGF0ZUFKQVggPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVXNlVGVtcGxhdGVOb3RlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICcwJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFRlbXBsYXRlVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJ1RpY2tldEF0dGFjaG1lbnRzJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcQFRpY2tldEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgIEtlZXBEYXRhID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgICAgIFsKCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdOZXdPd25lcklEJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJE93bmVycywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte05ld093bmVySUR9LAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRSZXNwb25zaWJsZVVzZXJzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdOZXdTdGF0ZUlEJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJE5leHRTdGF0ZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gJENvbmZpZy0+e1N0YXRlRGVmYXVsdH0gPyAwIDogMSwKICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ05ld1ByaW9yaXR5SUQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkUHJpb3JpdGllcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte05ld1ByaW9yaXR5SUR9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlcnZpY2VzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU0xBSUQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkU0xBcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1N0YW5kYXJkVGVtcGxhdGVJRCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTdGFuZGFyZFRlbXBsYXRlcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEdldFBhcmFte1N0YW5kYXJkVGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkVHlwZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnTmV3UXVldWVJRCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICROZXdRdWV1ZXMsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQER5bmFtaWNGaWVsZEFKQVgsCiAgICAgICAgICAgICAgICBAVGVtcGxhdGVBSkFYLAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICRCb2R5ID0gJyc7CgogICAgICAgICMgaWYgUmVwbHlUb0FydGljbGUgaXMgZ2l2ZW4sIGdldCB0aGlzIGFydGljbGUgdG8gZ2VuZXJhdGUKICAgICAgICAjIHRoZSBxdW90ZWQgYXJ0aWNsZSBjb250ZW50CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IGFydGljbGUgdG8gcXVvdGUKICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUXVvdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgVXBsb2FkQ2FjaGVPYmplY3QgPT4gJFVwbG9hZENhY2hlT2JqZWN0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBwcmVwYXJlIHF1b3RlZCBib2R5IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPSAkU2VsZi0+X0dldFF1b3RlZFJlcGx5Qm9keSgKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQm9keSA9PiAkQm9keSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgaWYgYSBib2R5IGNvbnRlbnQgd2FzIHByZSBkZWZpbmVkLCBhZGQgdGhpcyBiZWZvcmUgdGhlIHF1b3RlZCBhcnRpY2xlIGNvbnRlbnQKICAgICAgICBpZiAoICRHZXRQYXJhbXtCb2R5fSApIHsKCiAgICAgICAgICAgICMgbWFrZSBzdXJlIGJvZHkgaXMgcmljaCB0ZXh0CiAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJSaWNoVGV4dCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEJvZHkgPSAkR2V0UGFyYW17Qm9keX0gLiAkQm9keTsKICAgICAgICB9CgogICAgICAgICMgZmlsbHVwIGNvbmZpZ3VyZWQgZGVmYXVsdCB2YXJzCiAgICAgICAgaWYgKCAkQm9keSBlcSAnJyAmJiAkQ29uZmlnLT57Qm9keX0gKSB7CiAgICAgICAgICAgICRCb2R5ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJENvbmZpZy0+e0JvZHl9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBtYWtlIHN1cmUgYm9keSBpcyByaWNoIHRleHQKICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICRCb2R5ID0gJExheW91dE9iamVjdC0+QXNjaWkyUmljaFRleHQoCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRCb2R5LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzZXQgQm9keSB2YXIgdG8gY2FsY3VsYXRlZCBjb250ZW50CiAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJEJvZHk7CgogICAgICAgIG15ICVTYWZldHlDaGVja1Jlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+U2FmZXR5KAogICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9LAoKICAgICAgICAgICAgIyBTdHJpcCBvdXQgZXh0ZXJuYWwgY29udGVudCBpZiBCbG9ja0xvYWRpbmdSZW1vdGVDb250ZW50IGlzIGVuYWJsZWQuCiAgICAgICAgICAgIE5vRXh0U3JjTG9hZCA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkJsb2NrTG9hZGluZ1JlbW90ZUNvbnRlbnQnKSwKCiAgICAgICAgICAgICMgRGlzYWxsb3cgcG90ZW50aWFsbHkgdW5zYWZlIGNvbnRlbnQuCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vU1ZHICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0phdmFTY3JpcHQgPT4gMSwKICAgICAgICApOwogICAgICAgICRHZXRQYXJhbXtCb2R5fSA9ICRTYWZldHlDaGVja1Jlc3VsdHtTdHJpbmd9OwoKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewogICAgICAgICAgICBteSAkVGlja2V0U3ViamVjdFJlID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlN1YmplY3RSZScpIHx8ICdSZSc7CiAgICAgICAgICAgICRHZXRQYXJhbXtTdWJqZWN0fSA9ICRUaWNrZXRTdWJqZWN0UmUgLiAnOiAnIC4gJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9e1N1YmplY3R9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtTdWJqZWN0fSAmJiAkQ29uZmlnLT57U3ViamVjdH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtTdWJqZWN0fSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRDb25maWctPntTdWJqZWN0fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15IEBUaWNrZXRUeXBlRHluYW1pY0ZpZWxkczsKICAgICAgICBteSBAQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRzOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgISRNYXN0ZXJTbGF2ZUFkdmFuY2VkRW5hYmxlZAogICAgICAgICAgICAgICAgJiYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQojIC0tLQoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJXskUG9zc2libGVWYWx1ZXN9OwogICAgICAgICAgICAgICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICAgICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICRQb3NzaWJsZVZhbHVlcy0+eyRffSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCApIHsKICAgICAgICAgICAgICAgJFBvc3NpYmxlVmFsdWVzRmlsdGVyID0gICRTZWxmLT5fR2V0TWFzdGVyU2xhdmVEYXRhKAogICAgICAgICAgICAgICAgVGlja2V0ID0+IFwlVGlja2V0LAogICAgICAgICAgICAgICAgTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiMgLS0tCgogICAgICAgICAgICAjIHRvIHN0b3JlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSBkYXRhYmFzZSAob3IgdW5kZWZpbmVkKQogICAgICAgICAgICBteSAkVmFsdWU7CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnVGlja2V0JyApIHsKCiAgICAgICAgICAgICAgICAjIE9ubHkgZ2V0IHZhbHVlcyBmb3IgVGlja2V0IGZpZWxkcyAoYWxsIHNjcmVlbnMgYmFzZWQgb24gQWdlbnRUaWNrZUFjdGlvbkNvbW1vbgogICAgICAgICAgICAgICAgIyBnZW5lcmF0ZXMgYSBuZXcgYXJ0aWNsZSwgdGhlbiBhcnRpY2xlIGZpZWxkcyB3aWxsIGJlIGFsd2F5cyBlbXB0eSBhdCB0aGUgYmVnaW5uaW5nKS4KICAgICAgICAgICAgICAgICMgVmFsdWUgaXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSBmcm9tIFRpY2tldC4KICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICMgR2V0IGZpZWxkIGh0bWwuCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSAgICAgICAgICAgID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgICA9PiAkU2VsZi0+X0dldEZpZWxkc1RvVXBkYXRlKCksCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQFRpY2tldFR5cGVEeW5hbWljRmllbGRzLCB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnQXJ0aWNsZScgKSB7CiAgICAgICAgICAgICAgICBteSAkQ2xhc3MgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICAgICAgbXkgJE1hbmRhdG9yeVRvb2x0aXAgPSAwOwoKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzcyAgICAgICAgICAgID0gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJE1hbmRhdG9yeVRvb2x0aXAgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEdldCBmaWVsZCBodG1sLgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnkgICAgICAgICAgICA9PiAoICRDbGFzcyBlcSAnVmFsaWRhdGVfUmVxdWlyZWQnICkgPyAxIDogMCwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgICA9PiAkU2VsZi0+X0dldEZpZWxkc1RvVXBkYXRlKCksCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEFydGljbGVUeXBlRHluYW1pY0ZpZWxkcywgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnlUb29sdGlwID0+ICRNYW5kYXRvcnlUb29sdGlwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmludCBmb3JtIC4uLgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrKAogICAgICAgICAgICBUaW1lVW5pdHNSZXF1aXJlZCA9PiAoCiAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgICAgID8gJ1ZhbGlkYXRlX1JlcXVpcmVkJwogICAgICAgICAgICAgICAgOiAnJwogICAgICAgICAgICApLAogICAgICAgICAgICBUaWNrZXRUeXBlRHluYW1pY0ZpZWxkcyAgPT4gXEBUaWNrZXRUeXBlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRzID0+IFxAQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRzLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxpc3QgdHlwZQogICAgbXkgJFRyZWVWaWV3ID0gMDsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBEZWZpbmUgdGhlIGR5bmFtaWMgZmllbGRzIHRvIHNob3cgYmFzZWQgb24gdGhlIG9iamVjdCB0eXBlLgogICAgbXkgJE9iamVjdFR5cGUgPSBbJ1RpY2tldCddOwoKICAgICMgT25seSBzY3JlZW5zIHRoYXQgYWRkIG5vdGVzIGNhbiBtb2RpZnkgQXJ0aWNsZSBkeW5hbWljIGZpZWxkcy4KICAgIGlmICggJENvbmZpZy0+e05vdGV9ICkgewogICAgICAgICRPYmplY3RUeXBlID0gWyAnVGlja2V0JywgJ0FydGljbGUnIF07CiAgICB9CgogICAgIyBHZXQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuLgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICRPYmplY3RUeXBlLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICAjIFdpZGdldCBUaWNrZXQgQWN0aW9ucwogICAgaWYgKAogICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSAmJiAkQ29uZmlnLT57VGlja2V0VHlwZX0gKQogICAgICAgIHx8CiAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICAgICAmJiAkQ29uZmlnLT57U2VydmljZX0gKSAgICAgfHwKICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpSZXNwb25zaWJsZScpICYmICRDb25maWctPntSZXNwb25zaWJsZX0gKSB8fAogICAgICAgICRDb25maWctPntUaXRsZX0gICAgfHwKICAgICAgICAkQ29uZmlnLT57UXVldWV9ICAgIHx8CiAgICAgICAgJENvbmZpZy0+e093bmVyfSAgICB8fAogICAgICAgICRDb25maWctPntTdGF0ZX0gICAgfHwKICAgICAgICAkQ29uZmlnLT57UHJpb3JpdHl9IHx8CiAgICAgICAgc2NhbGFyIEB7ICRQYXJhbXtUaWNrZXRUeXBlRHluYW1pY0ZpZWxkc30gfSA+IDAKICAgICAgICApCiAgICB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1dpZGdldFRpY2tldEFjdGlvbnMnLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnLT57VGl0bGV9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaXRsZScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIG15ICREeW5hbWljRmllbGROYW1lcyA9ICRTZWxmLT5fR2V0RmllbGRzVG9VcGRhdGUoCiAgICAgICAgT25seUR5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnRHluYW1pY0ZpZWxkTmFtZXMnLAogICAgICAgIFZhbHVlID0+ICREeW5hbWljRmllbGROYW1lcywKICAgICk7CgogICAgIyB0eXBlcwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApIHsKICAgICAgICBteSAlVHlwZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFR5cGVMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplICcgLiAoICRQYXJhbXtFcnJvcnN9LT57VHlwZUlESW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlVHlwZSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1R5cGVJRH0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVHlwZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlcnZpY2VzCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJENvbmZpZy0+e1NlcnZpY2V9ICkgewogICAgICAgIG15ICRTZXJ2aWNlcyA9ICRTZWxmLT5fR2V0U2VydmljZXMoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgcmVzZXQgcHJldmlvdXMgU2VydmljZUlEIHRvIHJlc2V0IFNMQS1MaXN0IGlmIG5vIHNlcnZpY2UgaXMgc2VsZWN0ZWQKICAgICAgICBpZiAoICEkUGFyYW17U2VydmljZUlEfSB8fCAhJFNlcnZpY2VzLT57ICRQYXJhbXtTZXJ2aWNlSUR9IH0gKSB7CiAgICAgICAgICAgICRQYXJhbXtTZXJ2aWNlSUR9ID0gJyc7CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17U2VydmljZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJFNlcnZpY2VzLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICJNb2Rlcm5pemUgIgogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTZXJ2aWNlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtTZXJ2aWNlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnVHJlZVZpZXcnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U2VydmljZU1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAlU0xBID0gJFRpY2tldE9iamVjdC0+VGlja2V0U0xBTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtTTEFTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlU0xBLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdTTEFJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAiTW9kZXJuaXplICIKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57U0xBTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtTZXJ2aWNlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU0xBJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTTEFNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1NMQU1hbmRhdG9yeX0sCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWctPntRdWV1ZX0gKSB7CgogICAgICAgICMgZmV0Y2ggYWxsIHF1ZXVlcwogICAgICAgIG15ICVNb3ZlUXVldWVzID0gJFRpY2tldE9iamVjdC0+VGlja2V0TW92ZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ21vdmVfaW50bycsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgbW92ZSBxdWV1ZXMKICAgICAgICAkUGFyYW17UXVldWVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5BZ2VudFF1ZXVlTGlzdE9wdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgPT4geyAlTW92ZVF1ZXVlcywgJycgPT4gJy0nIH0sCiAgICAgICAgICAgIE11bHRpcGxlID0+IDAsCiAgICAgICAgICAgIFNpemUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgID0+ICdOZXdRdWV1ZUlEIE1vZGVybml6ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1F1ZXVlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdRdWV1ZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOZXdRdWV1ZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgICAgPT4gJFBhcmFte05ld1F1ZXVlSUR9LAogICAgICAgICAgICBUcmVlVmlldyAgICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgIEN1cnJlbnRRdWV1ZUlEID0+ICRQYXJhbXtRdWV1ZUlEfSwKICAgICAgICAgICAgT25DaGFuZ2VTdWJtaXQgPT4gMCwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVldWUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFF1ZXVlTWFuZGF0b3J5ID0+ICRDb25maWctPntRdWV1ZU1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbQogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgbXkgJFVzZXJPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgIGlmICggJENvbmZpZy0+e093bmVyfSApIHsKCiAgICAgICAgIyBnZXQgdXNlciBvZiBvd24gZ3JvdXBzCiAgICAgICAgbXkgJVNob3duVXNlcnM7CiAgICAgICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkVXNlck9iamVjdC0+VXNlckxpc3QoCiAgICAgICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICVBbGxHcm91cHNNZW1iZXJzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdJRCAgICAgICAgPSAkUXVldWVPYmplY3QtPkdldFF1ZXVlR3JvdXBJRCggUXVldWVJRCA9PiAkVGlja2V0e1F1ZXVlSUR9ICk7CiAgICAgICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdvd25lcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ05ld093bmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgb2xkIG93bmVyCiAgICAgICAgbXkgQE9sZFVzZXJJbmZvID0gJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJMaXN0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApOwogICAgICAgIG15IEBPbGRPd25lcnM7CiAgICAgICAgbXkgJU9sZE93bmVyc1Nob3duOwogICAgICAgIG15ICVTZWVuT2xkT3duZXI7CiAgICAgICAgaWYgKEBPbGRVc2VySW5mbykgewogICAgICAgICAgICBteSAkQ291bnRlciA9IDE7CiAgICAgICAgICAgIFVTRVI6CiAgICAgICAgICAgIGZvciBteSAkVXNlciAoIHJldmVyc2UgQE9sZFVzZXJJbmZvICkgewoKICAgICAgICAgICAgICAgICMgc2tpcCBpZiBvbGQgb3duZXIgaXMgYWxyZWFkeSBpbiB0aGUgbGlzdAogICAgICAgICAgICAgICAgbmV4dCBVU0VSIGlmICRTZWVuT2xkT3duZXJ7ICRVc2VyLT57VXNlcklEfSB9OwogICAgICAgICAgICAgICAgJFNlZW5PbGRPd25lcnsgJFVzZXItPntVc2VySUR9IH0gPSAxOwogICAgICAgICAgICAgICAgbXkgJEtleSAgID0gJFVzZXItPntVc2VySUR9OwogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gIiRDb3VudGVyOiAkVXNlci0+e1VzZXJGdWxsbmFtZX0iOwogICAgICAgICAgICAgICAgcHVzaCBAT2xkT3duZXJzLCB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJE9sZE93bmVyc1Nob3dueyRLZXl9ID0gJFZhbHVlOwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJE9sZE93bmVyU2VsZWN0ZWRJRCA9ICcnOwogICAgICAgIGlmICggJFBhcmFte09sZE93bmVySUR9ICkgewogICAgICAgICAgICAkT2xkT3duZXJTZWxlY3RlZElEID0gJFBhcmFte09sZE93bmVySUR9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRPbGRVc2VySW5mb1swXS0+e1VzZXJJRH0gKSB7CiAgICAgICAgICAgICRPbGRPd25lclNlbGVjdGVkSUQgPSAkT2xkVXNlckluZm9bMF0tPntVc2VySUR9IC4gJzEnOwogICAgICAgIH0KCiAgICAgICAgbXkgJE9sZE93bmVyQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnT2xkT3duZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlT2xkT3duZXJzU2hvd24sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkT2xkT3duZXJBQ0wpIHsKICAgICAgICAgICAgJU9sZE93bmVyc1Nob3duID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBzdHJpbmcKICAgICAgICAkUGFyYW17T3duZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ05ld093bmVySUQnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntPd25lck1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3T3duZXJJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBTaXplICAgICAgICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIEZpbHRlcnMgICAgICA9PiB7CiAgICAgICAgICAgICAgICBPbGRPd25lcnMgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ByZXZpb3VzIE93bmVyJyksCiAgICAgICAgICAgICAgICAgICAgVmFsdWVzID0+IFwlT2xkT3duZXJzU2hvd24sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPd25lcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgT3duZXJNYW5kYXRvcnkgPT4gJENvbmZpZy0+e093bmVyTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6UmVzcG9uc2libGUnKSAmJiAkQ29uZmlnLT57UmVzcG9uc2libGV9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9mIG93biBncm91cHMKICAgICAgICBteSAlU2hvd25Vc2VyczsKICAgICAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkR0lEICAgICAgICA9ICRRdWV1ZU9iamVjdC0+R2V0UXVldWVHcm91cElEKCBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ3Jlc3BvbnNpYmxlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCByZXNwb25zaWJsZQogICAgICAgICRQYXJhbXtSZXNwb25zaWJsZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1Jlc3BvbnNpYmxlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdSZXNwb25zaWJsZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTaXplICAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSZXNwb25zaWJsZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUmVzcG9uc2libGVNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1Jlc3BvbnNpYmxlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1N0YXRlfSApIHsKCiAgICAgICAgbXkgJVN0YXRlOwogICAgICAgIG15ICVTdGF0ZUxpc3QgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZUxpc3QoCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRQYXJhbXtOZXdTdGF0ZUlEfSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3RhdGVEZWZhdWx0fSApIHsKICAgICAgICAgICAgICAgICRTdGF0ZXtTZWxlY3RlZFZhbHVlfSA9ICRDb25maWctPntTdGF0ZURlZmF1bHR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU3RhdGV7U2VsZWN0ZWRJRH0gPSAkUGFyYW17TmV3U3RhdGVJRH07CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIG5leHQgc3RhdGVzIHN0cmluZwogICAgICAgICRQYXJhbXtTdGF0ZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgID0+IFwlU3RhdGVMaXN0LAogICAgICAgICAgICBOYW1lICA9PiAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgIENsYXNzID0+ICdNb2Rlcm5pemUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTdGF0ZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3U3RhdGVJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gJENvbmZpZy0+e1N0YXRlRGVmYXVsdH0gPyAwIDogMSwKICAgICAgICAgICAgJVN0YXRlLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdGF0ZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U3RhdGVNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRDb25maWctPntTdGF0ZVR5cGV9ICkgKSB7CgogICAgICAgICAgICBTVEFURVRZUEU6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlICggQHsgJENvbmZpZy0+e1N0YXRlVHlwZX0gfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRSBpZiAhJFN0YXRlVHlwZTsKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFIGlmICRTdGF0ZVR5cGUgIX4gL3BlbmRpbmcvaTsKCiAgICAgICAgICAgICAgICAjIGdldCB1c2VkIGNhbGVuZGFyCiAgICAgICAgICAgICAgICBteSAkQ2FsZW5kYXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDYWxlbmRhckdldCgKICAgICAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkUGFyYW17RGF0ZVN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdExvbmcnLAogICAgICAgICAgICAgICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDUsCiAgICAgICAgICAgICAgICAgICAgRGlmZlRpbWUgICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlBlbmRpbmdEaWZmVGltZScpCiAgICAgICAgICAgICAgICAgICAgICAgIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgPT4gJFBhcmFte0RhdGVJbnZhbGlkfSB8fCAnICcsCiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURhdGVJbkZ1dHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIENhbGVuZGFyICAgICAgICAgICAgID0+ICRDYWxlbmRhciwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdGVQZW5kaW5nJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGxhc3QgU1RBVEVUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHByaW9yaXR5CiAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gKSB7CgogICAgICAgIG15ICVQcmlvcml0eTsKICAgICAgICBteSAlUHJpb3JpdHlMaXN0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlMaXN0KAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH0gKSB7CiAgICAgICAgICAgICRQcmlvcml0eUxpc3R7Jyd9ID0gJy0nOwogICAgICAgIH0KICAgICAgICBpZiAoICEkUGFyYW17TmV3UHJpb3JpdHlJRH0gKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH0gKSB7CiAgICAgICAgICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRWYWx1ZX0gPSAkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFByaW9yaXR5e1NlbGVjdGVkSUR9ID0gJFBhcmFte05ld1ByaW9yaXR5SUR9OwogICAgICAgIH0KICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRJRH0gfHw9ICRQYXJhbXtQcmlvcml0eUlEfTsKICAgICAgICAkUGFyYW17UHJpb3JpdHlTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICA9PiBcJVByaW9yaXR5TGlzdCwKICAgICAgICAgICAgTmFtZSAgPT4gJ05ld1ByaW9yaXR5SUQnLAogICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgJVByaW9yaXR5LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByaW9yaXR5JywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgVGlja2V0IHR5cGUgZHluYW1pYyBmaWVsZHMuCiAgICBmb3IgbXkgJFRpY2tldFR5cGVEeW5hbWljRmllbGQgKCBAeyAkUGFyYW17VGlja2V0VHlwZUR5bmFtaWNGaWVsZHN9IH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFR5cGVEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+ICRUaWNrZXRUeXBlRHluYW1pY0ZpZWxkLAogICAgICAgICk7CgogICAgICAgICMgT3V0cHV0IGN1c3RvbWl6YXRpb24gYmxvY2sgdG9vLCBpZiBpdCBleGlzdHMuCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFR5cGVEeW5hbWljRmllbGRfJyAuICRUaWNrZXRUeXBlRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgIERhdGEgPT4gJFRpY2tldFR5cGVEeW5hbWljRmllbGQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVuZCBXaWRnZXQgVGlja2V0IEFjdGlvbnMKCiAgICAjIFdpZGdldCBBcnRpY2xlCiAgICBpZiAoICRDb25maWctPntOb3RlfSApIHsKCiAgICAgICAgJFBhcmFte1dpZGdldFN0YXR1c30gPSAnQ29sbGFwc2VkJzsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnLT57Tm90ZU1hbmRhdG9yeX0KICAgICAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpCiAgICAgICAgICAgIHx8ICRTZWxmLT57UmVwbHlUb0FydGljbGV9CiAgICAgICAgICAgIHx8ICRQYXJhbXtDcmVhdGVBcnRpY2xlfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkUGFyYW17V2lkZ2V0U3RhdHVzfSA9ICdFeHBhbmRlZCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fQogICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFBhcmFte1N1YmplY3RSZXF1aXJlZH0gPSAnVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgICAgICAgICAkUGFyYW17Qm9keVJlcXVpcmVkfSAgICA9ICdWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUGFyYW17U3ViamVjdFJlcXVpcmVkfSA9ICdWYWxpZGF0ZV9EZXBlbmRpbmdSZXF1aXJlZEFORCBWYWxpZGF0ZV9EZXBlbmRpbmdfQ3JlYXRlQXJ0aWNsZSc7CiAgICAgICAgICAgICRQYXJhbXtCb2R5UmVxdWlyZWR9ICAgID0gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJzsKICAgICAgICB9CgogICAgICAgICMgc2V0IGN1c3RvbWVyIHZpc2liaWxpdHkgb2YgdGhpcyBub3RlIHRvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBhcnRpY2xlIGZvciB3aG9tIHRoaXMgaXMgdGhlIHJlcGx5CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSAmJiAhZGVmaW5lZCAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICkgewogICAgICAgICAgICAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ID0gJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICFkZWZpbmVkICRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gKSB7CiAgICAgICAgICAgICRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gPSAkQ29uZmlnLT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJEZWZhdWx0fTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyBhdHRhY2htZW50cwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0KICAgICAgICAgICAgICAgICYmICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9CiAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID1+IC9pbWFnZS9pICkKICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0F0dGFjaG1lbnRMaXN0fSB9LCAkQXR0YWNobWVudDsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdXaWRnZXRBcnRpY2xlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBhbGwgdXNlciBpZHMgb2YgYWdlbnRzLCB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGlzIGRpYWxvZwogICAgICAgICMgYmFzZWQgb24gcXVldWUgcmlnaHRzCiAgICAgICAgbXkgJVNob3duVXNlcnM7CiAgICAgICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkVXNlck9iamVjdC0+VXNlckxpc3QoCiAgICAgICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwogICAgICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgVHlwZSAgICA9PiAnbm90ZScsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGVtYWlsIHBhcnNlciBvYmplY3QKICAgICAgICBteSAkRW1haWxQYXJzZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXItPm5ldygKICAgICAgICAgICAgTW9kZSAgPT4gJ1N0YW5kYWxvbmUnLAogICAgICAgICAgICBEZWJ1ZyA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgYW5kIHJldHJpZXZlIGludm9sdmVkIGFuZCBpbmZvcm1lZCBhZ2VudHMgb2YgUmVwbHlUbyBOb3RlCiAgICAgICAgbXkgQFJlcGx5VG9Vc2VyczsKICAgICAgICBteSAlUmVwbHlUb1VzZXJzSGFzaDsKICAgICAgICBteSAlUmVwbHlUb1VzZXJJRHM7CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKICAgICAgICAgICAgbXkgQFJlcGx5VG9QYXJ0cyA9ICRFbWFpbFBhcnNlck9iamVjdC0+U3BsaXRBZGRyZXNzTGluZSgKICAgICAgICAgICAgICAgIExpbmUgPT4gJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9LT57VG99IHx8ICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUkVQTFlUT1BBUlQ6CiAgICAgICAgICAgIGZvciBteSAkU2luZ2xlUmVwbHlUb1BhcnQgKEBSZXBseVRvUGFydHMpIHsKICAgICAgICAgICAgICAgIG15ICRSZXBseVRvQWRkcmVzcyA9ICRFbWFpbFBhcnNlck9iamVjdC0+R2V0RW1haWxBZGRyZXNzKAogICAgICAgICAgICAgICAgICAgIEVtYWlsID0+ICRTaW5nbGVSZXBseVRvUGFydCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBSRVBMWVRPUEFSVCBpZiAhJFJlcGx5VG9BZGRyZXNzOwogICAgICAgICAgICAgICAgcHVzaCBAUmVwbHlUb1VzZXJzLCAkUmVwbHlUb0FkZHJlc3M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXBseVRvVXNlcnNIYXNoeyRffSsrIGZvciBAUmVwbHlUb1VzZXJzOwoKICAgICAgICAgICAgIyBnZXQgdXNlciBpZHMgb2YgYXZhaWxhYmxlIHVzZXJzCiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVTaG93blVzZXJzICkgewogICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVXNlckVtYWlsID0gJFVzZXJEYXRhe1VzZXJFbWFpbH07CiAgICAgICAgICAgICAgICBpZiAoICRSZXBseVRvVXNlcnNIYXNoeyRVc2VyRW1haWx9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXBseVRvVXNlcklEc3skVXNlcklEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIG9yaWdpbmFsIG5vdGUgc2VuZGVyIHRvIGxpc3Qgb2YgdXNlciBpZHMKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IEB7ICRTZWxmLT57UmVwbHlUb1NlbmRlclVzZXJJRH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHNlbmRlciByZXBsaWVzIHRvIGhpbXNlbGYsIGRvIG5vdCBpbmNsdWRlIHNlbmRlciBpbiBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRVc2VySUQgbmUgJFNlbGYtPntVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXBseVRvVXNlcklEc3skVXNlcklEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIHVzZXIgaWQgb2YgYWN0aXZlIHVzZXIKICAgICAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3sgJFNlbGYtPntVc2VySUR9IH07CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gfHwgJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFkZGl0aW9uYWxBZ2VudHMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICAgICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICAgICAjIGdldCBhbGwgYWdlbnRzIGZvciAiaW52b2x2ZWQgYWdlbnRzIgogICAgICAgIGlmICggJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewoKICAgICAgICAgICAgbXkgQFVzZXJJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJbnZvbHZlZEFnZW50c0xpc3QoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBJbnZvbHZlZEFnZW50czsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAxOwoKICAgICAgICAgICAgIyBnZXQgaW52b2x2ZWQgdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgICAgIFVTRVI6CiAgICAgICAgICAgIGZvciBteSAkVXNlciAoIHJldmVyc2UgQFVzZXJJRHMgKSB7CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gIiRDb3VudGVyOiAkVXNlci0+e1VzZXJGdWxsbmFtZX0iOwogICAgICAgICAgICAgICAgaWYgKCAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlIC49ICIgJFVzZXItPntPdXRPZk9mZmljZU1lc3NhZ2V9IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZEFnZW50cywgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRVc2VyLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAjIGFkZCBpbnZvbHZlZCB1c2VyIGFzIHNlbGVjdGVkIGVudHJpZXMsIGlmIGF2YWlsYWJsZSBpbiBSZXBseVRvQWRkcmVzc2VzIGxpc3QKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZFVzZXJJRCwgJFVzZXItPntVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVwbHlUb1VzZXJJRHN7ICRVc2VyLT57VXNlcklEfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkSW52b2x2ZWRBZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okludm9sdmVkQWdlbnRNYXhTaXplJykgfHwgMzsKICAgICAgICAgICAgJFBhcmFte0ludm9sdmVkQWdlbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcQEludm9sdmVkQWdlbnRzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQEludm9sdmVkVXNlcklELAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW52b2x2ZWRVc2VySUQnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEludm9sdmVkQWdlbnRTaXplLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBibG9jayBpcyBjYWxsZWQgYmVsb3cgImluZm9ybSBhZ2VudHMiCiAgICAgICAgfQoKICAgICAgICAjIGFnZW50IGxpc3QKICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CgogICAgICAgICAgICAjIGdldCBpbmZvcm0gdXNlciBsaXN0CiAgICAgICAgICAgIG15ICVJbmZvcm1BZ2VudHM7CiAgICAgICAgICAgIG15IEBJbmZvcm1Vc2VySUQgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwogICAgICAgICAgICBteSAlSW5mb3JtQWdlbnRMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVJbmZvcm1BZ2VudExpc3QgKSB7CiAgICAgICAgICAgICAgICAkSW5mb3JtQWdlbnRzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZW1haWwgYWRkcmVzcyBvZiBhbGwgdXNlcnMgYW5kIGNvbXBhcmUgdG8gcmVwbHl0by1hZGRyZXNzZXMKICAgICAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVJbmZvcm1BZ2VudHMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEluZm9ybVVzZXJJRCwgJFVzZXJJRDsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3skVXNlcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRJbmZvcm1BZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkluZm9ybUFnZW50TWF4U2l6ZScpCiAgICAgICAgICAgICAgICB8fCAzOwogICAgICAgICAgICAkUGFyYW17T3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVJbmZvcm1BZ2VudHMsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+IFxASW5mb3JtVXNlcklELAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW5mb3JtVXNlcklEJywKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgID0+ICRJbmZvcm1BZ2VudFNpemUsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgaW52b2x2ZWQKICAgICAgICBpZiAoICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW52b2x2ZWRBZ2VudCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgbGlzdCBvZiBhZ2VudHMsIHRoYXQgcmVjZWl2ZSB0aGlzIG5vdGUgKFJlcGx5VG9Ob3RlKQogICAgICAgICMgYXQgbGVhc3Qgc2VuZGVyIG9mIG9yaWdpbmFsIG5vdGUgYW5kIGFsbCByZWNlcGllbnRzIG9mIHRoZSBvcmlnaW5hbCBub3RlCiAgICAgICAgIyB0aGF0IGNvdWxkbid0IGJlIHNlbGVjdGVkIHdpdGggaW52b2x2ZWQvaW5mb3JtIGFnZW50cwogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CgogICAgICAgICAgICBteSAkVXNlcnNIYXNoU2l6ZSA9IGtleXMgJVJlcGx5VG9Vc2VySURzOwogICAgICAgICAgICBteSAkQ291bnRlciAgICAgICA9IDA7CiAgICAgICAgICAgICRQYXJhbXtVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb259ID0gam9pbiggJywnLCBrZXlzICVSZXBseVRvVXNlcklEcyApOwoKICAgICAgICAgICAgaWYgKCAkVXNlcnNIYXNoU2l6ZSA+IDAgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVSZXBseVRvVXNlcklEcyApIHsKICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uU2luZ2xlVXNlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVVc2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCBhIHNlcGFyYXRvciAoSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IpLAogICAgICAgICAgICAgICAgICAgICMgaWYgbm90IGxhc3QgZW50cnkKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyIDwgJFVzZXJzSGFzaFNpemUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVVzZXJEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICAgICAjIHVzZSBoZWlnaHQvd2lkdGggZGVmaW5lZCBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAgICAgJFBhcmFte1JpY2hUZXh0SGVpZ2h0fSA9ICRDb25maWctPntSaWNoVGV4dEhlaWdodH0gfHwgMDsKICAgICAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgICAgICMgc2V0IHVwIHJpY2ggdGV4dCBlZGl0b3IKICAgICAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnLT57Tm90ZU1hbmRhdG9yeX0KICAgICAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgdGV4dCB0ZW1wbGF0ZSBzdHJpbmcKICAgICAgICBteSAlU3RhbmRhcmRUZW1wbGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhbmRhcmRUZW1wbGF0ZScpLT5TdGFuZGFyZFRlbXBsYXRlTGlzdCgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgVHlwZSAgPT4gJ05vdGUnLAogICAgICAgICk7CgogICAgICAgIG15ICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzID0gJFNlbGYtPl9HZXRTdGFuZGFyZFRlbXBsYXRlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSB8fCAnJywKICAgICAgICApOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgJFF1ZXVlU3RhbmRhcmRUZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICB8fCAoICRDb25maWctPntRdWV1ZX0gJiYgSXNIYXNoUmVmV2l0aERhdGEoIFwlU3RhbmRhcmRUZW1wbGF0ZXMgKSApCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFBhcmFte1N0YW5kYXJkVGVtcGxhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzIHx8IHt9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTdGFuZGFyZFRlbXBsYXRlSUQnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9IHx8ICcnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFuZGFyZFRlbXBsYXRlJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgdGltZSBhY2NvdW50aW5nIGJveAogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBY2NvdW50VGltZScpICkgewogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0c0xhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRzTGFiZWwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaW1lVW5pdHMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgQXJ0aWNsZSB0eXBlIGR5bmFtaWMgZmllbGRzLgogICAgICAgIGZvciBteSAkQXJ0aWNsZVR5cGVEeW5hbWljRmllbGQgKCBAeyAkUGFyYW17QXJ0aWNsZVR5cGVEeW5hbWljRmllbGRzfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FydGljbGVUeXBlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gJEFydGljbGVUeXBlRHluYW1pY0ZpZWxkLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkQXJ0aWNsZVR5cGVEeW5hbWljRmllbGQtPntNYW5kYXRvcnlUb29sdGlwfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FydGljbGVUeXBlRHluYW1pY0ZpZWxkRXJyb3InLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJEFydGljbGVUeXBlRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBPdXRwdXQgY3VzdG9taXphdGlvbiBibG9jayB0b28sIGlmIGl0IGV4aXN0cy4KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZF8nIC4gJEFydGljbGVUeXBlRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhID0+ICRBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBFbmQgV2lkZ2V0IEFydGljbGUKCiAgICAjIGdldCBvdXRwdXQgYmFjawogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtCiAgICApOwp9CgpzdWIgX0dldE5leHRTdGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlTmV4dFN0YXRlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U3RhdGVMaXN0KAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gXCVOZXh0U3RhdGVzOwp9CgpzdWIgX0dldFJlc3BvbnNpYmxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlU2hvd25Vc2VyczsKICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgc2hvdyBhbGwgdXNlcnMKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICB9CgogICAgIyBzaG93IG9ubHkgdXNlcnMgd2l0aCByZXNwb25zaWJsZSBvciBydyBwZW1pc3Npb25zIGluIHRoZSBxdWV1ZQogICAgZWxzaWYgKCAkUGFyYW17UXVldWVJRH0gJiYgISRQYXJhbXtBbGxVc2Vyc30gKSB7CiAgICAgICAgbXkgJEdJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRRdWV1ZUdyb3VwSUQoCiAgICAgICAgICAgIFF1ZXVlSUQgPT4gJFBhcmFte05ld1F1ZXVlSUR9IHx8ICRQYXJhbXtRdWV1ZUlEfQogICAgICAgICk7CiAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ3Jlc3BvbnNpYmxlJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgd29ya2Zsb3cKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4geyAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCkgfSBpZiAkQUNMOwoKICAgIHJldHVybiBcJVNob3duVXNlcnM7Cn0KCnN1YiBfR2V0T3duZXJzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlU2hvd25Vc2VyczsKICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgc2hvdyBhbGwgdXNlcnMKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICB9CgogICAgIyBzaG93IG9ubHkgdXNlcnMgd2l0aCBvd25lciBvciBydyBwZW1pc3Npb25zIGluIHRoZSBxdWV1ZQogICAgZWxzaWYgKCAkUGFyYW17UXVldWVJRH0gJiYgISRQYXJhbXtBbGxVc2Vyc30gKSB7CiAgICAgICAgbXkgJEdJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRRdWV1ZUdyb3VwSUQoCiAgICAgICAgICAgIFF1ZXVlSUQgPT4gJFBhcmFte05ld1F1ZXVlSUR9IHx8ICRQYXJhbXtRdWV1ZUlEfQogICAgICAgICk7CiAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ293bmVyJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgd29ya2Zsb3cKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnTmV3T3duZXInLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4geyAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCkgfSBpZiAkQUNMOwoKICAgIHJldHVybiBcJVNob3duVXNlcnM7Cn0KCnN1YiBfR2V0T2xkT3duZXJzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSBAT2xkVXNlckluZm8gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lckxpc3QoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CiAgICBteSAlVXNlckhhc2g7CiAgICBpZiAoQE9sZFVzZXJJbmZvKSB7CiAgICAgICAgbXkgJENvdW50ZXIgPSAxOwogICAgICAgIFVTRVI6CiAgICAgICAgZm9yIG15ICRVc2VyICggcmV2ZXJzZSBAT2xkVXNlckluZm8gKSB7CgogICAgICAgICAgICBuZXh0IFVTRVIgaWYgJFVzZXJIYXNoeyAkVXNlci0+e1VzZXJJRH0gfTsKCiAgICAgICAgICAgICRVc2VySGFzaHsgJFVzZXItPntVc2VySUR9IH0gPSAiJENvdW50ZXI6ICRVc2VyLT57VXNlckZ1bGxuYW1lfSI7CiAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgd29ya2Zsb3cKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnT2xkT3duZXInLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVVc2VySGFzaCwKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHsgJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpIH0gaWYgJEFDTDsKCiAgICByZXR1cm4gXCVVc2VySGFzaDsKfQoKc3ViIF9HZXRTZXJ2aWNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHNlcnZpY2UKICAgIG15ICVTZXJ2aWNlOwoKICAgICMgZ2V0IG9wdGlvbnMgZm9yIGRlZmF1bHQgc2VydmljZXMgZm9yIHVua25vd24gY3VzdG9tZXJzCiAgICBteSAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIKICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpTZXJ2aWNlOjpEZWZhdWx0OjpVbmtub3duQ3VzdG9tZXInKTsKCiAgICAjIGNoZWNrIGlmIG5vIEN1c3RvbWVyVXNlcklEIGlzIHNlbGVjdGVkCiAgICAjIGlmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9IDAgbGVhdmUgQ3VzdG9tZXJVc2VySUQgZW1wdHksIGl0IHdpbGwgbm90IGdldCBhbnkgc2VydmljZXMKICAgICMgaWYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gMSBzZXQgQ3VzdG9tZXJVc2VySUQgdG8gZ2V0IGRlZmF1bHQgc2VydmljZXMKICAgIGlmICggISRQYXJhbXtDdXN0b21lclVzZXJJRH0gJiYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyICkgewogICAgICAgICRQYXJhbXtDdXN0b21lclVzZXJJRH0gPSAnPERFRkFVTFQ+JzsKICAgIH0KCiAgICAjIGdldCBzZXJ2aWNlIGxpc3QKICAgIGlmICggJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAlU2VydmljZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U2VydmljZUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gXCVTZXJ2aWNlOwp9CgpzdWIgX0dldFNMQXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIG5vbiBzZXQgY3VzdG9tZXJzIGNhbiBnZXQgZGVmYXVsdCBzZXJ2aWNlcyB0aGVuIHRoZXkgc2hvdWxkIGFsc28gYmUgYWJsZSB0byBnZXQgdGhlIFNMQXMKICAgICMgIGZvciB0aG9zZSBzZXJ2aWNlcyAodGhpcyB3b3JrcyBkdXJpbmcgdGlja2V0IGNyZWF0aW9uKS4KICAgICMgaWYgbm8gQ3VzdG9tZXJVc2VySUQgaXMgc2V0LCBUaWNrZXRTTEFMaXN0IHdpbGwgY29tcGxhaW4gZHVyaW5nIEFKQVggdXBkYXRlcyBhcyBVc2VySUQgaXMgbm90CiAgICAjICBwYXNzZWQuIFNlZSBidWcgMTExNDcuCgogICAgIyBnZXQgb3B0aW9ucyBmb3IgZGVmYXVsdCBzZXJ2aWNlcyBmb3IgdW5rbm93biBjdXN0b21lcnMKICAgIG15ICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lcgogICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdUaWNrZXQ6OlNlcnZpY2U6OkRlZmF1bHQ6OlVua25vd25DdXN0b21lcicpOwoKICAgICMgY2hlY2sgaWYgbm8gQ3VzdG9tZXJVc2VySUQgaXMgc2VsZWN0ZWQKICAgICMgaWYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gMCBsZWF2ZSBDdXN0b21lclVzZXJJRCBlbXB0eSwgaXQgd2lsbCBub3QgZ2V0IGFueSBzZXJ2aWNlcwogICAgIyBpZiAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgPSAxIHNldCBDdXN0b21lclVzZXJJRCB0byBnZXQgZGVmYXVsdCBzZXJ2aWNlcwogICAgaWYgKCAhJFBhcmFte0N1c3RvbWVyVXNlcklEfSAmJiAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgKSB7CiAgICAgICAgJFBhcmFte0N1c3RvbWVyVXNlcklEfSA9ICc8REVGQVVMVD4nOwogICAgfQoKICAgIG15ICVTTEE7CiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICVTTEEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFNMQUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gXCVTTEE7Cn0KCnN1YiBfR2V0UHJpb3JpdGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVQcmlvcml0aWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRQcmlvcml0eUxpc3QoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIGlmICggISRDb25maWctPntQcmlvcml0eURlZmF1bHR9ICkgewogICAgICAgICRQcmlvcml0aWVzeycnfSA9ICctJzsKICAgIH0KICAgIHJldHVybiBcJVByaW9yaXRpZXM7Cn0KCnN1YiBfR2V0RmllbGRzVG9VcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAVXBkYXRhYmxlRmllbGRzOwoKICAgICMgc2V0IHRoZSBmaWVsZHMgdGhhdCBjYW4gYmUgdXBkYXRlYWJsZSB2aWEgQUpBWFVwZGF0ZQogICAgaWYgKCAhJFBhcmFte09ubHlEeW5hbWljRmllbGRzfSApIHsKICAgICAgICBAVXBkYXRhYmxlRmllbGRzID0gcXcoCiAgICAgICAgICAgIFR5cGVJRCBTZXJ2aWNlSUQgU0xBSUQgTmV3T3duZXJJRCBOZXdSZXNwb25zaWJsZUlEIE5ld1N0YXRlSUQKICAgICAgICAgICAgTmV3UHJpb3JpdHlJRAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWZpbmUgdGhlIGR5bmFtaWMgZmllbGRzIHRvIHNob3cgYmFzZWQgb24gdGhlIG9iamVjdCB0eXBlCiAgICBteSAkT2JqZWN0VHlwZSA9IFsnVGlja2V0J107CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tCiAgICAjIGdldCBtYXN0ZXIvc2xhdmUgZHluYW1pYyBmaWVsZAogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykgfHwgJyc7CiAgICBteSAkTWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ01hc3RlclNsYXZlOjpBZHZhbmNlZEVuYWJsZWQnKSB8fCAwOwoKICAgIGlmICgkTWFzdGVyU2xhdmVBZHZhbmNlZEVuYWJsZWQpIHsKICAgICAgICAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gPSAxOwogICAgfQojIC0tLQoKICAgICMgb25seSBzY3JlZW5zIHRoYXQgYWRkIG5vdGVzIGNhbiBtb2RpZnkgQXJ0aWNsZSBkeW5hbWljIGZpZWxkcwogICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gKSB7CiAgICAgICAgJE9iamVjdFR5cGUgPSBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXTsKICAgIH0KCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0FDTFJlZHVjaWJsZTsKCiAgICAgICAgcHVzaCBAVXBkYXRhYmxlRmllbGRzLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICB9CgogICAgcmV0dXJuIFxAVXBkYXRhYmxlRmllbGRzOwp9CgpzdWIgX0dldFF1b3RlZFJlcGx5Qm9keSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyByZXdyYXAgYm9keSBpZiBleGlzdHMKICAgICAgICBpZiAoICRQYXJhbXtCb2R5fSApIHsKICAgICAgICAgICAgJFBhcmFte0JvZHl9ID1+IHMvXHQvIC9nOwogICAgICAgICAgICBteSAkUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpRdW90ZScpIHx8ICcnLAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRRdW90ZSkgewoKICAgICAgICAgICAgICAgICMgcXVvdGUgdGV4dAogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxibG9ja3F1b3RlIHR5cGU9XCJjaXRlXCI+JFBhcmFte0JvZHl9PC9ibG9ja3F1b3RlPlxuIjsKCiAgICAgICAgICAgICAgICAjIGNsZWFudXAgbm90IGNvbXBhdC4gdGFncwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudENsZWFudXAoCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtCb2R5fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFJlc3BvbnNlRm9ybWF0ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAgICAgICAgIC0+Rm9ybWF0VGltZVN0cmluZyggJFBhcmFte0NyZWF0ZVRpbWV9LCAnRGF0ZUZvcm1hdCcsICdOb1NlY29uZHMnICk7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQgLj0gJyAtICcgLiAkUGFyYW17RnJvbX0gLiAnICc7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQKICAgICAgICAgICAgICAgICAgICAuPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3dyb3RlJykgLiAnOic7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJFJlc3BvbnNlRm9ybWF0IC4gJFBhcmFte0JvZHl9OwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICI8YnIvPiIgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17Q3JlYXRlVGltZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEYXRlJykgLgogICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17Q3JlYXRlVGltZX08YnIvPiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yIChxdyhTdWJqZWN0IFJlcGx5VG8gUmVwbHktVG8gQ2MgVG8gRnJvbSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkXykgLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogJFBhcmFteyRffTxici8+IiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZyb20gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJSaWNoVGV4dCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0Zyb219LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkTWVzc2FnZUZyb20gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ01lc3NhZ2UgZnJvbScpOwogICAgICAgICAgICAgICAgbXkgJEVuZE1lc3NhZ2UgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdFbmQgbWVzc2FnZScpOwoKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICI8YnIvPi0tLS0gJE1lc3NhZ2VGcm9tICRGcm9tIC0tLTxici8+PGJyLz4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9IC49ICI8YnIvPi0tLS0gJEVuZE1lc3NhZ2UgLS0tPGJyLz4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcHJlcGFyZSBib2R5LCBzdWJqZWN0LCBSZXBseVRvIC4uLgogICAgICAgICMgcmV3cmFwIGJvZHkgaWYgZXhpc3RzCiAgICAgICAgaWYgKCAkUGFyYW17Qm9keX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9fiBzL1x0LyAvZzsKICAgICAgICAgICAgbXkgJFF1b3RlID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpRdW90ZScpOwogICAgICAgICAgICBpZiAoJFF1b3RlKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPX4gcy9cbi9cbiRRdW90ZSAvZzsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICJcbiRRdW90ZSAiIC4gJFBhcmFte0JvZHl9OwoKICAgICAgICAgICAgICAgIG15ICRSZXNwb25zZUZvcm1hdCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgICAgICAtPkZvcm1hdFRpbWVTdHJpbmcoICRQYXJhbXtDcmVhdGVUaW1lfSwgJ0RhdGVGb3JtYXQnLCAnTm9TZWNvbmRzJyApOwogICAgICAgICAgICAgICAgJFJlc3BvbnNlRm9ybWF0IC49ICcgLSAnIC4gJFBhcmFte0Zyb219IC4gJyAnOwogICAgICAgICAgICAgICAgJFJlc3BvbnNlRm9ybWF0CiAgICAgICAgICAgICAgICAgICAgLj0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCd3cm90ZScpIC4gIjpcbiI7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJFJlc3BvbnNlRm9ybWF0IC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIlxuIiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NyZWF0ZVRpbWV9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGF0ZScpIC4KICAgICAgICAgICAgICAgICAgICAgICAgIjogJFBhcmFte0NyZWF0ZVRpbWV9XG4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAocXcoU3ViamVjdCBSZXBseVRvIFJlcGx5LVRvIENjIFRvIEZyb20pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17JF99ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJF8pIC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICRQYXJhbXskX31cbiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRNZXNzYWdlRnJvbSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTWVzc2FnZSBmcm9tJyk7CiAgICAgICAgICAgICAgICBteSAkRW5kTWVzc2FnZSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0VuZCBtZXNzYWdlJyk7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIlxuLS0tLSAkTWVzc2FnZUZyb20gJFBhcmFte0Zyb219IC0tLVxuXG4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9IC49ICJcbi0tLS0gJEVuZE1lc3NhZ2UgLS0tXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUGFyYW17Qm9keX07Cn0KCnN1YiBfR2V0U3RhbmRhcmRUZW1wbGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjcmVhdGUgdGVtcGxhdGVzCiAgICBteSAlVGVtcGxhdGVzOwoKICAgICMgY2hlY2sgbmVlZGVkCiAgICByZXR1cm4gXCVUZW1wbGF0ZXMgaWYgISRQYXJhbXtRdWV1ZUlEfSAmJiAhJFBhcmFte1RpY2tldElEfTsKCiAgICBteSAkUXVldWVJRCA9ICRQYXJhbXtRdWV1ZUlEfSB8fCAnJzsKICAgIGlmICggISRQYXJhbXtRdWV1ZUlEfSAmJiAkUGFyYW17VGlja2V0SUR9ICkgewoKICAgICAgICAjIGdldCBRdWV1ZUlEIGZyb20gdGhlIHRpY2tldAogICAgICAgIG15ICVUaWNrZXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFF1ZXVlSUQgPSAkVGlja2V0e1F1ZXVlSUR9IHx8ICcnOwogICAgfQoKICAgICMgZmV0Y2ggYWxsIHN0ZC4gdGVtcGxhdGVzCiAgICBteSAlU3RhbmRhcmRUZW1wbGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVTdGFuZGFyZFRlbXBsYXRlTWVtYmVyTGlzdCgKICAgICAgICBRdWV1ZUlEICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgIFRlbXBsYXRlVHlwZXMgPT4gMSwKICAgICk7CgogICAgIyByZXR1cm4gZW1wdHkgaGFzaCBpZiB0aGVyZSBhcmUgbm8gdGVtcGxhdGVzIGZvciB0aGlzIHNjcmVlbgogICAgcmV0dXJuIFwlVGVtcGxhdGVzIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJFN0YW5kYXJkVGVtcGxhdGVze05vdGV9ICk7CgogICAgIyByZXR1cm4ganVzdCB0aGUgdGVtcGxhdGVzIGZvciB0aGlzIHNjcmVlbgogICAgcmV0dXJuICRTdGFuZGFyZFRlbXBsYXRlc3tOb3RlfTsKfQoKc3ViIF9HZXRUeXBlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHR5cGUKICAgIG15ICVUeXBlOwogICAgaWYgKCAkUGFyYW17UXVldWVJRH0gfHwgJFBhcmFte1RpY2tldElEfSApIHsKICAgICAgICAlVHlwZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0VHlwZUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gXCVUeXBlOwp9CgpzdWIgX0dldFF1ZXVlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgR2V0IFF1ZXVlcy4KICAgIG15ICVRdWV1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldE1vdmVMaXN0KAogICAgICAgICVQYXJhbSwKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFR5cGUgICAgID0+ICdtb3ZlX2ludG8nLAogICAgKTsKICAgIHJldHVybiBcJVF1ZXVlczsKfQojIC0tLQojIE9UUlNNYXN0ZXJTbGF2ZQojIC0tLQpzdWIgX0dldE1hc3RlclNsYXZlRGF0YSB7CiAgICBteSAoJFNlbGYsICVQYXJhbSkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkVW5zZXRNYXN0ZXJTbGF2ZSAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpVbnNldE1hc3RlclNsYXZlJykgfHwgMDsKICAgIG15ICRVcGRhdGVNYXN0ZXJTbGF2ZSA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OlVwZGF0ZU1hc3RlclNsYXZlJykgfHwgMDsKCiAgICBteSAlVGlja2V0ID0gJXsgJFBhcmFte1RpY2tldH0gfTsKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9ICRQYXJhbXtNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH07CgogICAgbXkgJEZpZWxkVmFsdWUgPSAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgfSB8fCAnJzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICVEYXRhID0gKAogICAgICAgICcnID0+ICctJywKICAgICk7CgogICAgaWYgKCAkRmllbGRWYWx1ZSBuZSAnTWFzdGVyJyApIHsKICAgICAgICAkRGF0YXtNYXN0ZXJ9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZXcgTWFzdGVyIFRpY2tldCcpOwogICAgfQogICAgaWYgKCAkVW5zZXRNYXN0ZXJTbGF2ZSAmJiAkRmllbGRWYWx1ZSBlcSAnTWFzdGVyJyApIHsKICAgICAgICAkRGF0YXtVbnNldE1hc3Rlcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1Vuc2V0IE1hc3RlciBUaWNrZXQnKTsKICAgIH0KICAgIGlmICggJFVuc2V0TWFzdGVyU2xhdmUgJiYgJEZpZWxkVmFsdWUgPX4gbXteU2xhdmVPZjooLio/KSR9eG1zICkgewogICAgICAgICREYXRhe1Vuc2V0U2xhdmV9ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVW5zZXQgU2xhdmUgVGlja2V0Jyk7CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJFRpY2tldEhvb2sgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2snKTsKICAgIG15ICRUaWNrZXRIb29rRGl2aWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rRGl2aWRlcicpOwoKICAgIGlmICggJFVwZGF0ZU1hc3RlclNsYXZlICkgewogICAgICAgIG15IEBUaWNrZXRJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAoKICAgICAgICAgICAgIyBtYXN0ZXIgc2xhdmUgZHluYW1pYyBmaWVsZAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICdNYXN0ZXInLAogICAgICAgICAgICB9LAoKICAgICAgICAgICAgU3RhdGVUeXBlICA9PiAnT3BlbicsCiAgICAgICAgICAgIExpbWl0ICAgICAgPT4gNjAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBQZXJtaXNzaW9uID0+ICdybycsCiAgICAgICAgKTsKCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAlQ3VycmVudFRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISVDdXJyZW50VGlja2V0OwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICRGaWVsZFZhbHVlIGVxICJTbGF2ZU9mOiRDdXJyZW50VGlja2V0e1RpY2tldE51bWJlcn0iOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICRGaWVsZFZhbHVlICYmICRUaWNrZXR7VGlja2V0SUR9IGVxICRDdXJyZW50VGlja2V0e1RpY2tldElEfTsKCiAgICAgICAgICAgICREYXRheyJTbGF2ZU9mOiRDdXJyZW50VGlja2V0e1RpY2tldE51bWJlcn0ifSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICdTbGF2ZSBvZiAlcyVzJXM6ICVzJywKICAgICAgICAgICAgICAgICRUaWNrZXRIb29rLAogICAgICAgICAgICAgICAgJFRpY2tldEhvb2tEaXZpZGVyLAogICAgICAgICAgICAgICAgJEN1cnJlbnRUaWNrZXR7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgICAgICRDdXJyZW50VGlja2V0e1RpdGxlfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRGF0YTsKfQojIC0tLQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRCdWxrOjpNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+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==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZShEYXRhLk9iamVjdFR5cGVOYW1lKSB8IGh0bWwgJV06CiAgICAgICAgWyUgVVNFIFRpdGxlID0gU3RyaW5nKERhdGEuQnJlYWRjcnVtYlRleHQpICVdCiAgICAgICAgWyUgVGl0bGUgfCBodG1sICVdCiAgICA8L2gxPgoKICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgnRHluYW1pYyBGaWVsZHMgTWFuYWdlbWVudCcpLAogICAgICAgICAgICAgICAgTGluayA9PiAnQWRtaW5EeW5hbWljRmllbGQnLAogICAgICAgICAgICB9LAogICAgICAgIF0KICAgICVdCgogICAgWyUgVVNFIEJyZWFkY3J1bWJOYW1lID0gU3RyaW5nKFRyYW5zbGF0ZShEYXRhLk9iamVjdFR5cGVOYW1lKSkgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5Nb2RlICVdCiAgICAgICAgWyUgQ0FTRSAnQWRkJyAlXQogICAgICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBCcmVhZGNydW1iTmFtZS5hcHBlbmQoICc6ICcsIFRpdGxlICkgfSkgJV0KICAgICAgICBbJSBDQVNFICdDaGFuZ2UnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IEJyZWFkY3J1bWJOYW1lLmFwcGVuZCggJzogJywgVGl0bGUsICcgLSAnLCBEYXRhLk5hbWUgKSB9KSAlXQogICAgWyUgRU5EICVdCgogICAgWyUgSU5DTFVERSAiQnJlYWRjcnVtYi50dCIgUGF0aCA9IEJyZWFkY3J1bWJQYXRoICVdCgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkR5bmFtaWNGaWVsZCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gYmFjayB0byBvdmVydmlldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWRtaW5EeW5hbWljRmllbGRNYXN0ZXJTbGF2ZSIgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5Nb2RlIHwgaHRtbCAlXUFjdGlvbiIgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT2JqZWN0VHlwZSIgdmFsdWU9IlslIERhdGEuT2JqZWN0VHlwZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkZpZWxkVHlwZSIgdmFsdWU9IlslIERhdGEuRmllbGRUeXBlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSUQiIHZhbHVlPSJbJSBEYXRhLklEIHwgaHRtbCAlXSIgLz4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkdlbmVyYWwiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRHcmlkIENvbHVtbnNXaXRoU3BhY2luZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpemUxb2YyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iTmFtZSIgY2xhc3M9Ilc1MHBjIFslIERhdGEuTmFtZVNlcnZlckVycm9yIHwgaHRtbCAlXSBbJSBEYXRhLlNob3dXYXJuaW5nIHwgaHRtbCAlXSAgVmFsaWRhdGVfQWxwaGFudW1lcmljIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjIwMCIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik5hbWUiIFslIERhdGEuUmVhZG9ubHlJbnRlcm5hbEZpZWxkIHwgaHRtbCAlXSAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQsIGFuZCB0aGUgdmFsdWUgc2hvdWxkIGJlIGFscGhhYmV0aWMgYW5kIG51bWVyaWMgY2hhcmFjdGVycyBvbmx5LiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKERhdGEuTmFtZVNlcnZlckVycm9yTWVzc2FnZSkgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJNdXN0IGJlIHVuaXF1ZSBhbmQgb25seSBhY2NlcHQgYWxwaGFiZXRpYyBhbmQgbnVtZXJpYyBjaGFyYWN0ZXJzLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ildhcm5pbmcgSGlkZGVuIj5bJSBUcmFuc2xhdGUoIkNoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCByZXF1aXJlIG1hbnVhbCBjaGFuZ2VzIGluIHRoZSBzeXN0ZW0uIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTGFiZWwiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiTGFiZWwiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iTGFiZWwiIGNsYXNzPSJXNTBwYyBbJSBEYXRhLkxhYmVsU2VydmVyRXJyb3IgfCBodG1sICVdIFZhbGlkYXRlX1JlcXVpcmVkIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjIwMCIgdmFsdWU9IlslIERhdGEuTGFiZWwgfCBodG1sICVdIiBuYW1lPSJMYWJlbCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJMYWJlbEVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTGFiZWxTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIlRoaXMgaXMgdGhlIG5hbWUgdG8gYmUgc2hvd24gb24gdGhlIHNjcmVlbnMgd2hlcmUgdGhlIGZpZWxkIGlzIGFjdGl2ZS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJGaWVsZE9yZGVyIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkZpZWxkIG9yZGVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZE9yZGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJGaWVsZE9yZGVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgbnVtZXJpYy4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkZpZWxkT3JkZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLkZpZWxkT3JkZXJTZXJ2ZXJFcnJvck1lc3NhZ2UpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGlzIGFjdGl2ZS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpemUxb2YyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEIj5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkaXR5U3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRmllbGRUeXBlTmFtZSI+WyUgVHJhbnNsYXRlKCJGaWVsZCB0eXBlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IkZpZWxkVHlwZU5hbWUiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIyMDAiIHZhbHVlPSJbJSBUcmFuc2xhdGUoRGF0YS5GaWVsZFR5cGVOYW1lKSB8IGh0bWwgJV0iIG5hbWU9IkZpZWxkVHlwZU5hbWUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJPYmplY3RUeXBlTmFtZSI+WyUgVHJhbnNsYXRlKCJPYmplY3QgdHlwZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJPYmplY3RUeXBlTmFtZSIgcmVhZG9ubHkgY2xhc3M9Ilc1MHBjIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjIwMCIgdmFsdWU9IlslIFRyYW5zbGF0ZShEYXRhLk9iamVjdFR5cGVOYW1lKSB8IGh0bWwgJV0iIG5hbWU9Ik9iamVjdFR5cGVOYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkludGVybmFsRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkludGVybmFsRmllbGQiPlslIFRyYW5zbGF0ZSgiSW50ZXJuYWwgZmllbGQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iSW50ZXJuYWxGaWVsZCIgcmVhZG9ubHkgY2xhc3M9Ilc1MHBjIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjEiIHZhbHVlPSJbJSBEYXRhLkludGVybmFsRmllbGQgfCBodG1sICVdIiBuYW1lPSJJbnRlcm5hbEZpZWxkIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyBwcm90ZWN0ZWQgYW5kIGNhbid0IGJlIGRlbGV0ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50ZXJuYWxGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkR5bmFtaWNGaWVsZCI+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyAkb3JpZ2luOiBvdHJzIC0gYjljZjI5ZWRlNDg4YmJjM2JmNWJkMGQ0OWY0MjJlY2M2NTY2OGEwYyAtIEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24udHQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KIyAtLS0KIyBPVFJTTWFzdGVyU2xhdmUKIyAtLS0KCiMgVGhpcyBtb2R1bGUgdXNlcyBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBhcyBhIGJhc2UsIGZvciBlYXN5IHVwZGF0ZSBhbmQgZnJhbWV3b3JrIGNvbXBhdGliaWxpdHkKIyBzcGVjaWFsIG1hcmtlcnMgaGFzIGJlZW4gc2V0IGFsb25nIHRoZSBmaWxlIHRvIGVhc3kgc3BvdCB0aGUgZGlmZmVyZW5jZXMgaW50cm9kdWNlZCBieQojIE9UUlNNYXN0ZXJTbGF2ZSBwYWNrYWdlCiMgLS0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcm9wZXJ0aWVzIikgJV0KCjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJjb21wb3NlIiBpZD0iQ29tcG9zZSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU3RvcmUiLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpY2tldElEIiB2YWx1ZT0iWyUgRGF0YS5UaWNrZXRJRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlcGx5VG9BcnRpY2xlIiB2YWx1ZT0iWyUgRGF0YS5SZXBseVRvQXJ0aWNsZSB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkV4cGFuZCIgaWQ9IkV4cGFuZCIgdmFsdWU9IiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRUaXRsZSIgdmFsdWU9IlslIERhdGEuRm9ybURyYWZ0VGl0bGUgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRJRCIgdmFsdWU9IlslIERhdGEuRm9ybURyYWZ0SUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRBY3Rpb24iIGlkPSJGb3JtRHJhZnRBY3Rpb24iIC8+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0RnJlZVRleHQiKSAlXQpbJSBUcmFuc2xhdGUoIkNoYW5nZSBGcmVlIFRleHQgb2YgJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0RnJlZVRleHQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJBZ2VudFRpY2tldE93bmVyIikgJV0KWyUgVHJhbnNsYXRlKCJDaGFuZ2UgT3duZXIgb2YgJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0T3duZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJBZ2VudFRpY2tldENsb3NlIikgJV0KWyUgVHJhbnNsYXRlKCJDbG9zZSAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRDbG9zZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0Tm90ZSIpICVdClslIFRyYW5zbGF0ZSgiQWRkIE5vdGUgdG8gJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0Tm90ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0UGVuZGluZyIpICVdClslIFRyYW5zbGF0ZSgiU2V0IFBlbmRpbmcgVGltZSBmb3IgJXMlcyVzIiwgQ29uZmlnKCdUaWNrZXQ6Okhvb2snKSwgQ29uZmlnKCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyksIERhdGEuVGlja2V0TnVtYmVyKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckFnZW50VGlja2V0UGVuZGluZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0UHJpb3JpdHkiKSAlXQpbJSBUcmFuc2xhdGUoIkNoYW5nZSBQcmlvcml0eSBvZiAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRQcmlvcml0eSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0UmVzcG9uc2libGUiKSAlXQpbJSBUcmFuc2xhdGUoIkNoYW5nZSBSZXNwb25zaWJsZSBvZiAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRSZXNwb25zaWJsZSIpICVdCiMgLS0tCiMgT1RSU01hc3RlclNsYXZlCiMgLS0tClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0TWFzdGVyU2xhdmUiKSAlXQpbJSBUcmFuc2xhdGUoIk1hbmFnZSBNYXN0ZXIvU2xhdmUgc3RhdHVzIGZvciAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSIpICVdCiMgLS0tCiAgICAgICAgICAgICAgICAgJm1kYXNoOyBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXQogICAgICAgICAgICA8L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldEJhY2siKSAlXQogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRCYWNrIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvcGVydGllc0xvY2siKSAlXQogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIHRpY2tldCBoYXMgYmVlbiBsb2NrZWQiKSB8IGh0bWwgJV0uCiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVW5kb0Nsb3NlUG9wdXAiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFRpY2tldExvY2s7U3ViYWN0aW9uPVVubG9jaztUaWNrZXRJRD1bJSBEYXRhLlRpY2tldElEICVdWyUgSUYgRGF0YS5QcmV2aW91c093bmVyICVdO1ByZXZpb3VzT3duZXI9WyUgRGF0YS5QcmV2aW91c093bmVyICVdWyUgRU5EICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJVbmRvICYgY2xvc2UiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllc0xvY2siKSAlXQoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0RyYWZ0Tm90aWZpY2F0aW9ucy50dCIgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiV2lkZ2V0VGlja2V0QWN0aW9ucyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBFeHBhbmRlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRpY2tldCBTZXR0aW5ncyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaXRsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpdGxlIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJUaXRsZSIgbmFtZT0iVGl0bGUiIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuVGl0bGVJbnZhbGlkIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGl0bGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVHlwZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlR5cGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlR5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUeXBlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUeXBlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUeXBlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXVlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5RdWV1ZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3UXVldWVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlF1ZXVlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld1F1ZXVlSUQiPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUXVldWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5RdWV1ZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1F1ZXVlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1F1ZXVlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUXVldWUgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJRdWV1ZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TZXJ2aWNlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJTZXJ2aWNlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNlcnZpY2VJRCI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlcnZpY2VTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNlcnZpY2VNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZXJ2aWNlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNlcnZpY2VJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU2VydmljZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlcnZpY2VTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZXJ2aWNlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZXJ2aWNlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU2VydmljZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2VNYW5kYXRvcnkiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TTEFNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlNMQUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiU2VydmljZSBMZXZlbCBBZ3JlZW1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU0xBSUQiPlslIFRyYW5zbGF0ZSgiU2VydmljZSBMZXZlbCBBZ3JlZW1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU0xBU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TTEFNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTTEFJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTTEFJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJTTEEgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNMQSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTTEFNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJTTEFJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU0xBU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTTEFJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJTTEEgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTTEFNYW5kYXRvcnkiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3duZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk93bmVyTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOZXdPd25lcklEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiTmV3IE93bmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld093bmVySUQiPlslIFRyYW5zbGF0ZSgiTmV3IE93bmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk93bmVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Pd25lck1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld093bmVySURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUGxlYXNlIHNldCBhIG5ldyBvd25lciEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdPd25lcklEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIk93bmVyIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3duZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3duZXJNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOZXdPd25lcklEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiTmV3IE93bmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT3duZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdPd25lcklERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgb3duZXIhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3T3duZXJJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJPd25lciBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk93bmVyTWFuZGF0b3J5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3BvbnNpYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5SZXNwb25zaWJsZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3UmVzcG9uc2libGVJRCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5ldyBSZXNwb25zaWJsZSIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld1Jlc3BvbnNpYmxlSUQiPlslIFRyYW5zbGF0ZSgiTmV3IFJlc3BvbnNpYmxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJlc3BvbnNpYmxlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5SZXNwb25zaWJsZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1Jlc3BvbnNpYmxlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUGxlYXNlIHNldCBhIG5ldyByZXNwb25zaWJsZSEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3UmVzcG9uc2libGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJSZXNwb25zaWJsZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzcG9uc2libGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVzcG9uc2libGVNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOZXdSZXNwb25zaWJsZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiTmV3IFJlc3BvbnNpYmxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzcG9uc2libGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdSZXNwb25zaWJsZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgcmVzcG9uc2libGUhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3UmVzcG9uc2libGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJSZXNwb25zaWJsZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlc3BvbnNpYmxlTWFuZGF0b3J5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TdGF0ZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3U3RhdGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5leHQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3U3RhdGVJRCI+WyUgVHJhbnNsYXRlKCJOZXh0IHN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TdGF0ZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1N0YXRlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3U3RhdGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJTdGF0ZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdGVQZW5kaW5nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiUGVuZGluZyBkYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGF0ZVN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGF5U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIkRhdGUgaW52YWxpZCEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJIb3VyU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIkRhdGUgaW52YWxpZCEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJGb3IgYWxsIHBlbmRpbmcqIHN0YXRlcy4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0ZVBlbmRpbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJpb3JpdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQcmlvcml0eUlEIj5bJSBUcmFuc2xhdGUoIlByaW9yaXR5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByaW9yaXR5U3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJpb3JpdHkiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0VHlwZUR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRUeXBlRHluYW1pY0ZpZWxkIikgJV0KCiMgRXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucy4gQmxvY2sgYmVsb3cgaXMgZm9yIGZpZWxkcyBvZiB0eXBlICdUaWNrZXQnLgojICAgTk9URTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgYW5kIGhhdmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGZpZWxkIG5hbWVzLgojWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0VHlwZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0VHlwZUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0VHlwZUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0VHlwZUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJXaWRnZXRUaWNrZXRBY3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldEFydGljbGUiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFslIERhdGEuV2lkZ2V0U3RhdHVzIHwgaHRtbCAlXSIgaWQ9IldpZGdldEFydGljbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBBcnRpY2xlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBJRiBEYXRhLldpZGdldFN0YXR1cyA9PSAnRXhwYW5kZWQnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQ3JlYXRlQXJ0aWNsZSIgbmFtZT0iQ3JlYXRlQXJ0aWNsZSIgdmFsdWU9IjEiIC8+ClslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNyZWF0ZUFydGljbGUiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIGFuIEFydGljbGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJDcmVhdGVBcnRpY2xlIiBuYW1lPSJDcmVhdGVBcnRpY2xlIiB2YWx1ZT0iMSIgWyUgSUYgRGF0YS5DcmVhdGVBcnRpY2xlICVdIGNoZWNrZWQ9ImNoZWNrZWQiWyUgRU5EICVdIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFkZGl0aW9uYWxBZ2VudHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5mb3JtVXNlcklEIj5bJSBUcmFuc2xhdGUoIkluZm9ybSBhZ2VudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvcm1BZ2VudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkludm9sdmVkQWdlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW52b2x2ZWRVc2VySUQiPlslIFRyYW5zbGF0ZSgiSW5mb3JtIGludm9sdmVkIGFnZW50cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbnZvbHZlZEFnZW50U3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnZvbHZlZEFnZW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGVyZSB5b3UgY2FuIHNlbGVjdCBhZGRpdGlvbmFsIGFnZW50cyB3aGljaCBzaG91bGQgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiByZWdhcmRpbmcgdGhlIG5ldyBhcnRpY2xlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWRkaXRpb25hbEFnZW50cyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRleHQgd2lsbCBhbHNvIGJlIHJlY2VpdmVkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVXNlckxpc3RXaXRob3V0U2VsZWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5Vc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24gIHwgaHRtbCAlXSIgLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlVzZXJFbWFpbCAlXSI+WyUgRGF0YS5Vc2VyRnVsbG5hbWUgJV08L3NwYW4+WyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IiKSAlXSxbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3ViamVjdCI+WyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJqZWN0TGFiZWwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU3ViamVjdCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1YmplY3RMYWJlbE1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJTdWJqZWN0IiBuYW1lPSJTdWJqZWN0IiB2YWx1ZT0iWyUgRGF0YS5TdWJqZWN0IHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlIFslIERhdGEuU3ViamVjdEludmFsaWQgJV0gWyUgRGF0YS5TdWJqZWN0UmVxdWlyZWQgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTdWJqZWN0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1YmplY3RTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0T3B0aW9ucyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPcHRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+Cgo8IS0tIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0JlZ2luIC0tPgo8IS0tIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0VuZCAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE9wdGlvbnMiKSAlXQoKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhbmRhcmRUZW1wbGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGFuZGFyZFRlbXBsYXRlSUQiPlslIFRyYW5zbGF0ZSgiVGV4dCBUZW1wbGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhbmRhcmRUZW1wbGF0ZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJTZXR0aW5nIGEgdGVtcGxhdGUgd2lsbCBvdmVyd3JpdGUgYW55IHRleHQgb3IgYXR0YWNobWVudC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YW5kYXJkVGVtcGxhdGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHRMYWJlbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSaWNoVGV4dCI+WyUgVHJhbnNsYXRlKCJUZXh0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJSaWNoVGV4dExhYmVsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHRMYWJlbE1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJSaWNoVGV4dCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJpY2hUZXh0TGFiZWxNYW5kYXRvcnkiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0RmllbGQiIGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IlJpY2hUZXh0IiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGUgWyUgRGF0YS5Cb2R5SW52YWxpZCAlXSBbJSBEYXRhLkJvZHlSZXF1aXJlZCAlXSIgbmFtZT0iQm9keSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuQm9keSB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0F0dGFjaG1lbnRMaXN0LnR0IiAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSXNWaXNpYmxlRm9yQ3VzdG9tZXIiPlslIFRyYW5zbGF0ZSgiSXMgdmlzaWJsZSBmb3IgY3VzdG9tZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IklzVmlzaWJsZUZvckN1c3RvbWVyIiBpZD0iSXNWaXNpYmxlRm9yQ3VzdG9tZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuSXNWaXNpYmxlRm9yQ3VzdG9tZXIgJV1jaGVja2VkPSJjaGVja2VkIiBbJSBFTkQgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHNMYWJlbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaW1lVW5pdHMiPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHNMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0c0xhYmVsTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpbWVVbml0cyI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpbWUgdW5pdHMiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGltZVVuaXRzIikpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzTGFiZWxNYW5kYXRvcnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaW1lVW5pdHMiIGlkPSJUaW1lVW5pdHMiIHZhbHVlPSJbJSBEYXRhLlRpbWVVbml0cyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9UaW1lVW5pdHMgWyUgRGF0YS5UaW1lVW5pdHNSZXF1aXJlZCB8IGh0bWwgJV0gWyUgRGF0YS5UaW1lVW5pdHNJbnZhbGlkIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpbWVVbml0c0Vycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJJbnZhbGlkIHRpbWUhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpbWVVbml0c1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFydGljbGVUeXBlRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkFydGljbGVUeXBlRHluYW1pY0ZpZWxkRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJEeW5hbWljRmllbGRfWyUgRGF0YS5OYW1lICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZCIpICVdCgojIEV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3IgY3VzdG9taXphdGlvbnMuIEJsb2NrIGJlbG93IGlzIGZvciBmaWVsZHMgb2YgdHlwZSAnQXJ0aWNsZScuCiMgICBOT1RFOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyBhbmQgaGF2ZSB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgZmllbGQgbmFtZXMuCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiAoRGF0YS5NYW5kYXRvcnlUb29sdGlwKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSAlXUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgKERhdGEuTWFuZGF0b3J5VG9vbHRpcCkgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkR5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRfRmllbGQyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiV2lkZ2V0QXJ0aWNsZSIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9InN1Ym1pdFJpY2hUZXh0IiBhY2Nlc3NrZXk9ImciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSAoZykiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2stc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIFslIElOQ0xVREUgIkZvcm1FbGVtZW50cy9EcmFmdEJ1dHRvbnMudHQiICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllcyIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6TWFzdGVyU2xhdmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVNlbGVjdCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6TWFzdGVyU2xhdmUKCj1oZWFkMSBTWU5PUFNJUwoKRHluYW1pY0ZpZWxkcyBNYXN0ZXJTbGF2ZSBEcml2ZXIgZGVsZWdhdGUKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgpUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIEw8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uClBsZWFzZSBsb29rIHRoZXJlIGZvciBhIGRldGFpbGVkIHJlZmVyZW5jZSBvZiB0aGUgZnVuY3Rpb25zLgoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgZmllbGQgYmVoYXZpb3JzCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDEsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDAsCiAgICB9OwoKICAgICMgZ2V0IHRoZSBEeW5hbWljIEZpZWxkIEJhY2tlbmQgY3VzdG9tIGV4dGVuc2lvbnMKICAgIG15ICREeW5hbWljRmllbGREcml2ZXJFeHRlbnNpb25zCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6OkV4dGVuc2lvbjo6RHJpdmVyOjpNYXN0ZXJTbGF2ZScpOwoKICAgIEVYVEVOU0lPTjoKICAgIGZvciBteSAkRXh0ZW5zaW9uS2V5ICggc29ydCBrZXlzICV7JER5bmFtaWNGaWVsZERyaXZlckV4dGVuc2lvbnN9ICkgewoKICAgICAgICAjIHNraXAgaW52YWxpZCBleHRlbnNpb25zCiAgICAgICAgbmV4dCBFWFRFTlNJT04gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkRHJpdmVyRXh0ZW5zaW9ucy0+eyRFeHRlbnNpb25LZXl9ICk7CgogICAgICAgICMgY3JlYXRlIGEgZXh0ZW5zaW9uIGNvbmZpZyBzaG9ydGN1dAogICAgICAgIG15ICRFeHRlbnNpb24gPSAkRHluYW1pY0ZpZWxkRHJpdmVyRXh0ZW5zaW9ucy0+eyRFeHRlbnNpb25LZXl9OwoKICAgICAgICAjIGNoZWNrIGlmIGV4dGVuc2lvbiBoYXMgYSBuZXcgbW9kdWxlCiAgICAgICAgaWYgKCAkRXh0ZW5zaW9uLT57TW9kdWxlfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgbW9kdWxlIGNhbiBiZSBsb2FkZWQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmVCYXNlQ2xhc3MoICRFeHRlbnNpb24tPntNb2R1bGV9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGllICJDYW4ndCBsb2FkIGR5bmFtaWMgZmllbGRzIGJhY2tlbmQgbW9kdWxlIgogICAgICAgICAgICAgICAgICAgIC4gIiAkRXh0ZW5zaW9uLT57TW9kdWxlfSEgJEAiOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGV4dGVuc2lvbiBjb250YWlucyBtb3JlIGJlaGF2aW9ycwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRFeHRlbnNpb24tPntCZWhhdmlvcnN9ICkgKSB7CgogICAgICAgICAgICAleyAkU2VsZi0+e0JlaGF2aW9yc30gfSA9ICgKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57QmVoYXZpb3JzfSB9LAogICAgICAgICAgICAgICAgJXsgJEV4dGVuc2lvbi0+e0JlaGF2aW9yc30gfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBWYWx1ZUlzRGlmZmVyZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBTcGVjaWFsIGNhc2VzIHdoZXJlIHRoZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCBidXQgdGhleSBzaG91bGQgYmUgcmVwb3J0ZWQgYXMgZXF1YWxzLgogICAgcmV0dXJuCiAgICAgICAgaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlMX0KICAgICAgICAmJiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17VmFsdWUyfQogICAgICAgICYmICgKICAgICAgICAgICAgJFBhcmFte1ZhbHVlMn0gZXEgJ1Vuc2V0TWFzdGVyJwogICAgICAgICAgICB8fCAkUGFyYW17VmFsdWUyfSBlcSAnVW5zZXRTbGF2ZScKICAgICAgICAgICAgfHwgJFBhcmFte1ZhbHVlMn0gZXEgJycKICAgICAgICApCiAgICAgICAgKTsKCiAgICAjIENvbXBhcmUgdGhlIHJlc3VsdHMuCiAgICByZXR1cm4gRGF0YUlzRGlmZmVyZW50KAogICAgICAgIERhdGExID0+IFwkUGFyYW17VmFsdWUxfSwKICAgICAgICBEYXRhMiA9PiBcJFBhcmFte1ZhbHVlMn0KICAgICk7Cn0KCnN1YiBWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9IYW5kbGVMaW5rcygKICAgICAgICBGaWVsZE5hbWUgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICAgICAgRmllbGRWYWx1ZSA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIFRpY2tldElEICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZXJlIHdhcyBhbiBlcnJvciBoYW5kbGluZyB0aGUgbGlua3MgZm9yIG1hc3Rlci9zbGF2ZSwgdmFsdWUgY291bGQgbm90IGJlIHNldCIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gIX4gL14oPzpVbnNldE1hc3RlcnxVbnNldFNsYXZlKSQvID8gJFBhcmFte1ZhbHVlfSA6ICcnOwoKICAgICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyktPlZhbHVlU2V0KAogICAgICAgIEZpZWxkSUQgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57SUR9LAogICAgICAgIE9iamVjdElEID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgVmFsdWUgICAgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZVRleHQgPT4gJFZhbHVlLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCnN1YiBFZGl0RmllbGRWYWx1ZVZhbGlkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGhlIGZpZWxkIHZhbHVlIGZyb20gdGhlIGh0dHAgcmVxdWVzdAogICAgbXkgJFZhbHVlID0gJFNlbGYtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFte1BhcmFtT2JqZWN0fSwKCiAgICAgICAgIyBub3QgbmVjZXNzYXJ5IGZvciB0aGlzIERyaXZlciBidXQgcGxhY2UgaXQgZm9yIGNvbnNpc3RlbmN5IHJlYXNvbnMKICAgICAgICBSZXR1cm5WYWx1ZVN0cnVjdHVyZSA9PiAxLAogICAgKTsKCiAgICBteSAkU2VydmVyRXJyb3I7CiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgICMgcGVyZm9ybSBuZWNlc3NhcnkgdmFsaWRhdGlvbnMKICAgIGlmICggJFBhcmFte01hbmRhdG9yeX0gJiYgISRWYWx1ZSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiAxLAogICAgICAgIH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAjIHVzZSBQb3NzaWJsZVZhbHVlc0ZpbHRlciBpZiBzZW50CiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICRQb3NzaWJsZVZhbHVlcyA9ICRQYXJhbXtQb3NzaWJsZVZhbHVlc0ZpbHRlcn07CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBnZXQgcG9zc2libGUgdmFsdWVzIGxpc3QKICAgICAgICAgICAgJFBvc3NpYmxlVmFsdWVzID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB2YWxpZGF0ZSBpZiB2YWx1ZSBpcyBpbiBwb3NzaWJsZSB2YWx1ZXMgbGlzdCAoYnV0IGxldCBwYXNzIGVtcHR5IHZhbHVlcykKICAgICAgICBpZiAoICRWYWx1ZSAmJiAhJFBvc3NpYmxlVmFsdWVzLT57JFZhbHVlfSApIHsKICAgICAgICAgICAgJFNlcnZlckVycm9yICA9IDE7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnVGhlIGZpZWxkIGNvbnRlbnQgaXMgaW52YWxpZCc7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIHJlc3VsdGluZyBzdHJ1Y3R1cmUKICAgIG15ICRSZXN1bHQgPSB7CiAgICAgICAgU2VydmVyRXJyb3IgID0+ICRTZXJ2ZXJFcnJvciwKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJEVycm9yTWVzc2FnZSwKICAgIH07CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCnN1YiBEaXNwbGF5VmFsdWVSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBIVE1MT3V0cHV0IGFzIGRlZmF1bHQgaWYgbm90IHNwZWNpZmllZAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17SFRNTE91dHB1dH0gKSB7CiAgICAgICAgJFBhcmFte0hUTUxPdXRwdXR9ID0gMTsKICAgIH0KCiAgICAjIGdldCByYXcgVmFsdWUgc3RyaW5ncyBmcm9tIGZpZWxkIHZhbHVlCiAgICBteSAkVmFsdWUgPSBkZWZpbmVkICRQYXJhbXtWYWx1ZX0gPyAkUGFyYW17VmFsdWV9IDogJyc7CgogICAgIyBnZXQgcmVhbCB2YWx1ZQogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30tPnskVmFsdWV9ICkgewoKICAgICAgICAjIGdldCByZWFkYWJsZSB2YWx1ZQogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfS0+eyRWYWx1ZX07CiAgICB9CgogICAgaWYgKCAkVmFsdWUgZXEgJ01hc3RlcicgKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTWFzdGVyJyk7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1NsYXZlT2Y6KFxkKyl9bXN4ICkgewoKICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJDE7CiAgICAgICAgaWYgKCRUaWNrZXROdW1iZXIpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICAgICAgICAgbXkgJFRpY2tldEhvb2sgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2snKTsKICAgICAgICAgICAgbXkgJFRpY2tldEhvb2tEaXZpZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyk7CiAgICAgICAgICAgICRWYWx1ZSA9ICRQYXJhbXtMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAnU2xhdmUgb2YgJXMlcyVzJywKICAgICAgICAgICAgICAgICRUaWNrZXRIb29rLAogICAgICAgICAgICAgICAgJFRpY2tldEhvb2tEaXZpZGVyLAogICAgICAgICAgICAgICAgJFRpY2tldE51bWJlciwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdGl0bGUgYXMgdmFsdWUgYWZ0ZXIgdXBkYXRlIGFuZCBiZWZvcmUgbGltaXQKICAgIG15ICRUaXRsZSA9ICRWYWx1ZTsKCiAgICAjIEhUTUxPdXRwdXQgdHJhbnNmb3JtYXRpb25zCiAgICBpZiAoICRQYXJhbXtIVE1MT3V0cHV0fSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCA9PiAkVmFsdWUsCiAgICAgICAgICAgIE1heCAgPT4gJFBhcmFte1ZhbHVlTWF4Q2hhcnN9IHx8ICcnLAogICAgICAgICk7CgogICAgICAgICRUaXRsZSA9ICRQYXJhbXtMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ID0+ICRUaXRsZSwKICAgICAgICAgICAgTWF4ICA9PiAkUGFyYW17VGl0bGVNYXhDaGFyc30gfHwgJycsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGlmICggJFBhcmFte1ZhbHVlTWF4Q2hhcnN9ICYmIGxlbmd0aCgkVmFsdWUpID4gJFBhcmFte1ZhbHVlTWF4Q2hhcnN9ICkgewogICAgICAgICAgICAkVmFsdWUgPSBzdWJzdHIoICRWYWx1ZSwgMCwgJFBhcmFte1ZhbHVlTWF4Q2hhcnN9ICkgLiAnLi4uJzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkUGFyYW17VGl0bGVNYXhDaGFyc30gJiYgbGVuZ3RoKCRUaXRsZSkgPiAkUGFyYW17VGl0bGVNYXhDaGFyc30gKSB7CiAgICAgICAgICAgICRUaXRsZSA9IHN1YnN0ciggJFRpdGxlLCAwLCAkUGFyYW17VGl0bGVNYXhDaGFyc30gKSAuICcuLi4nOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBmaWVsZCBsaW5rIGZyb20gY29uZmlnCiAgICBteSAkTGluayAgICAgICAgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntMaW5rfSAgICAgICAgfHwgJyc7CiAgICBteSAkTGlua1ByZXZpZXcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntMaW5rUHJldmlld30gfHwgJyc7CgogICAgbXkgJERhdGEgPSB7CiAgICAgICAgVmFsdWUgICAgICAgPT4gJFZhbHVlLAogICAgICAgIFRpdGxlICAgICAgID0+ICRUaXRsZSwKICAgICAgICBMaW5rICAgICAgICA9PiAkTGluaywKICAgICAgICBMaW5rUHJldmlldyA9PiAkTGlua1ByZXZpZXcsCiAgICB9OwoKICAgIHJldHVybiAkRGF0YTsKfQoKc3ViIFBvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0byBzdG9yZSB0aGUgcG9zc2libGUgdmFsdWVzCiAgICBteSAlUG9zc2libGVWYWx1ZXMgPSAoCiAgICAgICAgJycgPT4gJy0nLAogICAgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBmaW5kIGFsbCBjdXJyZW50IG9wZW4gbWFzdGVyIHNsYXZlIHRpY2tldHMKICAgIG15IEBUaWNrZXRJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCgogICAgICAgICMgbWFzdGVyIHNsYXZlIGR5bmFtaWMgZmllbGQKICAgICAgICAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9ID0+IHsKICAgICAgICAgICAgRXF1YWxzID0+ICdNYXN0ZXInLAogICAgICAgIH0sCgogICAgICAgIFN0YXRlVHlwZSAgPT4gJ09wZW4nLAogICAgICAgIExpbWl0ICAgICAgPT4gNjAsCiAgICAgICAgVXNlcklEICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlcklEfSwKICAgICAgICBQZXJtaXNzaW9uID0+ICdybycsCiAgICApOwoKICAgICMgc2V0IGR5bmFtaWMgZmllbGQgcG9zc2libGUgdmFsdWVzCiAgICAkUG9zc2libGVWYWx1ZXN7TWFzdGVyfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTmV3IE1hc3RlciBUaWNrZXQnKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFRpY2tldEhvb2sgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2snKTsKICAgIG15ICRUaWNrZXRIb29rRGl2aWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rRGl2aWRlcicpOwoKICAgIFRJQ0tFVDoKICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICBteSAlQ3VycmVudFRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRJQ0tFVCBpZiAhJUN1cnJlbnRUaWNrZXQ7CgogICAgICAgICMgc2V0IGR5bmFtaWMgZmllbGQgcG9zc2libGUgdmFsdWVzCiAgICAgICAgJFBvc3NpYmxlVmFsdWVzeyJTbGF2ZU9mOiRDdXJyZW50VGlja2V0e1RpY2tldE51bWJlcn0ifSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgJ1NsYXZlIG9mICVzJXMlczogJXMnLAogICAgICAgICAgICAkVGlja2V0SG9vaywKICAgICAgICAgICAgJFRpY2tldEhvb2tEaXZpZGVyLAogICAgICAgICAgICAkQ3VycmVudFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAkQ3VycmVudFRpY2tldHtUaXRsZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIElmIGNvbmZpZyBVbnNldE1hc3RlclNsYXZlIGlzIGVuYWJsZWQgYW5kIHdlIGFyZSByZXF1ZXN0aW5nIHZhbHVlcyBmcm9tIEFkbWluR2VuZXJpY0FnZW50LAogICAgIyAgIGFkZCBVbnNldE1hc3RlciBhbmQgVW5zZXRTbGF2ZSBwb3NzaWJsZSB2YWx1ZXMuIFNlZSBidWcjMTQ3NzggKGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzgpLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpVbnNldE1hc3RlclNsYXZlJykgJiYgJFBhcmFte0xheW91dE9iamVjdH0tPntBY3Rpb259IGVxICdBZG1pbkdlbmVyaWNBZ2VudCcgKQogICAgewogICAgICAgICRQb3NzaWJsZVZhbHVlc3tVbnNldE1hc3Rlcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1Vuc2V0IE1hc3RlciBUaWNrZXQnKTsKICAgICAgICAkUG9zc2libGVWYWx1ZXN7VW5zZXRTbGF2ZX0gID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdVbnNldCBTbGF2ZSBUaWNrZXQnKTsKICAgIH0KCiAgICAjIHJldHVybiB0aGUgcG9zc2libGUgdmFsdWVzIGhhc2ggYXMgYSByZWZlcmVuY2UKICAgIHJldHVybiBcJVBvc3NpYmxlVmFsdWVzOwp9CgpzdWIgX0hhbmRsZUxpbmtzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhGaWVsZE5hbWUgRmllbGRWYWx1ZSBUaWNrZXRJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSAkRmllbGROYW1lID0gJFBhcmFte0ZpZWxkTmFtZX07CgogICAgbXkgJVRpY2tldCA9ICRQYXJhbXtUaWNrZXR9CiAgICAgICAgPyAleyAkUGFyYW17VGlja2V0fSB9CiAgICAgICAgOiAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgIG15ICRPbGRWYWx1ZSA9ICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZE5hbWUgfTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBtYXN0ZXIgc2xhdmUgY29uZmlnCiAgICBteSAkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0ICA9ICRDb25maWdPYmplY3QtPkdldCgnTWFzdGVyU2xhdmU6OktlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQnKSAgfHwgMDsKICAgIG15ICRNYXN0ZXJTbGF2ZUZvbGxvd1VwZGF0ZWRNYXN0ZXIgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6Rm9sbG93VXBkYXRlZE1hc3RlcicpICAgICAgICB8fCAwOwogICAgbXkgJE1hc3RlclNsYXZlS2VlcFBhcmVudENoaWxkQWZ0ZXJVcGRhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZScpIHx8IDA7CgogICAgbXkgJE5ld1ZhbHVlID0gJFBhcmFte0ZpZWxkVmFsdWV9OwoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBzZXQgYSBuZXcgbWFzdGVyIHRpY2tldAogICAgIyBjaGVjayBpZiBpdCBpcyBhbHJlYWR5IGEgbWFzdGVyIHRpY2tldAogICAgaWYgKAogICAgICAgICROZXdWYWx1ZSBlcSAnTWFzdGVyJwogICAgICAgICYmICggISRPbGRWYWx1ZSB8fCAkT2xkVmFsdWUgbmUgJE5ld1ZhbHVlICkKICAgICAgICApCiAgICB7CgogICAgICAgICMgY2hlY2sgaWYgaXQgd2FzIGEgc2xhdmUgdGlja2V0IGJlZm9yZSBhbmQgaWYgd2UgaGF2ZSB0byBkZWxldGUKICAgICAgICAjIHRoZSBvbGQgcGFyZW50IGNoaWxkIGxpbmsgKE1hc3RlclNsYXZlS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRPbGRWYWx1ZQogICAgICAgICAgICAmJiAkT2xkVmFsdWUgPX4gL15TbGF2ZU9mOiguKj8pJC8KICAgICAgICAgICAgJiYgISRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJFNvdXJjZUtleSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldElETG9va3VwKAogICAgICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICQxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExpbmtPYmplY3QtPkxpbmtEZWxldGUoCiAgICAgICAgICAgICAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIEtleTIgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1BhcmVudENoaWxkJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGEgbmV3IHNsYXZlIHRpY2tldAogICAgIyBjaGVjayBpZiBpdCdzIGFscmVhZHkgdGhlIHNsYXZlIG9mIHRoZSB3aXNoZWQgbWFzdGVyIHRpY2tldAogICAgZWxzaWYgKAogICAgICAgICROZXdWYWx1ZSA9fiAvXlNsYXZlT2Y6KC4qPykkLwogICAgICAgICYmICggISRPbGRWYWx1ZSB8fCAkT2xkVmFsdWUgbmUgJE5ld1ZhbHVlICkKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJFNvdXJjZUtleSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldElETG9va3VwKAogICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFNvdXJjZUtleSwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUxpbmtzID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgICAgICAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgRGlyZWN0aW9uID0+ICdUYXJnZXQnLCAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgQm90aCAoU291cmNlfFRhcmdldHxCb3RoKQogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFNsYXZlVGlja2V0SURzOwoKICAgICAgICBMSU5LRURUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICggc29ydCBrZXlzICVMaW5rcyApIHsKICAgICAgICAgICAgbmV4dCBMSU5LRURUSUNLRVRJRCBpZiAhJExpbmtzeyRMaW5rZWRUaWNrZXRJRH07CgogICAgICAgICAgICAjIGp1c3QgdGFrZSB0aWNrZXQgd2l0aCBzbGF2ZSBhdHRyaWJ1dGVzIGZvciBhY3Rpb24KICAgICAgICAgICAgbXkgJUxpbmtlZFRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJExpbmtlZFRpY2tldFZhbHVlID0gJExpbmtlZFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkTmFtZSB9OwoKICAgICAgICAgICAgbmV4dCBMSU5LRURUSUNLRVRJRCBpZiAhJExpbmtlZFRpY2tldFZhbHVlOwogICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICRMaW5rZWRUaWNrZXRWYWx1ZSAhfiAvXlNsYXZlT2Y6KC4qPykkLzsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgbGlua2VkIHRpY2tldCBpZAogICAgICAgICAgICBwdXNoIEBTbGF2ZVRpY2tldElEcywgJExpbmtlZFRpY2tldElEOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkT2xkVmFsdWUgJiYgJE9sZFZhbHVlIGVxICdNYXN0ZXInICkgewoKICAgICAgICAgICAgaWYgKCAkTWFzdGVyU2xhdmVGb2xsb3dVcGRhdGVkTWFzdGVyICYmIEBTbGF2ZVRpY2tldElEcyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkTGlua2VkVGlja2V0SUQgKEBTbGF2ZVRpY2tldElEcykgewogICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggISRNYXN0ZXJTbGF2ZUtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEIChAU2xhdmVUaWNrZXRJRHMpIHsKICAgICAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkyICAgID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAkT2xkVmFsdWUKICAgICAgICAgICAgJiYgJE9sZFZhbHVlID1+IC9eU2xhdmVPZjooLio/KSQvCiAgICAgICAgICAgICYmICEkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkU291cmNlS2V5ID0gJFRpY2tldE9iamVjdC0+VGlja2V0SURMb29rdXAoCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkxICAgID0+ICRTb3VyY2VLZXksCiAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgS2V5MiAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICROZXdWYWx1ZSA9fiAvXig/OlVuc2V0TWFzdGVyfFVuc2V0U2xhdmUpJC8gJiYgJE9sZFZhbHVlICkgewoKICAgICAgICBpZiAoICROZXdWYWx1ZSBlcSAnVW5zZXRNYXN0ZXInICYmICEkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0ICkgewogICAgICAgICAgICBteSAlTGlua3MgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICAgICAgICAgICAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkxICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsICAgICAgICAgICAjIChvcHRpb25hbCkgZGVmYXVsdCBCb3RoIChTb3VyY2V8VGFyZ2V0fEJvdGgpCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAU2xhdmVUaWNrZXRJRHM7CgogICAgICAgICAgICBMSU5LRURUSUNLRVRJRDoKICAgICAgICAgICAgZm9yIG15ICRMaW5rZWRUaWNrZXRJRCAoIHNvcnQga2V5cyAlTGlua3MgKSB7CiAgICAgICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICEkTGlua3N7JExpbmtlZFRpY2tldElEfTsKCiAgICAgICAgICAgICAgICAjIGp1c3QgdGFrZSB0aWNrZXQgd2l0aCBzbGF2ZSBhdHRyaWJ1dGVzIGZvciBhY3Rpb24KICAgICAgICAgICAgICAgIG15ICVMaW5rZWRUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkTGlua2VkVGlja2V0VmFsdWUgPSAkTGlua2VkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRmllbGROYW1lIH07CiAgICAgICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICEkTGlua2VkVGlja2V0VmFsdWU7CiAgICAgICAgICAgICAgICBuZXh0IExJTktFRFRJQ0tFVElEIGlmICRMaW5rZWRUaWNrZXRWYWx1ZSAhfiAvXlNsYXZlT2Y6KC4qPykkLzsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRpY2tldCBpZAogICAgICAgICAgICAgICAgcHVzaCBAU2xhdmVUaWNrZXRJRHMsICRMaW5rZWRUaWNrZXRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJE1hc3RlclNsYXZlREYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEIChAU2xhdmVUaWNrZXRJRHMpIHsKICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgS2V5MiAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgVW5zZXRTbGF2ZSBEeW5hbWljRmllbGQgdmFsdWUgZnJvbSBhZmZlY3RlZCBzbGF2ZSB0aWNrZXRzLgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVERiwKICAgICAgICAgICAgICAgICAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlREYtPntJRH0sCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ1Vuc2V0U2xhdmUnLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAkTmV3VmFsdWUgZXEgJ1Vuc2V0U2xhdmUnCiAgICAgICAgICAgICYmICEkTWFzdGVyU2xhdmVLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0CiAgICAgICAgICAgICYmICRPbGRWYWx1ZSA9fiAvXlNsYXZlT2Y6KC4qPykkLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkU291cmNlS2V5ID0gJFRpY2tldE9iamVjdC0+VGlja2V0SURMb29rdXAoCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkxICAgID0+ICRTb3VyY2VLZXksCiAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgS2V5MiAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBTZWFyY2hGaWVsZFJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdGFrZSBjb25maWcgZnJvbSBmaWVsZCBjb25maWcKICAgIG15ICRGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfTsKICAgIG15ICRGaWVsZE5hbWUgICA9ICdTZWFyY2hfRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9OwogICAgbXkgJEZpZWxkTGFiZWwgID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntMYWJlbH07CgogICAgbXkgJFZhbHVlOwoKICAgIG15IEBEZWZhdWx0VmFsdWU7CgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtEZWZhdWx0VmFsdWV9ICkgewogICAgICAgIEBEZWZhdWx0VmFsdWUgPSBzcGxpdCAvOy8sICRQYXJhbXtEZWZhdWx0VmFsdWV9OwogICAgfQoKICAgICMgc2V0IHRoZSBmaWVsZCB2YWx1ZQogICAgaWYgKEBEZWZhdWx0VmFsdWUpIHsKICAgICAgICAkVmFsdWUgPSBcQERlZmF1bHRWYWx1ZTsKICAgIH0KCiAgICAjIGdldCB0aGUgZmllbGQgdmFsdWUsIHRoaXMgZnVuY3Rpb24gaXMgYWx3YXlzIGNhbGxlZCBhZnRlciB0aGUgcHJvZmlsZSBpcyBsb2FkZWQKICAgIG15ICRGaWVsZFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgaWYgKCBkZWZpbmVkICRGaWVsZFZhbHVlcyApIHsKICAgICAgICAkVmFsdWUgPSAkRmllbGRWYWx1ZXM7CiAgICB9CgogICAgIyBjaGVjayBhbmQgc2V0IGNsYXNzIGlmIG5lY2Vzc2FyeQogICAgbXkgJEZpZWxkQ2xhc3MgPSAnRHluYW1pY0ZpZWxkTXVsdGlTZWxlY3QgTW9kZXJuaXplJzsKCiAgICAjIHNldCBUcmVlVmlldyBjbGFzcwogICAgaWYgKCAkRmllbGRDb25maWctPntUcmVlVmlld30gKSB7CiAgICAgICAgJEZpZWxkQ2xhc3MgLj0gJyBEeW5hbWljRmllbGRXaXRoVHJlZVZpZXcnOwogICAgfQoKICAgIG15ICRMYW5ndWFnZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKCiAgICAjIHNldCBQb3NzaWJsZVZhbHVlcyAobWFzdGVyIHNob3VsZCBiZSBhbHdheXMgYW4gb3B0aW9uKQogICAgbXkgJFNlbGVjdGlvbkRhdGEgPSB7CiAgICAgICAgTWFzdGVyID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCdNYXN0ZXIgVGlja2V0JyksCiAgICB9OwoKICAgICMgZ2V0IGhpc3RvcmljYWwgdmFsdWVzIGZyb20gZGF0YWJhc2UKICAgIG15ICRIaXN0b3JpY2FsVmFsdWVzID0gJFNlbGYtPkhpc3RvcmljYWxWYWx1ZXNHZXQoJVBhcmFtKTsKCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEhpc3RvcmljYWxWYWx1ZXMpICkgewoKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgICAgIG15ICRUaWNrZXRIb29rICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rJyk7CiAgICAgICAgbXkgJFRpY2tldEhvb2tEaXZpZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2tEaXZpZGVyJyk7CgogICAgICAgICMgUmVjcmVhdGUgdGhlIGRpc3BsYXkgdmFsdWUgZnJvbSB0aGUgYWxyZWFkeSBzZXQgdGlja2V0cy4KICAgICAgICBWQUxVRToKICAgICAgICBmb3IgbXkgJFZhbHVlS2V5ICggc29ydCBrZXlzICV7JEhpc3RvcmljYWxWYWx1ZXN9ICkgewoKICAgICAgICAgICAgaWYgKCAkVmFsdWVLZXkgPX4gbXtTbGF2ZU9mOiguKil9Z214ICkgewogICAgICAgICAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICQxOwoKICAgICAgICAgICAgICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldElETG9va3VwKAogICAgICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlVGlja2V0OwogICAgICAgICAgICAgICAgaWYgKCRUaWNrZXRJRCkgewogICAgICAgICAgICAgICAgICAgICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbmV4dCBWQUxVRSBpZiAhJVRpY2tldDsKCiAgICAgICAgICAgICAgICAkU2VsZWN0aW9uRGF0YS0+eyRWYWx1ZUtleX0gPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnU2xhdmUgb2YgJXMlcyVzOiAlcycsCiAgICAgICAgICAgICAgICAgICAgJFRpY2tldEhvb2ssCiAgICAgICAgICAgICAgICAgICAgJFRpY2tldEhvb2tEaXZpZGVyLAogICAgICAgICAgICAgICAgICAgICRUaWNrZXR7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICAkVGlja2V0e1RpdGxlfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1c2UgUG9zc2libGVWYWx1ZXNGaWx0ZXIgaWYgZGVmaW5lZAogICAgJFNlbGVjdGlvbkRhdGEgPSAkUGFyYW17UG9zc2libGVWYWx1ZXNGaWx0ZXJ9IC8vICRTZWxlY3Rpb25EYXRhOwoKICAgIG15ICRIVE1MU3RyaW5nID0gJFBhcmFte0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkU2VsZWN0aW9uRGF0YSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJEZpZWxkTmFtZSwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFZhbHVlLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAkRmllbGRDbGFzcywKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICBIVE1MUXVvdGUgICAgPT4gMSwKICAgICk7CgogICAgIyBjYWxsIEVkaXRMYWJlbFJlbmRlciBvbiB0aGUgY29tbW9uIERyaXZlcgogICAgbXkgJExhYmVsU3RyaW5nID0gJFNlbGYtPkVkaXRMYWJlbFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZE5hbWUsCiAgICApOwoKICAgIG15ICREYXRhID0gewogICAgICAgIEZpZWxkID0+ICRIVE1MU3RyaW5nLAogICAgICAgIExhYmVsID0+ICRMYWJlbFN0cmluZywKICAgIH07CgogICAgcmV0dXJuICREYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpNYXN0ZXJTbGF2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2hlY2tJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q29tbXVuaWNhdGlvbkNoYW5uZWwnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhEYXRhIEV2ZW50IENvbmZpZykpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgaWYgKCAhJFBhcmFte0RhdGF9LT57VGlja2V0SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBEYXRhLT57VGlja2V0SUR9ISIKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIGdldCB0aWNrZXQgYXR0cmlidXRlcwogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IG1hc3Rlci9zbGF2ZSBkeW5hbWljIGZpZWxkCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKTsKCiAgICAjIGNoZWNrIGlmIGl0J3MgYSBtYXN0ZXIvc2xhdmUgdGlja2V0CiAgICByZXR1cm4gMSBpZiAhJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIH07CiAgICByZXR1cm4gMSBpZiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgfSAhfiAvXihtYXN0ZXJ8eWVzKSQvaTsKCiAgICAjIGdldCBsaW5rIG9iamVjdAogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKICAgICMgZmluZCBzbGF2ZXMKICAgIG15ICVMaW5rcyA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgICAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5MSAgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgRGlyZWN0aW9uID0+ICdUYXJnZXQnLAogICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgQFRpY2tldElEczsKICAgIFRJQ0tFVElEOgogICAgZm9yIG15ICRUaWNrZXRJRCAoIHNvcnQga2V5cyAlTGlua3MgKSB7CiAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJExpbmtzeyRUaWNrZXRJRH07CgogICAgICAgICMganVzdCB0YWtlIHRpY2tldCB3aXRoIHNsYXZlIGF0dHJpYnV0ZXMgZm9yIGFjdGlvbgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRpY2tldFZhbHVlID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIH07CgogICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRUaWNrZXRWYWx1ZTsKICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICRUaWNrZXRWYWx1ZSAhfiAvXlNsYXZlT2Y6KC4qPykkLzsKCiAgICAgICAgIyByZW1lbWJlciB0aWNrZXQgaWQKICAgICAgICBwdXNoIEBUaWNrZXRJRHMsICRUaWNrZXRJRDsKICAgIH0KCiAgICAjIG5vIHNsYXZlcwogICAgaWYgKCAhQFRpY2tldElEcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBTbGF2ZXMgb2YgdGlja2V0ICRUaWNrZXR7VGlja2V0SUR9ISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAjIGF1dG8gcmVzcG9uc2UgYWN0aW9uCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0FydGljbGVTZW5kJyApIHsKICAgICAgICBteSBAQXJ0aWNsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkFydGljbGVMaXN0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDEgaWYgIUBBcnRpY2xlczsKCiAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgVGlja2V0SUQgID0+ICRBcnRpY2xlc1stMV0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZXNbLTFdLT57QXJ0aWNsZUlEfSwKICAgICAgICApOwogICAgICAgIG15ICVBcnRpY2xlID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJEFydGljbGVzWy0xXS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlc1stMV0tPntBcnRpY2xlSUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgdGhlIHNlbmQgbWFpbCBpcyBvZiB0eXBlIGZvcndhcmQKICAgICAgICBteSAkSXNGb3J3YXJkID0gJFNlbGYtPl9BcnRpY2xlSGlzdG9yeVR5cGVHaXZlbigKICAgICAgICAgICAgVGlja2V0SUQgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgICA9PiAkQXJ0aWNsZXtBcnRpY2xlSUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSA9PiAnRm9yd2FyZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaWYgdGhlIFN5c0NvbmZpZyBpcyBkaXNhYmxlZCBhbmQgdGhlIG5ldyBhcnRpY2xlIGlzIGFuIGZvcndhcmQgYXJ0aWNsZQogICAgICAgICMgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGhhdmUgdGhlIGZvcndhcmQgZm9yIHRoZSBzbGF2ZSB0aWNrZXRzCiAgICAgICAgbXkgJEZvcndhcmRTbGF2ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpGb3J3YXJkU2xhdmVzJyk7CgogICAgICAgIHJldHVybiAxIGlmICRJc0ZvcndhcmQgJiYgISRGb3J3YXJkU2xhdmVzOwoKICAgICAgICAjIGRvIG5vdCBzZW5kIGludGVybmFsIGNvbW11bmljYXRpb25zIHRvIGVuZCBjdXN0b21lcnMgb2Ygc2xhdmUgdGlja2V0cwogICAgICAgIHJldHVybiAxIGlmICEkQXJ0aWNsZXtJc1Zpc2libGVGb3JDdXN0b21lcn07CgogICAgICAgICMgbWFyayB0aWNrZXQgdG8gcHJldmVudCBhIGxvb3AKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlU2VuZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBqdXN0IGEgZmxhZyBmb3Iga25vdyB3aGVuIHRoZSBmaXJzdCBzbGF2ZSB0aWNrZXQgaXMgcHJlc2VudAogICAgICAgIG15ICRGaXJzdFNsYXZlVGlja2V0ID0gMTsKICAgICAgICBteSAkVG1wQXJ0aWNsZUJvZHk7CgogICAgICAgICMgcGVyZm9ybSBhY3Rpb24gb24gbGlua2VkIHRpY2tldHMKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRDaGVja1N1Y2Nlc3MgPSAkU2VsZi0+X0xvb3BDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogQXJ0aWNsZVNlbmQnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgbXkgJVRpY2tldFNsYXZlID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB0cnkgdG8gZ2V0IHRoZSBjdXN0b21lciBkYXRhIG9mIHRoZSBzbGF2ZSB0aWNrZXQKICAgICAgICAgICAgbXkgJUN1c3RvbWVyOwogICAgICAgICAgICBpZiAoICRUaWNrZXRTbGF2ZXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAlQ3VzdG9tZXIgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXIgPT4gJFRpY2tldFNsYXZle0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDaGVja0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2hlY2tJdGVtJyk7CgogICAgICAgICAgICAjIGNoZWNrIGlmIGN1c3RvbWVyIGVtYWlsIGlzIHZhbGlkCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDdXN0b21lcntVc2VyRW1haWx9CiAgICAgICAgICAgICAgICAmJiAhJENoZWNrSXRlbU9iamVjdC0+Q2hlY2tFbWFpbCggQWRkcmVzcyA9PiAkQ3VzdG9tZXJ7VXNlckVtYWlsfSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRDdXN0b21lcntVc2VyRW1haWx9ID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgd2UgY2FuJ3QgZmluZCBhIHZhbGlkIFVzZXJFbWFpbCBpbiBDdXN0b21lckRhdGEKICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGdldCB0aGUgbGFzdCBBcnRpY2xlIHdpdGggU2VuZGVyVHlwZSAnY3VzdG9tZXInCiAgICAgICAgICAgICMgYW5kIGdldCB0aGUgVXNlckVtYWlsCiAgICAgICAgICAgIGlmICggISRDdXN0b21lcntVc2VyRW1haWx9ICkgewogICAgICAgICAgICAgICAgbXkgJEFydGljbGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CgogICAgICAgICAgICAgICAgbXkgQEFydGljbGVzID0gJEFydGljbGVPYmplY3QtPkFydGljbGVMaXN0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlU2VuZGVyVHlwZSA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkQ29tbXVuaWNhdGlvbkNoYW5uZWxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29tbXVuaWNhdGlvbkNoYW5uZWwnKTsKCiAgICAgICAgICAgICAgICBteSBATUlNRUJhc2VDaGFubmVsczsKICAgICAgICAgICAgICAgIGZvciBteSAkQ2hhbm5lbCAocXcoRW1haWwgSW50ZXJuYWwgUGhvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbW11bmljYXRpb25DaGFubmVsID0gJENvbW11bmljYXRpb25DaGFubmVsT2JqZWN0LT5DaGFubmVsR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDaGFubmVsTmFtZSA9PiAkQ2hhbm5lbCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBNSU1FQmFzZUNoYW5uZWxzLCAkQ29tbXVuaWNhdGlvbkNoYW5uZWx7Q2hhbm5lbElEfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBBUlRJQ0xFOgogICAgICAgICAgICAgICAgZm9yIG15ICRBcnRpY2xlICggcmV2ZXJzZSBAQXJ0aWNsZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBncmVwIHsgJEFydGljbGUtPntDb21tdW5pY2F0aW9uQ2hhbm5lbElEfSA9PSAkXyB9IEBNSU1FQmFzZUNoYW5uZWxzICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckFydGljbGUoICV7JEFydGljbGV9ICk7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAlQXJ0aWNsZURhdGEgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBcnRpY2xlfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEFydGljbGVEYXRhe0Zyb219ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVye1VzZXJFbWFpbH0gPSAkQXJ0aWNsZURhdGF7RnJvbX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEFSVElDTEU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgY3VzdG9tZXIgZW1haWwgaXMgdmFsaWQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEN1c3RvbWVye1VzZXJFbWFpbH0KICAgICAgICAgICAgICAgICYmICEkQ2hlY2tJdGVtT2JqZWN0LT5DaGVja0VtYWlsKCBBZGRyZXNzID0+ICRDdXN0b21lcntVc2VyRW1haWx9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEN1c3RvbWVye1VzZXJFbWFpbH0gPSAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB3ZSBzdGlsbCBoYXZlIG5vIFVzZXJFbWFpbCwgZHJvcCBhbiBlcnJvcgogICAgICAgICAgICBpZiAoICEkQ3VzdG9tZXJ7VXNlckVtYWlsfSApIHsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIk1hc3RlclRpY2tldDogbm8gY3VzdG9tZXIgZW1haWwgZm91bmQsIHNlbmQgbm8gbWFzdGVyIG1lc3NhZ2UgdG8gY3VzdG9tZXIuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1N5c3RlbSB3YXMgdW5hYmxlIHRvIGFkZCBhIG5ldyBoaXN0b3J5IGVudHJ5IChubyBjdXN0b21lciBlbWFpbCBmb3VuZCcsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgVElDS0VUSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IHRoZSBuZXcgVG8gZm9yIEFydGljbGVTZW5kCiAgICAgICAgICAgICRBcnRpY2xle1RvfSA9ICRDdXN0b21lcntVc2VyRW1haWx9OwoKICAgICAgICAgICAgIyByZWJ1aWxkIHN1YmplY3QKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6U3ViamVjdENsZWFuQWxsTnVtYmVycycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3ViamVjdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN1YmplY3RCdWlsZCgKICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkVGlja2V0U2xhdmV7VGlja2V0TnVtYmVyfSwKICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICA9PiAkQXJ0aWNsZXtTdWJqZWN0fSB8fCAnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZXhjaGFuZ2UgQ3VzdG9tZXIgZnJvbSBNYXN0ZXJUaWNrZXQgZm9yIHRoZSBvbmUgaW50byB0aGUgU2xhdmVUaWNrZXQKICAgICAgICAgICAgbXkgJFJlcGxhY2VPbkNvbW11bmljYXRpb25DaGFubmVscwogICAgICAgICAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1JlcGxhY2VDdXN0b21lclJlYWxOYW1lT25TbGF2ZUFydGljbGVDb21tdW5pY2F0aW9uQ2hhbm5lbHMnKTsKICAgICAgICAgICAgbXkgJENoYW5uZWxOYW1lID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgZGVmaW5lZCAkUmVwbGFjZU9uQ29tbXVuaWNhdGlvbkNoYW5uZWxzLT57JENoYW5uZWxOYW1lfSAmJgogICAgICAgICAgICAgICAgJFJlcGxhY2VPbkNvbW11bmljYXRpb25DaGFubmVscy0+eyRDaGFubmVsTmFtZX0gZXEgJzEnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmICgkRmlyc3RTbGF2ZVRpY2tldCkgewogICAgICAgICAgICAgICAgICAgICRGaXJzdFNsYXZlVGlja2V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAkVG1wQXJ0aWNsZUJvZHkgICA9ICRBcnRpY2xle0JvZHl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIyBnZXQgYm9keSBmcm9tIHRlbXBvcmFsIGluIG9kZXIgdG8gZ2V0IGl0CiAgICAgICAgICAgICAgICAgICAgIyB3aXRob3V0IGNoYW5nZXMgZnJvbSBwcmV2aW91cyBzbGF2ZSB0aWNrZXRzCiAgICAgICAgICAgICAgICAgICAgJEFydGljbGV7Qm9keX0gPSAkVG1wQXJ0aWNsZUJvZHk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJFNlYXJjaCA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyTmFtZSgKICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRpY2tldHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAgICAgbXkgJFJlcGxhY2UgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lck5hbWUoCiAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUaWNrZXRTbGF2ZXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAgICAgaWYgKCAkU2VhcmNoICYmICRSZXBsYWNlICkgewogICAgICAgICAgICAgICAgICAgICRBcnRpY2xle0JvZHl9ID1+IHN7IFxRJFNlYXJjaFxFIH17JFJlcGxhY2V9eG1zZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGFydGljbGUgYWdhaW4KICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlU2VuZCgKICAgICAgICAgICAgICAgICVBcnRpY2xlLAogICAgICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJFN1YmplY3QsCiAgICAgICAgICAgICAgICBDYyAgICAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIEJjYyAgICAgICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ1NlbmRBbnN3ZXInLAogICAgICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gIlNlbnQgYW5zd2VyIHRvICckQXJ0aWNsZXtUb30nIGJhc2VkIG9uIG1hc3RlciB0aWNrZXQuIiwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFydGljbGUgY3JlYXRlCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0FydGljbGVDcmVhdGUnICkgewoKICAgICAgICBteSAkQXJ0aWNsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKICAgICAgICBteSBAQXJ0aWNsZXMgICAgICA9ICRBcnRpY2xlT2JqZWN0LT5BcnRpY2xlTGlzdCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAxIGlmICFAQXJ0aWNsZXM7CgogICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgVGlja2V0SUQgID0+ICRBcnRpY2xlc1stMV0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZXNbLTFdLT57QXJ0aWNsZUlEfSwKICAgICAgICApOwogICAgICAgIG15ICVBcnRpY2xlID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJEFydGljbGVzWy0xXS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlc1stMV0tPntBcnRpY2xlSUR9LAogICAgICAgICk7CgogICAgICAgICMgbWFyayB0aWNrZXQgdG8gcHJldmVudCBhIGxvb3AKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlQ3JlYXRlIiwKICAgICAgICApOwoKICAgICAgICBteSAkQ2hhbm5lbE5hbWUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkNoYW5uZWxOYW1lR2V0KCk7CgogICAgICAgICMgZG8gbm90IHByb2Nlc3MgZW1haWwgYXJ0aWNsZXMgKGFscmVhZHkgZG9uZSBpbiBBcnRpY2xlU2VuZCBldmVudCEpCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQXJ0aWNsZXtTZW5kZXJUeXBlfSBlcSAnYWdlbnQnCiAgICAgICAgICAgICYmICRBcnRpY2xle0lzVmlzaWJsZUZvckN1c3RvbWVyfQogICAgICAgICAgICAmJiAkQ2hhbm5lbE5hbWUgZXEgJ0VtYWlsJwogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgc2FtZSBzdGF0ZSwgYnV0IG9ubHkgZm9yIG5vdGVzCiAgICAgICAgaWYgKCAkQ2hhbm5lbE5hbWUgbmUgJ0ludGVybmFsJyApIHsKCiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlQ3JlYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgYXJ0aWNsZSBjcmVhdGUKICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgJUFydGljbGUsCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnQWRkTm90ZScsCiAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnQWRkZWQgYXJ0aWNsZSBiYXNlZCBvbiBtYXN0ZXIgdGlja2V0LicsCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgc3RhdGUgYWN0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFN0YXRlVXBkYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFN0YXRlVXBkYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgICAgICAgICAgICAgU3RhdGVJRCAgPT4gJFRpY2tldHtTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBzZXQgcGVuZGluZyB0aW1lCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFBlbmRpbmdUaW1lVXBkYXRlJyApIHsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFBlbmRpbmdUaW1lVXBkYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFBlbmRpbmdUaW1lVXBkYXRlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRDaGVja1N1Y2Nlc3M7CgogICAgICAgICAgICAjIHNldCB0aGUgc2FtZSBwZW5kaW5nIHRpbWUKICAgICAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICcwMDAwLTAwLTAwIDAwOjAwOjAwJzsKICAgICAgICAgICAgaWYgKCAkVGlja2V0e1JlYWxUaWxsVGltZU5vdFVzZWR9ICkgewogICAgICAgICAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBFcG9jaCA9PiAkVGlja2V0e1JlYWxUaWxsVGltZU5vdFVzZWR9LAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRQZW5kaW5nVGltZVNldCgKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICRUaW1lU3RhbXAsCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBwcmlvcml0eSBhY3Rpb24KICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0UHJpb3JpdHlVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UHJpb3JpdHlVcGRhdGUiLAogICAgICAgICk7CgogICAgICAgICMgcGVyZm9ybSBhY3Rpb24gb24gbGlua2VkIHRpY2tldHMKICAgICAgICBUSUNLRVRJRDoKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRDaGVja1N1Y2Nlc3MgPSAkU2VsZi0+X0xvb3BDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgU3RyaW5nICAgPT4gJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UHJpb3JpdHlVcGRhdGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkQ2hlY2tTdWNjZXNzOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHNhbWUgc3RhdGUKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gJFRpY2tldHtQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgb3duZXIgYWN0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldE93bmVyVXBkYXRlJyApIHsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldE93bmVyVXBkYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldE93bmVyVXBkYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIE5ld1VzZXJJRCAgICAgICAgICA9PiAkVGlja2V0e093bmVySUR9LAogICAgICAgICAgICAgICAgU2VuZE5vTm90aWZpY2F0aW9uID0+IDAsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgcmVzcG9uc2libGUgYWN0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFJlc3BvbnNpYmxlVXBkYXRlJyApIHsKCiAgICAgICAgIyBtYXJrIHRpY2tldCB0byBwcmV2ZW50IGEgbG9vcAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlIiwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gYWN0aW9uIG9uIGxpbmtlZCB0aWNrZXRzCiAgICAgICAgVElDS0VUSUQ6CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkQ2hlY2tTdWNjZXNzID0gJFNlbGYtPl9Mb29wQ2hlY2soCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFJlc3BvbnNpYmxlU2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIE5ld1VzZXJJRCAgICAgICAgICA9PiAkVGlja2V0e1Jlc3BvbnNpYmxlSUR9LAogICAgICAgICAgICAgICAgU2VuZE5vTm90aWZpY2F0aW9uID0+IDAsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgdW5sb2NrL2xvY2sgYWN0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldExvY2tVcGRhdGUnICkgewoKICAgICAgICAjIG1hcmsgdGlja2V0IHRvIHByZXZlbnQgYSBsb29wCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gIk1hc3RlclRpY2tldEFjdGlvbjogVGlja2V0TG9ja1VwZGF0ZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBwZXJmb3JtIGFjdGlvbiBvbiBsaW5rZWQgdGlja2V0cwogICAgICAgIFRJQ0tFVElEOgogICAgICAgIGZvciBteSAkVGlja2V0SUQgKEBUaWNrZXRJRHMpIHsKICAgICAgICAgICAgbXkgJENoZWNrU3VjY2VzcyA9ICRTZWxmLT5fTG9vcENoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRMb2NrVXBkYXRlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJENoZWNrU3VjY2VzczsKCiAgICAgICAgICAgICMgc2V0IHRoZSBzYW1lIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICBMb2NrICAgICAgICAgICAgICAgPT4gJFRpY2tldHtMb2NrfSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9Mb29wQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldElEIFN0cmluZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSBATGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICBteSAkQ3VycmVudERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgZm9yIG15ICREYXRhICggcmV2ZXJzZSBATGluZXMgKSB7CiAgICAgICAgaWYgKCAkRGF0YS0+e0hpc3RvcnlUeXBlfSBlcSAnTWlzYycgJiYgJERhdGEtPntOYW1lfSBlcSAkUGFyYW17U3RyaW5nfSApIHsKICAgICAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJERhdGEtPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICAgICAgJERhdGVUaW1lT2JqZWN0LT5BZGQoCiAgICAgICAgICAgICAgICBTZWNvbmRzID0+IDE1LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICREYXRlVGltZU9iamVjdCA+ICRDdXJyZW50RGF0ZVRpbWVPYmplY3QgKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTWFzdGVyVGlja2V0TG9vcDogc3RvcHBlZCIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0FydGljbGVIaXN0b3J5VHlwZUdpdmVuKCkKCkNoZWNrIGlmIGhpc3RvcnkgdHlwZSBmb3IgYXJ0aWNsZSBpcyBnaXZlbgoKICAgIG15ICRJc0hpc3RvcnlUeXBlID0gJEV2ZW50T2JqZWN0LT5fQXJ0aWNsZUhpc3RvcnlUeXBlR2l2ZW4oCiAgICAgICAgVGlja2V0SUQgICAgPT4gJFRpY2tldElELAogICAgICAgIEFydGljbGVJRCAgID0+ICRBcnRpY2xlSUQsCiAgICAgICAgSGlzdG9yeVR5cGUgPT4gJ0ZvcndhcmQnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICApOwoKUmV0dXJucwoKICAgbXkgJElzSGlzdG9yeVR5cGUgPSAxOwoKPWN1dAoKc3ViIF9BcnRpY2xlSGlzdG9yeVR5cGVHaXZlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgQXJ0aWNsZUlEIEhpc3RvcnlUeXBlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgJFRpY2tldElEICAgID0gJFBhcmFte1RpY2tldElEfTsKICAgIG15ICRBcnRpY2xlSUQgICA9ICRQYXJhbXtBcnRpY2xlSUR9OwogICAgbXkgJEhpc3RvcnlUeXBlID0gJFBhcmFte0hpc3RvcnlUeXBlfTsKICAgIG15ICRVc2VySUQgICAgICA9ICRQYXJhbXtVc2VySUR9OwoKICAgIG15IEBMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG15ICRNYXRjaGVkID0gMDsKCiAgICByZXR1cm4gJE1hdGNoZWQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggXEBMaW5lcyApOwoKICAgIEhJU1RPUllEQVRBOgogICAgZm9yIG15ICRIaXN0b3J5RGF0YSAoIHJldmVyc2UgQExpbmVzICkgewogICAgICAgIG5leHQgSElTVE9SWURBVEEgaWYgJEhpc3RvcnlEYXRhLT57QXJ0aWNsZUlEfSAhPSAkQXJ0aWNsZUlEOwogICAgICAgIG5leHQgSElTVE9SWURBVEEgaWYgJEhpc3RvcnlEYXRhLT57SGlzdG9yeVR5cGV9IG5lICRIaXN0b3J5VHlwZTsKCiAgICAgICAgJE1hdGNoZWQgPSAxOwoKICAgICAgICBsYXN0IEhJU1RPUllEQVRBOwogICAgfQoKICAgIHJldHVybiAkTWF0Y2hlZDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIGdldCBuZWVkZWQgb2JqZWN0cwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkUGFyYW1PYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnID0+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
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0hhc2hSZWZXaXRoRGF0YSk7CgojIGdldCBuZWVkZWQgb2JqZWN0cwpteSAkVGlja2V0T2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBtYWtlIHByZXBhcmF0aW9ucwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGdldCBtYXN0ZXIvc2xhdmUgZHluYW1pYyBmaWVsZCBkYXRhCm15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKTsKbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgIE5hbWUgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkLAopOwoKIyBnZXQgcmFuZG9tIElECm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIGNyZWF0ZSB0ZXN0IHRpY2tldHMKbXkgQFRpY2tldElEczsKbXkgQFRpY2tldE51bWJlcnM7CmZvciBteSAkVGlja2V0ICggMSAuLiAzICkgewogICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE51bWJlciwKICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1VuaXQgdGVzdCB0aWNrZXQgJyAuICRSYW5kb21JRCAuICcgJyAuICRUaWNrZXQsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRUaWNrZXRJRCwKICAgICAgICAiVGlja2V0Q3JlYXRlKCkgVGlja2V0IElEICRUaWNrZXRJRCAtIFROOiAkVGlja2V0TnVtYmVyIiwKICAgICk7CiAgICBwdXNoIEBUaWNrZXRJRHMsICAgICAkVGlja2V0SUQ7CiAgICBwdXNoIEBUaWNrZXROdW1iZXJzLCAkVGlja2V0TnVtYmVyOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBtYXN0ZXIvc2xhdmUgdGlja2V0IHZhbHVlIHNldAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIHNldCBmaXJzdCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0Cm15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdNYXN0ZXInLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgc2V0IHNlY29uZCB0ZXN0IHRpY2tldCBhcyBzbGF2ZSB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMV0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVmFsdWVTZXQoKSBUaWNrZXQgSUQgJFRpY2tldElEc1sxXSBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIsCik7CgojIHZlcmlmeSB0aGVyZSBpcyBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIG1hc3Rlci9zbGF2ZSB0aWNrZXRzCm15ICVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnQm90aCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKSA/IDEgOiAwLAogICAgIkxpbmtLZXlMaXN0KCkgTWFzdGVyL1NsYXZlIGxpbmsgZm91bmQgLSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBhbmQgJFRpY2tldElEc1sxXSIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBVbnNldE1hc3RlcnxVbnNldFNsYXZlCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZW5hYmxlIHRoZSBNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCBzeXNjb25maWcKJFN1Y2Nlc3MgPSAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OktlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQnLAogICAgVmFsdWUgPT4gMQopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlNldCgpIHN5c2NvbmZpZyBLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IC0gZW5hYmxlZCIsCik7CgojIHNldCBzZWNvbmQgdGlja2V0IGFzIHNsYXZlIHRpY2tldCBhZ2FpbgokU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgRmllbGRJRCAgICAgICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElEc1sxXSwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAiU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzFdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhZ2FpbiBhcyBTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKKTsKCiMgdmVyaWZ5IHRoZXJlIGlzIHBhcmVudC1jaGlsZCBsaW5rIGJldHdlZW4gbWFzdGVyL3NsYXZlIHRpY2tldHMKJUxpbmtLZXlMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgS2V5MSAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgIFR5cGUgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgRGlyZWN0aW9uID0+ICdUYXJnZXQnLAogICAgVXNlcklEICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKSA/IDEgOiAwLAogICAgIkxpbmtLZXlMaXN0KCkgTWFzdGVyL1NsYXZlIGxpbmsgZm91bmQgLSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBhbmQgJFRpY2tldElEc1sxXSIsCik7CgojIFVuc2V0TWFzdGVyIHZhbHVlIGZyb20gZmlyc3QgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdVbnNldE1hc3RlcicsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBVbnNldE1hc3RlciIsCik7CgojIFVuc2V0U2xhdmUgdmFsdWUgZnJvbSBzZWNvbmQgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdVbnNldFNsYXZlJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFVuc2V0U2xhdmUiLAopOwoKIyB2ZXJpZnkgdGhlcmUgaXMgc3RpbGwgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiB0d28gdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1swXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApID8gMSA6IDAsCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIGFuZCAkVGlja2V0SURzWzFdIC0gS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCBzeXNjb25maWcgZW5hYmxlZCIsCik7CgojIGRpc2FibGUgdGhlIE1hc3RlclNsYXZlOjpLZWVwUGFyZW50Q2hpbGRBZnRlclVuc2V0IHN5c2NvbmZpZwokU3VjY2VzcyA9ICRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCcsCiAgICBWYWx1ZSA9PiAwCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0KCkgc3lzY29uZmlnIEtlZXBQYXJlbnRDaGlsZEFmdGVyVW5zZXQgLSBkaXNhYmxlZCIsCik7CgojIHJlbW92ZSBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIHR3byB0aWNrZXRzCiRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtEZWxldGVBbGwoCiAgICBPYmplY3QgPT4gJ1RpY2tldCcsCiAgICBLZXkgICAgPT4gJFRpY2tldElEc1swXSwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkxpbmtEZWxldGVBbGwoKSBwYXJlbnQtY2hpbGQgbGluayBmb3IgdGlja2V0IElEICRUaWNrZXRJRHNbMF0gLSByZW1vdmVkIiwKKTsKCiMgc2V0IGZpcnN0IHRlc3QgdGlja2V0IGFzIG1hc3RlciB0aWNrZXQKJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YSwKICAgIEZpZWxkSUQgICAgICAgICAgICA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJ01hc3RlcicsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBNYXN0ZXJUaWNrZXQiLAopOwoKIyBzZXQgc2Vjb25kIHRlc3QgdGlja2V0IGFzIHNsYXZlIHRpY2tldAokU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgRmllbGRJRCAgICAgICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElEc1sxXSwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAiU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXSIsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzFdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKKTsKCiMgdmVyaWZ5IHRoZXJlIGlzIHN0aWxsIHBhcmVudC1jaGlsZCBsaW5rIGJldHdlZW4gdHdvIHRpY2tldHMKJUxpbmtLZXlMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgS2V5MSAgICAgID0+ICRUaWNrZXRJRHNbMF0sCiAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgIFR5cGUgICAgICA9PiAnUGFyZW50Q2hpbGQnLAogICAgRGlyZWN0aW9uID0+ICdUYXJnZXQnLAogICAgVXNlcklEICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKSA/IDEgOiAwLAogICAgIkxpbmtLZXlMaXN0KCkgTWFzdGVyL1NsYXZlIGxpbmsgZm91bmQgLSBUaWNrZXQgSUQgJFRpY2tldElEc1swXSBhbmQgJFRpY2tldElEc1sxXSIsCik7CgojIFVuc2V0TWFzdGVyIHZhbHVlIGZyb20gZmlyc3QgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdVbnNldE1hc3RlcicsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJWYWx1ZVNldCgpIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBVbnNldE1hc3RlciIsCik7CgojIFVuc2V0U2xhdmUgdmFsdWUgZnJvbSBzZWNvbmQgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICdVbnNldFNsYXZlJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFVuc2V0U2xhdmUiLAopOwoKIyB2ZXJpZnkgdGhlcmUgaXMgbm8gbW9yZSBwYXJlbnQtY2hpbGQgbGluayBiZXR3ZWVuIHR3byB0aWNrZXRzCiVMaW5rS2V5TGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgIE9iamVjdDEgICA9PiAnVGlja2V0JywKICAgIEtleTEgICAgICA9PiAkVGlja2V0SURzWzBdLAogICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICBUeXBlICAgICAgPT4gJ1BhcmVudENoaWxkJywKICAgIERpcmVjdGlvbiA9PiAnVGFyZ2V0JywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApLAogICAgIkxpbmtLZXlMaXN0KCkgTWFzdGVyL1NsYXZlIGxpbmsgcmVtb3ZlZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzBdIGFuZCAkVGlja2V0SURzWzFdIC0gS2VlcFBhcmVudENoaWxkQWZ0ZXJVbnNldCBzeXNjb25maWcgZGlzYWJsZWQiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgdXBkYXRlIE1hc3RlcnxTbGF2ZSBmaWVsZAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGVuYWJsZSB0aGUgTWFzdGVyU2xhdmU6OktlZXBQYXJlbnRDaGlsZEFmdGVyVXBkYXRlIHN5c2NvbmZpZwokU3VjY2VzcyA9ICRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdNYXN0ZXJTbGF2ZTo6S2VlcFBhcmVudENoaWxkQWZ0ZXJVcGRhdGUnLAogICAgVmFsdWUgPT4gMQopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlNldCgpIHN5c2NvbmZpZyBLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZSAtIGVuYWJsZWQiLAopOwoKIyBzZXQgZmlyc3QgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldAokU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgRmllbGRJRCAgICAgICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElEc1swXSwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAnTWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMF0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIE1hc3RlclRpY2tldCIsCik7CgojIHNldCBzZWNvbmQgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldAokU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLAogICAgRmllbGRJRCAgICAgICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEtPntJRH0sCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElEc1sxXSwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAiTWFzdGVyIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIE1hc3RlclRpY2tldCIsCik7CgojIHNldCB0aGlyZCB0ZXN0IHRpY2tldCBhcyBzbGF2ZSBvZiBzZWNvbmQgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzJdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzFdIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMl0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMV0iLAopOwoKIyB2ZXJpZnkgdGhlcmUgaXMgcGFyZW50LWNoaWxkIGxpbmsgYmV0d2VlbiB0d28gdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1sxXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ1RhcmdldCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApID8gMSA6IDAsCiAgICAiTGlua0tleUxpc3QoKSBNYXN0ZXIvU2xhdmUgbGluayBmb3VuZCAtIFRpY2tldCBJRCAkVGlja2V0SURzWzFdIGFuZCAkVGlja2V0SURzWzJdIiwKKTsKCiMgc2V0IHNlY29uZCB0aWNrZXQgYXMgc2xhdmUgb2YgZmlyc3QgdGlja2V0CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEsCiAgICBGaWVsZElEICAgICAgICAgICAgPT4gJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkRGF0YS0+e0lEfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SURzWzFdLAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICJTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRUaWNrZXRJRHNbMV0gRHluYW1pY0ZpZWxkICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCB1cGRhdGVkIGFzIFNsYXZlT2Y6JFRpY2tldE51bWJlcnNbMF0iLAopOwoKIyB2ZXJpZnkgdGhlcmUgcGFyZW50LWNoaWxkLXBhcmVudCBsaW5rIGJldHdlZW4gdGhyZWUgdGlja2V0cwolTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICBLZXkxICAgICAgPT4gJFRpY2tldElEc1sxXSwKICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgVHlwZSAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICBEaXJlY3Rpb24gPT4gJ0JvdGgnLAogICAgVXNlcklEICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKSwKICAgICJMaW5rS2V5TGlzdCgpIE1hc3Rlci9TbGF2ZSBsaW5rIGZvdW5kIC0gVGlja2V0IElEICRUaWNrZXRJRHNbMF0sICRUaWNrZXRJRHNbMV0gYW5kICRUaWNrZXRJRHNbMl0gLSBLZWVwUGFyZW50Q2hpbGRBZnRlclVwZGF0ZSBzeXNjb25maWcgZW5hYmxlZCIsCik7CgojIENsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UuCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIEVuYWJsZSB0aGUgVW5zZXRNYXN0ZXJTbGF2ZSBjb25maWcuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpVbnNldE1hc3RlclNsYXZlJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZyBpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5HZW5lcmljQWdlbnQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFkbWluR2VuZXJpY0FnZW50Iik7CgogICAgICAgICMgQ2xpY2sgdG8gYWRkIG5ldyBqb2IuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnU3ViYWN0aW9uPVVwZGF0ZScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFZlcmlmeSBwb3NzaWJsZSBNYXN0ZXJTbGF2ZSB2YWx1ZXMgJ1Vuc2V0TWFzdGVyJyBhbmQgJ1Vuc2V0U2xhdmUnIGluICdVcGRhdGUvQWRkIFRpY2tldCBBdHRyaWJ1dGVzJyB3aWRnZXQuCiAgICAgICAgIyBTZWUgYnVnIzE0Nzc4IChodHRwczovL2J1Z3Mub3Rycy5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzc4KS4KICAgICAgICBmb3IgbXkgJE9wdGlvbiAocXcoVW5zZXRNYXN0ZXIgVW5zZXRTbGF2ZSkpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUgb3B0aW9uW3ZhbHVlPSRPcHRpb25dJykubGVuZ3RoOyIpLAogICAgICAgICAgICAgICAgIk1hc3RlclNsYXZlIG9wdGlvbiAnJE9wdGlvbicgaXMgYXZhaWxhYmxlLiIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGlzYWJsZSB0aGUgVW5zZXRNYXN0ZXJTbGF2ZSBjb25maWcuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01hc3RlclNsYXZlOjpVbnNldE1hc3RlclNsYXZlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIFJlZnJlc2ggc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgVmVyaWZ5IHBvc3NpYmxlIE1hc3RlclNsYXZlIHZhbHVlcyAnVW5zZXRNYXN0ZXInIGFuZCAnVW5zZXRTbGF2ZScgYXJlIG5vdCBhdmFpbGFibGUKICAgICAgICAjICAgaW4gJ1VwZGF0ZS9BZGQgVGlja2V0IEF0dHJpYnV0ZXMnIHdpZGdldC4KICAgICAgICBmb3IgbXkgJE9wdGlvbiAocXcoVW5zZXRNYXN0ZXIgVW5zZXRTbGF2ZSkpIHsKICAgICAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlIG9wdGlvblt2YWx1ZT0kT3B0aW9uXScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgICAgICJNYXN0ZXJTbGF2ZSBvcHRpb24gJyRPcHRpb24nIGlzIG5vdCBhdmFpbGFibGUuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiMgQ3JlYXRlIGxvY2FsIGZ1bmN0aW9uIGZvciB3YWl0IG9uIEFKQVggdXBkYXRlLgpteSAkV2FpdEZvckFKQVggPSBzdWIgewoKICAgIFRpbWU6OkhpUmVzOjpzbGVlcCgwLjIpOwoKICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCJzcGFuLkFKQVhMb2FkZXI6dmlzaWJsZSIpLmxlbmd0aDsnCiAgICApOwp9OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgRW5hYmxlIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZS4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OkFkdmFuY2VkRW5hYmxlZCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBEbyBub3QgY2hlY2sgUmljaFRleHQuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBEbyBub3QgY2hlY2sgc2VydmljZSBhbmQgdHlwZS4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpTZXJ2aWNlJywKICAgICAgICAgICAgVmFsdWUgPT4gMAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6VHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBEbyBub3Qgc2VuZCBlbWFpbHMuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbDo6VGVzdCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGVzdCBjdXN0b21lciBmb3IgdGVzdGluZy4KICAgICAgICBteSAkVGVzdEN1c3RvbWVyTG9naW5QaG9uZSA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRUaWNrZXRQaG9uZSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRQaG9uZSIpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3JqUXVlcnlFdmVudEJvdW5kKAogICAgICAgICAgICBDU1NTZWxlY3RvciA9PiAnI0Rlc3QnLAogICAgICAgICAgICBFdmVudCAgICAgICA9PiAnY2hhbmdlJywKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0Rlc3QnKS52YWwoJzJ8fFJhdycpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CgogICAgICAgICMgV2FpdCBmb3IgQUpBWCB0byBmaW5pc2guCiAgICAgICAgJFdhaXRGb3JBSkFYLT4oKTsKCiAgICAgICAgbXkgJE1hc3RlclRpY2tldFN1YmplY3QgPSAiTWFzdGVyIFRpY2tldCI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRnJvbUN1c3RvbWVyIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRUZXN0Q3VzdG9tZXJMb2dpblBob25lKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgibGkudWktbWVudS1pdGVtOnZpc2libGUiKS5sZW5ndGg7JyApOwoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJ2xpLnVpLW1lbnUtaXRlbTpudGgtY2hpbGQoMSkgYScpLnRyaWdnZXIoJ2NsaWNrJyk7IiwKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgZm9yIEFKQVggdG8gZmluaXNoLgogICAgICAgICRXYWl0Rm9yQUpBWC0+KCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCRNYXN0ZXJUaWNrZXRTdWJqZWN0KTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSaWNoVGV4dCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gYm9keSB0ZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykudmFsKCdNYXN0ZXInKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgZm9yIEFKQVggdG8gZmluaXNoLgogICAgICAgICRXYWl0Rm9yQUpBWC0+KCk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI3N1Ym1pdFJpY2hUZXh0JylbMF0uc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7IiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJCgnI3N1Ym1pdFJpY2hUZXh0JykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIkVsZW1lbnQgJyNzdWJtaXRSaWNoVGV4dCcgaXMgZm91bmQgaW4gdGhlIHNjcmVlbiIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI3N1Ym1pdFJpY2hUZXh0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICAgICAjIEdldCBtYXN0ZXIgdGVzdCBwaG9uZSB0aWNrZXQgZGF0YS4KICAgICAgICBteSAoICRNYXN0ZXJUaWNrZXRJRCwgJE1hc3RlclRpY2tldE51bWJlciApID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICRUZXN0Q3VzdG9tZXJMb2dpblBob25lLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTWFzdGVyVGlja2V0SUQsCiAgICAgICAgICAgICJNYXN0ZXIgVGlja2V0SUQgLSAkTWFzdGVyVGlja2V0SUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRNYXN0ZXJUaWNrZXROdW1iZXIsCiAgICAgICAgICAgICJNYXN0ZXIgVGlja2V0TnVtYmVyIC0gJE1hc3RlclRpY2tldE51bWJlciIsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgbmV3IHRlc3QgY3VzdG9tZXIgZm9yIHRlc3RpbmcuCiAgICAgICAgbXkgJFRlc3RDdXN0b21lckxvZ2luc0VtYWlsID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50VGlja2V0RW1haWwgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0RW1haWwiKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gJyNEZXN0JywKICAgICAgICAgICAgRXZlbnQgICAgICAgPT4gJ2NoYW5nZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgc2xhdmUgdGVzdCBlbWFpbCB0aWNrZXQuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNEZXN0JykudmFsKCcyfHxSYXcnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwoKICAgICAgICAjIFdhaXQgZm9yIEFKQVggdG8gZmluaXNoLgogICAgICAgICRXYWl0Rm9yQUpBWC0+KCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RvQ3VzdG9tZXIiLCAnY3NzJyApLT5zZW5kX2tleXMoJFRlc3RDdXN0b21lckxvZ2luc0VtYWlsKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgibGkudWktbWVudS1pdGVtOnZpc2libGUiKS5sZW5ndGg7JyApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnbGkudWktbWVudS1pdGVtOm50aC1jaGlsZCgxKSBhJykudHJpZ2dlcignY2xpY2snKTsiLAogICAgICAgICk7CgogICAgICAgICMgV2FpdCBmb3IgQUpBWCB0byBmaW5pc2guCiAgICAgICAgJFdhaXRGb3JBSkFYLT4oKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICAnY3NzJyApLT5zZW5kX2tleXMoJ1NsYXZlIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JpY2hUZXh0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBib2R5IHRlc3QnKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUnKS52YWwoJ1NsYXZlT2Y6JE1hc3RlclRpY2tldE51bWJlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgV2FpdCBmb3IgQUpBWCB0byBmaW5pc2guCiAgICAgICAgJFdhaXRGb3JBSkFYLT4oKTsKCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjc3VibWl0UmljaFRleHQnKVswXS5zY3JvbGxJbnRvVmlldyh0cnVlKTsiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjc3VibWl0UmljaFRleHQnKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiRWxlbWVudCAnI3N1Ym1pdFJpY2hUZXh0JyBpcyBmb3VuZCBpbiB0aGUgc2NyZWVuIgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgZ2V0IHNsYXZlIHRlc3QgZW1haWwgdGlja2V0IGRhdGEKICAgICAgICBteSAoICRTbGF2ZVRpY2tldElELCAkU2xhdmVUaWNrZXROdW1iZXIgKSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgPT4gJ0hBU0gnLAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBDdXN0b21lclVzZXJMb2dpbiA9PiAkVGVzdEN1c3RvbWVyTG9naW5zRW1haWwsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTbGF2ZVRpY2tldElELAogICAgICAgICAgICAiU2xhdmUgVGlja2V0SUQgLSAkU2xhdmVUaWNrZXRJRCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNsYXZlVGlja2V0TnVtYmVyLAogICAgICAgICAgICAiU2xhdmUgVGlja2V0TnVtYmVyIC0gJFNsYXZlVGlja2V0TnVtYmVyIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIHRpY2tldCB6b29tIHBhZ2Ugb2YgY3JlYXRlZCBtYXN0ZXIgdGVzdCB0aWNrZXQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRNYXN0ZXJUaWNrZXRJRCIpOwoKICAgICAgICAjIFZlcmlmeSBtYXN0ZXItc2xhdmUgdGlja2V0IGxpbmsuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkU2xhdmVUaWNrZXROdW1iZXIgKSA+IC0xLAogICAgICAgICAgICAiU2xhdmUgdGlja2V0IG51bWJlcjogJFNsYXZlVGlja2V0TnVtYmVyIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gaGlzdG9yeSB2aWV3IG9mIGNyZWF0ZWQgbWFzdGVyIHRlc3QgdGlja2V0LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0SGlzdG9yeTtUaWNrZXRJRD0kTWFzdGVyVGlja2V0SUQiKTsKCiAgICAgICAgIyBWZXJpZnkgZHluYW1pYyBmaWVsZCBtYXN0ZXIgdGlja2V0IHVwZGF0ZS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdDaGFuZ2VkIGR5bmFtaWMgZmllbGQgTWFzdGVyU2xhdmUgZnJvbSAiIiB0byAiTWFzdGVyIi4nICkgPiAtMSwKICAgICAgICAgICAgIk1hc3RlciBkeW5hbWljIGZpZWxkIHVwZGF0ZSB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIHRpY2tldCB6b29tIHBhZ2Ugb2YgY3JlYXRlZCBzbGF2ZSB0ZXN0IHRpY2tldC4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFNsYXZlVGlja2V0SUQiKTsKCiAgICAgICAgIyBWZXJpZnkgc2xhdmUtbWFzdGVyIHRpY2tldCBsaW5rCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkTWFzdGVyVGlja2V0TnVtYmVyICkgPiAtMSwKICAgICAgICAgICAgIk1hc3RlciB0aWNrZXQgbnVtYmVyOiAkTWFzdGVyVGlja2V0TnVtYmVyIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gaGlzdG9yeSB2aWV3IG9mIGNyZWF0ZWQgc2xhdmUgdGVzdCB0aWNrZXQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRIaXN0b3J5O1RpY2tldElEPSRTbGF2ZVRpY2tldElEIik7CgogICAgICAgICMgVmVyaWZ5IGR5bmFtaWMgZmllbGQgc2xhdmUgdGlja2V0IHVwZGF0ZS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdDaGFuZ2VkIGR5bmFtaWMgZmllbGQgTWFzdGVyU2xhdmUgZnJvbSAiIiB0byAiU2xhdmVPZjonICkgPiAtMSwKICAgICAgICAgICAgIlNsYXZlIGR5bmFtaWMgZmllbGQgdXBkYXRlIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgdGlja2V0cy4KICAgICAgICBmb3IgbXkgJFRpY2tldElEICggJE1hc3RlclRpY2tldElELCAkU2xhdmVUaWNrZXRJRCApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBUaWNrZXQgZGVsZXRpb24gY291bGQgZmFpbCBpZiBhcGFjaGUgc3RpbGwgd3JpdGVzIHRvIHRpY2tldCBoaXN0b3J5LiBUcnkgYWdhaW4gaW4gdGhpcyBjYXNlLgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgIHNsZWVwIDM7CiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnVGlja2V0JywKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgICAgICMgRW5hYmxlIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZS4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OkFkdmFuY2VkRW5hYmxlZCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBFbmFibGUgY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OlVwZGF0ZU1hc3RlclNsYXZlJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIERvIG5vdCBjaGVjayBSaWNoVGV4dC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIERvIG5vdCBzZW5kIGVtYWlscy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU2VuZG1haWxNb2R1bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnS2VybmVsOjpTeXN0ZW06OkVtYWlsOjpUZXN0JywKICAgICAgICApOwoKICAgICAgICAjIERpc2FibGUgVHlwZSBmZWF0dXJlLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OlR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIEludm92ZWRBZ2VudCBhbmQgSW5mb3JtQWdlbnQgYXJlIGRpc2FibGVkLCBvdGhlcndpc2UgaXQgdXNlcyBwYXJ0IG9mIHRoZSB2aXNpYmxlCiAgICAgICAgIyBTY3JlZW4gbWFraW5nIHRoZSBzdWJtaXQgYnV0dG9uIG5vdCB2aXNpYmxlIGFuZCB0aGVuIG5vdCBjbGljay1hYmxlLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE1hc3RlclNsYXZlIyMjSW52b2x2ZWRBZ2VudCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI0luZm9ybUFnZW50JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSBOb3RlIGlzIGVuYWJsZWQgaW4gQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSBzY3JlZW4uCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TWFzdGVyU2xhdmUjIyNOb3RlJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIuCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAjIEdldCB0ZXN0IHVzZXIgSUQuCiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdHdvIHRlc3QgdGlja2V0cy4KICAgICAgICBteSBAVGlja2V0SURzOwogICAgICAgIG15IEBUaWNrZXROdW1iZXJzOwogICAgICAgIGZvciBteSAkVGlja2V0Q3JlYXRlICggMSAuLiAyICkgewogICAgICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU2VsZW5pdW0gdGVzdCBUaWNrZXQnLAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdTZWxlbml1bUN1c3RvbWVyJywKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnU2VsZW5pdW1DdXN0b21lckBsb2NhbGhvc3QuY29tJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGNyZWF0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAVGlja2V0SURzLCAgICAgJFRpY2tldElEOwogICAgICAgICAgICBwdXNoIEBUaWNrZXROdW1iZXJzLCAkVGlja2V0TnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgIyBMb2dpbiBhcyB0ZXN0IHVzZXIuCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byB0aWNrZXQgem9vbSBwYWdlIG9mIGZpcnN0IGNyZWF0ZWQgdGVzdCB0aWNrZXQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRUaWNrZXRJRHNbMF0iKTsKCiAgICAgICAgIyBDbGljayBvbiBNYXN0ZXJTbGF2ZSBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZTtUaWNrZXRJRD0kVGlja2V0SURzWzBdJyApXSIpCiAgICAgICAgICAgIC0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuV2lkZ2V0U2ltcGxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIE9wZW4gY29sbGFwc2VkIHdpZGdldHMsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJy5XaWRnZXRTaW1wbGUuQ29sbGFwc2VkIC5XaWRnZXRBY3Rpb24gPiBhJykudHJpZ2dlcignY2xpY2snKTsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuV2lkZ2V0U2ltcGxlLkV4cGFuZGVkIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KER5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSBTdWJqZWN0IFJpY2hUZXh0IEZpbGVVcGxvYWQgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZXQgZmlyc3QgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldC4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUnKS52YWwoJ01hc3RlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIE1hc3RlciBUaWNrZXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSaWNoVGV4dCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gTWFzdGVyIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGNsYXNzPSdDYWxsRm9yQWN0aW9uIFByaW1hcnknXVtjb250YWlucyguLCdTdWJtaXQnKV0iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTd2l0Y2ggd2luZG93IGJhY2sgdG8gYWdlbnQgdGlja2V0IHpvb20gdmlldyBvZiB0aGUgZmlyc3QgY3JlYXRlZCB0ZXN0IHRpY2tldC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGU7JwogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gdGlja2V0IGhpc3RvcnkgcGFnZSBvZiBmaXJzdCBjcmVhdGVkIHRlc3QgdGlja2V0LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0SGlzdG9yeTtUaWNrZXRJRD0kVGlja2V0SURzWzBdIik7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5XaWRnZXRTaW1wbGUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICMgVmVyaWZ5IGR5bmFtaWMgZmllbGQgbWFzdGVyIHRpY2tldCB1cGRhdGUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnQ2hhbmdlZCBkeW5hbWljIGZpZWxkIE1hc3RlclNsYXZlIGZyb20gIiIgdG8gIk1hc3RlciIuJyApID4gLTEsCiAgICAgICAgICAgICJNYXN0ZXIgZHluYW1pYyBmaWVsZCB1cGRhdGUgdmFsdWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byB0aWNrZXQgem9vbSBwYWdlIG9mIHNlY29uZCBjcmVhdGVkIHRlc3QgdGlja2V0LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kVGlja2V0SURzWzFdIik7CgogICAgICAgICMgQ2xpY2sgb24gTWFzdGVyU2xhdmUgYW5kIHN3aXRjaCB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50VGlja2V0TWFzdGVyU2xhdmU7VGlja2V0SUQ9JFRpY2tldElEc1sxXScgKV0iKQogICAgICAgICAgICAtPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNzdWJtaXRSaWNoVGV4dCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICBzbGVlcCAxOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLnZhbCgnU2xhdmVPZjokVGlja2V0TnVtYmVyc1swXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIFNsYXZlIFRpY2tldCcpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JpY2hUZXh0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBTbGF2ZSBUaWNrZXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nQ2FsbEZvckFjdGlvbiBQcmltYXJ5J11bY29udGFpbnMoLiwnU3VibWl0JyldIiktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZTsnCiAgICAgICAgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byB0aWNrZXQgaGlzdG9yeSBwYWdlIG9mIGZpcnN0IGNyZWF0ZWQgdGVzdCB0aWNrZXQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRIaXN0b3J5O1RpY2tldElEPSRUaWNrZXRJRHNbMV0iKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiLldpZGdldFNpbXBsZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgZHluYW1pYyBmaWVsZCBzbGF2ZSB0aWNrZXQgdXBkYXRlLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksCiAgICAgICAgICAgICAgICAnQ2hhbmdlZCBkeW5hbWljIGZpZWxkIE1hc3RlclNsYXZlIGZyb20gIiIgdG8gIlNsYXZlT2Y6JyAuICRUaWNrZXROdW1iZXJzWzBdCiAgICAgICAgICAgICkgPiAtMSwKICAgICAgICAgICAgIlNsYXZlIGR5bmFtaWMgZmllbGQgdXBkYXRlIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgRGlzYWJsZSBOb3RlIGluIEFnZW50VGlja2V0TWFzdGVyU2xhdmUgc2NyZWVuIGFuZAogICAgICAgICMgY2hlY2sgaWYgTWFzdGVyU2xhdmUgZHluYW1pYyBmaWVsZCBpcyBzaG93biBpbiB0aGUgc2NyZWVuIChzZWUgYnVnIzE0NzgwKS4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSMjI05vdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0TWFzdGVyU2xhdmU7VGlja2V0SUQ9JFRpY2tldElEc1sxXSIpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCdyZXR1cm4gJCgiI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZSIpLmxlbmd0aDsnKSwKICAgICAgICAgICAgIk1hc3RlclNsYXZlIGR5bmFtaWMgZmllbGQgaXMgZm91bmQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdHdvIG1vcmUgdGVzdCB0aWNrZXRzLgogICAgICAgIGZvciBteSAkVGlja2V0Q3JlYXRlICggMSAuLiAyICkgewogICAgICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU2VsZW5pdW0gdGVzdCBUaWNrZXQnLAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdTZWxlbml1bUN1c3RvbWVyJywKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnU2VsZW5pdW1DdXN0b21lckBsb2NhbGhvc3QuY29tJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCBpcyBjcmVhdGVkLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBUaWNrZXRJRHMsICAgICAkVGlja2V0SUQ7CiAgICAgICAgICAgIHB1c2ggQFRpY2tldE51bWJlcnMsICRUaWNrZXROdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAjIFNldCBNYXN0ZXItU2xhdmUgcmVsYXRpb24gZm9yIHRlc3QgVGlja2V0cy4KICAgICAgICBteSBAVGVzdENhc2UgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRHNbMl0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICA9PiAiTWFzdGVyIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElEc1szXSwKICAgICAgICAgICAgICAgIFZhbHVlICAgID0+ICJTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzJdIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkTWFzdGVyU2xhdmVERk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKSB8fCAnJzsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkTWFzdGVyU2xhdmVERk5hbWUsCiAgICAgICAgKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgICAgICBteSAkU3VjY2VzczsKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0Q2FzZSkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgRmllbGRJRCAgICAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRlc3QtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFRlc3QtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJWYWx1ZSAnJFRlc3QtPntWYWx1ZX0nIGlzIHNldCBmb3IgVGlja2V0SUQgJFRlc3QtPntUaWNrZXRJRH0uIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgVmVyaWZ5IE1hc3RlciBTbGF2ZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvciBTbGF2ZSB0aWNrZXQuCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyk7CiAgICAgICAgbXkgJFZhbHVlICAgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRmllbGRJRCAgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSwKICAgICAgICAgICAgT2JqZWN0SUQgPT4gJFRpY2tldElEc1szXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFZhbHVlLT5bMF0tPntWYWx1ZVRleHR9LAogICAgICAgICAgICAiU2xhdmVPZjokVGlja2V0TnVtYmVyc1syXSIsCiAgICAgICAgICAgICJNYXN0ZXIgU2xhdmUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmb3IgU2xhdmUgdGlja2V0IgogICAgICAgICk7CgogICAgICAgICMgVmVyaWZ5IHRoZXJlIGlzIE1hc3Rlci1TbGF2ZSByZWxhdGlvbiBiZXR3ZWVuIHR3byB0ZXN0IFRpY2tldHMuCiAgICAgICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgICAgIG15ICRMaW5rTGlzdCAgID0gJExpbmtPYmplY3QtPkxpbmtMaXN0KAogICAgICAgICAgICBPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIEtleSAgICA9PiAkVGlja2V0SURzWzJdLAogICAgICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJExpbmtMaXN0KSwKICAgICAgICAgICAgIk1hc3RlclNsYXZlIGxpbmsgZXhpc3RzLiIKICAgICAgICApOwoKICAgICAgICAjIEVuYWJsZSBjb25maWcgIk1hc3RlclNsYXZlOjpVbnNldE1hc3RlclNsYXZlIi4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OlVuc2V0TWFzdGVyU2xhdmUnLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZSBzY3JlZW4gb2YgTWFzdGVyIFRpY2tldC4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRNYXN0ZXJTbGF2ZTtUaWNrZXRJRD0kVGlja2V0SURzWzJdIgogICAgICAgICk7CgogICAgICAgICMgVW5zZXRNYXN0ZXIgc3RhdHVzIG9mIE1hc3RlciBUaWNrZXQuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykudmFsKCdVbnNldE1hc3RlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAY2xhc3M9J0NhbGxGb3JBY3Rpb24gUHJpbWFyeSddW2NvbnRhaW5zKC4sJ1N1Ym1pdCcpXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIGZvciBteSAkQ2FjaGUgKHF3KCBEeW5hbWljRmllbGRWYWx1ZSBMaW5rT2JqZWN0ICkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKCBUeXBlID0+ICRDYWNoZSApOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBsaW5rIHRvIFNsYXZlIHRpY2tldCBpcyBkZWxldGVkLiBTZWUgYnVnIzE0NzgxLgogICAgICAgICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICBLZXkgICAgPT4gJFRpY2tldElEc1syXSwKICAgICAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSgkTGlua0xpc3QpLAogICAgICAgICAgICAiTWFzdGVyU2xhdmUgbGluayBkZWxldGVkLiIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIFNsYXZlIHZhbHVlIGZvciBNYXN0ZXIgU2xhdmUgZmllbGQgaXMgZGVsZXRlZCBmcm9tIFNsYXZlIHRpY2tldCBhZnRlciBVbnNldE1hc3Rlci4KICAgICAgICAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICBGaWVsZElEICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LAogICAgICAgICAgICBPYmplY3RJRCA9PiAkVGlja2V0SURzWzNdLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJFZhbHVlLAogICAgICAgICAgICBbXSwKICAgICAgICAgICAgIk1hc3RlciBTbGF2ZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvciBTbGF2ZSB0aWNrZXQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyBNYXN0ZXJTbGF2ZSBlcnJvciBsb2cgZHVyaW5nIHRpY2tldCBjcmVhdGlvbi4gU2VlIGJ1ZyMxNDg5OS4KICAgICAgICBteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50VGlja2V0UGhvbmUgYW5kIGNyZWF0ZSB0ZXN0IHRpY2tldC4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFBob25lIik7CgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXIgPSAnY3VzdG9tZXInIC4gJFJhbmRvbUlEIC4gJ0BnbWFpbC5jb20nOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0Zyb21DdXN0b21lciIsICdjc3MnICktPnNlbmRfa2V5cygkVGVzdEN1c3RvbWVyKTsKICAgICAgICAkU2VsZW5pdW0tPklucHV0RmllbGRWYWx1ZVNldCgKICAgICAgICAgICAgRWxlbWVudCA9PiAnI0Rlc3QnLAogICAgICAgICAgICBWYWx1ZSAgID0+ICcyfHxSYXcnLAogICAgICAgICk7CgogICAgICAgICMgV2FpdCBmb3IgbG9hZGVyLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgiLkFKQVhMb2FkZXI6dmlzaWJsZSIpLmxlbmd0aDsnICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAgICAgICAgJ2NzcycgKS0+c2VuZF9rZXlzKCJTdWJqZWN0JFJhbmRvbUlEIik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjUmljaFRleHQiLCAgICAgICAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JpY2hUZXh0IiwgICAgICAgJ2NzcycgKS0+c2VuZF9rZXlzKCJUZXh0JFJhbmRvbUlEIik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5NZXNzYWdlQm94IGFbaHJlZio9XCdBZ2VudFRpY2tldFpvb207VGlja2V0SUQ9XCddIikubGVuZ3RoICE9PSAwOycKICAgICAgICApOwoKICAgICAgICBteSBAVGlja2V0ICAgPSBzcGxpdCggJ1RpY2tldElEPScsICRTZWxlbml1bS0+Z2V0X2N1cnJlbnRfdXJsKCkgKTsKICAgICAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0WzFdOwoKICAgICAgICBwdXNoIEBUaWNrZXRJRHMsICRUaWNrZXRJRDsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZG1pbkxvZy4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbkxvZyIpOwoKICAgICAgICAjIENoZWNrIGlmIE1hc3RlclNsYXZlIGVycm9yIGxvZyBpcyBjcmVhdGVkLgogICAgICAgIG15ICRNZXNzYWdlID0gIkNvdWxkIG5vdCB1cGRhdGUgZmllbGQgTWFzdGVyU2xhdmUgZm9yIFRpY2tldCBJRCAkVGlja2V0SUQiOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNMb2dFbnRyaWVzIC5FcnJvcjplcSgwKScpLnRleHQoKS5pbmRleE9mKCckTWVzc2FnZScpID09IC0xOyIpLAogICAgICAgICAgICAiRXJyb3IgbWVzc2FnZSBpcyBub3QgY3JlYXRlZCBmb3IgdXBkYXRlIGZpZWxkIE1hc3RlclNsYXZlIGZvciBUaWNrZXQgSUQgJFRpY2tldElEIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgdGlja2V0cy4KICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJUaWNrZXQgSUQgJFRpY2tldElEIGlzIGRlbGV0ZWQuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgICAgICBUeXBlID0+ICdUaWNrZXQnLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgICAgICMgRW5hYmxlIHRoZSBhZHZhbmNlZCBNYXN0ZXJTbGF2ZS4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OkFkdmFuY2VkRW5hYmxlZCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBFbmFibGUgY2hhbmdlIHRoZSBNYXN0ZXJTbGF2ZSBzdGF0ZSBvZiBhIHRpY2tldC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OlVwZGF0ZU1hc3RlclNsYXZlJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIERvIG5vdCBzZW5kIGVtYWlscy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU2VuZG1haWxNb2R1bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnS2VybmVsOjpTeXN0ZW06OkVtYWlsOjpUZXN0JywKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIuCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAjIEdldCB0ZXN0IHVzZXIgSUQuCiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGhyZWUgdGVzdCB0aWNrZXRzLgogICAgICAgIG15IEBUaWNrZXRJRHM7CiAgICAgICAgbXkgQFRpY2tldE51bWJlcnM7CiAgICAgICAgbXkgJFRpY2tldFRpdGxlID0gJ01hc3RlclNsYXZlICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIGZvciBteSAkVGlja2V0Q3JlYXRlICggMSAuLiAzICkgewogICAgICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJ1NlbGVuaXVtQ3VzdG9tZXInLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICAgICAgICAgICAgICBPd25lcklEICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgLSBjcmVhdGVkIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQFRpY2tldElEcywgICAgICRUaWNrZXRJRDsKICAgICAgICAgICAgcHVzaCBAVGlja2V0TnVtYmVycywgJFRpY2tldE51bWJlcjsKICAgICAgICB9CgogICAgICAgICMgTG9naW4gYXMgdGVzdCB1c2VyLgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRUaWNrZXRTZWFyY2guCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRTZWFyY2giKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGg7IiApOwoKICAgICAgICAjIFNlYXJjaCB0ZXN0IGNyZWF0ZWQgdGlja2V0cyBieSB0aXRsZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnVGl0bGUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIlRpdGxlIiwgJ25hbWUnICktPnNlbmRfa2V5cygkVGlja2V0VGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdTZWFyY2hGb3JtU3VibWl0J11bXEB2YWx1ZT0nUnVuIHNlYXJjaCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnLkNoZWNrYm94W3ZhbHVlPSRUaWNrZXRJRHNbMF1dJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIFNlbGVjdCBmaXJzdCB0ZXN0IGNyZWF0ZWQgdGlja2V0LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcuQ2hlY2tib3hbdmFsdWU9JFRpY2tldElEc1swXV0nKS5jbGljaygpOyIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJy5DaGVja2JveFt2YWx1ZT0kVGlja2V0SURzWzBdXTpjaGVja2VkJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uIGJ1bGsgYW5kIHN3aXRjaCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJCdWxrIiwgJ2xpbmtfdGV4dCcgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcG9wdXAgaXMgY29tcGxldGVseSBsb2FkZWQuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGU7JywKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLmxlbmd0aCAmJiBcJCgnI3N1Ym1pdFJpY2hUZXh0JykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIFNldCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0R5bmFtaWNGaWVsZF9NYXN0ZXJTbGF2ZScpLnZhbCgnTWFzdGVyJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNzdWJtaXRSaWNoVGV4dCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcG9wdXAgaXMgY29tcGxldGVseSBsb2FkZWQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZFJlZnJlc2goKTsKCiAgICAgICAgIyBTZWxlY3Qgc2Vjb25kIGFuZCB0aGlyZCB0ZXN0IGNyZWF0ZWQgdGlja2V0LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJy5DaGVja2JveFt2YWx1ZT0kVGlja2V0SURzWzFdXScpLmxlbmd0aDsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnLkNoZWNrYm94W3ZhbHVlPSRUaWNrZXRJRHNbMV1dJykuY2xpY2soKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdpbnB1dFt2YWx1ZT0kVGlja2V0SURzWzFdXTpjaGVja2VkJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcuQ2hlY2tib3hbdmFsdWU9JFRpY2tldElEc1syXV0nKS5sZW5ndGg7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJy5DaGVja2JveFt2YWx1ZT0kVGlja2V0SURzWzJdXScpLmNsaWNrKCk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaW5wdXRbdmFsdWU9JFRpY2tldElEc1syXV06Y2hlY2tlZCcpLmxlbmd0aDsiCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiBidWxrIGFuZCBzd2l0Y2ggc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiQnVsayIsICdsaW5rX3RleHQnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBvcHVwIGlzIGNvbXBsZXRlbHkgbG9hZGVkLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoQ29yZSkgPT0gIm9iamVjdCIgJiYgdHlwZW9mKENvcmUuQXBwKSA9PSAib2JqZWN0IiAmJiBDb3JlLkFwcC5QYWdlTG9hZENvbXBsZXRlOycsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNEeW5hbWljRmllbGRfTWFzdGVyU2xhdmUnKS5sZW5ndGggJiYgXCQoJyNzdWJtaXRSaWNoVGV4dCcpLmxlbmd0aDsiCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgdGVzdCB0aWNrZXRzIGFzIHNsYXZlIHRpY2tldHMuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRHluYW1pY0ZpZWxkX01hc3RlclNsYXZlJykudmFsKCdTbGF2ZU9mOiRUaWNrZXROdW1iZXJzWzBdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBtYXN0ZXIgdGlja2V0IHpvb20gdmlldy4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFRpY2tldElEc1swXSIpOwoKICAgICAgICAjIFZlcmlmeSBtYXN0ZXItc2xhdmUgdGlja2V0IGxpbmsuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGlja2V0TnVtYmVyc1sxXSApID4gLTEsCiAgICAgICAgICAgICJTbGF2ZSB0aWNrZXQgbnVtYmVyOiAkVGlja2V0TnVtYmVyc1sxXSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRpY2tldE51bWJlcnNbMl0gKSA+IC0xLAogICAgICAgICAgICAiU2xhdmUgdGlja2V0IG51bWJlcjogJFRpY2tldE51bWJlcnNbMl0gLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IHRpY2tldHMuCiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCAtIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnVGlja2V0JywKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgc3RhcnQgUmVzdG9yZURhdGFic2UKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBtYWtlIHByZXBhcmF0aW9ucwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgZW5hYmxlIGNvbmZpZyBNYXN0ZXJTbGF2ZTo6Rm9yd2FyZFNsYXZlcwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OkZvcndhcmRTbGF2ZXMnLAogICAgVmFsdWUgPT4gMSwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrTVhSZWNvcmQnLAogICAgVmFsdWUgPT4gMCwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgIFZhbHVlID0+ICdLZXJuZWw6OlN5c3RlbTo6RW1haWw6OkRvTm90U2VuZEVtYWlsJywKKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICBOYW1lID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKKTsKCiMgQ3JlYXRlIG5ldyB1c2VyLgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzICAgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICBMYW5ndWFnZSA9PiAnZW4nCik7CiRTZWxmLT5UcnVlKAogICAgJFRlc3RVc2VyTG9naW4sCiAgICAiVXNlckFkZCgpICRUZXN0VXNlckxvZ2luIiwKKTsKCiMgQ3JlYXRlIG5ldyBjdXN0b21lciB1c2Vycy4KbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbjEgPSAkSGVscGVyT2JqZWN0LT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKAogICAgTGFuZ3VhZ2UgPT4gJ2VuJywKKTsKJFNlbGYtPlRydWUoCiAgICAkVGVzdEN1c3RvbWVyVXNlckxvZ2luMSwKICAgICJDdXN0b21lclVzZXJBZGQoKSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luMSIsCik7CgpteSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luMiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICBMYW5ndWFnZSA9PiAnZW4nLAopOwokU2VsZi0+VHJ1ZSgKICAgICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4yLAogICAgIkN1c3RvbWVyVXNlckFkZCgpICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4yIiwKKTsKCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIENyZWF0ZSBmaXJzdCB0ZXN0IHRpY2tldC4KbXkgJE1hc3RlclRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwpteSAkTWFzdGVyVGlja2V0SUQgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVE4gICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXROdW1iZXIsCiAgICBUaXRsZSAgICAgICAgPT4gJ01hc3RlciB1bml0IHRlc3QgdGlja2V0ICcgLiAkUmFuZG9tSUQsCiAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgIEN1c3RvbWVyTm8gICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luMSwKICAgIEN1c3RvbWVyVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luMSwKICAgICwKICAgIE93bmVySUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkTWFzdGVyVGlja2V0SUQsCiAgICAiVGlja2V0Q3JlYXRlKCkgVGlja2V0IElEICRNYXN0ZXJUaWNrZXRJRCIsCik7CgpteSAkRW1haWxCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgIENoYW5uZWxOYW1lID0+ICdFbWFpbCcsCik7CgojIENyZWF0ZSBhcnRpY2xlIGZvciB0ZXN0IHRpY2tldC4KbXkgJEFydGljbGVJRCA9ICRFbWFpbEJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ3Rlc3RAZXhhbXBsZXMuY29tJywKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ01hc3RlciBBcnRpY2xlJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICJVbml0IHRlc3QgTWFzdGVyVGlja2V0ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4xICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4xIiwKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdFbWFpbEN1c3RvbWVyJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdVbml0IHRlc3QgYXJ0aWNsZScsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIEFydGljbGUgSUQgJEFydGljbGVJRCIsCik7CgpteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICBJRCA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAopOwoKbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgojIFNldCB0ZXN0IHRpY2tldCBhcyBtYXN0ZXIgdGlja2V0LgpteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAnTWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRNYXN0ZXJUaWNrZXRJRCBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgQ3JlYXRlIHNlY29uZCB0ZXN0IHRpY2tldC4KbXkgJFNsYXZlVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7Cm15ICRTbGF2ZVRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFROICAgICAgICAgICA9PiAkU2xhdmVUaWNrZXROdW1iZXIsCiAgICBUaXRsZSAgICAgICAgPT4gJ1NsYXZlIHVuaXQgdGVzdCB0aWNrZXQgJyAuICRSYW5kb21JRCwKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJJRCAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4yLAogICAgQ3VzdG9tZXJVc2VyID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4yLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU2xhdmVUaWNrZXRJRCwKICAgICJUaWNrZXRDcmVhdGUoKSBUaWNrZXQgSUQgJFNsYXZlVGlja2V0SUQiLAopOwoKIyBTZXQgdGVzdCB0aWNrZXQgYXMgc2xhdmUgb2YgbWFzdGVyIHRpY2tldC4KJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAiU2xhdmVPZjokTWFzdGVyVGlja2V0TnVtYmVyIiwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRTbGF2ZVRpY2tldElEIER5bmFtaWNGaWVsZCAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgdXBkYXRlZCBhcyBTbGF2ZVRpY2tldCIsCik7CgpteSAkRXZlbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6TWFzdGVyU2xhdmUnKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRG8gbm90IHJlcGxhY2UnLAogICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IHsKICAgICAgICAgICAgRW1haWwgPT4gMCwKICAgICAgICB9LAogICAgICAgIE1hdGNoID0+ICIkVGVzdEN1c3RvbWVyVXNlckxvZ2luMSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luMSIsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDdXN0b21lciByZXBsYWNlJywKICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiB7CiAgICAgICAgICAgIEVtYWlsID0+IDEsCiAgICAgICAgfSwKICAgICAgICBNYXRjaCA9PiAiJFRlc3RDdXN0b21lclVzZXJMb2dpbjIgJFRlc3RDdXN0b21lclVzZXJMb2dpbjIiLAogICAgfSwKKTsKCm15ICRBcnRpY2xlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICBLZXkgICA9PiAnUmVwbGFjZUN1c3RvbWVyUmVhbE5hbWVPblNsYXZlQXJ0aWNsZUNvbW11bmljYXRpb25DaGFubmVscycsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPntFZmZlY3RpdmVWYWx1ZX0sCiAgICApOwogICAgbXkgJFN1Y2Nlc3MgPSAkRXZlbnRPYmplY3QtPlJ1bigKICAgICAgICBFdmVudCA9PiAnQXJ0aWNsZVNlbmQnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgICAgIH0sCiAgICAgICAgQ29uZmlnID0+IHt9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRTdWNjZXNzLAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQXJ0aWNsZVNlbmQgZXZlbnQgZXhlY3V0ZWQgY29ycmVjdGx5IiwKICAgICk7CgogICAgbXkgQEFydGljbGVzID0gJEFydGljbGVPYmplY3QtPkFydGljbGVMaXN0KAogICAgICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgKTsKCiAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckFydGljbGUoCiAgICAgICAgVGlja2V0SUQgID0+ICRBcnRpY2xlc1stMV0tPntUaWNrZXRJRH0sCiAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlc1stMV0tPntBcnRpY2xlSUR9LAogICAgKTsKCiAgICBteSAlQXJ0aWNsZSA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUdldCgKICAgICAgICBUaWNrZXRJRCAgPT4gJEFydGljbGVzWy0xXS0+e1RpY2tldElEfSwKICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVzWy0xXS0+e0FydGljbGVJRH0sCiAgICApOwoKICAgIG15ICRNYXRjaFN1Y2Nlc3MgPSAkQXJ0aWNsZXtCb2R5fSA9fiBteyRUZXN0LT57TWF0Y2h9fSAvLyAwOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRNYXRjaFN1Y2Nlc3MsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBOZXcgYXJ0aWNsZSBib2R5IG1hdGNoZWQgY3VzdG9tZXIgcmVhbCBuYW1lOiAnJFRlc3QtPntNYXRjaH0nIiwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJFVzZXJPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwpteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKbXkgJENvbmZpZ09iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBzdGFydCBSZXN0b3JlRGF0YWJzZQokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZW5hYmxlIGNvbmZpZyBNYXN0ZXJTbGF2ZTo6Rm9yd2FyZFNsYXZlcwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnTWFzdGVyU2xhdmU6OkZvcndhcmRTbGF2ZXMnLAogICAgVmFsdWUgPT4gMSwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrTVhSZWNvcmQnLAogICAgVmFsdWUgPT4gMCwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKCiMgZ2V0IHJhbmRvbSBJRApteSAkUmFuZG9tSUQgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwoKIyBnZXQgbWFzdGVyL3NsYXZlIGR5bmFtaWMgZmllbGQgZGF0YQpteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZERhdGEgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICBOYW1lID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKKTsKCiMgY3JlYXRlIG5ldyB1c2VyCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlck9iamVjdC0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgICA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgIExhbmd1YWdlID0+ICdlbicKKTsKJFNlbGYtPlRydWUoCiAgICAkVGVzdFVzZXJMb2dpbiwKICAgICJVc2VyQWRkKCkgJFRlc3RVc2VyTG9naW4iLAopOwoKIyBjcmVhdGUgbmV3IGN1c3RvbWVyIHVzZXIKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICBMYW5ndWFnZSA9PiAnZW4nLAopOwokU2VsZi0+VHJ1ZSgKICAgICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAiQ3VzdG9tZXJVc2VyQWRkKCkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiIsCik7CgojIGNyZWF0ZSBmaXJzdCB0ZXN0IHRpY2tldApteSAkTWFzdGVyVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7Cm15ICRNYXN0ZXJUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUTiAgICAgICAgICAgPT4gJE1hc3RlclRpY2tldE51bWJlciwKICAgIFRpdGxlICAgICAgICA9PiAnTWFzdGVyIHVuaXQgdGVzdCB0aWNrZXQgJyAuICRSYW5kb21JRCwKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJObyAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICwKICAgIE93bmVySUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkTWFzdGVyVGlja2V0SUQsCiAgICAiVGlja2V0Q3JlYXRlKCkgVGlja2V0IElEICRNYXN0ZXJUaWNrZXRJRCIsCik7CgpteSAkRW1haWxCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgIENoYW5uZWxOYW1lID0+ICdFbWFpbCcsCik7CgojIGNyZWF0ZSBhcnRpY2xlIGZvciB0ZXN0IHRpY2tldApteSAkQXJ0aWNsZUlEID0gJEVtYWlsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ01hc3RlciBBcnRpY2xlJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICdVbml0IHRlc3QgTWFzdGVyVGlja2V0JywKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdFbWFpbEN1c3RvbWVyJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdVbml0IHRlc3QgYXJ0aWNsZScsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIEFydGljbGUgSUQgJEFydGljbGVJRCIsCik7CgpteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICBJRCA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGREYXRhLT57SUR9LAopOwoKIyBzZXQgdGVzdCB0aWNrZXQgYXMgbWFzdGVyIHRpY2tldApteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiAnTWFzdGVyJywKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlZhbHVlU2V0KCkgVGlja2V0IElEICRNYXN0ZXJUaWNrZXRJRCBEeW5hbWljRmllbGQgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkIHVwZGF0ZWQgYXMgTWFzdGVyVGlja2V0IiwKKTsKCiMgY3JlYXRlIHNlY29uZCB0ZXN0IHRpY2tldApteSAkU2xhdmVUaWNrZXROdW1iZXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGVOdW1iZXIoKTsKbXkgJFNsYXZlVGlja2V0SUQgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVE4gICAgICAgICAgID0+ICRTbGF2ZVRpY2tldE51bWJlciwKICAgIFRpdGxlICAgICAgICA9PiAnU2xhdmUgdW5pdCB0ZXN0IHRpY2tldCAnIC4gJFJhbmRvbUlELAogICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICBDdXN0b21lcklEICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgIEN1c3RvbWVyVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luIC4gJ0Bsb2NhbHVuaXR0ZXN0LmNvbScsCiAgICBPd25lcklEICAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTbGF2ZVRpY2tldElELAogICAgIlRpY2tldENyZWF0ZSgpIFRpY2tldCBJRCAkU2xhdmVUaWNrZXRJRCIsCik7CiRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFNsYXZlVGlja2V0SUQsCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gIlNsYXZlT2Y6JE1hc3RlclRpY2tldE51bWJlciIsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IEFydGljbGVTZW5kCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY3JlYXRlIG1hc3RlciB0aWNrZXQgYXJ0aWNsZSBhbmQgZm9yd2FyZCBpdApteSAkTWFzdGVyTmV3U3ViamVjdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN1YmplY3RCdWlsZCgKICAgIFRpY2tldE51bWJlciA9PiAkTWFzdGVyVGlja2V0TnVtYmVyLAogICAgU3ViamVjdCAgICAgID0+ICdNYXN0ZXIgQXJ0aWNsZScsCiAgICBBY3Rpb24gICAgICAgPT4gJ0ZvcndhcmQnLAopOwpteSAkRm9yd2FyZEFydGljbGVJRCA9ICRFbWFpbEJhY2tlbmRPYmplY3QtPkFydGljbGVTZW5kKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJE1hc3RlclRpY2tldElELAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIEEgPGN1c3RvbWVyLWFAZXhhbXBsZS5jb20+JywKICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICRNYXN0ZXJOZXdTdWJqZWN0LAogICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ1VuaXQgdGVzdCBmb3J3YXJkZWQgYXJ0aWNsZScsCiAgICBDaGFyc2V0ICAgICAgICAgICAgICA9PiAnaXNvLTg4NTktMTUnLAogICAgTWltZVR5cGUgICAgICAgICAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ0ZvcndhcmQnLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ0ZvcndhcmRlZCBhcnRpY2xlJywKICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDAsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkFydGljbGVTZW5kKCkgRm9yd2FyZGVkIE1hc3RlclRpY2tldCBBcnRpY2xlIElEICRGb3J3YXJkQXJ0aWNsZUlEIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpteSBATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CgpteSAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBhcnRpY2xlIGlzIGNyZWF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IEFydGljbGVTZW5kJywKICAgICJNYXN0ZXJUaWNrZXQgQXJ0aWNsZVNlbmQgZXZlbnQgLSAiLAopOwoKIyBnZXQgc2xhdmUgdGlja2V0IGhpc3RvcnkKbXkgQFNsYXZlSGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKbXkgJFNsYXZlTGFzdEhpc3RvcnlFbnRyeSA9ICRTbGF2ZUhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgYXJ0aWNsZSB0cmllZCB0byBzZW5kCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZUxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXQ6IG5vIGN1c3RvbWVyIGVtYWlsIGZvdW5kLCBzZW5kIG5vIG1hc3RlciBtZXNzYWdlIHRvIGN1c3RvbWVyLicsCiAgICAiU2xhdmVUaWNrZXQgQXJ0aWNsZVNlbmQgZXZlbnQgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgQXJ0aWNsZUNyZWF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCm15ICRJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JDaGFubmVsKAogICAgQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJywKKTsKCiMgY3JlYXRlIG5vdGUgYXJ0aWNsZSBmb3IgbWFzdGVyIHRpY2tldApteSAkQXJ0aWNsZUlEQ3JlYXRlID0gJEludGVybmFsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDAsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ05vdGUgYXJ0aWNsZScsCiAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAnVW5pdCB0ZXN0IE1hc3RlclRpY2tldCcsCiAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnQWRkTm90ZScsCiAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnVW5pdCB0ZXN0IGFydGljbGUnLAogICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkQXJ0aWNsZUlEQ3JlYXRlLAogICAgIkFydGljbGVDcmVhdGUoKSBOb3RlIEFydGljbGUgSUQgJEFydGljbGVJRENyZWF0ZSBjcmVhdGVkIGZvciBNYXN0ZXJUaWNrZXQgSUQgJE1hc3RlclRpY2tldElEIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CigkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSkgPSBncmVwIHsgJF8tPntOYW1lfSBlcSAnTWFzdGVyVGlja2V0QWN0aW9uOiBBcnRpY2xlQ3JlYXRlJyB9IEBNYXN0ZXJIaXN0b3J5TGluZXM7CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IGFydGljbGUgaXMgY3JlYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogQXJ0aWNsZUNyZWF0ZScsCiAgICAiTWFzdGVyVGlja2V0IEFydGljbGVDcmVhdGUgZXZlbnQgLSAiLAopOwoKIyBnZXQgc2xhdmUgdGlja2V0IGhpc3RvcnkKQFNsYXZlSGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKKCRTbGF2ZUxhc3RIaXN0b3J5RW50cnkpID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJ0FkZGVkIGFydGljbGUgYmFzZWQgb24gbWFzdGVyIHRpY2tldC4nIH0gQFNsYXZlSGlzdG9yeUxpbmVzOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IGFydGljbGUgaXMgY3JlYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkU2xhdmVMYXN0SGlzdG9yeUVudHJ5LT57TmFtZX0sCiAgICAnQWRkZWQgYXJ0aWNsZSBiYXNlZCBvbiBtYXN0ZXIgdGlja2V0LicsCiAgICAiU2xhdmVUaWNrZXQgQXJ0aWNsZUNyZWF0ZSBldmVudCAtICIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBldmVudCBUaWNrZXRTdGF0ZVVwZGF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGNoYW5nZSBtYXN0ZXIgdGlja2V0IHN0YXRlIHRvICdvcGVuJwokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgU3RhdGUgICAgPT4gJ29wZW4nLAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUaWNrZXRTdGF0ZVNldCgpIE1hc3RlclRpY2tldCBzdGF0ZSB1cGRhdGVkIC0gJ29wZW4nIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IHN0YXRlIGlzIHVwZGF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFN0YXRlVXBkYXRlJywKICAgICJNYXN0ZXJUaWNrZXQgVGlja2V0U3RhdGVVcGRhdGUgZXZlbnQgLSAiLAopOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IHN0YXRlIGlzIHVwZGF0ZWQKbXkgJVNsYXZlVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZVRpY2tldERhdGF7U3RhdGV9LAogICAgJ29wZW4nLAogICAgIlNsYXZlVGlja2V0IHN0YXRlIHVwZGF0ZWQgLSAnb3BlbicgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgVGlja2V0UGVuZGluZ1RpbWVVcGRhdGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBjaGFuZ2UgcGVuZGluZyB0aW1lIGZvciBtYXN0ZXIgdGlja2V0CiRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVuZGluZ1RpbWVTZXQoCiAgICBZZWFyICAgICA9PiAwMDAwLAogICAgTW9udGggICAgPT4gMDAsCiAgICBEYXkgICAgICA9PiAwMCwKICAgIEhvdXIgICAgID0+IDAwLAogICAgTWludXRlICAgPT4gMDAsCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldFBlbmRpbmdUaW1lU2V0KCkgTWFzdGVyVGlja2V0IHBlbmRpbmcgdGltZSB1cGRhdGVkIiwKKTsKCiMgZ2V0IG1hc3RlciB0aWNrZXQgaGlzdG9yeQpATWFzdGVySGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgIFRpY2tldElEID0+ICRNYXN0ZXJUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5ID0gJE1hc3Rlckhpc3RvcnlMaW5lc1stMV07CgojIHZlcmlmeSBtYXN0ZXIgdGlja2V0IHBlbmRpbmcgdGltZSBpcyB1cGRhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5LT57TmFtZX0sCiAgICAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRQZW5kaW5nVGltZVVwZGF0ZScsCiAgICAiTWFzdGVyVGlja2V0IFRpY2tldFBlbmRpbmdUaW1lVXBkYXRlIGV2ZW50IC0gIiwKKTsKCiMgZ2V0IHNsYXZlIHRpY2tldCBoaXN0b3J5CkBTbGF2ZUhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTbGF2ZUxhc3RIaXN0b3J5RW50cnkgPSAkU2xhdmVIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IHBlbmRpbmcgdGltZSBpcyB1cGRhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZUxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICclJTAwLTAwLTAwIDAwOjAwJywKICAgICJTbGF2ZVRpY2tldCBwZW5kaW5nIHRpbWUgdXBkYXRlIC0gIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IFRpY2tldFByaW9yaXR5VXBkYXRlCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY2hhbmdlIG1hc3RlciB0aWNrZXQgcHJpb3JpdHkgdG8gJzIgbG93JwokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFByaW9yaXR5U2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgUHJpb3JpdHkgPT4gJzIgbG93JywKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiVGlja2V0UHJpb3JpdHlTZXQoKSBNYXN0ZXJUaWNrZXQgcHJpb3JpdHkgdXBkYXRlZCAtICcyIGxvdyciLAopOwoKIyBnZXQgbWFzdGVyIHRpY2tldCBoaXN0b3J5CkBNYXN0ZXJIaXN0b3J5TGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJE1hc3Rlckxhc3RIaXN0b3J5RW50cnkgPSAkTWFzdGVySGlzdG9yeUxpbmVzWy0xXTsKCiMgdmVyaWZ5IG1hc3RlciB0aWNrZXQgcHJpb3JpdHkgaXMgdXBkYXRlZAokU2VsZi0+SXNEZWVwbHkoCiAgICAkTWFzdGVyTGFzdEhpc3RvcnlFbnRyeS0+e05hbWV9LAogICAgJ01hc3RlclRpY2tldEFjdGlvbjogVGlja2V0UHJpb3JpdHlVcGRhdGUnLAogICAgIk1hc3RlclRpY2tldCBUaWNrZXRQcmlvcml0eVVwZGF0ZSBldmVudCAtICIsCik7CgojIHZlcmlmeSBzbGF2ZSB0aWNrZXQgcHJpb3JpdHkgaXMgdXBkYXRlZAolU2xhdmVUaWNrZXREYXRhID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgPT4gJFNsYXZlVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+SXNEZWVwbHkoCiAgICAkU2xhdmVUaWNrZXREYXRhe1ByaW9yaXR5fSwKICAgICcyIGxvdycsCiAgICAiU2xhdmVUaWNrZXQgcHJpb3JpdHkgdXBkYXRlZCAtICcyIGxvdycgLSAiLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZXZlbnQgVGlja2V0T3duZXJVcGRhdGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBjaGFuZ2UgbWFzdGVyIHRpY2tldCBvd25lcgokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgTmV3VXNlciAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldE93bmVyU2V0KCkgTWFzdGVyVGlja2V0IG93bmVyIHVwZGF0ZWQgLSAkVGVzdFVzZXJMb2dpbiIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBvd25lciBpcyB1cGRhdGVkCiRTZWxmLT5Jc0RlZXBseSgKICAgICRNYXN0ZXJMYXN0SGlzdG9yeUVudHJ5LT57TmFtZX0sCiAgICAnTWFzdGVyVGlja2V0QWN0aW9uOiBUaWNrZXRPd25lclVwZGF0ZScsCiAgICAiTWFzdGVyVGlja2V0IFRpY2tldE93bmVyVXBkYXRlIGV2ZW50IC0gIiwKKTsKCiMgdmVyaWZ5IHNsYXZlIHRpY2tldCBvd25lciBpcyB1cGRhdGVkCiVTbGF2ZVRpY2tldERhdGEgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICBUaWNrZXRJRCA9PiAkU2xhdmVUaWNrZXRJRCwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5Jc0RlZXBseSgKICAgICRTbGF2ZVRpY2tldERhdGF7T3duZXJ9LAogICAgJFRlc3RVc2VyTG9naW4sCiAgICAiU2xhdmVUaWNrZXQgb3duZXIgdXBkYXRlZCAtICIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgdGVzdCBldmVudCBUaWNrZXRSZXNwb25zaWJsZVVwZGF0ZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIHNldCBuZXcgcmVzcG9uc2libGUgdXNlciBmb3IgbWFzdGVyIHRpY2tldAokU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFJlc3BvbnNpYmxlU2V0KAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgTmV3VXNlciAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlRpY2tldFJlc3BvbnNpYmxlU2V0KCkgTWFzdGVyVGlja2V0IHJlc3BvbnNpYmxlIHVwZGF0ZWQgLSAkVGVzdFVzZXJMb2dpbiIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCByZXNwb25zaWJsZSB1c2VyIGlzIHVwZGF0ZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldFJlc3BvbnNpYmxlVXBkYXRlJywKICAgICJNYXN0ZXJUaWNrZXQgVGlja2V0UmVzcG9uc2libGVVcGRhdGUgZXZlbnQgLSAiLAopOwoKIyB2ZXJpZnkgc2xhdmUgdGlja2V0IG93bmVyIGlzIHVwZGF0ZWQKJVNsYXZlVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPklzRGVlcGx5KAogICAgJFNsYXZlVGlja2V0RGF0YXtSZXNwb25zaWJsZX0sCiAgICAkVGVzdFVzZXJMb2dpbiwKICAgICJTbGF2ZVRpY2tldCByZXNwb25zaWJsZSB1cGRhdGVkIC0gIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGV2ZW50IFRpY2tldExvY2tVcGRhdGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBsb2NrIG1hc3RlciB0aWNrZXQKJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRMb2NrU2V0KAogICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgVGlja2V0SUQgPT4gJE1hc3RlclRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUaWNrZXRMb2NrU2V0KCkgTWFzdGVyVGlja2V0IGlzIGxvY2tlZCIsCik7CgojIGdldCBtYXN0ZXIgdGlja2V0IGhpc3RvcnkKQE1hc3Rlckhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICBUaWNrZXRJRCA9PiAkTWFzdGVyVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwokTWFzdGVyTGFzdEhpc3RvcnlFbnRyeSA9ICRNYXN0ZXJIaXN0b3J5TGluZXNbLTFdOwoKIyB2ZXJpZnkgbWFzdGVyIHRpY2tldCBpcyBsb2NrZWQKJFNlbGYtPklzRGVlcGx5KAogICAgJE1hc3Rlckxhc3RIaXN0b3J5RW50cnktPntOYW1lfSwKICAgICdNYXN0ZXJUaWNrZXRBY3Rpb246IFRpY2tldExvY2tVcGRhdGUnLAogICAgIk1hc3RlclRpY2tldCBUaWNrZXRMb2NrVXBkYXRlIGV2ZW50IC0gIiwKKTsKCiMgdmVyaWZ5IHNsYXZlIHRpY2tldCBpcyBsb2NrZWQKJVNsYXZlVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEID0+ICRTbGF2ZVRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPklzRGVlcGx5KAogICAgJFNsYXZlVGlja2V0RGF0YXtMb2NrfSwKICAgICdsb2NrJywKICAgICJTbGF2ZVRpY2tldCBsb2NrIHVwZGF0ZWQgLSAiLAopOwoKIyBjbGVhbnVwIGlzIGRvbmUgYnkgUmVzdG9yZURhdGFiYXNlCgoxOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIENvcmUgPSBDb3JlIHx8IHt9OwpDb3JlLkFnZW50ID0gQ29yZS5BZ2VudCB8fCB7fTsKQ29yZS5BZ2VudC5BZG1pbiA9IENvcmUuQWdlbnQuQWRtaW4gfHwge307CgovKioKICogQG5hbWVzcGFjZSBDb3JlLkFnZW50LkFkbWluLkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlCiAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluCiAqIEBhdXRob3IgT1RSUyBBRwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBmdW5jdGlvbnMgZm9yIFN5c3RlbUNvbmZpZ3VyYXRpb24gbW9kdWxlLgogKi8KIENvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgJCgnLlNob3dXYXJuaW5nJykuYmluZCgnY2hhbmdlIGtleXVwJywgZnVuY3Rpb24gKCkgewogICAgICAgICQoJ3AuV2FybmluZycpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgIH0pOwogICAgQ29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGQuVmFsaWRhdGlvbkluaXQoKTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkTWFzdGVyU2xhdmUgfHwge30pKTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gJG9yaWdpbjogb3RycyAtIDI0MzNhMTM1ODZmNmQ3NDhlYjNjNmNkODdmYTUxNTcxYzM4YzllNGYgLSB2YXIvaHR0cGQvaHRkb2NzL2pzL0NvcmUuQWdlbnQuVGlja2V0QWN0aW9uQ29tbW9uLmpzCi8vIC0tCi8vIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCi8vIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsKQ29yZS5BZ2VudCA9IENvcmUuQWdlbnQgfHwge307CgovLyAtLS0KLy8gT1RSU01hc3RlclNsYXZlCi8vIC0tLQovLy8qKgovLyAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5UaWNrZXRBY3Rpb25Db21tb24KLy8gKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAovLyAqIEBhdXRob3IgT1RSUyBBRwovLyAqIEBkZXNjcmlwdGlvbgovLyAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbi4KLy8gKi8KLy9Db3JlLkFnZW50LlRpY2tldEFjdGlvbkNvbW1vbiA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5UaWNrZXRNYXN0ZXJTbGF2ZQogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAogKiBAYXV0aG9yIE9UUlMgQUcKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBUaWNrZXRNYXN0ZXJTbGF2ZS4KICovCkNvcmUuQWdlbnQuVGlja2V0TWFzdGVyU2xhdmUgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7Ci8vIC0tLQoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuVGlja2V0QWN0aW9uQ29tbW9uCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBtb2R1bGUgZnVuY3Rpb25hbGl0eS4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgdmFyIER5bmFtaWNGaWVsZE5hbWVzID0gQ29yZS5Db25maWcuR2V0KCdEeW5hbWljRmllbGROYW1lcycpLAogICAgICAgICAgICBGaWVsZHMgPSBbJ1R5cGVJRCcsICdTZXJ2aWNlSUQnLCAnU0xBSUQnLCAnTmV3T3duZXJJRCcsICdOZXdSZXNwb25zaWJsZUlEJywgJ05ld1N0YXRlSUQnLCAnTmV3UHJpb3JpdHlJRCddLAogICAgICAgICAgICBNb2RpZmllZEZpZWxkczsKCiAgICAgICAgLy8gQmluZCBldmVudHMgdG8gc3BlY2lmaWMgZmllbGRzCiAgICAgICAgJC5lYWNoKEZpZWxkcywgZnVuY3Rpb24oSW5kZXgsIFZhbHVlKSB7CiAgICAgICAgICAgIE1vZGlmaWVkRmllbGRzID0gQ29yZS5EYXRhLkNvcHlPYmplY3QoRmllbGRzKS5jb25jYXQoRHluYW1pY0ZpZWxkTmFtZXMpOwogICAgICAgICAgICBNb2RpZmllZEZpZWxkcy5zcGxpY2UoSW5kZXgsIDEpOwoKICAgICAgICAgICAgRmllbGRVcGRhdGUoVmFsdWUsIE1vZGlmaWVkRmllbGRzKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gQmluZCBldmVudCB0byBRdWV1ZSBmaWVsZC4KICAgICAgICAkKCcjTmV3UXVldWVJRCcpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNDb21wb3NlJyksICdBSkFYVXBkYXRlJywgJ05ld1F1ZXVlSUQnLCBbJ1R5cGVJRCcsICdTZXJ2aWNlSUQnLCAnTmV3T3duZXJJRCcsICdOZXdSZXNwb25zaWJsZUlEJywgJ05ld1N0YXRlSUQnLCAnTmV3UHJpb3JpdHlJRCcsICdTdGFuZGFyZFRlbXBsYXRlSUQnXS5jb25jYXQoRHluYW1pY0ZpZWxkTmFtZXMpKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gQmluZCBldmVudCB0byBTdGFuZGFyZFRlbXBsYXRlIGZpZWxkLgogICAgICAgICQoJyNTdGFuZGFyZFRlbXBsYXRlSUQnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDb3JlLkFnZW50LlRpY2tldEFjdGlvbi5Db25maXJtVGVtcGxhdGVPdmVyd3JpdGUoJ1JpY2hUZXh0JywgJCh0aGlzKSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJCgnI0NvbXBvc2UnKSwgJ0FKQVhVcGRhdGUnLCAnU3RhbmRhcmRUZW1wbGF0ZUlEJywgWydSaWNoVGV4dEZpZWxkJ10pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAvLyBCaW5kIGNsaWNrIGV2ZW50IHRvIENyZWF0ZUFydGljbGUgY2hlY2tib3ggYW5kIHRvZ2dsZSB3aWRnZXQuCiAgICAgICAgJCgnI0NyZWF0ZUFydGljbGUsICNXaWRnZXRBcnRpY2xlIC5XaWRnZXRBY3Rpb24uVG9nZ2xlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCcjV2lkZ2V0QXJ0aWNsZSAuVmFsaWRhdGVfRGVwZW5kaW5nUmVxdWlyZWRBTkQuVmFsaWRhdGVfRGVwZW5kaW5nX0NyZWF0ZUFydGljbGUnKS5lYWNoKGZ1bmN0aW9uIChJbmRleCwgRWxlbWVudCkgewogICAgICAgICAgICAgICAgdmFyICRFbGVtZW50ID0gJChFbGVtZW50KTsKICAgICAgICAgICAgICAgIHZhciBDbG9zZXN0Q2xhc3MgPSAnRmllbGQnOwogICAgICAgICAgICAgICAgaWYgKCRFbGVtZW50LmF0dHIoJ2lkJykgPT09ICdSaWNoVGV4dCcpIHsKICAgICAgICAgICAgICAgICAgICBDbG9zZXN0Q2xhc3MgPSAnUmljaFRleHRGaWVsZCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJCgnI0NyZWF0ZUFydGljbGUnKS5wcm9wKCdjaGVja2VkJykgJiYgJCgnI1dpZGdldEFydGljbGUnKS5oYXNDbGFzcygnRXhwYW5kZWQnKSkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmNsb3Nlc3QoJy4nICsgQ2xvc2VzdENsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAucHJldignbGFiZWwnKQogICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ01hbmRhdG9yeScpCiAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVwZW5kKCc8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuY2xvc2VzdCgnLicgKyBDbG9zZXN0Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgIC5wcmV2KCdsYWJlbCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnTWFuZGF0b3J5JykKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NwYW4nKQogICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLlVuSGlnaGxpZ2h0RXJyb3IoRWxlbWVudCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBGaWVsZFVwZGF0ZQogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuVGlja2V0QWN0aW9uQ29tbW9uCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBWYWx1ZSAtIEZpZWxkSUQKICAgICAqIEBwYXJhbSB7QXJyYXl9IE1vZGlmaWVkRmllbGRzIC0gRmllbGRzCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgQ3JlYXRlIG9uIGNoYW5nZSBldmVudCBoYW5kbGVyCiAgICAgKi8KICAgIGZ1bmN0aW9uIEZpZWxkVXBkYXRlIChWYWx1ZSwgTW9kaWZpZWRGaWVsZHMpIHsKICAgICAgICAkKCcjJyArIFZhbHVlKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29tcG9zZScpLCAnQUpBWFVwZGF0ZScsIFZhbHVlLCBNb2RpZmllZEZpZWxkcyk7CiAgICAgICAgfSk7CiAgICB9CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKLy8gLS0tCi8vIE9UUlNNYXN0ZXJTbGF2ZQovLyAtLS0KLy99KENvcmUuQWdlbnQuVGlja2V0QWN0aW9uQ29tbW9uIHx8IHt9KSk7Cn0oQ29yZS5BZ2VudC5UaWNrZXRNYXN0ZXJTbGF2ZSB8fCB7fSkpOwovLyAtLS0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpPVFJTTWFzdGVyU2xhdmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAopOwoKPWhlYWQxIE5BTUUKCnZhcjo6cGFja2FnZXNldHVwOjpPVFJTTWFzdGVyU2xhdmUgLSBjb2RlIHRvIGV4ZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgo9aGVhZDEgU1lOT1BTSVMKCkZ1bmN0aW9ucyBmb3IgaW5zdGFsbGluZyB0aGUgT1RSU01hc3RlclNsYXZlIHBhY2thZ2UuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENvZGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6T1RSU01hc3RlclNsYXZlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgRm9yY2UgYSByZWxvYWQgb2YgWlpaQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAkS2VybmVsOjpPTS0+T2JqZWN0c0Rpc2NhcmQoCiAgICAgICAgT2JqZWN0cyA9PiBbJ0tlcm5lbDo6Q29uZmlnJ10sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGRzIGxpc3QKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkc0xpc3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICBPYmplY3RUeXBlID0+IFsnVGlja2V0J10sCiAgICApOwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntEeW5hbWljRmllbGRzTGlzdH0gKSApIHsKICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZHNMaXN0fSA9IFtdOwogICAgfQoKICAgICMgY3JlYXRlIGEgZHluYW1pYyBmaWVsZCBsb29rdXAgdGFibGUgKGJ5IG5hbWUpCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkc0xpc3R9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGQ7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkLT57TmFtZX07CiAgICAgICAgJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9LT57ICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHdlIGdvdCBhbiBpbnN0YWxsZWQgdmVyc2lvbiBvZiBNYXN0ZXJTbGF2ZSwgbWlncmF0ZSB0aGUgZGF0YQogICAgIyBvdGhlcndpc2Ugc2V0IHRoZSBkeW5hbWljIGZpZWxkcwogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQgPSAkU2VsZi0+X0NoZWNrTWFzdGVyU2xhdmVEYXRhKCk7CiAgICBpZiAoJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQpIHsKCiAgICAgICAgJFNlbGYtPl9NaWdyYXRlT1RSU01hc3RlclNsYXZlKAogICAgICAgICAgICBEeW5hbWljRmllbGRJRCA9PiAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCwKICAgICAgICAgICAgTWFzdGVyU2xhdmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPl9TZXREeW5hbWljRmllbGRzKCk7CiAgICB9CgogICAgIyBzZXQgZGFzaGJvYXJkIGNvbmZpZyBpZiBuZWVkZWQKICAgICRTZWxmLT5fU2V0RGFzaGJvYXJkQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPl9TZXREeW5hbWljRmllbGRzKCk7CgogICAgIyBzZXQgZGFzaGJvYXJkIGNvbmZpZyBpZiBuZWVkZWQKICAgICRTZWxmLT5fU2V0RGFzaGJvYXJkQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlMTI1KCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQgZm9yIHZlcnNpb25zIHByaW9yIHRvIDEuMi41CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZTEyNSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlMTI1IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB1cGdyYWRlL21pZ3JhdGUgb25seSBpbiBjYXNlIHRoZXJlIGlzIGEgaW5zdGFsbGVkCiAgICAjIHZlcnNpb24gb2YgT1RSU01hc3RlclNsYXZlIHZlcnNpb24gPCAxLjIuNQogICAgJFNlbGYtPl9NaWdyYXRlT1RSU01hc3RlclNsYXZlKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDQuMC45MS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCiAgICAkU2VsZi0+X01pZ3JhdGVDb25maWdzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVbmluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVW5pbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5fUmVtb3ZlRHluYW1pY0ZpZWxkcygpOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX1NldER5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG5hbWVzIGZyb20gU3lzQ29uZmlnCiAgICBteSAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ01hc3RlclNsYXZlOjpEeW5hbWljRmllbGQnKSB8fCAnTWFzdGVyU2xhdmUnOwoKICAgICMgc2V0IGF0dHJpYnV0ZXMgb2YgbmV3IGR5bmFtaWMgZmllbGRzCiAgICBteSAlTmV3RHluYW1pY0ZpZWxkcyA9ICgKICAgICAgICAkTWFzdGVyU2xhdmVEeW5hbWljRmllbGQgPT4gewogICAgICAgICAgICBOYW1lICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgTGFiZWwgICAgICA9PiAnTWFzdGVyIFRpY2tldCcsCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJ01hc3RlclNsYXZlJywKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgICAgICBEZWZhdWx0VmFsdWUgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlcyA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgTWF4RmllbGRPcmRlciAobmVlZGVkIGZvciBhZGRpbmcgbmV3IGR5bmFtaWMgZmllbGRzKQogICAgbXkgJE1heEZpZWxkT3JkZXIgPSAwOwogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0R5bmFtaWNGaWVsZHNMaXN0fSApICkgewogICAgICAgICRNYXhGaWVsZE9yZGVyID0gMTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkc0xpc3R9IH0gKSB7CiAgICAgICAgICAgIGlmICggaW50ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZE9yZGVyfSA+IGludCAkTWF4RmllbGRPcmRlciApIHsKICAgICAgICAgICAgICAgICRNYXhGaWVsZE9yZGVyID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkT3JkZXJ9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIGZvciBteSAkTmV3RmllbGROYW1lICggc29ydCBrZXlzICVOZXdEeW5hbWljRmllbGRzICkgewoKICAgICAgICAjIGNoZWNrIGlmIGR5bmFtaWMgZmllbGQgYWxyZWFkeSBleGlzdHMKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0R5bmFtaWNGaWVsZExvb2t1cH0tPnskTmV3RmllbGROYW1lfSApICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9LT57JE5ld0ZpZWxkTmFtZX07CgogICAgICAgICAgICBteSAkVXBkYXRlOwoKICAgICAgICAgICAgIyB1cGRhdGUgZmllbGQgY29uZmlndXJhdGlvbiBpZiBpdCB3YXMgb3RoZXIgdGhhbiBNYXN0ZXJTbGF2ZSAoZS5nLiBEcm9wZG93bikKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBuZSAnTWFzdGVyU2xhdmUnICkgewogICAgICAgICAgICAgICAgbXkgJElEID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfTsKICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZENvbmZpZ30gPSAoICV7JER5bmFtaWNGaWVsZENvbmZpZ30sICV7ICROZXdEeW5hbWljRmllbGRzeyROZXdGaWVsZE5hbWV9IH0gKTsKICAgICAgICAgICAgICAgICRVcGRhdGUgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIGR5bmFtaWMgZmllbGQgZXhpc3RzIG1ha2Ugc3VyZSBpcyB2YWxpZAogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntWYWxpZElEfSBuZSAnMScgKSB7CiAgICAgICAgICAgICAgICAkVXBkYXRlID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRVcGRhdGUpIHsKCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAleyREeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSZW9yZGVyID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBzZXQgZHluYW1pYyBmaWVsZCAnJE5ld0ZpZWxkTmFtZScgdG8gdmFsaWQhIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ludGVybmFsRmllbGR9IG5lICcxJyApIHsKCiAgICAgICAgICAgICAgICAjIHVwZGF0ZSBJbnRlcm5hbEZpZWxkIHZhbHVlIG1hbnVhbGx5IHNpbmNlIEFQSSBkb2VzIG5vdCBzdXBwb3J0CiAgICAgICAgICAgICAgICAjIGludGVybmFsX2ZpZWxkIHVwZGF0ZQogICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICAgICAgVVBEQVRFIGR5bmFtaWNfZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgU0VUIGludGVybmFsX2ZpZWxkID0gMQogICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHNldCBkeW5hbWljIGZpZWxkICckTmV3RmllbGROYW1lJyBhcyBpbnRlcm5hbCEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjbGVhbiBkeW5hbWljIGZpZWxkIGNhY2hlCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgY3JlYXRlIGl0CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRNYXhGaWVsZE9yZGVyKys7CiAgICAgICAgICAgIG15ICRJRCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEFkZCgKICAgICAgICAgICAgICAgICV7ICROZXdEeW5hbWljRmllbGRzeyROZXdGaWVsZE5hbWV9IH0sCiAgICAgICAgICAgICAgICBGaWVsZE9yZGVyID0+ICRNYXhGaWVsZE9yZGVyLAogICAgICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJElEICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGFkZCBkeW5hbWljIGZpZWxkICckTmV3RmllbGROYW1lJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGVuYWJsZSBkeW5hbWljIGZpZWxkIGZvciB0aWNrZXQgem9vbQogICAgIyBnZXQgb2xkIGNvbmZpZ3VyYXRpb24KICAgIG15ICRXaW5kb3dDb25maWcgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20nKTsKICAgIG15ICVEeW5hbWljRmllbGRzID0gJXsgJFdpbmRvd0NvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30gfTsKCiAgICAkRHluYW1pY0ZpZWxkc3skTWFzdGVyU2xhdmVEeW5hbWljRmllbGR9ID0KICAgICAgICBkZWZpbmVkICREeW5hbWljRmllbGRzeyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0KICAgICAgICA/ICREeW5hbWljRmllbGRzeyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0KICAgICAgICA6IDE7CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIHJldHVybiAwIGlmICEkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdPVFJTTWFzdGVyU2xhdmUgLSBkZXBsb3kgQWdlbnRUaWNrZXRab29tIGR5bmFtaWMgZmllbGRzJywKICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gXCVEeW5hbWljRmllbGRzLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlT1RSU01hc3RlclNsYXZlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBuYW1lcyBmcm9tIFN5c0NvbmZpZwogICAgbXkgJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkID0gJENvbmZpZ09iamVjdC0+R2V0KCdNYXN0ZXJTbGF2ZTo6RHluYW1pY0ZpZWxkJykKICAgICAgICB8fCAnTWFzdGVyU2xhdmUnOwoKICAgICMgY2hlY2sgaWYgdGhlcmUgaXNuJ3QgYWxyZWFkeSBhIGR5bmFtaWMgZmllbGQgd2l0aCB0aGUgZGVzdGluZWQgbmFtZQogICAgcmV0dXJuIDEgaWYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfS0+eyRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZH0gKTsKCiAgICBteSAkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRDsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgd2UgZ290IGEgRHluYW1pY0ZpZWxkSUQKICAgIGlmICggJFBhcmFte0R5bmFtaWNGaWVsZElEfSApIHsKICAgICAgICAkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCA9ICRQYXJhbXtEeW5hbWljRmllbGRJRH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBpZiBub3Q6IGdldCB0aGUgbWlncmF0ZWQgZmllbGQgSUQgYnkgc2VhcmNoaW5nIGZvciBwb3NzaWJsZSBkYXRhCiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gIlNFTEVDVCBkZnYuZmllbGRfaWQgRlJPTSBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdiAiCiAgICAgICAgICAgICAgICAuICJXSEVSRSBkZnYudmFsdWVfdGV4dCBMSUtFICdTbGF2ZU9mOiUnIE9SIGRmdi52YWx1ZV90ZXh0ID0gJ01hc3RlciciLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkT2xkTWFzdGVyU2xhdmVEeW5hbWljRmllbGRJRCA9ICRSb3dbMF07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgd2UgZm91bmQgYSB2YWxpZCBJRAogICAgcmV0dXJuIDAgaWYgISRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElEOwoKICAgIGlmICggJFBhcmFte01hc3RlclNsYXZlfSApIHsKICAgICAgICAkU2VsZi0+X01pZ3JhdGVNYXN0ZXJTbGF2ZURhdGEoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+ICRPbGRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZElELAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBkeW5hbWljIGZpZWxkICBkYXRhIChmb3IgZmllbGQgb3JkZXIgZXRjLikKICAgIG15ICRPbGREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQsCiAgICApOwoKICAgIHJldHVybiAwIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkT2xkRHluYW1pY0ZpZWxkKTsKCiAgICAjIHVwZGF0ZSB0aGUgbmFtZSBvZiB0aGUgZHluYW1pYyBmaWVsZCB0byBNYXN0ZXJTbGF2ZSBhbmQgc3RvcmUgaXQKICAgICMgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24KICAgIHJldHVybiAwIGlmICEkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgJXskT2xkRHluYW1pY0ZpZWxkfSwKICAgICAgICBOYW1lICAgICAgID0+ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCwKICAgICAgICBMYWJlbCAgICAgID0+ICdNYXN0ZXIgVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgID0+ICdNYXN0ZXJTbGF2ZScsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgID0+ICcnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgPT4gMSwKICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDEsCiAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgICAgPT4gMCwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgICMgdXBkYXRlIEludGVybmFsRmllbGQgdmFsdWUgbWFudWFsbHkgc2luY2UgQVBJIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJuYWxfZmllbGQgdXBkYXRlCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIGR5bmFtaWNfZmllbGQKICAgICAgICAgICAgU0VUIGludGVybmFsX2ZpZWxkID0gMQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJE9sZE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkSUQtPntJRH0gXSwKICAgICk7CiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBzZXQgZHluYW1pYyBmaWVsZCAnJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkJyBhcyBpbnRlcm5hbCEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjbGVhbiBkeW5hbWljIGZpZWxkIGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdEeW5hbWljRmllbGQnLAogICAgKTsKCiAgICAjIGFjdGl2YXRlIHRoZSBEeW5hbWljRmllbGQgaW4gdGlja2V0IGRldGFpbHMgYmxvY2sKICAgIG15ICRLZXlTdHJpbmcgICAgICAgPSAiVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tIjsKICAgIG15ICRFeGlzdGluZ1NldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEtleVN0cmluZykgfHwge307CiAgICBteSAlVmFsdWVzVG9TZXQgICAgID0gJXsgJEV4aXN0aW5nU2V0dGluZy0+e0R5bmFtaWNGaWVsZH0gfHwge30gfTsKICAgICRWYWx1ZXNUb1NldHtNYXN0ZXJTbGF2ZX0gPSAxOwoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdPVFJTTWFzdGVyU2xhdmUgLSBkZXBsb3kgZHluYW1pYyBmaWVsZHMuJywKICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRLZXlTdHJpbmcgLiAiIyMjRHluYW1pY0ZpZWxkIiwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFwlVmFsdWVzVG9TZXQsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX0NoZWNrTWFzdGVyU2xhdmVEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+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+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZWxldGUgZHluYW1pYyBmaWVsZCAnJE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZWxldGUgdmFsdWVzIGZvciBkeW5hbWljIGZpZWxkICckTWFzdGVyU2xhdmVEeW5hbWljRmllbGQnISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgIyBkaXNhYmxlIFN5c0NvbmZpZyBzZXR0aW5ncwogICAgcmV0dXJuIGlmICEkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdPVFJTTWFzdGVyU2xhdmUgLSAjIGRpc2FibGUgU3lzQ29uZmlnIHNldHRpbmdzLicsCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkczo6RHJpdmVyIyMjTWFzdGVyU2xhdmUnLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lICA9PiAnTWFzdGVyIC8gU2xhdmUnLAogICAgICAgICAgICAgICAgICAgIE1vZHVsZSAgICAgICA9PiAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpNYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGlhbG9nID0+ICdBZG1pbkR5bmFtaWNGaWVsZE1hc3RlclNsYXZlJywKICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZEFkZCAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBJc1ZhbGlkID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdQcmVBcHBsaWNhdGlvbk1vZHVsZSMjI0FnZW50UHJlTWFzdGVyU2xhdmUnLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJ0tlcm5lbDo6TW9kdWxlczo6QWdlbnRQcmVNYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZGlzY2FyZCBjb25maWcgb2JqZWN0IGFuZCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgdG8gcHJldmVudCBlcnJvciBtZXNzYWdlcyBkdWUgbWlzc2luZyBkcml2ZXIKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RzRGlzY2FyZCgKICAgICAgICBPYmplY3RzID0+IFsgJ0tlcm5lbDo6Q29uZmlnJywgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnIF0sCiAgICApOwoKICAgICMgZGlzYWJsZSBkeW5hbWljIGZpZWxkIGZvciB0aWNrZXQgem9vbQogICAgIyBnZXQgb2xkIGNvbmZpZ3VyYXRpb24KICAgIG15ICRXaW5kb3dDb25maWcgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20nKTsKICAgIG15ICVEeW5hbWljRmllbGRzID0gJXsgJFdpbmRvd0NvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30gfTsKCiAgICBpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZHN7JE1hc3RlclNsYXZlRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAkRHluYW1pY0ZpZWxkc3skTWFzdGVyU2xhdmVEeW5hbWljRmllbGR9ID0gMDsKICAgIH0KCiAgICByZXR1cm4gaWYgISRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ09UUlNNYXN0ZXJTbGF2ZSAtIGRlcGxveSBkeW5hbWljIGZpZWxkcy4nLAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbSMjI0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcJUR5bmFtaWNGaWVsZHMsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX1NldERhc2hib2FyZENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgbmFtZXMgZnJvbSBTeXNDb25maWcKICAgIG15ICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnTWFzdGVyU2xhdmU6OkR5bmFtaWNGaWVsZCcpIHx8ICdNYXN0ZXJTbGF2ZSc7CgogICAgIyBpZiBNYXN0ZXJTbGF2ZSBkeW5hbWljIGZpZWxkIGlzICdNYXN0ZXJTbGF2ZScgdGhlIGNvbmZpZyBpcyBhbHJlYWR5IHNldCwgbm90aGluZyBlbHNlIHRvIGRvCiAgICByZXR1cm4gMSBpZiAoICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCBlcSAnTWFzdGVyU2xhdmUnICk7CgogICAgIyBvdGhlcndpc2Ugc2V0IHRoZSBuZXcgY29uZmlnCiAgICAjIGF0dHJpYnV0ZXMgY29tbW9uIGZvciBib3RoIE1hc3RlciBhbmQgU2xhdmUgd2lkZ2V0cwogICAgbXkgJUNvbW1vbkNvbmZpZyA9ICgKICAgICAgICBNb2R1bGUgICAgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkVGlja2V0R2VuZXJpYycsCiAgICAgICAgRmlsdGVyICAgICAgICA9PiAnQWxsJywKICAgICAgICBUaW1lICAgICAgICAgID0+ICdBZ2UnLAogICAgICAgIExpbWl0ICAgICAgICAgPT4gMTAsCiAgICAgICAgUGVybWlzc2lvbiAgICA9PiAncncnLAogICAgICAgIEJsb2NrICAgICAgICAgPT4gJ0NvbnRlbnRMYXJnZScsCiAgICAgICAgR3JvdXAgICAgICAgICA9PiAnJywKICAgICAgICBEZWZhdWx0ICAgICAgID0+IDEsCiAgICAgICAgQ2FjaGVUVExMb2NhbCA9PiAwLjUsCiAgICApOwoKICAgICMgYXR0cmlidXRlcyBmb3IgTWFzdGVyIHdpZGdldAogICAgbXkgJU1hc3RlckNvbmZpZyA9ICgKICAgICAgICBUaXRsZSAgICAgICA9PiAnTWFzdGVyIFRpY2tldHMnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdBbGwgbWFzdGVyIHRpY2tldHMnLAogICAgICAgIEF0dHJpYnV0ZXMgID0+ICdEeW5hbWljRmllbGRfJyAuICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCAuICdfRXF1YWxzPU1hc3RlcjsnLAogICAgKTsKCiAgICAjIGF0dHJpYnV0ZXMgZm9yIFNsYXZlIHdpZGdldAogICAgbXkgJVNsYXZlQ29uZmlnID0gKAogICAgICAgIFRpdGxlICAgICAgID0+ICdTbGF2ZSBUaWNrZXRzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQWxsIHNsYXZlIHRpY2tldHMnLAogICAgICAgIEF0dHJpYnV0ZXMgID0+ICdEeW5hbWljRmllbGRfJyAuICRNYXN0ZXJTbGF2ZUR5bmFtaWNGaWVsZCAuICdfTGlrZT1TbGF2ZSo7JywKICAgICk7CgogICAgIyBnZXQgU3lzQ29uZmlnIG9iamVjdAogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAjIHdyaXRlIGNvbmZpZ3VyYXRpb25zCiAgICByZXR1cm4gaWYgISRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ09UUlNNYXN0ZXJTbGF2ZSAtIGRlcGxveSBkeW5hbWljIGZpZWxkcyBmb3IgZGFzaGJvYXJkLicsCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzA5MDAtVGlja2V0TWFzdGVyJywKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IHsKICAgICAgICAgICAgICAgICAgICAlQ29tbW9uQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICVNYXN0ZXJDb25maWcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgSXNWYWxpZCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzA5MTAtVGlja2V0U2xhdmUnLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICVDb21tb25Db25maWcsCiAgICAgICAgICAgICAgICAgICAgJVNsYXZlQ29uZmlnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIElzVmFsaWQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlQ29uZmlncyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIG1pZ3JhdGUgbWFzdGVyIHNsYXZlIHRpY2tldCBtZW51IFN5c0NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBtYXN0ZXIgc2xhdmUgU3lzQ29uZmlnCiAgICBteSAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZScpOwoKICAgIGlmICggJFNldHRpbmctPnsnNDgwLU1hc3RlclNsYXZlJ30tPntNb2R1bGV9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICAkU2V0dGluZy0+eyc0ODAtTWFzdGVyU2xhdmUnfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldE1lbnU6OkdlbmVyaWMiOwoKICAgICAgICAjIHNldCBuZXcgc2V0dGluZwogICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICBDb21tZW50cyA9PiAnT1RSU01hc3RlclNsYXZlIC0gZGVwbG95IG1lbnUgbW9kdWxlIHNldHRpbmdzLicsCiAgICAgICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzQ4MC1NYXN0ZXJTbGF2ZScsCiAgICAgICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmctPnsnNDgwLU1hc3RlclNsYXZlJ30sCiAgICAgICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG1pZ3JhdGUgbWFzdGVyIHNsYXZlIGRhc2hib2FyZCBTeXNDb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3IgbWFzdGVyIHNsYXZlIFN5c0NvbmZpZwogICAgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Rhc2hib2FyZEJhY2tlbmQnKTsKCiAgICBCQUNLRU5EOgogICAgZm9yIG15ICRCYWNrZW5kIChxdygwOTAwLVRpY2tldE1hc3RlciAwOTEwLVRpY2tldFNsYXZlKSkgewogICAgICAgIG5leHQgQkFDS0VORCBpZiAhJFNldHRpbmctPnskQmFja2VuZH0tPntNb2R1bGV9OwoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICAkU2V0dGluZy0+eyRCYWNrZW5kfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6VGlja2V0R2VuZXJpYyI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgIENvbW1lbnRzID0+ICdPVFJTTWFzdGVyU2xhdmUgLSBkZXBsb3kgZGFzaGJvYXJkIGJhY2tlbmQgc2V0dGluZ3MuJywKICAgICAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICJEYXNoYm9hcmRCYWNrZW5kIyMjJEJhY2tlbmQiLAogICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLT57JEJhY2tlbmR9LAogICAgICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTkxMjEzMTMyNDMxWikKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPiFHCGOCdc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IG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE5LTEyLTEzVDEzOjI0OjMxWjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTEyLTEzVDEzOjI0OjMxWjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMTktMTItMTNUMTM6MjQ6MzFaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+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iKw1weL1kg+iF2KWX26n7gutFZqDN8tX6B4v+2S7sgfrTnwcTRvs+FkkSCYEMYV56T6TPqxOEYYiLM37npDw9x+YPY3BCmVuZHN0cmVhbQplbmRvYmoKNTEgMCBvYmoKMTcxOQplbmRvYmoKNTIgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNTAgMCBSCj4+CmVuZG9iago1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjMyIDY3OS42MjkgNTQwLjAgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTUzLjg1OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjY3LjYyOSA1MzkuOTk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjU1LjYyOSAxNzYuMjY2IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NTUuNjI5IDUzOS45OTggNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDQxMS4zNDYgbnVsbF0KPj4KZW5kb2JqCjYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMTk4Ljk5NiA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQzLjYyOSA1MzkuOTk4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAxMDkuODkyIG51bGxdCj4+CmVuZG9iago2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzEuNjI5IDI1MS40NDYgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDYzMS42MjkgNTM5Ljk5NyA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNjU3LjIgbnVsbF0KPj4KZW5kb2JqCjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxOS42MjkgMjA5LjA3NSA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjE5LjYyOSA1MzkuOTk4IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA2MDUuMiBudWxsXQo+PgplbmRvYmoKNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjA3LjYyOSAzMTMuNDUgNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDYwNy42MjkgNTQwLjM0OCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTk1LjYyOSAyMDQuOTc2IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1OTUuNjI5IDUzOS45OTggNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDcwMC44IG51bGxdCj4+CmVuZG9iago3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODMuNjI5IDE3My40MDggNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU4My42MjkgNTM5Ljk5OCA1OTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM0IDAgUiAvWFlaIDcyLjAgNjI2LjQgbnVsbF0KPj4KZW5kb2JqCjgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3MS42MjkgMTY0LjkxMyA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44MDcgNTcxLjYyOSA1NDAuMTY3IDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzQgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTU5LjYyOSAyMDkuNTUyIDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NTkuNjI5IDUzOS45OTggNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDQ4OS42IG51bGxdCj4+CmVuZG9iago4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NDcuNjI5IDIyMS43OTQgNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU0Ny42MjkgNTM5Ljk5OCA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTM1LjYyOSAxNDkuMzkgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUzNS42MjkgNTM5Ljk5OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNjc4LjggbnVsbF0KPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUyMy42MjkgMTk5LjAwNiA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTIzLjYyOSA1MzkuOTk4IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA2MDIuNCBudWxsXQo+PgplbmRvYmoKOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAxOTQuNjQxIDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1MTEuNjI5IDUzOS45OTggNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQ5OS42MjkgMTYxLjc4NCA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQ5OS42MjkgNTM5Ljk5OCA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDY2Ny45MTUgbnVsbF0KPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0ODcuNjI5IDM3NS42NTcgNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDg3LjYyOSA1MzkuOTk3IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDYwNi40MTQgbnVsbF0KPj4KZW5kb2JqCjEwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDMzNC4yNjQgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNDc1LjYyOSA1NDAuNjk3IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDQ5Ni45MTMgbnVsbF0KPj4KZW5kb2JqCjEwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjMuNjI5IDMyOC4zNjcgNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNDYzLjYyOSA1NDAuNjk3IDQ3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDM4Ny40MTIgbnVsbF0KPj4KZW5kb2JqCjExMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NTEuNjI5IDMxNi45ODkgNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDUxLjYyOSA1MzkuOTk4IDQ2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDMyNS45MTEgbnVsbF0KPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MzkuNjI5IDM5My4wMTggNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDM5LjYyOSA1MzkuOTk3IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDI2NC40MSBudWxsXQo+PgplbmRvYmoKMTE3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQyNy42MjkgMzUzLjcwNSA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4OCA0MjcuNjI5IDU0MC4zNDggNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMjAyLjkwOSBudWxsXQo+PgplbmRvYmoKMTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQxNS42MjkgNTA1Ljc0IDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MDMuNjI5IDE0OC42NCA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjY0IDQwMy42MjkgNTQwLjAgNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMTI3LjAwOCBudWxsXQo+PgplbmRvYmoKMTI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM5MS42MjkgNTA3LjM2NyA0MDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjA0NiAzOTEuNjI5IDU0MC40MDYgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNzkuNjI5IDUwMC44NjcgMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MjQgMzc5LjYyOSA1MzkuOTg0IDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDYzMC40MDYgbnVsbF0KPj4KZW5kb2JqCjEzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDQ2Ny44OTMgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODcgMzY3LjYyOSA1NDAuMzQ3IDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDU1Mi44MTIgbnVsbF0KPj4KZW5kb2JqCjEzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNTUuNjI5IDI4NS4wMDYgMzY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzU1LjYyOSA1MzkuOTk4IDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDQ4OS42MTggbnVsbF0KPj4KZW5kb2JqCjEzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNDMuNjI5IDI2Mi41MDUgMzUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzQzLjYyOSA1MzkuOTk4IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDQyNi40MjQgbnVsbF0KPj4KZW5kb2JqCjEzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMzEuNjI5IDMwMi4yODggMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzMxLjYyOSA1MzkuOTk3IDM0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDM1MS4yMyBudWxsXQo+PgplbmRvYmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMxOS42MjkgMjY4LjA0MyAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMTkuNjI5IDUzOS45OTggMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMjY0LjAzNiBudWxsXQo+PgplbmRvYmoKMTQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMwNy42MjkgMzMwLjE1OCAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0NyAzMDcuNjI5IDU0MC4yMDcgMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMTg4Ljg0MiBudWxsXQo+PgplbmRvYmoKMTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI5NS42MjkgMzM3LjM5OSAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCAyOTUuNjI5IDU0MC4yMDggMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMTEzLjY0OCBudWxsXQo+PgplbmRvYmoKMTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI4My42MjkgMjg1LjYxNCAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyODMuNjI5IDUzOS45OTcgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNjk2LjAgbnVsbF0KPj4KZW5kb2JqCjE1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyNzEuNjI5IDI5Mi44NTUgMjgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjcxLjYyOSA1MzkuOTk3IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDYyMC44MDYgbnVsbF0KPj4KZW5kb2JqCjE1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyNTkuNjI5IDM2Ni44ODIgMjY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjU5LjYyOSA1MzkuOTk3IDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDU1Ny42MTIgbnVsbF0KPj4KZW5kb2JqCjE2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyNDcuNjI5IDM2Ny42MTkgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjQ3LjYyOSA1MzkuOTk3IDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDQ5NC40MTggbnVsbF0KPj4KZW5kb2JqCjE2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyMzUuNjI5IDQ2NC4wMzcgMjQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjM1LjYyOSA1MzkuOTk3IDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDQwNC44MjQgbnVsbF0KPj4KZW5kb2JqCjE2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyMjMuNjI5IDMzNS45NzYgMjMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODcgMjIzLjYyOSA1NDAuMzQ3IDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDM0MS42MyBudWxsXQo+PgplbmRvYmoKMTY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDIxMS42MjkgNDUxLjUwOSAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAyMTEuNjI5IDU0MC42OTcgMjIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMjUyLjAzNiBudWxsXQo+PgplbmRvYmoKMTcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE5OS42MjkgNDIwLjMyMyAyMDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxOTkuNjI5IDU0MC42OTcgMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMTg4Ljg0MiBudWxsXQo+PgplbmRvYmoKMTc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE4Ny42MjkgMzg0LjA2NiAxOTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzOCAxODcuNjI5IDU0MC42OTggMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMTEzLjY0OCBudWxsXQo+PgplbmRvYmoKMTc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE3NS42MjkgNDQ0LjUyNyAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxNzUuNjI5IDU0MC42OTcgMTg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNjk2LjAgbnVsbF0KPj4KZW5kb2JqCjE4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNjMuNjI5IDQxOC42MSAxNzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxNjMuNjI5IDU0MC42OTcgMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNjIxLjkxOSBudWxsXQo+PgplbmRvYmoKMTg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE1MS42MjkgNDIyLjQ0NSAxNjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjUwNyAxNTEuNjI5IDU0MC44NjcgMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNTM1LjgzOCBudWxsXQo+PgplbmRvYmoKMTg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEzOS42MjkgNDMyLjExNiAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMzkuNjI5IDU0MC42OTcgMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNDYxLjc1NyBudWxsXQo+PgplbmRvYmoKMTkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEyNy42MjkgNDczLjQ4MiAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMjcuNjI5IDU0MC42OTcgMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMzg1LjI3NiBudWxsXQo+PgplbmRvYmoKMTkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDExNS42MjkgMzgzLjkyNyAxMjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMTUuNjI5IDU0MC42OTcgMTI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMzIzLjE5NSBudWxsXQo+PgplbmRvYmoKMTk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEwMy42MjkgNDM1Ljg4MSAxMTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyAxMDMuNjI5IDU0MC42OTcgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMjQ5LjExNCBudWxsXQo+PgplbmRvYmoKMTk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDkxLjYyOSAzOTEuOTU1IDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3Qg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MCBSCjEwMiAwIFIKMTAzIDAgUgoxMDUgMCBSCjEwNiAwIFIKMTA4IDAgUgoxMDkgMCBSCjExMSAwIFIKMTEyIDAgUgoxMTQgMCBSCjExNSAwIFIKMTE3IDAgUgoxMTggMCBSCjEyMCAwIFIKMTIxIDAgUgoxMjIgMCBSCjEyNCAwIFIKMTI1IDAgUgoxMjcgMCBSCjEyOCAwIFIKMTMwIDAgUgoxMzEgMCBSCjEzMyAwIFIKMTM0IDAgUgoxMzYgMCBSCjEzNyAwIFIKMTM5IDAgUgoxNDAgMCBSCjE0MiAwIFIKMTQzIDAgUgoxNDUgMCBSCjE0NiAwIFIKMTQ4IDAgUgoxNDkgMCBSCjE1MSAwIFIKMTUyIDAgUgoxNTQgMCBSCjE1NSAwIFIKMTU3IDAgUgoxNTggMCBSCjE2MCAwIFIKMTYxIDAgUgoxNjMgMCBSCjE2NCAwIFIKMTY2IDAgUgoxNjcgMCBSCjE2OSAwIFIKMTcwIDAgUgoxNzIgMCBSCjE3MyAwIFIKMTc1IDAgUgoxNzYgMCBSCjE3OCAwIFIKMTc5IDAgUgoxODEgMCBSCjE4MiAwIFIKMTg0IDAgUgoxODUgMCBSCjE4NyAwIFIKMTg4IDAgUgoxOTAgMCBSCjE5MSAwIFIKMTkzIDAgUgoxOTQgMCBSCjE5NiAwIFIKMTk3IDAgUgoxOTkgMCBSCjIwMCAwIFIKMjAyIDAgUgoyMDMgMCBSCl0KZW5kb2JqCjIwNyAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMjA2IDAgUgogIC9Db250ZW50cyAyMDQgMCBSCj4+CmVuZG9iagoyMDggMCBvYmoKPDwgL0xlbmd0aCAyMDkgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nO1aS2/cNhC+76/gHzAzHL6BwMB6d120t6IGeihyatH2ELfwqX+/w6dISitp3RQwEiNQpCWHM8PhNx8f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MCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA2OTcuMDA1IDU0MC42OTcgNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxMCAwIFIgL1hZWiA3Mi4wIDYxOS43OTggbnVsbF0KPj4KZW5kb2JqCjI0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2ODUuMDA1IDQzMi4xNDYgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNjg1LjAwNSA1NDAuNjk3IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTAgMCBSIC9YWVogNzIuMCA1NDMuNTk2IG51bGxdCj4+CmVuZG9iagoyNDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjczLjAwNSA0MjcuMzY1IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDY3My4wMDUgNTQwLjY5NyA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEwIDAgUiAvWFlaIDcyLjAgNDU1LjM5NCBudWxsXQo+PgplbmRvYmoKMjQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY2MS4wMDUgNDE5Ljk4NCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA2NjEuMDA1IDU0MC42OTcgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxMCAwIFIgL1hZWiA3Mi4wIDM3OS4xOTIgbnVsbF0KPj4KZW5kb2JqCjI1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NDkuMDA1IDQ3MS45MzggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNjQ5LjAwNSA1NDAuNjk3IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTAgMCBSIC9YWVogNzIuMCAzMDAuNTkgbnVsbF0KPj4KZW5kb2JqCjI1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzcuMDA1IDQzNC44MzUgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4zMzcgNjM3LjAwNSA1NDAuNjk3IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTAgMCBSIC9YWVogNzIuMCAyMjQuMzg4IG51bGxdCj4+CmVuZG9iagoyNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjI1LjAwNSA0MzAuODYxIDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuMzM3IDYyNS4wMDUgNTQwLjY5NyA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEwIDAgUiAvWFlaIDcyLjAgMTQ4LjE4NiBudWxsXQo+PgplbmRvYmoKMjYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxMy4wMDUgMzk3LjEzNSA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjMzNyA2MTMuMDA1IDU0MC42OTcgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxMyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjAxLjAwNSAzODYuNjgxIDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuOTc4IDYwMS4wMDUgNTQwLjY5OCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEzIDAgUiAvWFlaIDcyLjAgNjQ5LjYgbnVsbF0KPj4KZW5kb2JqCjI2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODkuMDA1IDQyMy4wNDcgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45NzggNTg5LjAwNSA1NDAuNjk4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTMgMCBSIC9YWVogNzIuMCA1NzMuMiBudWxsXQo+PgplbmRvYmoKMjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3Ny4wMDUgNDA5LjU0IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuOTc4IDU3Ny4wMDUgNTQwLjY5OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEzIDAgUiAvWFlaIDcyLjAgNDk2LjggbnVsbF0KPj4KZW5kb2JqCjI3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NjUuMDA1IDM5Ny41MjggNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45NzggNTY1LjAwNSA1NDAuNjk4IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTMgMCBSIC9YWVogNzIuMCA0MjAuNCBudWxsXQo+PgplbmRvYmoKMjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU1My4wMDUgNDEyLjk5OCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjMyOCA1NTMuMDA1IDU0MS4wNDggNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxMyAwIFIgL1hZWiA3Mi4wIDM0NC4wIG51bGxdCj4+CmVuZG9iagoyNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQxLjAwNSAzODEuNjYxIDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuOTc4IDU0MS4wMDUgNTQwLjY5OCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEzIDAgUiAvWFlaIDcyLjAgMjc5LjYgbnVsbF0KPj4KZW5kb2JqCjI4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjkuMDA1IDM4MS41IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDUyOS4wMDUgNTQwLjM0OCA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEzIDAgUiAvWFlaIDcyLjAgMjE1LjIgbnVsbF0KPj4KZW5kb2JqCjI4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MTcuMDA1IDM4Ny4xNTggNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNTE3LjAwNSA1NDAuMzQ4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTA1LjAwNSAxMjUuMjc2IDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUwNS4wMDUgNTM5Ljk5OCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE2IDAgUiAvWFlaIDcyLjAgNjA2LjcyOSBudWxsXQo+PgplbmRvYmoKMjkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ5My4wMDUgMjM0LjA1MSA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyNyA0OTMuMDA1IDU0MC4zNDcgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxNiAwIFIgL1hZWiA3Mi4wIDQ0Ni4xNzYgbnVsbF0KPj4KZW5kb2JqCjI5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0ODEuMDA1IDIyOC4wMzggNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNDgxLjAwNSA1NDAuMzQ4IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTYgMCBSIC9YWVogNzIuMCAyOTEuNDc3IG51bGxdCj4+CmVuZG9iagoyOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDY5LjAwNSAzMzkuNjExIDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDQ2OS4wMDUgNTQwLjM0OCA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE5IDAgUiAvWFlaIDcyLjAgNjQzLjA4MyBudWxsXQo+PgplbmRvYmoKMjk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1Ny4wMDUgMjg0LjAzMSA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NTcuMDA1IDUzOS45OTggNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagozMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0NDUuMDA1IDI2MS43MDMgNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDQ1LjAwNSA1MzkuOTk4IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMzA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDMzLjAwNSAxMzAuMTI5IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQzMy4wMDUgNTM5Ljk5OCA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjMwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQyMS4wMDUgMTE5LjA2IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQyMS4wMDUgNTM5Ljk5OCA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNjc4LjggbnVsbF0KPj4KZW5kb2JqCjMxMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MDkuMDA1IDE3MS45MiA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxMCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0MDkuMDA1IDUzOS45OTggNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDYyNC40IG51bGxdCj4+CmVuZG9iagozMTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9T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/9B/GoHv/Bf1fwHPY3LSCmVuZHN0cmVhbQplbmRvYmoKMzQxIDAgb2JqCjE2NzAxCmVuZG9iagozNDAgMCBvYmoKPDwgL0xlbmd0aCAzNDIgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nJtu+///+9/f/+j///+HAQI4BBhGAbVAAwB6+gpxCmVuZHN0cmVhbQplbmRvYmoKMzQyIDAgb2JqCjMxCmVuZG9iagozNDMgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMAogIC9CYXNlRm9udCAvRUFBQUFCK0RlamFWdVNhbnMKICAvRW5jb2RpbmcgL0lkZW50aXR5LUgKICAvVG9Vbmljb2RlIDM0NCAwIFIKICAvRGVzY2VuZGFudEZvbnRzIFszNDUgMCBSXQo+PgplbmRvYmoKMzQ1IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9CYXNlRm9udCAvRUFBQUFCK0RlamFWdVNhbnMgCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkgCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDMzOCAwIFIKL0RXIDAKL1cgWyAwIFs2MDAgMzE3IDM2MCA2MDMgNDExIDYxNSAzNTIgNjEyIDU0OSAzMTcgODYyIDYzNiA1NzUgMzkyIDYzMyA1NTcgMjc3IDUyMCA2ODYgNjExIDYzNCA2MzYgNjg0IDU5MSA2MzMgNjM0IDI3NyA1NzkgNjM2IDY5NCA2MzQgOTc0IDI3NCA1OTEgNjM0IDgxNyA2MzQgNzg3IDYzNiA2MTAgNjMzIDI5NCA2OTggNjU1IDMzNiA4MzcgNjM2IDc3MCA2MzQgNjM2IDYzNiA2MzYgNjM2IDYzNiA3NDggNjMxIDczMSA3NTEgNTkxIDk4OCAyNzcgMzE3IDYxMCA1MzAgNTg5IDM5MCAzOTAgNTAwIDQ1OSA1MjQgMzM2IDgzNyA2ODQgNzc0IDMzNiA2ODUgODM3IDgzNyA2MzYgNTAwIDY4NSA2MTIgNzMxIF0gXQo+PgplbmRvYmoK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CmVuZG9iagozNDkgMCBvYmoKPDwgL0xlbmd0aCAzNTEgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nJvA8MfF/8T3Rv7d308AAChqBukKZW5kc3RyZWFtCmVuZG9iagozNTEgMCBvYmoKMjEKZW5kb2JqCjM1MiAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUwCiAgL0Jhc2VGb250IC9FQUFBQUMrRGVqYVZ1U2Fuc01vbm8KICAvRW5jb2RpbmcgL0lkZW50aXR5LUgKICAvVG9Vbmljb2RlIDM1MyAwIFIKICAvRGVzY2VuZGFudEZvbnRzIFszNTQgMCBSXQo+PgplbmRvYmoKMzU0IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9CYXNlRm9udCAvRUFBQUFDK0RlamFWdVNhbnNNb25vIAovQ0lEVG9HSURNYXAgL0lkZW50aXR5IAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+Ci9Gb250RGVzY3JpcHRvciAzNDcgMCBSCi9EVyAwCi9XIFsgMCBbNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiBdIF0KPj4KZW5kb2JqCjM1MyAwIG9iago8PCAvTGVuZ3RoIDM1NSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicXZNNasMwEEb3OYWW6SLYkmW7gRAoKYUs+kPTHsCWxqmhloXiLHL7yvqmLtSQOE8ajeZFmuxwfDy6fhLZWxjNiSbR9c4GuozXYEi0dO7dSiphezMxpW8zNH6VxcWn22Wi4ei6URSIslfPkUJk7/HHZQo3sX6wY0t3wlI3j78GS6F3Z7H+PJyW0dPV+28ayE0iT2PkbHpnh+fGvzQDiSzl2RxtDOqn2yYu/4v4uHkSKrFEDWa0dPGNodC4M612eXz2YvcUn/2c/d+8LrGs7cxXE5bwLj77RDJSnqscpBKVBlQkqguQTlTdg0pQCapAvK5OVBDoHnMKtAVtQQ2II1vUwpUZzDFZ1KJBBOKcHdYhi8wTaVQt4VfDT8JPSxD8KuSU7GdB8CsaEPxKzgK/irOwH+/Hfi2I/WoQ/DTcJfw0/CT8StSi2AG1KHaoQHBQPAeHgufgUKBOxQ74lxQcClSt4KB5PziUOE0Fh5oJDpoJDjUcFDvw7nDQvB/OSFO6lnz/5O9tXG6vRJjEGZaKozE/3+e5L5dmMdcQYp+ktkwNMrdG72jpbz/6eVX6/ABnKANmCmVuZHN0cmVhbQplbmRvYmoKMzU1IDAgb2JqCjQzNAplbmRvYmoKMTUgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCAyMwovS2lkcyBbMTMgMCBSIDIwNyAwIFIgMzIyIDAgUiAyNSAwIFIgMjggMCBSIDMxIDAgUiAzNCAwIFIgNDAgMCBSIDQzIDAgUiA0NiAwIFIgNDkgMCBSIDUyIDAgUiAyMTAgMCBSIDIxMyAwIFIgMjE2IDAgUiAyMTkgMCBSIDIyMiAwIFIgMjI1IDAgUiAyMjggMCBSIDIzMSAwIFIgMjM0IDAgUiAzMjUgMCBSIDMyOCAwIFIgXSA+PgplbmRvYmoKMzU2IDAgb2JqCjw8CiAgL1R5cGUgL0NhdGFsb2cKICAvUGFnZXMgMTUgMCBSCiAgL0xhbmcgKGVuKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDM1NyAwIFIKPj4KZW5kb2JqCjE0IDAgb2JqCjw8CiAgL0ZvbnQgPDwKICAvRjE2IDMzNCAwIFIKICAvRjE1IDM0MyAwIFIKICAvRjE5IDM1MiAwIFIKPj4KICAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHRdCiAgL1hPYmplY3QgPDwKICAvSW0xIDcgMCBSCiAgL0ltMiA5IDAgUgogIC9JbTMgMTYgMCBSCiAgL0ltNCAxOCAwIFIKPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMzU3IDAgb2JqCjw8IC9OdW1zIFswIDw8IC9TIC9EID4+IDEgPDwgL1MgL3IgL1N0IDIgPj4gMiA8PCAvUyAvciAvU3QgMyA+PiAzIDw8IC9TIC9yIC9TdCA0ID4+IDQgPDwgL1MgL0QgPj4gMTIgPDwgL1MgL0QgL1N0IDkgPj4gMjEgPDwgL1MgL0QgL1N0IDE4ID4+XSA+PgplbmRvYmoKeHJlZgowIDM1OAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDEzOSAwMDAwMCBuIAowMDAwMDAyNjc3IDAwMDAwIG4gCjAwMDAwMDI2OTcgMDAwMDAgbiAKMDAwMDAwMjczMCAwMDAwMCBuIAowMDAwMDAzNjYyIDAwMDAwIG4gCjAwMDAwMDM2ODEgMDAwMDAgbiAKMDAwMDA1MjIwNiAwMDAwMCBuIAowMDAwMDUyMjI3IDAwMDAwIG4gCjAwMDAxMDU0ODcgMDAwMDAgbiAKMDAwMDEwNTUwOSAwMDAwMCBuIAowMDAwMTA2MDQxIDAwMDAwIG4gCjAwMDAxMDYwNjEgMDAwMDAgbiAKMDAwMDI2ODg3NiAwMDAwMCBuIAowMDAwMjY4NTM5IDAwMDAwIG4gCjAwMDAxMDYyNTUgMDAwMDAgbiAKMDAwMDExMjQyNiAwMDAwMCBuIAowMDAwMTEyNDQ3IDAwMDAwIG4gCjAwMDAxMTk2MjcgMDAwMDAgbiAKMDAwMDExOTY0OCAwMDAwMCBuIAowMDAwMTE5NzMzIDAwMDAwIG4gCjAwMDAxMTk4NzEgMDAwMDAgbiAKMDAwMDEyMDc0OSAwMDAwMCBuIAowMDAwMTIwNzY5IDAwMDAwIG4gCjAwMDAxMjA3OTYgMDAwMDAgbiAKMDAwMDEyMTAwNyAwMDAwMCBuIAowMDAwMTIyNjUyIDAwMDAwIG4gCjAwMDAxMjI2NzMgMDAwMDAgbiAKMDAwMDEyMjg2NyAwMDAwMCBuIAowMDAwMTI0MDc1IDAwMDAwIG4gCjAwMDAxMjQwOTYgMDAwMDAgbiAKMDAwMDEyNDI5MCAwMDAwMCBuIAowMDAwMTI1MTQyIDAwMDAwIG4gCjAwMDAxMjUxNjIgMDAwMDAgbiAKMDAwMDEyNTM1NiAwMDAwMCBuIAowMDAwMTI1NDUxIDAwMDAwIG4gCjAwMDAxMjU1ODcgMDAwMDAgbiAKMDAwMDEyNjg1OSAwMDAwMCBuIAowMDAwMTI2ODgwIDAwMDAwIG4gCjAwMDAxMjY5MDcgMDAwMDAgbiAKMDAwMDEyNzExOCAwMDAwMCBuIAowMDAwMTI5MDk5IDAwMDAwIG4gCjAwMDAxMjkxMjAgMDAwMDAgbiAKMDAwMDEyOTMxNCAwMDAwMCBuIAowMDAwMTMxMDA2IDAwMDAwIG4gCjAwMDAxMzEwMjcgMDAwMDAgbiAKMDAwMDEzMTIyMSAwMDAwMCBuIAowMDAwMTMzMDc3IDAwMDAwIG4gCjAwMDAxMzMwOTggMDAwMDAgbiAKMDAwMDEzMzI5MiAwMDAwMCBuIAowMDAwMTM1MDg3IDAwMDAwIG4gCjAwMDAxMzUxMDggMDAwMDAgbiAKMDAwMDEzNTMwMiAwMDAwMCBuIAowMDAwMTM1MzgwIDAwMDAwIG4gCjAwMDAxMzU1MTYgMDAwMDAgbiAKMDAwMDEzNTY1MyAwMDAwMCBuIAowMDAwMTM1NzMxIDAwMDAwIG4gCjAwMDAxMzU4NjggMDAwMDAgbiAKMDAwMDEzNjAwOCAwMDAwMCBuIAowMDAwMTM2MDg2IDAwMDAwIG4gCjAwMDAxMzYyMjQgMDAwMDAgbiAKMDAwMDEzNjM2NCAwMDAwMCBuIAowMDAwMTM2NDQ0IDAwMDAwIG4gCjAwMDAxMzY1ODIgMDAwMDAgbiAKMDAwMDEzNjcyMiAwMDAwMCBuIAowMDAwMTM2ODAyIDAwMDAwIG4gCjAwMDAxMzY5NDAgMDAwMDAgbiAKMDAwMDEzNzA4MCAwMDAwMCBuIAowMDAwMTM3MTU4IDAwMDAwIG4gCjAwMDAxMzcyOTYgMDAwMDAgbiAKMDAwMDEzNzQzNiAwMDAwMCBuIAowMDAwMTM3NTE0IDAwMDAwIG4gCjAwMDAxMzc2NTEgMDAwMDAgbiAKMDAwMDEzNzc5MSAwMDAwMCBuIAowMDAwMTM3ODY5IDAwMDAwIG4gCjAwMDAxMzgwMDYgMDAwMDAgbiAKMDAwMDEzODE0NiAwMDAwMCBuIAowMDAwMTM4MjI0IDAwMDAwIG4gCjAwMDAxMzgzNjIgMDAwMDAgbiAKMDAwMDEzODUwMiAwMDAwMCBuIAowMDAwMTM4NTgwIDAwMDAwIG4gCjAwMDAxMzg3MTggMDAwMDAgbiAKMDAwMDEzODg1OCAwMDAwMCBuIAowMDAwMTM4OTM2IDAwMDAwIG4gCjAwMDAxMzkwNzQgMDAwMDAgbiAKMDAwMDEzOTIxNCAwMDAwMCBuIAowMDAwMTM5MjkyIDAwMDAwIG4gCjAwMDAxMzk0MzAgMDAwMDAgbiAKMDAwMDEzOTU3MCAwMDAwMCBuIAowMDAwMTM5NjQ4IDAwMDAwIG4gCjAwMDAxMzk3ODQgMDAwMDAgbiAKMDAwMDEzOTkyNCAwMDAwMCBuIAowMDAwMTQwMDAyIDAwMDAwIG4gCjAwMDAxNDAxNDAgMDAwMDAgbiAKMDAwMDE0MDI4MCAwMDAwMCBuIAowMDAwMTQwMzU4IDAwMDAwIG4gCjAwMDAxNDA0OTYgMDAwMDAgbiAKMDAwMDE0MDYzNiAwMDAwMCBuIAowMDAwMTQwNzE0IDAwMDAwIG4gCjAwMDAxNDA4NTEgMDAwMDAgbiAKMDAwMDE0MDk5MiAwMDAwMCBuIAowMDAwMTQxMDczIDAwMDAwIG4gCjAwMDAxNDEyMTMgMDAwMDAgbiAKMDAwMDE0MTM1NSAwMDAwMCBuIAowMDAwMTQxNDM2IDAwMDAwIG4gCjAwMDAxNDE1NzYgMDAwMDAgbiAKMDAwMDE0MTcxOCAwMDAwMCBuIAowMDAwMTQxNzk5IDAwMDAwIG4gCjAwMDAxNDE5MzkgMDAwMDAgbiAKMDAwMDE0MjA4MSAwMDAwMCBuIAowMDAwMTQyMTYyIDAwMDAwIG4gCjAwMDAxNDIzMDIgMDAwMDAgbiAKMDAwMDE0MjQ0NCAwMDAwMCBuIAowMDAwMTQyNTI1IDAwMDAwIG4gCjAwMDAxNDI2NjUgMDAwMDAgbiAKMDAwMDE0MjgwNyAwMDAwMCBuIAowMDAwMTQyODg3IDAwMDAwIG4gCjAwMDAxNDMwMjcgMDAwMDAgbiAKMDAwMDE0MzE2OSAwMDAwMCBuIAowMDAwMTQzMjUwIDAwMDAwIG4gCjAwMDAxNDMzODkgMDAwMDAgbiAKMDAwMDE0MzUyOCAwMDAwMCBuIAowMDAwMTQzNjY3IDAwMDAwIG4gCjAwMDAxNDM3NDggMDAwMDAgbiAKMDAwMDE0Mzg4OCAwMDAwMCBuIAowMDAwMTQ0MDMwIDAwMDAwIG4gCjAwMDAxNDQxMDkgMDAwMDAgbiAKMDAwMDE0NDI0OSAwMDAwMCBuIAowMDAwMTQ0MzkxIDAwMDAwIG4gCjAwMDAxNDQ0NzIgMDAwMDAgbiAKMDAwMDE0NDYxMiAwMDAwMCBuIAowMDAwMTQ0NzU0IDAwMDAwIG4gCjAwMDAxNDQ4MzUgMDAwMDAgbiAKMDAwMDE0NDk3NSAwMDAwMCBuIAowMDAwMTQ1MTE3IDAwMDAwIG4gCjAwMDAxNDUxOTggMDAwMDAgbiAKMDAwMDE0NTMzOCAwMDAwMCBuIAowMDAwMTQ1NDgwIDAwMDAwIG4gCjAwMDAxNDU1NjEgMDAwMDAgbiAKMDAwMDE0NTcwMSAwMDAwMCBuIAowMDAwMTQ1ODQzIDAwMDAwIG4gCjAwMDAxNDU5MjMgMDAwMDAgbiAKMDAwMDE0NjA2MyAwMDAwMCBuIAowMDAwMTQ2MjA1IDAwMDAwIG4gCjAwMDAxNDYyODYgMDAwMDAgbiAKMDAwMDE0NjQyNiAwMDAwMCBuIAowMDAwMTQ2NTY4IDAwMDAwIG4gCjAwMDAxNDY2NDkgMDAwMDAgbiAKMDAwMDE0Njc4OSAwMDAwMCBuIAowMDAwMTQ2OTMxIDAwMDAwIG4gCjAwMDAxNDcwMTIgMDAwMDAgbiAKMDAwMDE0NzE1MiAwMDAwMCBuIAowMDAwMTQ3Mjk0IDAwMDAwIG4gCjAwMDAxNDczNzMgMDAwMDAgbiAKMDAwMDE0NzUxMyAwMDAwMCBuIAowMDAwMTQ3NjU1IDAwMDAwIG4gCjAwMDAxNDc3MzYgMDAwMDAgbiAKMDAwMDE0Nzg3NiAwMDAwMCBuIAowMDAwMTQ4MDE4IDAwMDAwIG4gCjAwMDAxNDgwOTkgMDAwMDAgbiAKMDAwMDE0ODIzOSAwMDAwMCBuIAowMDAwMTQ4MzgxIDAwMDAwIG4gCjAwMDAxNDg0NjIgMDAwMDAgbiAKMDAwMDE0ODYwMiAwMDAwMCBuIAowMDAwMTQ4NzQ0IDAwMDAwIG4gCjAwMDAxNDg4MjUgMDAwMDAgbiAKMDAwMDE0ODk2NSAwMDAwMCBuIAowMDAwMTQ5MTA3IDAwMDAwIG4gCjAwMDAxNDkxODcgMDAwMDAgbiAKMDAwMDE0OTMyNyAwMDAwMCBuIAowMDAwMTQ5NDY5IDAwMDAwIG4gCjAwMDAxNDk1NTAgMDAwMDAgbiAKMDAwMDE0OTY5MCAwMDAwMCBuIAowMDAwMTQ5ODMyIDAwMDAwIG4gCjAwMDAxNDk5MTMgMDAwMDAgbiAKMDAwMDE1MDA1MyAwMDAwMCBuIAowMDAwMTUwMTk1IDAwMDAwIG4gCjAwMDAxNTAyNzYgMDAwMDAgbiAKMDAwMDE1MDQxNiAwMDAwMCBuIAowMDAwMTUwNTU4IDAwMDAwIG4gCjAwMDAxNTA2MzcgMDAwMDAgbiAKMDAwMDE1MDc3NiAwMDAwMCBuIAowMDAwMTUwOTE4IDAwMDAwIG4gCjAwMDAxNTA5OTkgMDAwMDAgbiAKMDAwMDE1MTEzOSAwMDAwMCBuIAowMDAwMTUxMjgxIDAwMDAwIG4gCjAwMDAxNTEzNjIgMDAwMDAgbiAKMDAwMDE1MTUwMiAwMDAwMCBuIAowMDAwMTUxNjQ0IDAwMDAwIG4gCjAwMDAxNTE3MjUgMDAwMDAgbiAKMDAwMDE1MTg2NSAwMDAwMCBuIAowMDAwMTUyMDA3IDAwMDAwIG4gCjAwMDAxNTIwODggMDAwMDAgbiAKMDAwMDE1MjIyOCAwMDAwMCBuIAowMDAwMTUyMzcwIDAwMDAwIG4gCjAwMDAxNTI0NTEgMDAwMDAgbiAKMDAwMDE1MjU5MSAwMDAwMCBuIAowMDAwMTUyNzMzIDAwMDAwIG4gCjAwMDAxNTI4MTQgMDAwMDAgbiAKMDAwMDE1Mjk1MyAwMDAwMCBuIAowMDAwMTUzMDk0IDAwMDAwIG4gCjAwMDAxNTMxNzUgMDAwMDAgbiAKMDAwMDE1MzMxMyAwMDAwMCBuIAowMDAwMTUzNDUzIDAwMDAwIG4gCjAwMDAxNzcwNDQgMDAwMDAgbiAKMDAwMDE3NzA2NyAwMDAwMCBuIAowMDAwMTc3ODY1IDAwMDAwIG4gCjAwMDAxNzgwNzkgMDAwMDAgbiAKMDAwMDE3OTk0OCAwMDAwMCBuIAowMDAwMTc5OTcwIDAwMDAwIG4gCjAwMDAxODAxNjYgMDAwMDAgbiAKMDAwMDE4MTc0NCAwMDAwMCBuIAowMDAwMTgxNzY2IDAwMDAwIG4gCjAwMDAxODE5NjIgMDAwMDAgbiAKMDAwMDE4NDAzNyAwMDAwMCBuIAowMDAwMTg0MDU5IDAwMDAwIG4gCjAwMDAxODQyNTUgMDAwMDAgbiAKMDAwMDE4NjI0NSAwMDAwMCBuIAowMDAwMTg2MjY3IDAwMDAwIG4gCjAwMDAxODY0NjMgMDAwMDAgbiAKMDAwMDE4NzQ5NyAwMDAwMCBuIAowMDAwMTg3NTE4IDAwMDAwIG4gCjAwMDAxODc3MTQgMDAwMDAgbiAKMDAwMDE4ODk5MSAwMDAwMCBuIAowMDAwMTg5MDEzIDAwMDAwIG4gCjAwMDAxODkyMDkgMDAwMDAgbiAKMDAwMDE5MDExOCAwMDAwMCBuIAowMDAwMTkwMTM5IDAwMDAwIG4gCjAwMDAxOTAzMzUgMDAwMDAgbiAKMDAwMDE5MjQ1MCAwMDAwMCBuIAowMDAwMTkyNDcyIDAwMDAwIG4gCjAwMDAxOTI2NjggMDAwMDAgbiAKMDAwMDE5NDU0OSAwMDAwMCBuIAowMDAwMTk0NTcxIDAwMDAwIG4gCjAwMDAxOTQ3NjcgMDAwMDAgbiAKMDAwMDE5NDg0OCAwMDAwMCBuIAowMDAwMTk0OTg4IDAwMDAwIG4gCjAwMDAxOTUxMzAgMDAwMDAgbiAKMDAwMDE5NTIxMCAwMDAwMCBuIAowMDAwMTk1MzUwIDAwMDAwIG4gCjAwMDAxOTU0OTIgMDAwMDAgbiAKMDAwMDE5NTU3NCAwMDAwMCBuIAowMDAwMTk1NzE0IDAwMDAwIG4gCjAwMDAxOTU4NTYgMDAwMDAgbiAKMDAwMDE5NTkzOCAwMDAwMCBuIAowMDAwMTk2MDc4IDAwMDAwIG4gCjAwMDAxOTYyMjAgMDAwMDAgbiAKMDAwMDE5NjMwMiAwMDAwMCBuIAowMDAwMTk2NDQyIDAwMDAwIG4gCjAwMDAxOTY1ODQgMDAwMDAgbiAKMDAwMDE5NjY2NiAwMDAwMCBuIAowMDAwMTk2ODA2IDAwMDAwIG4gCjAwMDAxOTY5NDggMDAwMDAgbiAKMDAwMDE5NzAyOSAwMDAwMCBuIAowMDAwMTk3MTY5IDAwMDAwIG4gCjAwMDAxOTczMTEgMDAwMDAgbiAKMDAwMDE5NzM5MyAwMDAwMCBuIAowMDAwMTk3NTMzIDAwMDAwIG4gCjAwMDAxOTc2NzUgMDAwMDAgbiAKMDAwMDE5Nzc1NyAwMDAwMCBuIAowMDAwMTk3ODk3IDAwMDAwIG4gCjAwMDAxOTgwMzkgMDAwMDAgbiAKMDAwMDE5ODExOSAwMDAwMCBuIAowMDAwMTk4MjU5IDAwMDAwIG4gCjAwMDAxOTg0MDEgMDAwMDAgbiAKMDAwMDE5ODQ4MSAwMDAwMCBuIAowMDAwMTk4NjIxIDAwMDAwIG4gCjAwMDAxOTg3NjMgMDAwMDAgbiAKMDAwMDE5ODg0MyAwMDAwMCBuIAowMDAwMTk4OTgyIDAwMDAwIG4gCjAwMDAxOTkxMjQgMDAwMDAgbiAKMDAwMDE5OTIwNCAwMDAwMCBuIAowMDAwMTk5MzQ0IDAwMDAwIG4gCjAwMDAxOTk0ODYgMDAwMDAgbiAKMDAwMDE5OTU2NiAwMDAwMCBuIAowMDAwMTk5NzA2IDAwMDAwIG4gCjAwMDAxOTk4NDggMDAwMDAgbiAKMDAwMDE5OTkyOCAwMDAwMCBuIAowMDAwMjAwMDY4IDAwMDAwIG4gCjAwMDAyMDAyMTAgMDAwMDAgbiAKMDAwMDIwMDI5MCAwMDAwMCBuIAowMDAwMjAwNDI4IDAwMDAwIG4gCjAwMDAyMDA1NzAgMDAwMDAgbiAKMDAwMDIwMDY1MCAwMDAwMCBuIAowMDAwMjAwNzkwIDAwMDAwIG4gCjAwMDAyMDA5MzIgMDAwMDAgbiAKMDAwMDIwMTAxMiAwMDAwMCBuIAowMDAwMjAxMTUxIDAwMDAwIG4gCjAwMDAyMDEyOTMgMDAwMDAgbiAKMDAwMDIwMTM3NSAwMDAwMCBuIAowMDAwMjAxNTE1IDAwMDAwIG4gCjAwMDAyMDE2NTcgMDAwMDAgbiAKMDAwMDIwMTczOSAwMDAwMCBuIAowMDAwMjAxODc5IDAwMDAwIG4gCjAwMDAyMDIwMjEgMDAwMDAgbiAKMDAwMDIwMjEwMyAwMDAwMCBuIAowMDAwMjAyMjQzIDAwMDAwIG4gCjAwMDAyMDIzODUgMDAwMDAgbiAKMDAwMDIwMjQ2NyAwMDAwMCBuIAowMDAwMjAyNjA3IDAwMDAwIG4gCjAwMDAyMDI3NDkgMDAwMDAgbiAKMDAwMDIwMjgyOSAwMDAwMCBuIAowMDAwMjAyOTY4IDAwMDAwIG4gCjAwMDAyMDMxMTAgMDAwMDAgbiAKMDAwMDIwMzE5MCAwMDAwMCBuIAowMDAwMjAzMzI5IDAwMDAwIG4gCjAwMDAyMDM0NzEgMDAwMDAgbiAKMDAwMDIwMzU1MSAwMDAwMCBuIAowMDAwMjAzNjg5IDAwMDAwIG4gCjAwMDAyMDM4MzEgMDAwMDAgbiAKMDAwMDIwMzkxMSAwMDAwMCBuIAowMDAwMjA0MDUwIDAwMDAwIG4gCjAwMDAyMDQxOTIgMDAwMDAgbiAKMDAwMDIwNDI3MiAwMDAwMCBuIAowMDAwMjA0NDEyIDAwMDAwIG4gCjAwMDAyMDQ1NTQgMDAwMDAgbiAKMDAwMDIwNDYzNCAwMDAwMCBuIAowMDAwMjA0NzczIDAwMDAwIG4gCjAwMDAyMDQ5MTUgMDAwMDAgbiAKMDAwMDIxNzQwMCAwMDAwMCBuIAowMDAwMjE3NDIzIDAwMDAwIG4gCjAwMDAyMTc4OTIgMDAwMDAgbiAKMDAwMDIxODEwNiAwMDAwMCBuIAowMDAwMjIwMjA0IDAwMDAwIG4gCjAwMDAyMjAyMjYgMDAwMDAgbiAKMDAwMDIyMDQyMiAwMDAwMCBuIAowMDAwMjIxMTUwIDAwMDAwIG4gCjAwMDAyMjExNzEgMDAwMDAgbiAKMDAwMDIyMTM2NyAwMDAwMCBuIAowMDAwMjIxNjMyIDAwMDAwIG4gCjAwMDAyMzYyOTYgMDAwMDAgbiAKMDAwMDIzNjI3MyAwMDAwMCBuIAowMDAwMjM2Mzk2IDAwMDAwIG4gCjAwMDAyMzY0MTYgMDAwMDAgbiAKMDAwMDIzNzA3MSAwMDAwMCBuIAowMDAwMjM2NTgxIDAwMDAwIG4gCjAwMDAyMzc2NTIgMDAwMDAgbiAKMDAwMDIzNzY3MyAwMDAwMCBuIAowMDAwMjM3OTMzIDAwMDAwIG4gCjAwMDAyNTQ3NTYgMDAwMDAgbiAKMDAwMDI1NDczMyAwMDAwMCBuIAowMDAwMjU0ODY1IDAwMDAwIG4gCjAwMDAyNTQ4ODUgMDAwMDAgbiAKMDAwMDI1NTYwMCAwMDAwMCBuIAowMDAwMjU1MDQ1IDAwMDAwIG4gCjAwMDAyNTYyNTggMDAwMDAgbiAKMDAwMDI1NjI3OSAwMDAwMCBuIAowMDAwMjU2NTQxIDAwMDAwIG4gCjAwMDAyNjczMDggMDAwMDAgbiAKMDAwMDI2NzI4NSAwMDAwMCBuIAowMDAwMjY3NDA3IDAwMDAwIG4gCjAwMDAyNjc0MjcgMDAwMDAgbiAKMDAwMDI2ODAwNiAwMDAwMCBuIAowMDAwMjY3NTkxIDAwMDAwIG4gCjAwMDAyNjg1MTggMDAwMDAgbiAKMDAwMDI2ODc2NyAwMDAwMCBuIAowMDAwMjY5MTA2IDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAzNTYgMCBSCiAgL0luZm8gMSAwIFIKICAvSUQgWzwwODI0MkU4MkM5REIzRjJGQURBM0FBMjEwNDBFRTVCNj4gPDA4MjQyRTgyQzlEQjNGMkZBREEzQUEyMTA0MEVFNUI2Pl0KICAvU2l6ZSAzNTgKPj4Kc3RhcnR4cmVmCjI2OTI2OAolJUVPRgo=