ITSMTicket
1.1.1
OTRS AG
http://otrs.org/
GNU GENERAL PUBLIC LICENSE Version 2, June 1991
Build for OTRS::ITSM 1.1.1.
Build for OTRS::ITSM 1.1.0 rc1.
Build for OTRS::ITSM 1.1.0 beta4.
Build for OTRS::ITSM 1.1.0 beta3.
Build for OTRS::ITSM 1.1.0 beta2.
Build for OTRS::ITSM 1.1.0 beta1.
Testbuild for OTRS::ITSM 1.1.0 beta1.
The OTRS::ITSM ticket package.
Das OTRS::ITSM Ticket Paket.
2.2.6
2.2.x CVS
<br>
WELCOME<br>
<br>
You are about to install the OTRS module ITSMTicket.<br>
<br>
<br>
REQUIRED OTRS PACKAGES
<ul>
<li>GeneralCatalog 1.1.1</li>
<li>LinkObject 1.1.1</li>
<li>ITSMCore 1.1.1</li>
<li>ITSMService 1.1.1</li>
</ul>
<br>
ATTENTION<br>
<br>
Make sure your database accepts packages over 5 MB in size. A MySQL database for example accepts packages up to 1 MB by default. In this case, the value for max_allowed_packet must be increased. The recommended maximum size accepted is 20 MB.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
WILLKOMMEN<br>
<br>
Sie sind im Begriff das OTRS-Modul ITSMTicket zu installieren.<br>
<br>
<br>
BENÖTIGTE OTRS-PAKETE
<ul>
<li>GeneralCatalog 1.1.1</li>
<li>LinkObject 1.1.1</li>
<li>ITSMCore 1.1.1</li>
<li>ITSMService 1.1.1</li>
</ul>
<br>
ACHTUNG<br>
<br>
Vergewissern Sie sich, dass ihre Datenbank Pakete mit einer Größe von mehr als 5 MB akzeptiert. Eine MySQL Datenbank akzeptiert beispielsweise standartmäßig Pakete mit einer Größe von maximal 1 MB. In diesem Fall muss der Wert für max_allowed_packet erhöht werden. Empfohlen werden 20 MB.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
WELCOME<br>
<br>
You are about to upgrade the OTRS module ITSMTicket.<br>
<br>
<br>
REQUIRED OTRS PACKAGES
<ul>
<li>GeneralCatalog 1.1.1</li>
<li>LinkObject 1.1.1</li>
<li>ITSMCore 1.1.1</li>
<li>ITSMService 1.1.1</li>
</ul>
<br>
ATTENTION<br>
<br>
Make sure your database accepts packages over 5 MB in size. A MySQL database for example accepts packages up to 1 MB by default. In this case, the value for max_allowed_packet must be increased. The recommended maximum size accepted is 20 MB.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
WILLKOMMEN<br>
<br>
Sie sind im Begriff das OTRS-Modul ITSMTicket zu aktualisieren.<br>
<br>
<br>
BENÖTIGTE OTRS-PAKETE
<ul>
<li>GeneralCatalog 1.1.1</li>
<li>LinkObject 1.1.1</li>
<li>ITSMCore 1.1.1</li>
<li>ITSMService 1.1.1</li>
</ul>
<br>
ACHTUNG<br>
<br>
Vergewissern Sie sich, dass ihre Datenbank Pakete mit einer Größe von mehr als 5 MB akzeptiert. Eine MySQL Datenbank akzeptiert beispielsweise standartmäßig Pakete mit einer Größe von maximal 1 MB. In diesem Fall muss der Wert für max_allowed_packet erhöht werden. Empfohlen werden 20 MB.<br>
<br>
<br>
((enjoy))<br>
<br>
GeneralCatalog
ITSMCore
ITSMService
LinkObject2
2008-05-04 16:39:01
opms.otrs.com
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4KPG90cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQ29uZmlnIj4KICAgIDxDVlM+JElkOiBJVFNNVGlja2V0LnhtbCx2IDEuMTUgMjAwOC8wMy8xNyAxMDozMjozNCBtaCBFeHAgJDwvQ1ZTPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50VGlja2V0QWRkdGxJVFNNRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RnJvbnRlbmRtb2R1bC1SZWdpc3RyYXRpb24gZGVzIEFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQtT2JqZWt0cyBpbSBBZ2VudC1JbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkFkZGl0aW9uYWwgSVRTTSBUaWNrZXQgRmllbGRzPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5BZGRpdGlvbmFsIElUU00gRmllbGRzPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPlRpY2tldDwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRUaWNrZXREZWNpc2lvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBBZ2VudFRpY2tldERlY2lzaW9uIG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5Gcm9udGVuZG1vZHVsLVJlZ2lzdHJhdGlvbiBkZXMgQWdlbnRUaWNrZXREZWNpc2lvbi1PYmpla3RzIGltIEFnZW50LUludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+VGlja2V0IERlY2lzaW9uPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5EZWNpc2lvbjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5UaWNrZXQ8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzMxNS1BZGR0bElUU01GaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk1vZHVsZSB0byBzaG93IGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBsaW5rIGluIG1lbnUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPtxiZXIgZGllc2VzIE1vZHVsIHdpcmQgZGVyIFp1c+R0emxpY2hlIElUU00gRmVsZGVyLUxpbmsgaW4gZGVyIExpbmtsZWlzdGUgZGVyIFRpY2tldGFuc2ljaHQgYW5nZXplaWd0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51QWRkdGxJVFNNRmllbGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkFkZGl0aW9uYWwgSVRTTSBGaWVsZHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5DaGFuZ2UgdGhlIElUU00gZmllbGRzITwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCZhbXA7VGlja2V0SUQ9JFFEYXRheyJUaWNrZXRJRCJ9PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzMyMC1MaW5rIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+TW9kdWxlIHRvIHNob3cgYSBsaW5rIHRvIGxpbmsgYSB0aWNrZXQgd2l0aCBhbm90aGVyIG9iamVjdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+3GJlciBkaWVzZXMgTW9kdWwgd2lyZCBlaW4gTGluayBpbSBNZW78IGRlciBUaWNrZXRhbnNpY2h0IGFuZ2V6ZWlndCwgbWl0IGRlbSBlaW4gVGlja2V0IG1pdCBlaW5lbSBhbmRlcmVuIE9iamVrdCB2ZXJrbvxwZnQgd2VyZGVuIGthbm4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldE1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+TGluayB0aGlzIHRpY2tldCB0byBhbiBvdGhlciBvYmplY3RzITwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudExpbmtPYmplY3QyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRMaW5rT2JqZWN0MiZhbXA7U291cmNlQ2xhc3M9VGlja2V0JmFtcDtTb3VyY2VLZXk9JFFEYXRheyJUaWNrZXRJRCJ9PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzQyMC1EZWNpc2lvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk1vZHVsZSB0byBzaG93IGRlY2lzaW9uIGxpbmsgaW4gbWVudS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+3GJlciBkaWVzZXMgTW9kdWwgd2lyZCBkZXIgRW50c2NoZWlkdW5nLUxpbmsgaW4gZGVyIExpbmtsZWlzdGUgZGVyIFRpY2tldGFuc2ljaHQgYW5nZXplaWd0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51RGVjaXNpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkRlY2lzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+QWRkIGEgZGVjaXNpb24gbm90ZSE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRUaWNrZXREZWNpc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50VGlja2V0RGVjaXNpb24mYW1wO1RpY2tldElEPSRRRGF0YXsiVGlja2V0SUQifTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgb3B0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5CZW72dGlndGUgUmVjaHRlIHp1ciBCZWFyYmVpdHVuZyBkZXMgVGlja2V0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+cnc8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjUmVxdWlyZWRMb2NrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+QSB0aWNrZXQgbG9jayBpcyByZXF1aXJlZC4gSW4gY2FzZSB0aGUgdGlja2V0IGlzbid0IGxvY2tlZCwgdGhlIHRpY2tldCBnZXRzIGxvY2tlZCBhbmQgdGhlIGN1cnJlbnQgYWdlbnQgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSBhcyB0aWNrZXQgb3duZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkVpbmUgVGlja2V0LVNwZXJyZSB3aXJkIGJlbvZ0aWd0LiBXZW5uIFRpY2tldCBuaWNodCBnZXNwZXJydCBpc3QsIHdpcmQgZGFzIFRpY2tldCBhdXRvbWF0aXNjaCBnZXNwZXJydCB1bmQgZGVyIEFnZW50IGFscyBCZXNpdHplciBnZXNldHp0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1RpY2tldFR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5JZiB5b3Ugd2FudCB0byBzZXQgdGhlIHRpY2tldCB0eXBlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkZXIgVGlja2V0LVR5cCBnZXNldHp0IHdlcmRlbiBzb2xsIChUaWNrZXQ6OlR5cGUgbXVzcyBha3RpdiBzZWluKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNTZXJ2aWNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgeW91IHdhbnQgdG8gc2V0IHRoZSBzZXJ2aWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkZXIgU2VydmljZSBnZXNldHp0IHdlcmRlbiBzb2xsIChUaWNrZXQ6OlNlcnZpY2UgbXVzcyBha3RpdiBzZWluKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNPd25lciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklmIHlvdSB3YW50IHRvIHNldCB0aGUgb3duZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGVyIEJlc2l0emVyIGdlc2V0enQgd2VyZGVuIHNvbGwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjUmVzcG9uc2libGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5JZiB5b3Ugd2FudCB0byBzZXQgdGhlIHJlc3BvbnNpYmxlIGFnZW50LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5XZW5uIGRlciBWZXJhbnR3b3J0bGljaGUgZ2VzZXR6dCB3ZXJkZW4gc29sbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPldvdWxkIHlvdSBsaWtlIHRvIHNldCB0aGUgc3RhdGUgb2YgYSB0aWNrZXQgaWYgYSBub3RlIGlzIGFkZGVkIGJ5IGFuIGFnZW50PzwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5Tb2xsIGRlciBTdGF0dXMgZWluZXMgVGlja2V0cyBnZXNldHp0IHdlcmRlbiBr9m5uZW4sIHdlbm4gZWluZSBOb3RpeiBkdXJjaCBlaW5lbiBBZ2VudCBhbmdlbGVndCB3aXJkPzwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1N0YXRlVHlwZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgbmV4dCBzdGF0ZXMgYWZ0ZXIgYWRkaW5nIGEgbm90ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+TuRjaHN0bfZnbGljaGUgU3RhdHVzIG5hY2ggZGVtIEhpbnp1ZvxnZW4gZWluZXIgTm90aXouPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5vcGVuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Y2xvc2VkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+cGVuZGluZyByZW1pbmRlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnBlbmRpbmcgYXV0bzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjU3RhdGVEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBuZXh0IHN0YXRlIGFmdGVyIGFuIGVtYWlsIHRpY2tldC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+U3RhbmRhcmRt5N9pZyBhdXNnZXfkaGx0ZXIgbuRjaHN0ZXIgU3RhdHVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5vcGVuPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI05vdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93IG5vdGUgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5FaW5nYWJlbfZnbGljaGtlaXQgZvxyIE5vdGl6LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1N1YmplY3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IG5vdGUgc3ViamVjdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+U3RhbmRhcmR0ZXh0IGltIEJldHJlZmYgZWluZXIgTm90aXouPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPiRUZXh0eyJOb3RlIn08L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjQm9keSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgbm90ZSB0ZXh0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5TdGFuZGFyZHRleHQgaW0gVGV4dGZlbGQgZWluZXIgTm90aXouPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8VGV4dEFyZWE+PC9UZXh0QXJlYT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjSW52b2x2ZWRBZ2VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgc2VsZWN0aW9uIG9mIGludm9sdmVkIGFnZW50cz88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+QXVzd2FobCBkZXIgaW52b2x2aWVydGVuIEFnZW50cyBhbnplaWdlbj88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNJbmZvcm1BZ2VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgc2VsZWN0aW9uIG9mIGFnZW50cyB0byBpbmZvcm0/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkF1c3dhaGwgZGVyIHp1IGluZm9ybWllcmVuZGVuIEFnZW50cyBhbnplaWdlbj88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNBcnRpY2xlVHlwZURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IG5vdGUgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+Vm9yZWluZ2VzdGVsbHRlciBOb3RpenR5cC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+bm90ZS1pbnRlcm5hbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNBcnRpY2xlVHlwZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TcGVjaWZ5IHRoZSBkaWZmZXJlbnQgbm90ZSB0eXBlcyB0aGF0IHlvdSB3YW50IHRvIHVzZSBpbiB5b3VyIHN5c3RlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+SGllciBr9m5uZW4gZGllIHZlcnNjaGllZGVuZW4gTm90aXotVHlwZW4gZmVzdGdlbGVndCB3ZXJkZW4sIGRpZSBpbm5lcmhhbGIgZGVzIFN5c3RlbXMgdmVyd2VuZGV0IHdlcmRlbiBzb2xsZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ibm90ZS1pbnRlcm5hbCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ibm90ZS1leHRlcm5hbCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ibm90ZS1yZXBvcnQiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjUHJpb3JpdHkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93IHByaW9yaXR5IG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPk32Z2xpY2hrZWl0IGVpbmUgUHJpb3JpdOR0IGF1c3p1d+RobGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1ByaW9yaXR5RGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgcHJpb3JpdHkgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmYXVsdCBBdXN3YWhsIGRlciBQcmlvcml05HQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPjMgbm9ybWFsPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1RpdGxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvdyB0aXRsZSBmaWVsZHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkVpbmdhYmVt9mdsaWNoa2VpdCBm/HIgVGl0bGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjVGlja2V0RnJlZVRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93biB0aWNrZXQgZnJlZSB0ZXh0IG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkdlemVpZ3RlIFRpY2tldC1GcmVpLVRleHQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjYiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjciPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjgiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEzIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE2Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1RpY2tldEZyZWVUaW1lIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gZnJlZSB0aW1lIG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkdlemVpZ3RlIEZyZWktWmVpdC1GZWxkZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNBcnRpY2xlRnJlZVRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93biBhcnRpY2xlIGZyZWUgdGV4dCBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBBcnRpa2VsLUZyZWktVGV4dC1GZWxkZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNIaXN0b3J5VHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkhpc3RvcnkgdHlwZSBmb3IgdGhpcyBhY3Rpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkhpc3RvcmllbnR5cCBm/HIgZGllc2UgQWt0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5BZGROb3RlPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI0hpc3RvcnlDb21tZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SGlzdG9yeSBjb21tZW50IGZvciB0aGlzIGFjdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+SGlzdG9yaWVua29tbWVudGFyIGb8ciBkaWVzZSBBa3Rpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPiUlRnJlZVRleHQ8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG9wdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+QmVu9nRpZ3RlIFJlY2h0ZSB6dXIgQmVhcmJlaXR1bmcgZGVzIFRpY2tldHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPnJ3PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1JlcXVpcmVkTG9jayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQuIEluIGNhc2UgdGhlIHRpY2tldCBpc24ndCBsb2NrZWQsIHRoZSB0aWNrZXRzIGdldCBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgdGlja2V0IG93bmVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5FaW5lIFRpY2tldC1TcGVycmUgd2lyZCBiZW72dGlndCBiencuIHdlbm4gVGlja2V0IG5pY2h0IGdlc3BlcnJ0IGlzdCwgd2lyZCBkYXMgVGlja2V0IGF1dG9tYXRpc2NoIGdlc3BlcnJ0IHVuZCBkZXIgQWdlbnQgYWxzIEJlc2l0emVyIGdlc2V0enQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjVGlja2V0VHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklmIHlvdSB3YW50IHRvIHNldCB0aGUgdGlja2V0IHR5cGUgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5XZW5uIGRlciBUaWNrZXQtVHlwIGdlc2V0enQgd2VyZGVuIHNvbGwgKFRpY2tldDo6VHlwZSBtdXNzIGFrdGl2IHNlaW4pLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1NlcnZpY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5JZiB5b3Ugd2FudCB0byBzZXQgdGhlIHNlcnZpY2UgKFRpY2tldDo6U2VydmljZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5XZW5uIGRlciBTZXJ2aWNlIGdlc2V0enQgd2VyZGVuIHNvbGwgKFRpY2tldDo6U2VydmljZSBtdXNzIGFrdGl2IHNlaW4pLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI093bmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgeW91IHdhbnQgdG8gc2V0IHRoZSBvd25lci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkZXIgQmVzaXR6ZXIgZ2VzZXR6dCB3ZXJkZW4gc29sbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNSZXNwb25zaWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklmIHlvdSB3YW50IHRvIHNldCB0aGUgcmVzcG9uc2libGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGVyIFZlcmFudHdvcnRsaWNoZSBnZXNldHp0IHdlcmRlbiBzb2xsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1N0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+V291bGQgeW91IGxpa2UgdG8gc2V0IHRoZSBzdGF0ZSBvZiBhIHRpY2tldCBpZiBhIG5vdGUgaXMgY3JlYXRlZCBieSBhbiBhZ2VudD88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+U29sbCBkZXIgU3RhdHVzIGVpbmVzIFRpY2tldHMgZ2VzZXR6dCB3ZXJkZW4ga/ZubmVuLCB3ZW5uIGVpbmUgTm90aXogZHVyY2ggZWluZW4gQWdlbnQgYW5nZWxlZ3Qgd2lyZD88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNTdGF0ZVR5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IG5leHQgc3RhdGVzIGFmdGVyIGFkZGluZyBhIG5vdGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPk7kY2hzdG32Z2xpY2hlIFN0YXR1cyBuYWNoIGRlbSBIaW56dWb8Z2VuIGVpbmVyIE5vdGl6LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+b3BlbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPmNsb3NlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnBlbmRpbmcgcmVtaW5kZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wZW5kaW5nIGF1dG88L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1N0YXRlRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgbmV4dCBzdGF0ZSBhZnRlciBhbiBlbWFpbCB0aWNrZXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlN0YW5kYXJkbeTfaWcgYXVzZ2V35GhsdGVyIG7kY2hzdGVyIFN0YXR1cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+b3BlbjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNOb3RlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvdyBub3RlIGZpZWxkcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RWluZ2FiZW32Z2xpY2hrZWl0IGb8ciBOb3Rpei48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNTdWJqZWN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBub3RlIHN1YmplY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlN0YW5kYXJkdGV4dCBpbSBCZXRyZWZmIGVpbmVyIE5vdGl6LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4kVGV4dHsiRGVjaXNpb24ifTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNCb2R5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBub3RlIHRleHQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlN0YW5kYXJkdGV4dCBpbSBUZXh0ZmVsZCBlaW5lciBOb3Rpei48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxUZXh0QXJlYT4kVGV4dHsiUmVhc29uIn06PC9UZXh0QXJlYT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjSW52b2x2ZWRBZ2VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgc2VsZWN0aW9uIG9mIGludm9sdmVkIGFnZW50cz88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+QXVzd2FobCBkZXIgaW52b2x2aWVydGVuIEFnZW50cyBhbnplaWdlbj88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNJbmZvcm1BZ2VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgc2VsZWN0aW9uIG9mIGFnZW50cyB0byBpbmZvcm0/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkF1c3dhaGwgZGVyIHp1IGluZm9ybWllcmVuZGVuIEFnZW50cyBhbnplaWdlbj88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNBcnRpY2xlVHlwZURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IG5vdGUgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+Vm9yZWluZ2VzdGVsbHRlciBOb3RpenR5cC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+bm90ZS1pbnRlcm5hbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNBcnRpY2xlVHlwZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TcGVjaWZ5IHRoZSBkaWZmZXJlbnQgbm90ZSB0eXBlcywgdGhhdCB5b3Ugd2FudCB0byB1c2UgaW4geW91ciBzeXN0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkhpZXIga/ZubmVuIGRpZSB2ZXJzY2hpZWRlbmVuIE5vdGl6LVR5cGVuIGZlc3RnZWxlZ3Qgd2VyZGVuLCBkaWUgaW5uZXJoYWxiIGRlcyBTeXN0ZW1zIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtaW50ZXJuYWwiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtZXh0ZXJuYWwiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtcmVwb3J0Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1ByaW9yaXR5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvdyBwcmlvcml0eSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5N9mdsaWNoa2VpdCBkZXIgQXVzd2FobCBm/HIgZGllIFByaW9yaXTkdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNQcmlvcml0eURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IHByaW9yaXR5IG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmF1bHQgQXVzd2FobCBkZXIgUHJpb3JpdOR0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4zIG5vcm1hbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNUaXRsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgdGl0bGUgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5FaW5nYWJlbfZnbGljaGtlaXQgZvxyIFRpdGxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1RpY2tldEZyZWVUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gdGlja2V0IGZyZWUgdGV4dCBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBUaWNrZXQtRnJlaS1UZXh0LUZlbGRlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI2Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNUaWNrZXRGcmVlVGltZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIGZyZWUgdGltZSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBGcmVpLVplaXQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjYiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjQXJ0aWNsZUZyZWVUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gYXJ0aWNsZSBmcmVlIHRleHQgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+R2V6ZWlndGUgQXJ0aWtlbC1GcmVpLVRleHQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjSGlzdG9yeVR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5IaXN0b3J5IHR5cGUgZm9yIHRoaXMgYWN0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5IaXN0b3JpZW50eXAgZvxyIGRpZXNlIEFrdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+QWRkTm90ZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNIaXN0b3J5Q29tbWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkhpc3RvcnkgY29tbWVudCBmb3IgdGhpcyBhY3Rpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkhpc3RvcmllbmtvbW1lbnRhciBm/HIgZGllc2UgQWt0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4lJU5vdGU8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMaW5rT2JqZWN0Mjo6UG9zc2libGVQYXJ0bmVyIyMjVGlja2V0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+UG9zc2libGUgcGFydG5lciBmcm9tIElUU01Db25maWdJdGVtIG9iamVjdCB0byBvdGhlciBvYmplY3RzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5N9mdsaWNoZSBQYXJ0bmVyIHZvbSBJVFNNQ29uZmlnSXRlbSB6dSBhbmRlcmVuIE9iamVrdGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyYW1ld29yazwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkxpbmtPYmplY3QyOjpQb3NzaWJsZVBhcnRuZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+UmVsZXZhbnRUbzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RGVwZW5kc09uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5BbHRlcm5hdGl2ZVRvPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Ob3JtYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlBhcmVudENoaWxkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFBob25lIyMjU3BsaXRMaW5rVHlwZTIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IGxpbmsgdHlwZSBvZiBzcGxpdGVkIHRpY2tldHMgZm9yIExpbmtPYmplY3QyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5TdGFuZGFyZG3k32lnIHZlcmdlYmVuZXIgVmVya278cGZ1bmdzLVR5cCB2b24gZ2V0ZWlsdGVuIFRpY2tldHMgZvxyIGRhcyBMaW5rT2JqZWt0Mi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld1Bob25lTmV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJOb3JtYWwiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIiPi0gKG5vIGxpbmtzIGJldHdlZW4gdGlja2V0cyk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmVudENoaWxkOjpOb3JtYWwiPkNoaWxkIChuZXcgdGlja2V0IGlzIGNoaWxkKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFyZW50Q2hpbGQ6OlJldmVyc2UiPlBhcmVudCAobmV3IHRpY2tldCBpcyBwYXJlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3JtYWwiPk5vcm1hbCAobm9ybWFsIGxpbmsgYmV0d2VlbiB0aWNrZXQpPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdGF0czo6RHluYW1pY09iamVjdFJlZ2lzdHJhdGlvbiMjI0lUU01UaWNrZXRGaXJzdExldmVsU29sdXRpb25SYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SGVyZSB5b3UgY2FuIGRlY2lkZSBpZiB0aGUgc3RhdHMgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdGF0cyBhYm91dCBpdHNtIHRpY2tldCBmaXJzdCBsZXZlbCBzb2x1dGlvbiByYXRlIHN0dWZmLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5IaWVyIGv2bm5lbiBTaWUgZmVzdGxlZ2VuLCBvYiBkYXMgU3RhdGlzdGlrLU1vZHVsIGF1Y2ggU3RhdGlzdGlrZW4g/GJlciBJVFNNLVRpY2tldC1FcnN0bPZzdW5nc3JhdGUgRGluZ2UgZ2VuZXJpZXJlbiBkYXJmLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyYW1ld29yazwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN0YXRzPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpJVFNNVGlja2V0Rmlyc3RMZXZlbFNvbHV0aW9uUmF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN0YXRzOjpEeW5hbWljT2JqZWN0UmVnaXN0cmF0aW9uIyMjSVRTTVRpY2tldFNvbHV0aW9uVGltZUF2ZXJhZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5IZXJlIHlvdSBjYW4gZGVjaWRlIGlmIHRoZSBzdGF0cyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN0YXRzIGFib3V0IGl0c20gdGlja2V0IHNvbHV0aW9uIGF2ZXJhZ2Ugc3R1ZmYuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkhpZXIga/ZubmVuIFNpZSBmZXN0bGVnZW4sIG9iIGRhcyBTdGF0aXN0aWstTW9kdWwgYXVjaCBTdGF0aXN0aWtlbiD8YmVyIElUU00tVGlja2V0LUz2c3VuZ3N6ZWl0LUR1cmNoc2NuaXR0IERpbmdlIGdlbmVyaWVyZW4gZGFyZi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdGF0czwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6SVRTTVRpY2tldFNvbHV0aW9uVGltZUF2ZXJhZ2U8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3Ryc19jb25maWc+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4KPG90cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQXBwbGljYXRpb24iPgogICAgPENWUz4kSWQ6IFRpY2tldElUU01UaWNrZXQueG1sLHYgMS44IDIwMDgvMDMvMTcgMTA6MzI6MzQgbWggRXhwICQ8L0NWUz4KICAgIDxDVlM+JE9sZElkOiBUaWNrZXQueG1sLHYgMS4xNDcuMi43IDIwMDgvMDMvMTYgMTk6MjE6NTEgbWFydGluIEV4cCAkPC9DVlM+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OlR5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5JZiB0aWNrZXQgdHlwZSBmZWF0dXJlIGlzIGVuYWJsZWQsIHlvdSBjYW4gZGVmaW5lIHRpY2tldCB0eXBlcyBmb3IgdGlja2V0cyAoZS4gZy4gaW5jaWRlbnQsIHByb2JsZW0sIGNoYW5nZSwgLi4uKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkYXMgVGlja2V0LVR5cCBGZWF0dWVzIGFrdGl2aWVydCBpc3QsIGv2bm5lbiBUaWNrZXQgVHlwZW4gcHJvIFRpY2tldCBnZXNldHp0IHdlcmRlbiAoei4gQi4gaW5jaWRlbnQsIHByb2JsZW0sIGNoYW5nZSwgLi4uKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlS2V5MTMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIGZyZWUga2V5IGZpZWxkIDEzIGZvciB0aWNrZXRzLiBXaXRoIHRoaXMgc2V0dGluZyB5b3UgY2FuIGRlZmluZSBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZWZpbml0aW9uIGRlcyBGcmVpU2NobPxzc2VsRmVsZGVzIDEzIGb8ciBUaWNrZXRzLiBIaWVy/GJlciBr9m5uZW4genVz5HR6bGljaGUgVGlja2V0YXR0cmlidXRlIGRlZmluaWVydCB3ZXJkZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3JpdGljYWxpdHlJRCI+Q3JpdGljYWxpdHlJRDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUZXh0MTMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIEZyZWVUZXh0RmllbGQgMTMgZm9yIHRpY2tldHMuIFdpdGggdGhpcyBzZXR0aW5nIHlvdSBjYW4gZGVmaW5lIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIEZyZWlUZXh0RmVsZGVzIDEzIGb8ciBUaWNrZXRzLiBIaWVy/GJlciBr9m5uZW4genVz5HR6bGljaGUgVGlja2V0YXR0cmlidXRlIGRlZmluaWVydCB3ZXJkZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iIj5ETyBOT1QgQUNUSVZBVEUgVGlja2V0RnJlZVRleHQxMy4gR0VORVJBTCBDQVRBTE9HIElTIFVTRUQuPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZUtleTE0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBmcmVlIGtleSBmaWVsZCAxNCBmb3IgdGlja2V0cy4gV2l0aCB0aGlzIHNldHRpbmcgeW91IGNhbiBkZWZpbmUgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgRnJlaVNjaGz8c3NlbEZlbGRlcyAxNCBm/HIgVGlja2V0cy4gSGllcvxiZXIga/ZubmVuIHp1c+R0emxpY2hlIFRpY2tldGF0dHJpYnV0ZSBkZWZpbmllcnQgd2VyZGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkltcGFjdElEIj5JbXBhY3RJRDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUZXh0MTQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIEZyZWVUZXh0RmllbGQgMTQgZm9yIHRpY2tldHMuIFdpdGggdGhpcyBzZXR0aW5nIHlvdSBjYW4gZGVmaW5lIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIEZyZWlUZXh0RmVsZGVzIDE0IGb8ciBUaWNrZXRzLiBIaWVy/GJlciBr9m5uZW4genVz5HR6bGljaGUgVGlja2V0YXR0cmlidXRlIGRlZmluaWVydCB3ZXJkZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iIj5ETyBOT1QgQUNUSVZBVEUgVGlja2V0RnJlZVRleHQxNC4gR0VORVJBTCBDQVRBTE9HIElTIFVTRUQuPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRleHQxNDo6RGVmYXVsdFNlbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlRoZSBkZWZhdWx0IHNlbGVjdGlvbiBvZiBGcmVlVGV4dEZpZWxkIDE0IGlmIG1vcmUgdGhhbiBvbmUgb3B0aW9uIGlzIGRlZmluZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRpZSBTdGFuZGFyZC1BdXN3YWhsIGRlcyBGcmVpVGV4dEZlbGRlcyAxNCB3ZW5uIG1laHJlcmUgT3B0aW9uZW4gZGVmaW5pZXJ0IHNpbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPjMgbm9ybWFsPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZUtleTE1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBmcmVlIGtleSBmaWVsZCAxNSBmb3IgdGlja2V0cy4gV2l0aCB0aGlzIHNldHRpbmcgeW91IGNhbiBkZWZpbmUgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgRnJlaVNjaGz8c3NlbEZlbGRlcyAxNSBm/HIgVGlja2V0cy4gSGllcvxiZXIga/ZubmVuIHp1c+R0emxpY2hlIFRpY2tldGF0dHJpYnV0ZSBkZWZpbmllcnQgd2VyZGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJldmlldyBSZXF1aXJlZCI+UmV2aWV3IFJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRleHQxNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgRnJlZVRleHRGaWVsZCAxNSBmb3IgdGlja2V0cy4gV2l0aCB0aGlzIHNldHRpbmcgeW91IGNhbiBkZWZpbmUgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgRnJlaVRleHRGZWxkZXMgMTUgZvxyIFRpY2tldHMuIEhpZXL8YmVyIGv2bm5lbiB6dXPkdHpsaWNoZSBUaWNrZXRhdHRyaWJ1dGUgZGVmaW5pZXJ0IHdlcmRlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGV4dDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRleHQxNTo6RGVmYXVsdFNlbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlRoZSBkZWZhdWx0IHNlbGVjdGlvbiBvZiBGcmVlVGV4dEZpZWxkIDE1IGlmIG1vcmUgdGhhbiBvbmUgb3B0aW9uIGlzIGRlZmluZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRpZSBTdGFuZGFyZC1BdXN3YWhsIGRlcyBGcmVpVGV4dEZlbGRlcyAxNSB3ZW5uIG1laHJlcmUgT3B0aW9uZW4gZGVmaW5pZXJ0IHNpbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPk5vPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZUtleTE2IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBmcmVlIGtleSBmaWVsZCAxNiBmb3IgdGlja2V0cy4gV2l0aCB0aGlzIHNldHRpbmcgeW91IGNhbiBkZWZpbmUgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgRnJlaVNjaGz8c3NlbEZlbGRlcyAxNiBm/HIgVGlja2V0cy4gSGllcvxiZXIga/ZubmVuIHp1c+R0emxpY2hlIFRpY2tldGF0dHJpYnV0ZSBkZWZpbmllcnQgd2VyZGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlY2lzaW9uIFJlc3VsdCI+RGVjaXNpb24gUmVzdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRleHQxNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgRnJlZVRleHRGaWVsZCAxNiBmb3IgdGlja2V0cy4gV2l0aCB0aGlzIHNldHRpbmcgeW91IGNhbiBkZWZpbmUgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgRnJlaVRleHRGZWxkZXMgMTYgZvxyIFRpY2tldHMuIEhpZXL8YmVyIGv2bm5lbiB6dXPkdHpsaWNoZSBUaWNrZXRhdHRyaWJ1dGUgZGVmaW5pZXJ0IHdlcmRlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGV4dDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZW5kaW5nIj5QZW5kaW5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmUtYXBwcm92ZWQiPlByZS1hcHByb3ZlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXBwcm92ZWQiPkFwcHJvdmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQb3N0cG9uZWQiPlBvc3Rwb25lZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVqZWN0ZWQiPlJlamVjdGVkPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRleHQxNjo6RGVmYXVsdFNlbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlRoZSBkZWZhdWx0IHNlbGVjdGlvbiBvZiBGcmVlVGV4dEZpZWxkIDE2IGlmIG1vcmUgdGhhbiBvbmUgb3B0aW9uIGlzIGRlZmluZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRpZSBTdGFuZGFyZC1BdXN3YWhsIGRlcyBGcmVpVGV4dEZlbGRlcyAxNiB3ZW5uIG1laHJlcmUgT3B0aW9uZW4gZGVmaW5pZXJ0IHNpbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPlBlbmRpbmc8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlVGltZUtleTMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIGtleSBvZiBUaWNrZXRGcmVlVGltZSBmaWVsZCAzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZWZpbml0aW9uIGRlcyBTY2hsdWVzc2VscyB2b24gVGlja2V0RnJlZVRpbWUgRmVsZCAzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUaW1lPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5SZXBhaXIgU3RhcnQgVGltZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUaW1lUGVyaW9kMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgcGVyaW9kLCB3aGljaCBjYW4gc2VsZWN0ZWQgaW4gVGlja2V0RnJlZVRpbWUgZmllbGQgMy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXIgWmVpdHNwYW5uZSwgZGllIGltIFRpY2tldEZyZWVUaW1lIEZlbGQgMyBzZWxla3RpZXJ0IHdlcmRlbiBrYW5uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUaW1lPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlllYXJQZXJpb2RQYXN0Ij41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJZZWFyUGVyaW9kRnV0dXJlIj41PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRpbWVLZXk0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBrZXkgb2YgVGlja2V0RnJlZVRpbWUgZmllbGQgNC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgU2NobHVlc3NlbHMgdm9uIFRpY2tldEZyZWVUaW1lIEZlbGQgNC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+UmVjb3ZlcnkgU3RhcnQgVGltZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUaW1lUGVyaW9kNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgcGVyaW9kLCB3aGljaCBjYW4gc2VsZWN0ZWQgaW4gVGlja2V0RnJlZVRpbWUgZmllbGQgNC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXIgWmVpdHNwYW5uZSwgZGllIGltIFRpY2tldEZyZWVUaW1lIEZlbGQgNCBzZWxla3RpZXJ0IHdlcmRlbiBrYW5uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUaW1lPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlllYXJQZXJpb2RQYXN0Ij41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJZZWFyUGVyaW9kRnV0dXJlIj41PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRpbWVLZXk1IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBrZXkgb2YgVGlja2V0RnJlZVRpbWUgZmllbGQgNS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgU2NobHVlc3NlbHMgdm9uIFRpY2tldEZyZWVUaW1lIEZlbGQgNS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+RGVjaXNpb24gRGF0ZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUaW1lUGVyaW9kNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgcGVyaW9kLCB3aGljaCBjYW4gc2VsZWN0ZWQgaW4gVGlja2V0RnJlZVRpbWUgZmllbGQgNS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXIgWmVpdHNwYW5uZSwgZGllIGltIFRpY2tldEZyZWVUaW1lIEZlbGQgNSBzZWxla3RpZXJ0IHdlcmRlbiBrYW5uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUaW1lPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlllYXJQZXJpb2RQYXN0Ij41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJZZWFyUGVyaW9kRnV0dXJlIj41PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRpbWVLZXk2IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBrZXkgb2YgVGlja2V0RnJlZVRpbWUgZmllbGQgNi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgU2NobHVlc3NlbHMgdm9uIFRpY2tldEZyZWVUaW1lIEZlbGQgNi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+RHVlIERhdGU8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlVGltZURpZmY2IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBkaWZmZXJlbmNlIChpbiBzZWNvbmRzKSBvZiB0aGUgZGVmYXVsdHZhbHVlIGluIFRpY2tldEZyZWVUaW1lIGZpZWxkIDYuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIFVudGVyc2NoaWVkcyAoaW4gU2VrdW5kZW4pIGRlcyBEZWZhdWx0d2VydHMgdm9uIFRpY2tldEZyZWVUaW1lIEZlbGQgNi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+MjU5MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRpbWVQZXJpb2Q2IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBwZXJpb2QsIHdoaWNoIGNhbiBzZWxlY3RlZCBpbiBUaWNrZXRGcmVlVGltZSBmaWVsZCA2LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZWZpbml0aW9uIGRlciBaZWl0c3Bhbm5lLCBkaWUgaW0gVGlja2V0RnJlZVRpbWUgRmVsZCA2IHNlbGVrdGllcnQgd2VyZGVuIGthbm4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRpbWU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iWWVhclBlcmlvZFBhc3QiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlllYXJQZXJpb2RGdXR1cmUiPjk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRUaWNrZXRGcmVlVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBBZ2VudFRpY2tldEZyZWVUZXh0IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5Gcm9udGVuZG1vZHVsLVJlZ2lzdHJhdGlvbiBkZXMgQWdlbnRUaWNrZXRGcmVlVGV4dC1PYmpla3RzIGltIEFnZW50LUludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5UaWNrZXQgRnJlZVRleHQ8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlPkZyZWUgRmllbGRzPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPlRpY2tldDwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldENsb3NlIyMjVGlja2V0RnJlZVRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93biB0aWNrZXQgZnJlZSB0ZXh0IG9wdGlvbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkFuZ2V6ZWlndGUgVGlja2V0LUZyZWktVGV4dC1GZWxkZXIuIE32Z2xpY2hlIEVpbnN0ZWxsdW5nZW46IDAgPSBEZWFrdGl2aWVydCwgMSA9IEFrdGl2aWVydCwgMiA9IEFrdGl2aWVydCB1bmQgUGZsaWNodGZlbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdDbG9zZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI2Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNiI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Q29tcG9zZSMjI1RpY2tldEZyZWVUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gdGlja2V0IGZyZWUgdGV4dCBvcHRpb25zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5BbmdlemVpZ3RlIFRpY2tldC1GcmVpLVRleHQtRmVsZGVyLiBN9mdsaWNoZSBFaW5zdGVsbHVuZ2VuOiAwID0gRGVha3RpdmllcnQsIDEgPSBBa3RpdmllcnQsIDIgPSBBa3RpdmllcnQgdW5kIFBmbGljaHRmZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3Q29tcG9zZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI2Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNiI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RW1haWwjIyNUaWNrZXRGcmVlVGltZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIGZyZWUgdGltZSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBGcmVpLVplaXQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RW1haWxOZXc8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UGhvbmUjIyNUaWNrZXRGcmVlVGltZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIGZyZWUgdGltZSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBGcmVpLVplaXQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3UGhvbmVOZXc8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UGhvbmUjIyNTcGxpdExpbmtUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBsaW5rIHR5cGUgb2Ygc3BsaXRlZCB0aWNrZXRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5TdGFuZGFyZG3k32lnIHZlcmdlYmVuZXIgVmVya278cGZ1bmdzLVR5cCB2b24gZ2V0ZWlsdGVuIFRpY2tldHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdQaG9uZU5ldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iQ2hpbGQiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIiPi0gKG5vIGxpbmtzIGJldHdlZW4gdGlja2V0cyk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoaWxkIj5DaGlsZCAobmV3IHRpY2tldCBpcyBjaGlsZCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmVudCI+UGFyZW50IChuZXcgdGlja2V0IGlzIHBhcmVudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vcm1hbCI+Tm9ybWFsIChub3JtYWwgbGluayBiZXR3ZWVuIHRpY2tldCk8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UHJpb3JpdHkjIyNUaWNrZXRUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgeW91IHdhbnQgdG8gc2V0IHRoZSB0aWNrZXQgdHlwZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGVyIFRpY2tldC1UeXAgZ2VzZXR6dCB3ZXJkZW4gc29sbCAoVGlja2V0OjpUeXBlIG11c3MgYWt0aXYgc2VpbikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdQcmlvcml0eTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UHJpb3JpdHkjIyNTZXJ2aWNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgeW91IHdhbnQgdG8gc2V0IHRoZSBzZXJ2aWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkZXIgU2VydmljZSBnZXNldHp0IHdlcmRlbiBzb2xsIChUaWNrZXQ6OlNlcnZpY2UgbXVzcyBha3RpdiBzZWluKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld1ByaW9yaXR5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNUaWNrZXRGcmVlVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIHRpY2tldCBmcmVlIHRleHQgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+R2V6ZWlndGUgVGlja2V0LUZyZWktVGV4dC1GZWxkZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjExIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTYiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFNlYXJjaCMjI1RpY2tldEZyZWVUaW1lIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gZnJlZSB0aW1lIG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkdlemVpZ3RlIEZyZWktWmVpdC1GZWxkZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMTAtRnJlZVRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Nb2R1bGUgdG8gc2hvdyBmcmVlIHRleHQgbGluayBpbiBtZW51LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5MaW5rIGb8ciAiRnJlaWZlbGRlciIgaW0gTWVu/CBkZXIgVGlja2V0YW5zaWNodCBhbnplaWdlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+RnJlZSBGaWVsZHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5DaGFuZ2UgdGhlIHRpY2tldCBmcmVlIGZpZWxkcyE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRUaWNrZXRGcmVlVGV4dDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50VGlja2V0RnJlZVRleHQmYW1wO1RpY2tldElEPSRRRGF0YXsiVGlja2V0SUQifTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMjAtTGluayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk1vZHVsZSB0byBzaG93IGEgbGluayB0byBsaW5rIGEgdGlja2V0IHdpdGggYW5vdGhlciBvYmplY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPtxiZXIgZGllc2VzIE1vZHVsIHdpcmQgZWluIExpbmsgaW0gTWVu/CBkZXIgVGlja2V0YW5zaWNodCBhbmdlemVpZ3QsIG1pdCBkZW0gZWluIFRpY2tldCBtaXQgZWluZW0gYW5kZXJlbiBPYmpla3QgdmVya278cGZ0IHdlcmRlbiBrYW5uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldE1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+TGluayB0aGlzIHRpY2tldCB0byBhbiBvdGhlciBvYmplY3RzITwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudExpbmtPYmplY3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudExpbmtPYmplY3QmYW1wO1NvdXJjZU9iamVjdD1UaWNrZXQmYW1wO1NvdXJjZUlEPSRRRGF0YXsiVGlja2V0SUQifTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KPC9vdHJzX2NvbmZpZz4=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9iZ19JVFNNVGlja2V0LnBtIC0gdGhlIGJ1bGdhcmlhbiB0cmFuc2xhdGlvbiBvZiBJVFNNVGlja2V0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDggT1RSUyBBRywgaHR0cDovL290cnMub3JnLwojIC0tCiMgJElkOiBiZ19JVFNNVGlja2V0LnBtLHYgMS41IDIwMDgvMDMvMTkgMTU6MjQ6MzkgbWggRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpiZ19JVFNNVGlja2V0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHZhcnMgcXcoJFZFUlNJT04pOwokVkVSU0lPTiA9IHF3KCRSZXZpc2lvbjogMS41ICQpIFsxXTsKCnN1YiBEYXRhIHsKICAgIG15ICgkU2VsZikgPSBAXzsKICAgIG15ICRMYW5nID0gJFNlbGYtPntUcmFuc2xhdGlvbn07CgogICAgcmV0dXJuIGlmIHJlZiAkTGFuZyBuZSAnSEFTSCc7CgogICAgJExhbmctPnsnRHVlIERhdGUnfSAgICAgICAgICAgICAgICAgICAgID0gJ8rw4Ont4CDk4PLgJzsKICAgICRMYW5nLT57J0RlY2lzaW9uJ30gICAgICAgICAgICAgICAgICAgICA9ICfQ5fjl7ejlJzsKICAgICRMYW5nLT57J1JlYXNvbid9ICAgICAgICAgICAgICAgICAgICAgICA9ICfO8e3u4uDt6OUnOwogICAgJExhbmctPnsnRGVjaXNpb24gRGF0ZSd9ICAgICAgICAgICAgICAgID0gJ8Tg8uAg5+Ag8OX44OLg7eUnOwogICAgJExhbmctPnsnQWRkIGRlY2lzaW9uIHRvIHRpY2tldCd9ICAgICAgID0gJ8Tu4eDi6CDw5fjl7ejlIOr67CDh6Ovl8uAnOwogICAgJExhbmctPnsnRGVjaXNpb24gUmVzdWx0J30gICAgICAgICAgICAgID0gJ9Dl5/Pr8uDyIO7yIPDl+OXt6OXy7ic7CiAgICAkTGFuZy0+eydSZXZpZXcgUmVxdWlyZWQnfSAgICAgICAgICAgICAgPSAnyOfo8eri4CDv8OXj6+Xm5ODt5Sc7CiAgICAkTGFuZy0+eydjbG9zZWQgd2l0aCB3b3JrYXJvdW5kJ30gICAgICAgPSAn7/Do6uv+9+XtIPEg7uH17uTt7iDw5fjl7ejlJzsKICAgICRMYW5nLT57J0FkZGl0aW9uYWwgSVRTTSBGaWVsZHMnfSAgICAgICA9ICfE7u/66+3o8uXr7eggSVRTTSDv7uvl8uAnOwogICAgJExhbmctPnsnQ2hhbmdlIElUU00gZmllbGRzIG9mIHRpY2tldCd9ID0gJ8/w7uzl7eggSVRTTSDv7uvl8uDy4CDt4CDh6Ovl8uAnOwogICAgJExhbmctPnsnUmVwYWlyIFN0YXJ0IFRpbWUnfSAgICAgICAgICAgID0gJ8Lw5ezlIO3gIPHy4PDy6PDg7eUg7eAg8OXs7u3y4Cc7CiAgICAkTGFuZy0+eydSZWNvdmVyeSBTdGFydCBUaW1lJ30gICAgICAgICAgPSAnwvDl7OUg7eAg8fLg8PLo8ODt5SDt4CDi+ufx8uDt7uL/4uDt5fLuJzsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9jel9JVFNNVGlja2V0LnBtIC0gdGhlIGN6ZWNoIHRyYW5zbGF0aW9uIG9mIElUU01UaWNrZXQKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwOCBPVFJTIEFHLCBodHRwOi8vb3Rycy5vcmcvCiMgLS0KIyAkSWQ6IGN6X0lUU01UaWNrZXQucG0sdiAxLjQgMjAwOC8wMy8xOSAxNToyNDozOSBtaCBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmN6X0lUU01UaWNrZXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyBxdygkVkVSU0lPTik7CiRWRVJTSU9OID0gcXcoJFJldmlzaW9uOiAxLjQgJCkgWzFdOwoKc3ViIERhdGEgewogICAgbXkgKCRTZWxmKSA9IEBfOwogICAgbXkgJExhbmcgPSAkU2VsZi0+e1RyYW5zbGF0aW9ufTsKCiAgICByZXR1cm4gaWYgcmVmICRMYW5nIG5lICdIQVNIJzsKCiAgICAkTGFuZy0+eydEdWUgRGF0ZSd9ICAgICAgICAgICAgICAgICAgICAgPSAnS29uZcSNbsOtIGRhdHVtJzsKICAgICRMYW5nLT57J0RlY2lzaW9uJ30gICAgICAgICAgICAgICAgICAgICA9ICfFmGXFoWVuw60nOwogICAgJExhbmctPnsnUmVhc29uJ30gICAgICAgICAgICAgICAgICAgICAgID0gJ0TFr3ZvZCc7CiAgICAkTGFuZy0+eydEZWNpc2lvbiBEYXRlJ30gICAgICAgICAgICAgICAgPSAnRGF0dW0gcm96aG9kbnV0w60nOwogICAgJExhbmctPnsnQWRkIGRlY2lzaW9uIHRvIHRpY2tldCd9ICAgICAgID0gJ0RvZGF0IMWZZcWhZW7DrSBrIHRpa2V0dSc7CiAgICAkTGFuZy0+eydEZWNpc2lvbiBSZXN1bHQnfSAgICAgICAgICAgICAgPSAnVsO9c2xlZGVrIHJvemhvZG51dMOtJzsKICAgICRMYW5nLT57J1JldmlldyBSZXF1aXJlZCd9ICAgICAgICAgICAgICA9ICdWecW+YWR1amUgcMWZZWhsZWQnOwogICAgJExhbmctPnsnY2xvc2VkIHdpdGggd29ya2Fyb3VuZCd9ICAgICAgID0gJ1V6YXbFmWVuIHMgb2JjaG9kbsOtbSByb3pob2RudXTDrW0nOwogICAgJExhbmctPnsnQWRkaXRpb25hbCBJVFNNIEZpZWxkcyd9ICAgICAgID0gJ0RvZGF0ZcSNbsOpIElUU00gcG9sZSc7CiAgICAkTGFuZy0+eydDaGFuZ2UgSVRTTSBmaWVsZHMgb2YgdGlja2V0J30gPSAnWm3Em25pdCBJVFNNIHBvbMOtIHRpa2V0dSc7CiAgICAkTGFuZy0+eydSZXBhaXIgU3RhcnQgVGltZSd9ICAgICAgICAgICAgPSAnxIxhcyB6YWjDoWplbsOtIG9wcmF2eSc7CiAgICAkTGFuZy0+eydSZWNvdmVyeSBTdGFydCBUaW1lJ30gICAgICAgICAgPSAnxIxhcyB6YWjDoWplbsOtIG9ibm92ZW7DrSc7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kZV9JVFNNVGlja2V0LnBtIC0gdGhlIGdlcm1hbiB0cmFuc2xhdGlvbiBvZiBJVFNNVGlja2V0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDggT1RSUyBBRywgaHR0cDovL290cnMub3JnLwojIC0tCiMgJElkOiBkZV9JVFNNVGlja2V0LnBtLHYgMS4xNiAyMDA4LzAzLzE5IDE1OjI0OjM5IG1oIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGVfSVRTTVRpY2tldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRWRVJTSU9OKTsKJFZFUlNJT04gPSBxdygkUmV2aXNpb246IDEuMTYgJCkgWzFdOwoKc3ViIERhdGEgewogICAgbXkgKCRTZWxmKSA9IEBfOwogICAgbXkgJExhbmcgPSAkU2VsZi0+e1RyYW5zbGF0aW9ufTsKCiAgICByZXR1cm4gaWYgcmVmICRMYW5nIG5lICdIQVNIJzsKCiAgICAkTGFuZy0+eydEdWUgRGF0ZSd9ICAgICAgICAgICAgICAgICAgICAgPSAnRuRsbGlna2VpdHNkYXR1bSc7CiAgICAkTGFuZy0+eydEZWNpc2lvbid9ICAgICAgICAgICAgICAgICAgICAgPSAnRW50c2NoZWlkdW5nJzsKICAgICRMYW5nLT57J1JlYXNvbid9ICAgICAgICAgICAgICAgICAgICAgICA9ICdCZWdy/G5kdW5nJzsKICAgICRMYW5nLT57J0RlY2lzaW9uIERhdGUnfSAgICAgICAgICAgICAgICA9ICdFbnRzY2hlaWR1bmdzZGF0dW0nOwogICAgJExhbmctPnsnQWRkIGRlY2lzaW9uIHRvIHRpY2tldCd9ICAgICAgID0gJ0VudHNjaGVpZHVuZyBhbiBUaWNrZXQgaORuZ2VuJzsKICAgICRMYW5nLT57J0RlY2lzaW9uIFJlc3VsdCd9ICAgICAgICAgICAgICA9ICdFbnRzY2hlaWR1bmcnOwogICAgJExhbmctPnsnUmV2aWV3IFJlcXVpcmVkJ30gICAgICAgICAgICAgID0gJ05hY2hiZWFyYmVpdHVuZyBlcmZvcmRlcmxpY2gnOwogICAgJExhbmctPnsnY2xvc2VkIHdpdGggd29ya2Fyb3VuZCd9ICAgICAgID0gJ3Byb3Zpc29yaXNjaCBnZXNjaGxvc3Nlbic7CiAgICAkTGFuZy0+eydBZGRpdGlvbmFsIElUU00gRmllbGRzJ30gICAgICAgPSAnWnVz5HR6bGljaGUgSVRTTSBGZWxkZXInOwogICAgJExhbmctPnsnQ2hhbmdlIElUU00gZmllbGRzIG9mIHRpY2tldCd9ID0gJ8RuZGVybiBkZXIgSVRTTSBGZWxkZXIgZGVzIFRpY2tldHMnOwogICAgJExhbmctPnsnUmVwYWlyIFN0YXJ0IFRpbWUnfSAgICAgICAgICAgID0gJ1JlcGFyYXR1ciBTdGFydHplaXQnOwogICAgJExhbmctPnsnUmVjb3ZlcnkgU3RhcnQgVGltZSd9ICAgICAgICAgID0gJ1dpZWRlcmhlcnN0ZWxsdW5nIFN0YXJ0emVpdCc7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QWRkdGxJVFNNRmllbGQucG0gLSBhZGRpdGlvbmFsIGl0c20gZmllbGRzIGZvciB0aWNrZXQKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwOCBPVFJTIEFHLCBodHRwOi8vb3Rycy5vcmcvCiMgLS0KIyAkSWQ6IEFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQucG0sdiAxLjE0IDIwMDgvMDMvMjcgMTc6MTI6MTMgdWIgRXhwICQKIyAkT2xkSWQ6IEFnZW50VGlja2V0RnJlZVRleHQucG0sdiAxLjI2LjIuNCAyMDA4LzAzLzI1IDEzOjI3OjA1IHViIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC50eHQuCiMgLS0KCiMgLS0tCiMgSVRTTQojIC0tLQojcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0RnJlZVRleHQ7CnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkOwojIC0tLQoKdXNlIHN0cmljdDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpTdGF0ZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlOwojIC0tLQojIElUU00KIyAtLS0KdXNlIEtlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZzsKdXNlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ0lQQWxsb2NhdGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTsKIyAtLS0KCnVzZSB2YXJzIHF3KCRWRVJTSU9OKTsKJFZFUlNJT04gPSAnJFJldmlzaW9uOiAxLjE0ICQnOwokVkVSU0lPTiA9fiBzL15cJC4qOlxXKC4qKVxXLis/JC8kMS87CgpzdWIgbmV3IHsKICAgIG15ICRUeXBlID0gc2hpZnQ7CiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyAoJFNlbGYsICRUeXBlKTsKCiAgICBmb3JlYWNoIChrZXlzICVQYXJhbSkgewogICAgICAgICRTZWxmLT57JF99ID0gJFBhcmFteyRffTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBPcGplY3RzCiAgICBmb3JlYWNoIChxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBUaWNrZXRPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBRdWV1ZU9iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCEkU2VsZi0+eyRffSkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoTWVzc2FnZSA9PiAiR290IG5vICRfISIpOwogICAgICAgIH0KICAgIH0KICAgICRTZWxmLT57U3RhdGVPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlN0YXRlLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57VXBsb2FkQ2FjaE9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZS0+bmV3KCVQYXJhbSk7CiMgLS0tCiMgSVRTTQojIC0tLQogICAgJFNlbGYtPntHZW5lcmFsQ2F0YWxvZ09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2ctPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntDSVBBbGxvY2F0ZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNJUEFsbG9jYXRlLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VydmljZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZS0+bmV3KCVQYXJhbSk7CiMgLS0tCgogICAgIyBnZXQgZm9ybSBpZAogICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICdGb3JtSUQnKTsKICAgIG15IEBJbmZvcm1Vc2VySUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0QXJyYXkoUGFyYW0gPT4gJ0luZm9ybVVzZXJJRCcpOwogICAgJFNlbGYtPntJbmZvcm1Vc2VySUR9ID0gXEBJbmZvcm1Vc2VySUQ7CiAgICBteSBASW52b2x2ZWRVc2VySUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0QXJyYXkoUGFyYW0gPT4gJ0ludm9sdmVkVXNlcklEJyk7CiAgICAkU2VsZi0+e0ludm9sdmVkVXNlcklEfSA9IFxASW52b2x2ZWRVc2VySUQ7CiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoISRTZWxmLT57Rm9ybUlEfSkgewogICAgICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57VXBsb2FkQ2FjaE9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgJFNlbGYgPSBzaGlmdDsKICAgIG15ICVQYXJhbSA9IEBfOwogICAgbXkgJE91dHB1dDsKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoISRTZWxmLT57VGlja2V0SUR9KSB7CiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5lZWQgVGlja2V0SUQgaXMgZ2l2ZW4hIiwKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KICAgICMgY2hlY2sgcGVybWlzc2lvbnMKICAgIGlmICghJFNlbGYtPntUaWNrZXRPYmplY3R9LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSkpIHsKICAgICAgICAjIGVycm9yIHNjcmVlbiwgZG9uJ3Qgc2hvdyB0aWNrZXQKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIllvdSBuZWVkICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259IHBlcm1pc3Npb25zISIsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KICAgIG15ICVUaWNrZXQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEdldChUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXMnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgbG9jayBzdGF0ZQogICAgaWYgKCRTZWxmLT57Q29uZmlnfS0+e1JlcXVpcmVkTG9ja30pIHsKICAgICAgICBpZiAoISRTZWxmLT57VGlja2V0T2JqZWN0fS0+TG9ja0lzVGlja2V0TG9ja2VkKFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9KSkgewogICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkxvY2tTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIExvY2sgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Pd25lclNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICkpIHsKICAgICAgICAgICAgICAgICMgc2hvdyBsb2NrIHN0YXRlCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXNMb2NrJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCEkQWNjZXNzT2spIHsKICAgICAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcihWYWx1ZSA9PiAkVGlja2V0e051bWJlcn0pOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPldhcm5pbmcoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiU29ycnksIHlvdSBuZWVkIHRvIGJlIHRoZSBvd25lciB0byBkbyB0aGlzIGFjdGlvbiEiLAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjaGFuZ2UgdGhlIG93bmVyIGZpcnN0LicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldEJhY2snLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0QmFjaycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtID0gKCk7CiAgICBmb3JlYWNoIChxdygKICAgICAgICBOZXdTdGF0ZUlEIE5ld1ByaW9yaXR5SUQgVGltZVVuaXRzIEFydGljbGVUeXBlSUQgVGl0bGUgQm9keSBTdWJqZWN0CiAgICAgICAgWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUgTmV3T3duZXJJRCBOZXdPd25lclR5cGUgT2xkT3duZXJJRCBOZXdSZXNwb25zaWJsZUlECiAgICAgICAgVHlwZUlEIFNlcnZpY2VJRCBTTEFJRCBFeHBhbmQKICAgICAgICBBdHRhY2htZW50VXBsb2FkCiAgICAgICAgQXR0YWNobWVudERlbGV0ZTEgQXR0YWNobWVudERlbGV0ZTIgQXR0YWNobWVudERlbGV0ZTMgQXR0YWNobWVudERlbGV0ZTQKICAgICAgICBBdHRhY2htZW50RGVsZXRlNSBBdHRhY2htZW50RGVsZXRlNiBBdHRhY2htZW50RGVsZXRlNyBBdHRhY2htZW50RGVsZXRlOAogICAgICAgIEF0dGFjaG1lbnREZWxldGU5IEF0dGFjaG1lbnREZWxldGUxMCBBdHRhY2htZW50RGVsZXRlMTEgQXR0YWNobWVudERlbGV0ZTEyCiAgICAgICAgQXR0YWNobWVudERlbGV0ZTEzIEF0dGFjaG1lbnREZWxldGUxNCBBdHRhY2htZW50RGVsZXRlMTUgQXR0YWNobWVudERlbGV0ZTE2CiAgICApKSB7CiAgICAgICAgJEdldFBhcmFteyRffSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbShQYXJhbSA9PiAkXyk7CiAgICB9CiMgLS0tCiMgSVRTTQojIC0tLQogICAgIyBnZXQgbmVlZGVkIHN0dWZmCiAgICAkR2V0UGFyYW17SW1wYWN0SUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJUaWNrZXRGcmVlVGV4dDE0Iik7CiAgICAkR2V0UGFyYW17SW1wYWN0UkN9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJJbXBhY3RSQyIpOwogICAgJEdldFBhcmFte1ByaW9yaXR5UkN9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJQcmlvcml0eVJDIik7CiAgICAjIHNldCBzZXJ2aWNlIGlkCiAgICBpZiAoIWRlZmluZWQoJEdldFBhcmFte1NlcnZpY2VJRH0pICYmICRUaWNrZXR7U2VydmljZUlEfSkgewogICAgICAgICRHZXRQYXJhbXtTZXJ2aWNlSUR9ID0gJFRpY2tldHtTZXJ2aWNlSUR9OwogICAgfQogICAgbXkgJVNlcnZpY2U7CiAgICBteSAkSW1wYWN0TGlzdCA9IFtdOwogICAgaWYgKCRHZXRQYXJhbXtTZXJ2aWNlSUR9KSB7CiAgICAgICAgIyBnZXQgaW1wYWN0IGxpc3QKICAgICAgICAkSW1wYWN0TGlzdCA9ICRTZWxmLT57R2VuZXJhbENhdGFsb2dPYmplY3R9LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkltcGFjdCcsCiAgICAgICAgKTsKICAgICAgICAjIGdldCBzZXJ2aWNlCiAgICAgICAgJVNlcnZpY2UgPSAkU2VsZi0+e1NlcnZpY2VPYmplY3R9LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAjIHJlY2FsY3VsYXRlIGltcGFjdAogICAgICAgIGlmICgkR2V0UGFyYW17SW1wYWN0UkN9KSB7CiAgICAgICAgICAgICMgZ2V0IGRlZmF1bHQgaW1wYWN0IGlkCiAgICAgICAgICAgIG15ICVJbXBhY3RMaXN0UmV2ZXJzZSA9IHJldmVyc2UoJXskSW1wYWN0TGlzdH0pOwogICAgICAgICAgICAkR2V0UGFyYW17SW1wYWN0SUR9ID0gJEltcGFjdExpc3RSZXZlcnNleyRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXRGcmVlVGV4dDE0OjpEZWZhdWx0U2VsZWN0aW9uJyl9OwogICAgICAgICAgICAkR2V0UGFyYW17UHJpb3JpdHlSQ30gPSAxOwogICAgICAgIH0KICAgICAgICAjIHJlY2FsY3VsYXRlIHByaW9yaXR5CiAgICAgICAgaWYgKCRHZXRQYXJhbXtQcmlvcml0eVJDfSkgewogICAgICAgICAgICBpZiAoJEdldFBhcmFte0ltcGFjdElEfSkgewogICAgICAgICAgICAgICAgIyBnZXQgcHJpb3JpdHkKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtQcmlvcml0eUlERnJvbUltcGFjdH0gPSAkU2VsZi0+e0NJUEFsbG9jYXRlT2JqZWN0fS0+UHJpb3JpdHlBbGxvY2F0aW9uR2V0KAogICAgICAgICAgICAgICAgICAgIENyaXRpY2FsaXR5SUQgPT4gJFNlcnZpY2V7Q3JpdGljYWxpdHlJRH0sCiAgICAgICAgICAgICAgICAgICAgSW1wYWN0SUQgPT4gJEdldFBhcmFte0ltcGFjdElEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17TmV3UHJpb3JpdHlJRH0gPSAnJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRHZXRQYXJhbXtJbXBhY3RJRH0gPSB1bmRlZjsKICAgIH0KIyAtLS0KICAgICMgZ2V0IHRpY2tldCBmcmVlIHRleHQgcGFyYW1zCiAgICBmb3JlYWNoICgxLi4xNikgewogICAgICAgICRHZXRQYXJhbXsiVGlja2V0RnJlZUtleSRfIn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oUGFyYW0gPT4gIlRpY2tldEZyZWVLZXkkXyIpOwogICAgICAgICRHZXRQYXJhbXsiVGlja2V0RnJlZVRleHQkXyJ9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJUaWNrZXRGcmVlVGV4dCRfIik7CiAgICB9CiAgICAjIGdldCB0aWNrZXQgZnJlZSB0aW1lIHBhcmFtcwogICAgRlJFRVRJTUVOVU1CRVI6CiAgICBmb3IgbXkgJEZyZWVUaW1lTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGNyZWF0ZSBmcmVldGltZSBwcmVmaXgKICAgICAgICBteSAkRnJlZVRpbWVQcmVmaXggPSAnVGlja2V0RnJlZVRpbWUnIC4gJEZyZWVUaW1lTnVtYmVyOwoKICAgICAgICAjIGdldCBmb3JtIHBhcmFtcwogICAgICAgIGZvciBteSAkVHlwZSAocXcoVXNlZCBZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSB9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgYWRkaXRpb25hbCBwYXJhbXMKICAgICAgICAkR2V0UGFyYW17ICRGcmVlVGltZVByZWZpeCAuICdPcHRpb25hbCcgfSA9IDE7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnVXNlZCcgfSA9ICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ1VzZWQnIH0gfHwgMDsKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCggJ1RpY2tldEZyZWVUaW1lT3B0aW9uYWwnIC4gJEZyZWVUaW1lTnVtYmVyICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ09wdGlvbmFsJyB9ID0gMDsKICAgICAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnVXNlZCcgfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRoZSB0aW1lZGF0YQogICAgICAgIG15ICRUaW1lRGF0YUNvbXBsZXRlID0gMTsKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAocXcoVXNlZCBZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgbmV4dCBUWVBFIGlmIGRlZmluZWQgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSB9OwoKICAgICAgICAgICAgJFRpbWVEYXRhQ29tcGxldGUgPSAwOwogICAgICAgICAgICBsYXN0IFRZUEU7CiAgICAgICAgfQoKICAgICAgICBuZXh0IEZSRUVUSU1FTlVNQkVSIGlmICRUaW1lRGF0YUNvbXBsZXRlOwoKICAgICAgICBpZiAoISRUaWNrZXR7ICRGcmVlVGltZVByZWZpeCB9KSB7CgogICAgICAgICAgICBmb3IgbXkgJFR5cGUgKHF3KFVzZWQgWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUpKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEZSRUVUSU1FTlVNQkVSOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgZnJlZXRpbWUgZGF0YSBmcm9tIHRpY2tldAogICAgICAgIG15ICRUaWNrZXRGcmVlVGltZVN0cmluZyA9ICRTZWxmLT57VGltZU9iamVjdH0tPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKCBTdHJpbmcgPT4gJFRpY2tldHsgJEZyZWVUaW1lUHJlZml4IH0gKTsKICAgICAgICBteSAoICRTZWNvbmQsICRNaW51dGUsICRIb3VyLCAkRGF5LCAkTW9udGgsICRZZWFyICkgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMkRhdGUoIFN5c3RlbVRpbWUgPT4gJFRpY2tldEZyZWVUaW1lU3RyaW5nICk7CgogICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ1VzZWQnIH0gPSAxOwogICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ01pbnV0ZScgfSA9ICRNaW51dGU7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnSG91cicgfSA9ICRIb3VyOwogICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ0RheScgfSA9ICREYXk7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnTW9udGgnIH0gPSAkTW9udGg7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnWWVhcicgfSA9ICRZZWFyOwogICAgfQogICAgIyBnZXQgYXJ0aWNsZSBmcmVlIHRleHQgcGFyYW1zCiAgICBmb3JlYWNoICgxLi4zKSB7CiAgICAgICAgJEdldFBhcmFteyJBcnRpY2xlRnJlZUtleSRfIn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oUGFyYW0gPT4gIkFydGljbGVGcmVlS2V5JF8iKTsKICAgICAgICAkR2V0UGFyYW17IkFydGljbGVGcmVlVGV4dCRfIn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oUGFyYW0gPT4gIkFydGljbGVGcmVlVGV4dCRfIik7CiAgICB9CiAgICAjIHJld3JhcCBib2R5IGlmIGV4aXN0cwogICAgaWYgKCRHZXRQYXJhbXtCb2R5fSkgewogICAgICAgIG15ICRTaXplID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZScpIHx8IDcwOwogICAgICAgICRHZXRQYXJhbXtCb2R5fSA9fiBzLyhePi4rfC57NCwkU2l6ZX0pKD86XHN8XHopLyQxXG4vZ207CiAgICB9CgogICAgaWYgKCRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RvcmUnKSB7CiAgICAgICAgIyBzdG9yZSBhY3Rpb24KICAgICAgICBteSAlRXJyb3IgPSAoKTsKICAgICAgICAjIGNoZWNrIHBlbmRpbmcgdGltZQogICAgICAgIGlmICgkR2V0UGFyYW17TmV3U3RhdGVJRH0pIHsKICAgICAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+e1N0YXRlT2JqZWN0fS0+U3RhdGVHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICMgY2hlY2sgc3RhdGUgdHlwZQogICAgICAgICAgICBpZiAoJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15wZW5kaW5nL2kpIHsKICAgICAgICAgICAgICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICAgICAgICAgICAgICBmb3JlYWNoIChxdyhZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWRlZmluZWQoJEdldFBhcmFteyRffSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yeyJEYXRlIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICMgY2hlY2sgZGF0ZQogICAgICAgICAgICAgICAgaWYgKCEkU2VsZi0+e1RpbWVPYmplY3R9LT5EYXRlMlN5c3RlbVRpbWUoJUdldFBhcmFtLCBTZWNvbmQgPT4gMCkpIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7IkRhdGUgaW52YWxpZCJ9ID0gJyogaW52YWxpZCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJFNlbGYtPntUaW1lT2JqZWN0fS0+RGF0ZTJTeXN0ZW1UaW1lKCVHZXRQYXJhbSwgU2Vjb25kID0+IDApIDwgJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yeyJEYXRlIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ30tPntOb3RlfSkgewogICAgICAgICAgICAjIGNoZWNrIHN1YmplY3QKICAgICAgICAgICAgaWYgKCEkR2V0UGFyYW17U3ViamVjdH0pIHsKICAgICAgICAgICAgICAgICRFcnJvcnsiU3ViamVjdCBpbnZhbGlkIn0gPSAnKiBpbnZhbGlkJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIGNoZWNrIGJvZHkKICAgICAgICAgICAgaWYgKCEkR2V0UGFyYW17Qm9keX0pIHsKICAgICAgICAgICAgICAgICRFcnJvcnsiQm9keSBpbnZhbGlkIn0gPSAnKiBpbnZhbGlkJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIEZyZWVUZXh0RmllbGQgKGlmIGNvbmZpZ3VyZWQpCiAgICAgICAgZm9yZWFjaCAoMS4uMTYpIHsKICAgICAgICAgICAgaWYgKCRTZWxmLT57Q29uZmlnfS0+eydUaWNrZXRGcmVlVGV4dCd9LT57JF99ID09IDIgJiYgJEdldFBhcmFteyJUaWNrZXRGcmVlVGV4dCRfIn0gZXEgJycpIHsKICAgICAgICAgICAgICAgICRFcnJvcnsiVGlja2V0RnJlZVRleHRGaWVsZCRfIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBpcyBzZWxlY3RlZAogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJEdldFBhcmFte1NMQUlEfSAmJiAhJEdldFBhcmFte1NlcnZpY2VJRH0pIHsKICAgICAgICAgICAgJEVycm9yeyJTZXJ2aWNlIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgIH0KICAgICAgICAjIGF0dGFjaG1lbnQgZGVsZXRlCiAgICAgICAgZm9yZWFjaCAoMS4uMTYpIHsKICAgICAgICAgICAgaWYgKCRHZXRQYXJhbXsiQXR0YWNobWVudERlbGV0ZSRfIn0pIHsKICAgICAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50RGVsZXRlfSA9IDE7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hPYmplY3R9LT5Gb3JtSURSZW1vdmVGaWxlKAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRfLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAjIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgaWYgKCRHZXRQYXJhbXtBdHRhY2htZW50VXBsb2FkfSkgewogICAgICAgICAgICAkRXJyb3J7QXR0YWNobWVudFVwbG9hZH0gPSAxOwogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICAgICAgUGFyYW0gPT4gImZpbGVfdXBsb2FkIiwKICAgICAgICAgICAgICAgIFNvdXJjZSA9PiAnc3RyaW5nJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoT2JqZWN0fS0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAlVXBsb2FkU3R1ZmYsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hPYmplY3R9LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgKTsKICAgICAgICAjIGNoZWNrIGV4cGFuZAogICAgICAgIGlmICgkR2V0UGFyYW17RXhwYW5kfSkgewogICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgJEVycm9yeyJFeHBhbmQifSA9IDE7CiAgICAgICAgfQogICAgICAgICMgY2hlY2sgZXJyb3JzCiAgICAgICAgaWYgKCVFcnJvcikgewogICAgICAgICAgICAjIHRpY2tldCBmcmVlIHRleHQKICAgICAgICAgICAgbXkgJVRpY2tldEZyZWVUZXh0ID0gKCk7CiAgICAgICAgICAgIGZvcmVhY2ggKDEuLjE2KSB7CiAgICAgICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVLZXkkXyJ9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICJUaWNrZXRGcmVlS2V5JF8iLAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVUZXh0JF8ifSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAiVGlja2V0RnJlZVRleHQkXyIsCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAlVGlja2V0RnJlZVRleHRIVE1MID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BZ2VudEZyZWVUZXh0KAogICAgICAgICAgICAgICAgQ29uZmlnID0+IFwlVGlja2V0RnJlZVRleHQsCiAgICAgICAgICAgICAgICBUaWNrZXQgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgIyB0aWNrZXQgZnJlZSB0aW1lCiAgICAgICAgICAgIG15ICVUaWNrZXRGcmVlVGltZUhUTUwgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFnZW50RnJlZURhdGUoCiAgICAgICAgICAgICAgICBUaWNrZXQgPT4gXCVHZXRQYXJhbQogICAgICAgICAgICApOwogICAgICAgICAgICAjIGFydGljbGUgZnJlZSB0ZXh0CiAgICAgICAgICAgIG15ICVBcnRpY2xlRnJlZVRleHQgPSAoKTsKICAgICAgICAgICAgZm9yZWFjaCAoMS4uMykgewogICAgICAgICAgICAgICAgJEFydGljbGVGcmVlVGV4dHsiQXJ0aWNsZUZyZWVLZXkkXyJ9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5BcnRpY2xlRnJlZVRleHRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAiQXJ0aWNsZUZyZWVLZXkkXyIsCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRBcnRpY2xlRnJlZVRleHR7IkFydGljbGVGcmVlVGV4dCRfIn0gPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICJBcnRpY2xlRnJlZVRleHQkXyIsCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAlQXJ0aWNsZUZyZWVUZXh0SFRNTCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+VGlja2V0QXJ0aWNsZUZyZWVUZXh0KAogICAgICAgICAgICAgICAgQ29uZmlnID0+IFwlQXJ0aWNsZUZyZWVUZXh0LAogICAgICAgICAgICAgICAgQXJ0aWNsZSA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoVmFsdWUgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9KTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgICAgICVUaWNrZXRGcmVlVGV4dEhUTUwsCiAgICAgICAgICAgICAgICAlVGlja2V0RnJlZVRpbWVIVE1MLAogICAgICAgICAgICAgICAgJUFydGljbGVGcmVlVGV4dEhUTUwsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiMgLS0tCiMgSVRTTQojIC0tLQogICAgICAgICAgICAgICAgSW1wYWN0cyA9PiAkSW1wYWN0TGlzdCwKICAgICAgICAgICAgICAgIEltcGFjdElEID0+ICRHZXRQYXJhbXtJbXBhY3RJRH0sCiMgLS0tCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ30tPntUaXRsZX0pIHsKICAgICAgICAgICAgaWYgKGRlZmluZWQoJEdldFBhcmFte1RpdGxlfSkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJEdldFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRTZWxmLT57Q29uZmlnfS0+e1RpY2tldFR5cGV9KSB7CiAgICAgICAgICAgIGlmICgkR2V0UGFyYW17VHlwZUlEfSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCA9PiAkR2V0UGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRTZWxmLT57Q29uZmlnfS0+e1NlcnZpY2V9KSB7CiAgICAgICAgICAgIGlmIChkZWZpbmVkKCRHZXRQYXJhbXtTZXJ2aWNlSUR9KSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRTZXJ2aWNlU2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZGVmaW5lZCgkR2V0UGFyYW17U0xBSUR9KSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRTTEFTZXQoCiAgICAgICAgICAgICAgICAgICAgU0xBSUQgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57T3duZXJ9KSB7CiAgICAgICAgICAgIGlmICgkR2V0UGFyYW17TmV3T3duZXJUeXBlfSBlcSAnT2xkJyAmJiAkR2V0UGFyYW17T2xkT3duZXJJRH0pIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+TG9ja1NldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBMb2NrID0+ICdsb2NrJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+T3duZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgPT4gJEdldFBhcmFte09sZE93bmVySUR9LAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJEdldFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtOb0FnZW50Tm90aWZ5fSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRHZXRQYXJhbXtOZXdPd25lcklEfSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Mb2NrU2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIExvY2sgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Pd25lclNldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkR2V0UGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJEdldFBhcmFte05vQWdlbnROb3RpZnl9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57UmVzcG9uc2libGV9KSB7CiAgICAgICAgICAgIGlmICgkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0pIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgPT4gJEdldFBhcmFte05ld1Jlc3BvbnNpYmxlSUR9LAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJEdldFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtOb0FnZW50Tm90aWZ5fSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgIyBhZGQgbm90ZQogICAgICAgIG15ICRBcnRpY2xlSUQgPSAnJzsKICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57Tm90ZX0pIHsKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSA9PiAnYWdlbnQnLAogICAgICAgICAgICAgICAgRnJvbSA9PiAiJFNlbGYtPntVc2VyRmlyc3RuYW1lfSAkU2VsZi0+e1VzZXJMYXN0bmFtZX0gPCRTZWxmLT57VXNlckVtYWlsfT4iLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvcGxhaW47IGNoYXJzZXQ9JFNlbGYtPntMYXlvdXRPYmplY3R9LT57J1VzZXJDaGFyc2V0J30iLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlID0+ICRTZWxmLT57Q29uZmlnfS0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICRTZWxmLT57Q29uZmlnfS0+e0hpc3RvcnlDb21tZW50fSwKICAgICAgICAgICAgICAgIEZvcmNlTm90aWZpY2F0aW9uVG9Vc2VySUQgPT4gW0B7JFNlbGYtPntJbmZvcm1Vc2VySUR9fSwgQHskU2VsZi0+e0ludm9sdmVkVXNlcklEfX0sIF0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICBOb0FnZW50Tm90aWZ5ID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICghJEFydGljbGVJRCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIHRpbWUgYWNjb3VudGluZwogICAgICAgICAgICBpZiAoJEdldFBhcmFte1RpbWVVbml0c30pIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0QWNjb3VudFRpbWUoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlSUQsCiAgICAgICAgICAgICAgICAgICAgVGltZVVuaXQgPT4gJEdldFBhcmFte1RpbWVVbml0c30sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgIyBnZXQgcHJlIGxvYWRlZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15IEBBdHRhY2htZW50RGF0YSA9ICRTZWxmLT57VXBsb2FkQ2FjaE9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJFJlZiAoQEF0dGFjaG1lbnREYXRhKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVXcml0ZUF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgJXskUmVmfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIGdldCBzdWJtaXQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICAgICAgUGFyYW0gPT4gJ2ZpbGVfdXBsb2FkJywKICAgICAgICAgICAgICAgIFNvdXJjZSA9PiAnU3RyaW5nJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCVVcGxvYWRTdHVmZikgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5BcnRpY2xlV3JpdGVBdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgICVVcGxvYWRTdHVmZiwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIHJlbW92ZSBwcmUgc3VibWl0ZWQgYXR0YWNobWVudHMKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoT2JqZWN0fS0+Rm9ybUlEUmVtb3ZlKEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0pOwogICAgICAgIH0KICAgICAgICAjIHNldCB0aWNrZXQgZnJlZSB0ZXh0CiAgICAgICAgZm9yZWFjaCAoMS4uMTYpIHsKICAgICAgICAgICAgaWYgKGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlS2V5JF8ifSkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICRHZXRQYXJhbXsiVGlja2V0RnJlZUtleSRfIn0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJEdldFBhcmFteyJUaWNrZXRGcmVlVGV4dCRfIn0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkXywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KIyAtLS0KIyBJVFNNCiMgLS0tCiAgICAgICAgaWYgKCgkR2V0UGFyYW17U2VydmljZUlEfSAmJiAkU2VydmljZXtDcml0aWNhbGl0eUlEfSkgfHwgISRHZXRQYXJhbXtTZXJ2aWNlSUR9KSB7CiAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEtleSA9PiAnQ3JpdGljYWxpdHlJRCcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU2VydmljZXtDcml0aWNhbGl0eUlEfSB8fCAnJywKICAgICAgICAgICAgICAgIENvdW50ZXIgPT4gMTMsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoJEdldFBhcmFte0ltcGFjdElEfSB8fCAhZGVmaW5lZCgkR2V0UGFyYW17SW1wYWN0SUR9KSkgewogICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEZyZWVUZXh0U2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBLZXkgPT4gJ0ltcGFjdElEJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRHZXRQYXJhbXtJbXBhY3RJRH0gfHwgJycsCiAgICAgICAgICAgICAgICBDb3VudGVyID0+IDE0LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiMgLS0tCiAgICAgICAgIyBzZXQgdGlja2V0IGZyZWUgdGltZQogICAgICAgIGZvcmVhY2ggKDEuLjYpIHsKICAgICAgICAgICAgaWYgKGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIlllYXIifSkgJiYKICAgICAgICAgICAgICAgIGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIk1vbnRoIn0pICYmCiAgICAgICAgICAgICAgICBkZWZpbmVkKCRHZXRQYXJhbXsiVGlja2V0RnJlZVRpbWUiLiRfLiJEYXkifSkgJiYKICAgICAgICAgICAgICAgIGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIkhvdXIifSkgJiYKICAgICAgICAgICAgICAgIGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIk1pbnV0ZSJ9KQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIG15ICVUaW1lOwogICAgICAgICAgICAgICAgJFRpbWV7IlRpY2tldEZyZWVUaW1lIi4kXy4iWWVhciJ9ID0gMDsKICAgICAgICAgICAgICAgICRUaW1leyJUaWNrZXRGcmVlVGltZSIuJF8uIk1vbnRoIn0gPSAwOwogICAgICAgICAgICAgICAgJFRpbWV7IlRpY2tldEZyZWVUaW1lIi4kXy4iRGF5In0gPSAwOwogICAgICAgICAgICAgICAgJFRpbWV7IlRpY2tldEZyZWVUaW1lIi4kXy4iSG91ciJ9ID0gMDsKICAgICAgICAgICAgICAgICRUaW1leyJUaWNrZXRGcmVlVGltZSIuJF8uIk1pbnV0ZSJ9ID0gMDsKICAgICAgICAgICAgICAgICRUaW1leyJUaWNrZXRGcmVlVGltZSIuJF8uIlNlY3VuZGUifSA9IDA7CgogICAgICAgICAgICAgICAgaWYgKCRHZXRQYXJhbXsiVGlja2V0RnJlZVRpbWUiLiRfLiJVc2VkIn0pIHsKICAgICAgICAgICAgICAgICAgICAlVGltZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+VHJhbnNmcm9tRGF0ZVNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBQcmVmaXggPT4gIlRpY2tldEZyZWVUaW1lIi4kXywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRGcmVlVGltZVNldCgKICAgICAgICAgICAgICAgICAgICAlVGltZSwKICAgICAgICAgICAgICAgICAgICBQcmVmaXggPT4gIlRpY2tldEZyZWVUaW1lIiwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDb3VudGVyID0+ICRfLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICMgc2V0IGFydGljbGUgZnJlZSB0ZXh0CiAgICAgICAgZm9yZWFjaCAoMS4uMykgewogICAgICAgICAgICBpZiAoZGVmaW5lZCgkR2V0UGFyYW17IkFydGljbGVGcmVlS2V5JF8ifSkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUZyZWVUZXh0U2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZUlELAogICAgICAgICAgICAgICAgICAgIEtleSA9PiAkR2V0UGFyYW17IkFydGljbGVGcmVlS2V5JF8ifSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkR2V0UGFyYW17IkFydGljbGVGcmVlVGV4dCRfIn0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkXywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAjIHNldCBwcmlvcml0eQogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ30tPntQcmlvcml0eX0gJiYgJEdldFBhcmFte05ld1ByaW9yaXR5SUR9KSB7CiAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+UHJpb3JpdHlTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gJEdldFBhcmFte05ld1ByaW9yaXR5SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgIyBzZXQgc3RhdGUKICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57U3RhdGV9ICYmICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSkgewogICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlN0YXRlU2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBTdGF0ZUlEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICMgdW5sb2NrIHRoZSB0aWNrZXQgYWZ0ZXIgY2xvc2UKICAgICAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+e1N0YXRlT2JqZWN0fS0+U3RhdGVHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICMgc2V0IHVubG9jayBvbiBjbG9zZQogICAgICAgICAgICBpZiAoJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15jbG9zZS9pKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkxvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayA9PiAndW5sb2NrJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIHNldCBwZW5kaW5nIHRpbWUKICAgICAgICAgICAgZWxzaWYgKCRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9ecGVuZGluZy9pKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdChPUCA9PiAkU2VsZi0+e0xhc3RTY3JlZW5PdmVydmlld30pOwogICAgICAgIH0KICAgICAgICAjIHJlZGlyZWN0CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRUaWNrZXRab29tJlRpY2tldElEPSRTZWxmLT57VGlja2V0SUR9JkFydGljbGVJRD0kQXJ0aWNsZUlEIiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgIyBmaWxsdXAgdmFycwogICAgICAgIGlmICghZGVmaW5lZCgkR2V0UGFyYW17Qm9keX0pICYmICRTZWxmLT57Q29uZmlnfS0+e0JvZHl9KSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtCb2R5fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KFRlbXBsYXRlID0+ICRTZWxmLT57Q29uZmlnfS0+e0JvZHl9KTsKICAgICAgICB9CiAgICAgICAgaWYgKCFkZWZpbmVkKCRHZXRQYXJhbXtTdWJqZWN0fSkgJiYgJFNlbGYtPntDb25maWd9LT57U3ViamVjdH0pIHsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoVGVtcGxhdGUgPT4gJFNlbGYtPntDb25maWd9LT57U3ViamVjdH0pOwogICAgICAgIH0KICAgICAgICAjIGdldCBmcmVlIHRleHQgY29uZmlnIG9wdGlvbnMKICAgICAgICBteSAlVGlja2V0RnJlZVRleHQgPSAoKTsKICAgICAgICBmb3JlYWNoICgxLi4xNikgewogICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVLZXkkXyJ9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSA9PiAiVGlja2V0RnJlZUtleSRfIiwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVUZXh0JF8ifSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFR5cGUgPT4gIlRpY2tldEZyZWVUZXh0JF8iLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIG15ICVUaWNrZXRGcmVlVGV4dEhUTUwgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFnZW50RnJlZVRleHQoCiAgICAgICAgICAgIFRpY2tldCA9PiBcJVRpY2tldCwKICAgICAgICAgICAgQ29uZmlnID0+IFwlVGlja2V0RnJlZVRleHQsCiAgICAgICAgKTsKICAgICAgICAjIHRpY2tldCBmcmVlIHRpbWUKICAgICAgICBteSAlVGlja2V0RnJlZVRpbWVIVE1MID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BZ2VudEZyZWVEYXRlKAogICAgICAgICAgICBUaWNrZXQgPT4gXCVHZXRQYXJhbQogICAgICAgICk7CiAgICAgICAgIyBnZXQgYXJ0aWNsZSBmcmVlIHRleHQgY29uZmlnIG9wdGlvbnMKICAgICAgICBteSAlQXJ0aWNsZUZyZWVUZXh0ID0gKCk7CiAgICAgICAgZm9yZWFjaCAoMS4uMykgewogICAgICAgICAgICAkQXJ0aWNsZUZyZWVUZXh0eyJBcnRpY2xlRnJlZUtleSRfIn0gPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSA9PiAiQXJ0aWNsZUZyZWVLZXkkXyIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEFydGljbGVGcmVlVGV4dHsiQXJ0aWNsZUZyZWVUZXh0JF8ifSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUZyZWVUZXh0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBUeXBlID0+ICJBcnRpY2xlRnJlZVRleHQkXyIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgbXkgJUFydGljbGVGcmVlVGV4dEhUTUwgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlRpY2tldEFydGljbGVGcmVlVGV4dCgKICAgICAgICAgICAgQ29uZmlnID0+IFwlQXJ0aWNsZUZyZWVUZXh0LAogICAgICAgICAgICBBcnRpY2xlID0+IFwlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAjIHByaW50IGZvcm0gLi4uCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKFZhbHVlID0+ICRUaWNrZXR7VGlja2V0TnVtYmVyfSk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAlVGlja2V0RnJlZVRleHRIVE1MLAogICAgICAgICAgICAlVGlja2V0RnJlZVRpbWVIVE1MLAogICAgICAgICAgICAlQXJ0aWNsZUZyZWVUZXh0SFRNTCwKIyAtLS0KIyBJVFNNCiMgLS0tCiAgICAgICAgICAgIEltcGFjdHMgPT4gJEltcGFjdExpc3QsCiAgICAgICAgICAgIEltcGFjdElEID0+ICRHZXRQYXJhbXtJbXBhY3RJRH0sCiMgLS0tCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfTWFzayB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwogICAgbXkgJVBhcmFtID0gQF87CiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KICAgIG15ICVUaWNrZXQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEdldChUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSk7CgogICAgaWYgKCRTZWxmLT57Q29uZmlnfS0+e1RpdGxlfSkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CiAgICAjIHR5cGVzCiAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRTZWxmLT57Q29uZmlnfS0+e1RpY2tldFR5cGV9KSB7CiAgICAgICAgbXkgJVR5cGUgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldFR5cGVMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17J1R5cGVTdHJnJ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhID0+IFwlVHlwZSwKICAgICAgICAgICAgTmFtZSA9PiAnVHlwZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICAgICAgT25DaGFuZ2UgPT4gImRvY3VtZW50LmNvbXBvc2UuRXhwYW5kLnZhbHVlPSczJzsgZG9jdW1lbnQuY29tcG9zZS5zdWJtaXQoKTsgcmV0dXJuIGZhbHNlOyIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUeXBlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQogICAgIyBzZXJ2aWNlcwogICAgaWYgKCRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSAmJiAkU2VsZi0+e0NvbmZpZ30tPntTZXJ2aWNlfSkgewogICAgICAgIG15ICVTZXJ2aWNlID0gKCcnLCAnLScpOwogICAgICAgIGlmICgkVGlja2V0e0N1c3RvbWVyVXNlcklEfSkgewogICAgICAgICAgICAlU2VydmljZSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0U2VydmljZUxpc3QoCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFRpY2tldHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkUGFyYW17J1NlcnZpY2VTdHJnJ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhID0+IFwlU2VydmljZSwKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFRyZWVWaWV3ID0+ICRUcmVlVmlldywKICAgICAgICAgICAgU29ydCA9PiAnVHJlZVZpZXcnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAojIC0tLQojIElUU00KIyAtLS0KIyAgICAgICAgICAgIE9uQ2hhbmdlID0+ICJkb2N1bWVudC5jb21wb3NlLkV4cGFuZC52YWx1ZT0nMyc7IGRvY3VtZW50LmNvbXBvc2Uuc3VibWl0KCk7IHJldHVybiBmYWxzZTsiLAogICAgICAgICAgICBPbkNoYW5nZSA9PiAiZG9jdW1lbnQuY29tcG9zZS5FeHBhbmQudmFsdWU9JzMnOyBkb2N1bWVudC5jb21wb3NlLkltcGFjdFJDLnZhbHVlPScxJzsgZG9jdW1lbnQuY29tcG9zZS5zdWJtaXQoKTsgcmV0dXJuIGZhbHNlOyIsCiMgLS0tCiAgICAgICAgICAgIE1heCA9PiAyMDAsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgIG15ICVTTEEgPSAoKTsKICAgICAgICBpZiAoJFBhcmFte1NlcnZpY2VJRH0pIHsKICAgICAgICAgICAgJVNMQSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0U0xBTGlzdCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkUGFyY