@hitsoft/e-donusum 100.1.7-Edo-Test → 100.1.9-Edo-Test
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.mjs +13 -4
- package/fesm2015/hitsoft-e-donusum.mjs +12 -3
- package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
- package/fesm2020/hitsoft-e-donusum.mjs +12 -3
- package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -284,7 +284,10 @@ export class HitInboundInvoiceComponent {
|
|
|
284
284
|
}
|
|
285
285
|
openPartnerModal(record) {
|
|
286
286
|
this.toasterService.info("Muhatap kontrolü yapılıyor, lütfen bekleyiniz.");
|
|
287
|
-
|
|
287
|
+
let cardType = "cSupplier";
|
|
288
|
+
if (record.invoiceTypeCode == "IADE")
|
|
289
|
+
cardType = "cCustomer";
|
|
290
|
+
this.service.checkBusinessPartnerExist(record.accountingSupplierPartyVknTckn, cardType).subscribe(result => {
|
|
288
291
|
if (!result) {
|
|
289
292
|
this.buildFormForPartner(record);
|
|
290
293
|
}
|
|
@@ -432,7 +435,10 @@ export class HitInboundInvoiceComponent {
|
|
|
432
435
|
}
|
|
433
436
|
openDraftForm(record) {
|
|
434
437
|
this.toasterService.info("Muhatap kontrolü yapılıyor, lütfen bekleyiniz.");
|
|
435
|
-
|
|
438
|
+
let cardType = "cSupplier";
|
|
439
|
+
if (record.invoiceTypeCode == "IADE")
|
|
440
|
+
cardType = "cCustomer";
|
|
441
|
+
this.service.checkBusinessPartnerExist(record.accountingSupplierPartyVknTckn, cardType).subscribe(result => {
|
|
436
442
|
if (!result) {
|
|
437
443
|
this.toasterService.error("İlgili VKN'ye ait (" + record.accountingSupplierPartyVknTckn + ") muhatap bulunamadı, lütfen önce muhatap oluşturun.");
|
|
438
444
|
}
|
|
@@ -446,7 +452,10 @@ export class HitInboundInvoiceComponent {
|
|
|
446
452
|
}
|
|
447
453
|
openDocumentForm(record) {
|
|
448
454
|
this.toasterService.info("Muhatap kontrolü yapılıyor, lütfen bekleyiniz.");
|
|
449
|
-
|
|
455
|
+
let cardType = "cSupplier";
|
|
456
|
+
if (record.invoiceTypeCode == "IADE")
|
|
457
|
+
cardType = "cCustomer";
|
|
458
|
+
this.service.checkBusinessPartnerExist(record.accountingSupplierPartyVknTckn, cardType).subscribe(result => {
|
|
450
459
|
if (!result) {
|
|
451
460
|
this.toasterService.error("İlgili VKN'ye ait (" + record.accountingSupplierPartyVknTckn + ") muhatap bulunamadı, lütfen önce muhatap oluşturun.");
|
|
452
461
|
}
|
|
@@ -1125,4 +1134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
1125
1134
|
type: ViewChild,
|
|
1126
1135
|
args: ['tabPanel', { static: false }]
|
|
1127
1136
|
}] } });
|
|
1128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWluYm91bmQtaW52b2ljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1pbmJvdW5kLWludm9pY2VzL2hpdC1pbmJvdW5kLWludm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW5ib3VuZC1pbnZvaWNlcy9oaXQtaW5ib3VuZC1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7QUFHdkQsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtwRSxPQUFPLEVBQUUsUUFBUSxFQUFPLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYXJDLE1BQU0sT0FBTywwQkFBMEI7SUF3Rm5DLFlBQ29CLElBQWlCLEVBQ2hCLE9BQWlDLEVBQ2pDLGNBQWlDLEVBQ2pDLGtCQUFzQyxFQUN0Qyx3QkFBa0QsRUFDbEQsV0FBd0IsRUFDeEIscUJBQWtDLEVBQ2xDLHNCQUFtQyxFQUNuQyxjQUE4QixFQUM5QiwyQkFBMkQsRUFDM0QsR0FBc0IsRUFDdEIsWUFBaUMsRUFDakMsZ0JBQWtDLEVBQ2xDLHVCQUFtRDtRQWJwRCxTQUFJLEdB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QUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNLLDJCQUEyQjtzQkFBdkYsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1YsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0wsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBpc051bGxPckVtcHR5LCBpc051bGxPclVuZGVmaW5lZCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQsIER4VGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgQ3VzdG9tU3RvcmUgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2N1c3RvbV9zdG9yZSc7XHJcbmltcG9ydCB7IEhpdEluYm91bmRJbnZvaWNlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW5ib3VuZC1pbnZvaWNlcy9oaXQtaW5ib3VuZC1pbnZvaWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRJbnZvaWNlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW52b2ljZXMvaGl0LWludm9pY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IGZvcm1hdERhdGUsIGdldExvY2FsZURhdGVGb3JtYXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIaXRCdXNpbmVzc1BhcnRuZXJHcm91cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWJ1c2luZXNzLXBhcnRuZXItZ3JvdXBzL2hpdC1idXNpbmVzcy1wYXJ0bmVyLWdyb3VwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcEFkZHJlc3MsIENhdGFsb2dNYXRjaExpbmVEdG8sIENvbm5lY3RvckRyYWZ0RG9jdW1lbnREdG8sIENvbm5lY3RvckRyYWZ0RG9jdW1lbnRMaW5lRHRvLCBDb25uZWN0b3JNdWx0aXBsZUVtcHR5RHJhZnREdG8sIENvbm5lY3RvclB1cmNoYXNlSW52b2ljZURvY3VtZW50RHRvLCBDb25uZWN0b3JQdXJjaGFzZUludm9pY2VEb2N1bWVudExpbmVEdG8sIENyZWF0ZUJ1c2luZXNzUGFydG5lclN1cHBsaWVyRHRvLCBJbnZvaWNlWG1sTGluZUR0bywgTWFudWFsTGluZUR0bywgT3BlbkRvY3VtZW50RHRvLCBTYXBJdGVtRHRvLCBTYXBUYXhHcm91cER0byB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW5ib3VuZC1pbnZvaWNlcy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdEJyYW5jaGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtYnJhbmNoZXMvaGl0LWJyYW5jaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L3NoYXJlZC9oaXQtc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRGaWxlRG9jdW1lbnRUeXBlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsZS1kb2N1bWVudC10eXBlL2hpdC1maWxlLWRvY3VtZW50LXR5cGUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWluYm91bmQtaW52b2ljZScsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hpdC1pbmJvdW5kLWludm9pY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdEluYm91bmRJbnZvaWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2R4SW5ib3VuZEludm9pY2VJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeEluYm91bmRJbnZvaWNlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4UHVyY2hhc2VPcmRlckRvY3VtZW50cycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFB1cmNoYXNlT3JkZXJEb2N1bWVudHM6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4UHVyY2hhc2VEZXNwYXRjaERvY3VtZW50cycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHM6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4RG9jdW1lbnRMaW5lcycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERvY3VtZW50TGluZXM6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ3RhYlBhbmVsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRhYlBhbmVsOiBEeFRhYlBhbmVsQ29tcG9uZW50XHJcblxyXG4gICAgaW5ib3VuZEludm9pY2VzRGF0YVNvdXJjZTogYW55XHJcbiAgICBpbmJvdW5kSW52b2ljZVN0YXR1c0xvb2t1cDogYW55XHJcbiAgICBpbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXA6IGFueVxyXG5cclxuICAgIHBhcnRuZXJBdmFpbGFibGVBY2NvdW50czogQXJyYXk8eyBpZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcgfT4gPSBbXTtcclxuICAgIG9iamVjdFR5cGVzTG9va3VwOiBBcnJheTx7IGlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB9PiA9IFtcclxuICAgICAgICB7IGlkOiBcIjIwXCIsIHRleHQ6IFwiU2F0xLFuIEFsbWEgxLByc2FsaXllc2lcIiB9LFxyXG4gICAgICAgIHsgaWQ6IFwiMjJcIiwgdGV4dDogXCJTYXTEsW4gQWxtYSBTaXBhcmnFn2lcIiB9XHJcbiAgICBdOyBwYXJ0bmVyQXZhaWxhYmxlU2VyaWVzOiBbXTtcclxuICAgIHBhcnRuZXJBdmFpbGFibGVHcm91cHM6IFtdO1xyXG4gICAgcGFydG5lckF2YWlsYWJsZUNvdW50cmllczogW107XHJcbiAgICBwYXJ0bmVyQXZhaWxhYmxlU3RhdGVzOiBbXTtcclxuICAgIG9wZW5Eb2N1bWVudHNGb3JQYXJ0bmVyOiBbXTtcclxuICAgIGludm9pY2VPYmplY3RzRW51bUxvb2t1cDogYW55O1xyXG4gICAgaW52b2ljZUZpbGVzRGF0YVNvdXJjZTogYW55XHJcbiAgICBwdXJjaGFzZU9yZGVyRG9jdW1lbnRzOiBbXTtcclxuICAgIGRvY3VtZW50TGluZXM6IE9wZW5Eb2N1bWVudER0b1tdID0gW107XHJcbiAgICBwdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzOiBbXTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yUmVzcG9uc2UgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuRm9yUmVzcG9uc2UgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yUGFydG5lciA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICBpc01vZGFsQnVzeUZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbkZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICBpc01vZGFsQnVzeUZvckRvY3VtZW50ID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbkZvckRvY3VtZW50ID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdTdGF0ZXMgPSBmYWxzZTtcclxuICAgIGlzTG9hZGluZ1NlcmllcyA9IGZhbHNlO1xyXG4gICAgaXNMb2FkaW5nR3JvdXBzID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdBY2NvdW50cyA9IGZhbHNlO1xyXG4gICAgaXNMb2FkaW5nQ291bnRyaWVzID0gZmFsc2U7XHJcbiAgICBpc0ZpbGVNb2RhbE9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICBmYXR1cmFPbml6bGVtZTogYW55O1xyXG4gICAgZm9ybVJlc3BvbnNlOiBGb3JtR3JvdXA7XHJcbiAgICBmb3JtUGFydG5lcjogRm9ybUdyb3VwO1xyXG4gICAgZm9ybURvY3VtZW50OiBGb3JtR3JvdXA7XHJcblxyXG4gICAgY291bnRyeUdyaWRCb3hWYWx1ZTogYW55XHJcbiAgICBpc0NvdW50cnlHcmlkQm94T3BlbmVkOiBib29sZWFuXHJcblxyXG4gICAgc3RhdGVHcmlkQm94VmFsdWU6IGFueVxyXG4gICAgaXNTdGF0ZUdyaWRCb3hPcGVuZWQ6IGJvb2xlYW5cclxuXHJcbiAgICBzZXJpYWxHcmlkQm94VmFsdWU6IGFueVxyXG4gICAgaXNTZXJpYWxHcmlkQm94T3BlbmVkOiBib29sZWFuXHJcblxyXG4gICAgZ3JvdXBHcmlkQm94VmFsdWU6IGFueVxyXG4gICAgaXNHcm91cEdyaWRCb3hPcGVuZWQ6IGJvb2xlYW5cclxuXHJcbiAgICBhY2NvdW50R3JpZEJveFZhbHVlOiBhbnlcclxuICAgIGlzQWNjb3VudEdyaWRCb3hPcGVuZWQ6IGJvb2xlYW5cclxuXHJcbiAgICBicmFuY2hlc0RhdGFTb3VyY2U6IGFueTtcclxuICAgIHNlbGVjdGVkSW5ib3VuZEludm9pY2U6IGFueTtcclxuICAgIGNpdGllczogYW55O1xyXG4gICAgY2l0eVNlcnZpY2U6IGFueTtcclxuICAgIGlzRHJhZnQ6IGFueTtcclxuICAgIGlzQnJhbmNoID0gZmFsc2U7XHJcblxyXG4gICAgZHJhZnRSZXN1bHRzOiBhbnlbXSA9IFtdO1xyXG4gICAgcmVzdWx0UG9wdXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICBoYXNWYWxpZFNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgYnJhbmNoUG9wdXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZEJyYW5jaElkOiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAgIC8vIE1hbnVlbCBLYWxlbSBFa2xlXHJcbiAgICBpc01vZGFsT3BlbkZvck1hbnVhbExpbmUgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yTWFudWFsTGluZSA9IGZhbHNlO1xyXG4gICAgbWFudWFsTGluZXM6IE1hbnVhbExpbmVEdG9bXSA9IFtdO1xyXG4gICAgc2FwSXRlbXNTdG9yZTogQ3VzdG9tU3RvcmU7XHJcbiAgICB0YXhHcm91cHM6IFNhcFRheEdyb3VwRHRvW10gPSBbXTtcclxuXHJcbiAgICAvLyBNdWhhdGFwIEthdGFsb2cgTnVtYXJhc8SxXHJcbiAgICBpc01vZGFsT3BlbkZvckNhdGFsb2cgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yQ2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgY2F0YWxvZ01hdGNoTGluZXM6IENhdGFsb2dNYXRjaExpbmVEdG9bXSA9IFtdO1xyXG5cclxuICAgIGludm9pY2VGaWxlTmFtZUxvb2t1cDogYW55O1xyXG4gICAgaXNGaWxlTW9kYWxCdXN5ID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogSGl0SW5ib3VuZEludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW52b2ljZVNlcnZpY2U6IEhpdEludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0QnJhbmNoZXNTZXJ2aWNlOiBIaXRCcmFuY2hlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2U6IEhpdFBhcmFtc0dlbmVyYWxzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyRm9yUGFydG5lcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlckZvckRvY3VtZW50OiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZTogSGl0QnVzaW5lc3NQYXJ0bmVyR3JvdXBTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFNoYXJlZFNlcnZpY2U6IEhpdFNoYXJlZFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWxlRG9jdW1lbnRUeXBlU2VydmljZTogSGl0RmlsZURvY3VtZW50VHlwZVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuY291bnRyeUdyaWRCb3hfZGlzcGxheUV4cHIgPSB0aGlzLmNvdW50cnlHcmlkQm94X2Rpc3BsYXlFeHByLmJpbmQodGhpcylcclxuICAgICAgICB0aGlzLnN0YXRlR3JpZEJveF9kaXNwbGF5RXhwciA9IHRoaXMuc3RhdGVHcmlkQm94X2Rpc3BsYXlFeHByLmJpbmQodGhpcylcclxuICAgICAgICB0aGlzLnNlcmlhbEdyaWRCb3hfZGlzcGxheUV4cHIgPSB0aGlzLnNlcmlhbEdyaWRCb3hfZGlzcGxheUV4cHIuYmluZCh0aGlzKVxyXG4gICAgICAgIHRoaXMuZ3JvdXBHcmlkQm94X2Rpc3BsYXlFeHByID0gdGhpcy5ncm91cEdyaWRCb3hfZGlzcGxheUV4cHIuYmluZCh0aGlzKVxyXG4gICAgICAgIHRoaXMuYWNjb3VudEdyaWRCb3hfZGlzcGxheUV4cHIgPSB0aGlzLmFjY291bnRHcmlkQm94X2Rpc3BsYXlFeHByLmJpbmQodGhpcylcclxuICAgIH1cclxuICAgIGNvdW50cnlHcmlkQm94X2Rpc3BsYXlFeHByKCkge1xyXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jb3VudHJ5R3JpZEJveFZhbHVlKSAmJiAhaXNOdWxsT3JFbXB0eSh0aGlzLmNvdW50cnlHcmlkQm94VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lckNvdW50cnkuc2V0VmFsdWUodGhpcy5jb3VudHJ5R3JpZEJveFZhbHVlWzBdLmNvZGUpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3RhdGVzKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmNvdW50cnlHcmlkQm94VmFsdWVbMF0ubmFtZX1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0ZUdyaWRCb3hfZGlzcGxheUV4cHIoKSB7XHJcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnN0YXRlR3JpZEJveFZhbHVlKSAmJiAhaXNOdWxsT3JFbXB0eSh0aGlzLnN0YXRlR3JpZEJveFZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1QYXJ0bmVyLmNvbnRyb2xzLnBhcnRuZXJTdGF0ZS5zZXRWYWx1ZSh0aGlzLnN0YXRlR3JpZEJveFZhbHVlWzBdLmNvZGUpXHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN0YXRlR3JpZEJveFZhbHVlWzBdLm5hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2VyaWFsR3JpZEJveF9kaXNwbGF5RXhwcigpIHtcclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuc2VyaWFsR3JpZEJveFZhbHVlKSAmJiAhaXNOdWxsT3JFbXB0eSh0aGlzLnNlcmlhbEdyaWRCb3hWYWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFydG5lci5jb250cm9scy5wYXJ0bmVyU2VyaWVzLnNldFZhbHVlKHRoaXMuc2VyaWFsR3JpZEJveFZhbHVlWzBdLnNlcmllcylcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VyaWFsR3JpZEJveFZhbHVlWzBdLm5hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ3JvdXBHcmlkQm94X2Rpc3BsYXlFeHByKCkge1xyXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy5ncm91cEdyaWRCb3hWYWx1ZSkgJiYgIWlzTnVsbE9yRW1wdHkodGhpcy5ncm91cEdyaWRCb3hWYWx1ZSkpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lckdyb3VwLnNldFZhbHVlKHRoaXMuZ3JvdXBHcmlkQm94VmFsdWVbMF0uY29kZSlcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZ3JvdXBHcmlkQm94VmFsdWVbMF0ubmFtZX1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhY2NvdW50R3JpZEJveF9kaXNwbGF5RXhwcigpIHtcclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYWNjb3VudEdyaWRCb3hWYWx1ZSkgJiYgIWlzTnVsbE9yRW1wdHkodGhpcy5hY2NvdW50R3JpZEJveFZhbHVlKSkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFydG5lci5jb250cm9scy5wYXJ0bmVyQWNjb3VudC5zZXRWYWx1ZSh0aGlzLmFjY291bnRHcmlkQm94VmFsdWVbMF0uaWQpXHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmFjY291bnRHcmlkQm94VmFsdWVbMF0udGV4dH1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qIHNob3dBbGxGaWxlcyhyZWNvcmQpIHtcclxuICAgICAgICAgdGhpcy5pbnZvaWNlRmlsZXNEYXRhU291cmNlID0gdGhpcy5pbnZvaWNlU2VydmljZS5Mb2FkSW52b2ljZUZpbGVzKHJlY29yZC51dUlkKVxyXG4gICAgICAgICB0aGlzLmlzRmlsZU1vZGFsT3BlbiA9IHRydWU7XHJcbiAgICAgfSovXHJcbiAgICBvbkNvdW50cnlHcmlkQm94T3B0aW9uQ2hhbmdlZChlKSB7XHJcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ3ZhbHVlJykge1xyXG5cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNDb3VudHJ5R3JpZEJveE9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU3RhdGVHcmlkQm94T3B0aW9uQ2hhbmdlZChlKSB7XHJcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ3ZhbHVlJykge1xyXG5cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0ZUdyaWRCb3hPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblNlcmlhbEdyaWRCb3hPcHRpb25DaGFuZ2VkKGUpIHtcclxuICAgICAgICBpZiAoZS5uYW1lID09PSAndmFsdWUnKSB7XHJcblxyXG5cclxuICAgICAgICAgICAgdGhpcy5pc1NlcmlhbEdyaWRCb3hPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkdyb3VwR3JpZEJveE9wdGlvbkNoYW5nZWQoZSkge1xyXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICd2YWx1ZScpIHtcclxuXHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzR3JvdXBHcmlkQm94T3BlbmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25BY2NvdW50R3JpZEJveE9wdGlvbkNoYW5nZWQoZSkge1xyXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICd2YWx1ZScpIHtcclxuXHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzQWNjb3VudEdyaWRCb3hPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmluYm91bmRJbnZvaWNlc0RhdGFTb3VyY2UgPSB0aGlzLnNlcnZpY2UuTG9hZEluYm91bmRJbnZvaWNlcztcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFN0YXR1c2VzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmluYm91bmRJbnZvaWNlU3RhdHVzTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlLmdldEZpbGVEb2N1bWVudFR5cGVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VGaWxlTmFtZUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlLmdldFBhcmFtc0dlbmVyYWwoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzQnJhbmNoID0gZGF0YS5pc0JyYW5jaDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpdEJyYW5jaGVzU2VydmljZS5nZXRCcmFuY2hlcygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyYW5jaGVzRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0NvdW50cmllcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldENvdW50cmllcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ291bnRyaWVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVDb3VudHJpZXMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiw5xsa2VsZXIgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY291bnRyaWVzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZS5nZXRTdXBwbGllckdyb3VwcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVHcm91cHMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiUGFydG5lciBncnVwbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZ3JvdXBzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0U2FwT2JqZWN0cygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlT2JqZWN0c0VudW1Mb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldEluYm91bmRJbnZvaWNlKCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbnZvaWNlUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZVZpZXcocmVjb3JkLnV1SWQpLnN1YnNjcmliZShpdGVtID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGl0ZW0uY29udGVudCwgaXRlbS5maWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICAvKmNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXRlbS5taW1lVHlwZX07YmFzZTY0LCR7aXRlbS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHNvdXJjZTtcclxuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGAke2l0ZW0uZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpOyovXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB2aWV3UERGc011bHRpcGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlXHJcbiAgICAgICAgICAgIC5nZXRWaXNpYmxlUm93cygpXHJcbiAgICAgICAgICAgIC5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSk7XHJcblxyXG4gICAgICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIkzDvHRmZW4gZW4gYXogYmlyIGZhdHVyYSBzZcOnaW5pei5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlbGVjdGVkUm93cy5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludm9pY2VObyA9IHJvdy5kYXRhLmludm9pY2VJZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZVZpZXcocm93LmRhdGEudXVJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW5CYXNlNjQgPSBpdGVtLmNvbnRlbnQuaW5jbHVkZXMoJywnKVxyXG4gICAgICAgICAgICAgICAgICAgID8gaXRlbS5jb250ZW50LnNwbGl0KCcsJylbMV1cclxuICAgICAgICAgICAgICAgICAgICA6IGl0ZW0uY29udGVudDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShhdG9iKGNsZWFuQmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlc10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsICdub29wZW5lcicpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1RhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1RhYi5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IGludm9pY2VObyA/PyByb3cuZGF0YS51dUlkO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gRmF0dXJhIG51bWFyYXPEsXlsYSBpbmRpclxyXG4gICAgICAgICAgICAgICAgLyogICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBgJHtpbnZvaWNlTm8gPz8gcm93LmRhdGEudXVJZH0ucGRmYDtcclxuICAgICAgICAgICAgICAgICAgICAgYS5jbGljaygpOyAqL1xyXG5cclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLCA2MF8wMDApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUmVzcG9uc2VNb2RhbChyZWNvcmQpIHtcclxuXHJcbiAgICAgICAgdGhpcy5idWlsZEZvcm0ocmVjb3JkKTtcclxuICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yUmVzcG9uc2UgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRm9ybShyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmZvcm1SZXNwb25zZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBpZDogcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICBpbnZvaWNlVVVJRDogcmVjb3JkLnV1SWQsXHJcbiAgICAgICAgICAgIGlzQWNjZXB0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1JlamVjdGVkOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbmRJbnZvaWNlUmVzcG9uc2UocmVzcG9uc2U6IGJvb2xlYW4pIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVJlc3BvbnNlLmludmFsaWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZm9ybVJlc3BvbnNlLnZhbHVlXHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5zZW5kSW52b2ljZVJlc3BvbnNlKHJlc3VsdC5pbnZvaWNlVVVJRCwgcmVzcG9uc2UsIHJlc3VsdC5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yUmVzcG9uc2UgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5QYXJ0bmVyTW9kYWwocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbyhcIk11aGF0YXAga29udHJvbMO8IHlhcMSxbMSxeW9yLCBsw7x0ZmVuIGJla2xleWluaXouXCIpXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNoZWNrQnVzaW5lc3NQYXJ0bmVyRXhpc3QocmVjb3JkLmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbikuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRm9ybUZvclBhcnRuZXIocmVjb3JkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24gKyBcIiBudW1hcmFsxLEgc2F0xLFjxLEgemF0ZW4gbWV2Y3V0LlwiKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXRlcygpIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1N0YXRlcyA9IHRydWU7XHJcbiAgICAgICAgLy8gw5ZuY2UgbWV2Y3V0IHN0YXRlIHNlw6dpbWluaSB0ZW1pemxlXHJcbiAgICAgICAgdGhpcy5mb3JtUGFydG5lci5jb250cm9scy5wYXJ0bmVyU3RhdGUuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZVN0YXRlcyA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U3RhdGVzKHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lckNvdW50cnkudmFsdWUpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nU3RhdGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVTdGF0ZXMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwixLBsL2V5YWxldCBiaWxnaWxlcmkgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgc3RhdGVzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZUZvcm1QYXJ0bmVyKCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvclBhcnRuZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvcm1QYXJ0bmVyLnJlc2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlQnVzaW5lc3NQYXJ0bmVyKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb3JtUGFydG5lci5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JQYXJ0bmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHJlcXVlc3REdG9BZGRyZXNzZXM6IEJwQWRkcmVzc1tdID0gW11cclxuICAgICAgICByZXF1ZXN0RHRvQWRkcmVzc2VzLnB1c2goe1xyXG4gICAgICAgICAgICBhZGRyZXNzTmFtZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJBZGRyZXNzPy52YWx1ZSxcclxuICAgICAgICAgICAgc3RyZWV0OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lclN0cmVldD8udmFsdWUsXHJcbiAgICAgICAgICAgIGJsb2NrOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckJsb2NrPy52YWx1ZSxcclxuICAgICAgICAgICAgemlwQ29kZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJaaXBDb2RlPy52YWx1ZSxcclxuICAgICAgICAgICAgY2l0eTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJDaXR5Py52YWx1ZSxcclxuICAgICAgICAgICAgY291bnR5OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckNvdW50eT8udmFsdWUsXHJcbiAgICAgICAgICAgIGNvdW50cnk6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQ291bnRyeT8udmFsdWUsXHJcbiAgICAgICAgICAgIHN0YXRlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lclN0YXRlPy52YWx1ZSxcclxuICAgICAgICAgICAgYWRkcmVzc1R5cGU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWRkcmVzc1R5cGU/LnZhbHVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvOiBDcmVhdGVCdXNpbmVzc1BhcnRuZXJTdXBwbGllckR0byA9IHtcclxuICAgICAgICAgICAgY2FyZENvZGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHVuaWZpZWRGZWRlcmFsVGF4SUQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy52a24/LnZhbHVlLFxyXG4gICAgICAgICAgICBjYXJkTmFtZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/Lm5hbWU/LnZhbHVlLFxyXG4gICAgICAgICAgICBjYXJkVHlwZTogXCJTXCIsXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckN1cnJlbmN5Py52YWx1ZSxcclxuICAgICAgICAgICAgZGViaXRvckFjY291bnQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWNjb3VudD8udmFsdWUsXHJcbiAgICAgICAgICAgIHNlcmllczogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJTZXJpZXM/LnZhbHVlLFxyXG4gICAgICAgICAgICBncm91cENvZGU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyR3JvdXA/LnZhbHVlLFxyXG4gICAgICAgICAgICB3ZWJzaXRlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lcldlYlNpdGVVUkk/LnZhbHVlLFxyXG4gICAgICAgICAgICBhZGRpdGlvbmFsSUQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWRkSWQ/LnZhbHVlLFxyXG4gICAgICAgICAgICBicEFkZHJlc3NlczogcmVxdWVzdER0b0FkZHJlc3Nlc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVCdXNpbmVzc1BhcnRuZXJGb3JTdXBwbGllcihyZXF1ZXN0RHRvKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVGb3JtUGFydG5lcigpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0LmNhcmRDb2RlICsgXCIga29kbHUgbXVoYXRhcCBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiTXVoYXRhcCBvbHXFn3R1cnVsdXJrZW4gYmlyIGhhdGEgb2x1xZ90dS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTXVoYXRhcCBvbHXFn3R1cnVsdXJrZW4gYmlyIGhhdGEgb2x1xZ90dTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRm9ybUZvclBhcnRuZXIocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFBhcnRuZXJEZXRhaWxzKHJlY29yZC5pZCkuc3Vic2NyaWJlKGludm9pY2UgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFydG5lciA9IHRoaXMuZm9ybUJ1aWxkZXJGb3JQYXJ0bmVyLmdyb3VwKHtcclxuICAgICAgICAgICAgICAgIHZrbjogW3JlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24gPz8gXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IFtyZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlOYW1lID8/IFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyQ3VycmVuY3k6IFtyZWNvcmQuZG9jdW1lbnRDdXJyZW5jeUNvZGUgPz8gXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBY2NvdW50OiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJTZXJpZXM6IFtcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckdyb3VwOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJFbWFpbDogW2ludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5Py5wYXJ0eT8uY29udGFjdD8uZWxlY3Ryb25pY01haWw/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lcldlYlNpdGVVUkk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LndlYnNpdGVVUkk/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckFkZElkOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wYXJ0eVRheFNjaGVtZT8udGF4U2NoZW1lPy5uYW1lPy52YWx1ZSA/PyBcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckFkZHJlc3NUeXBlOiBcIkJcIixcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBZGRyZXNzOiBcIkZhdHVyYSBBZHJlc2lcIixcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJTdHJlZXQ6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LnN0cmVldE5hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckJsb2NrOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5ibG9ja05hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckNpdHk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LmNpdHlOYW1lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJaaXBDb2RlOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5wb3N0YWxab25lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJDb3VudHk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LmNpdHlTdWJkaXZpc2lvbk5hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lclN0YXRlOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckNvdW50cnk6IFwiXCJcclxuXHJcbiAgICAgICAgICAgICAgICAvL3BhcnRuZXJDaXR5OiBpbnZvaWNlRGV0YWlscy5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdBY2NvdW50cyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJpYWxHcmlkQm94VmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBHcmlkQm94VmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuc3RhdGVHcmlkQm94VmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuY291bnRyeUdyaWRCb3hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5hY2NvdW50R3JpZEJveFZhbHVlID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0QmFua0FjY291bnRCeUN1cnJlbmN5KHJlY29yZC5kb2N1bWVudEN1cnJlbmN5Q29kZSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdBY2NvdW50cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJ0bmVyQXZhaWxhYmxlQWNjb3VudHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBsaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZUFjY291bnRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuYWNjdENvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmFjY3RDb2RlICsgXCIgXCIgKyBlbGVtZW50LmFjY3ROYW1lLnRvVXBwZXJDYXNlKCkgKyBcIiBcIiArIGVsZW1lbnQuYWN0Q3Vyci50b1VwcGVyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiQmFua2EgaGVzYXBsYXLEsSB5w7xrbGVuaXJrZW4gYmlyIGhhdGEgb2x1xZ90dS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBhY2NvdW50czonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1NlcmllcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFBhcnRuZXJOdW1iZXJpbmdTZXJpZXMoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ1NlcmllcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJ0bmVyQXZhaWxhYmxlU2VyaWVzID0gbGlzdDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlNlcmkgbnVtYXJhbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgc2VyaWVzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZVN0YXRlcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRm9ybUZvckRvY3VtZW50KCkge1xyXG4gICAgICAgIHRoaXMuZm9ybURvY3VtZW50ID0gdGhpcy5mb3JtQnVpbGRlckZvckRvY3VtZW50Lmdyb3VwKHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRCcmFuY2g6IHRoaXMuYnJhbmNoZXNEYXRhU291cmNlPy5maWx0ZXIocCA9PiBwLmlzTWFpbilbMF0uY29kZSA/PyBcIlwiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRyYWZ0Rm9ybShyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJNdWhhdGFwIGtvbnRyb2zDvCB5YXDEsWzEsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jaGVja0J1c2luZXNzUGFydG5lckV4aXN0KHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIsSwbGdpbGkgVktOJ3llIGFpdCAoXCIgKyByZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuICsgXCIpIG11aGF0YXAgYnVsdW5hbWFkxLEsIGzDvHRmZW4gw7ZuY2UgbXVoYXRhcCBvbHXFn3R1cnVuLlwiKVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRGb3JtRm9yRG9jdW1lbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZSA9IHJlY29yZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JEb2N1bWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZnQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRvY3VtZW50Rm9ybShyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJNdWhhdGFwIGtvbnRyb2zDvCB5YXDEsWzEsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jaGVja0J1c2luZXNzUGFydG5lckV4aXN0KHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIsSwbGdpbGkgVktOJ3llIGFpdCAoXCIgKyByZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuICsgXCIpIG11aGF0YXAgYnVsdW5hbWFkxLEsIGzDvHRmZW4gw7ZuY2UgbXVoYXRhcCBvbHXFn3R1cnVuLlwiKVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRGb3JtRm9yRG9jdW1lbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZSA9IHJlY29yZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JEb2N1bWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5PcGVuRG9jdW1lbnRzRm9ybSgpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJBw6fEsWsgYmVsZ2Ugc2F0xLFybGFyxLEgc29yZ3VsYW7EsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0T3BlbkRvY3VtZW50cyh0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbkRvY3VtZW50c0ZvclBhcnRuZXIgPSBsaXN0O1xyXG5cclxuICAgICAgICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZU9yZGVyRG9jdW1lbnRzID0gbGlzdC5maWx0ZXIoZG9jID0+IGRvYy5vYmpUeXBlID09PSAyMik7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2F0xLFuIGFsbWEgc2lwYXJpxZ9sZXJpIChPYmpUeXBlPTIyKTonLCB0aGlzLnB1cmNoYXNlT3JkZXJEb2N1bWVudHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE9ialR5cGU9MjAgb2xhbmxhcsSxIHNhdMSxbiBhbG1hIGlyc2FsaXllc2kgdGFixLFuYSBmaWx0cmVsZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzID0gbGlzdC5maWx0ZXIoZG9jID0+IGRvYy5vYmpUeXBlID09PSAyMCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2F0xLFuIGFsbWEgaXJzYWxpeWVsZXJpIChPYmpUeXBlPTIwKTonLCB0aGlzLnB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gT2JqVHlwZT0yMiBvbGFubGFyxLEgc2F0xLFuIGFsbWEgc2lwYXJpxZ9pIHRhYsSxbmEgZmlsdHJlbGVcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yT3BlbkRvY3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwixLBsZ2lsaSBtdWhhdGFwIGnDp2luIGHDp8SxayBiZWxnZSBzYXTEsXLEsSBidWx1bmFtYWTEsS5cIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdE9wZW5Eb2N1bWVudHMoKSB7XHJcbiAgICAgICAgbGV0IHB1cmNoYXNlRGVzcGF0Y2hlcyA9IHRoaXMuZHhQdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzLmluc3RhbmNlLmdldFNlbGVjdGVkUm93c0RhdGEoKVxyXG4gICAgICAgIGxldCBwdXJjaGFzZU9yZGVycyA9IHRoaXMuZHhQdXJjaGFzZU9yZGVyRG9jdW1lbnRzLmluc3RhbmNlLmdldFNlbGVjdGVkUm93c0RhdGEoKVxyXG4gICAgICAgIGxldCByZWZlcmVuY2VEb2NzID0gW107XHJcbiAgICAgICAgaWYgKHB1cmNoYXNlT3JkZXJzLmxlbmd0aCA+IDAgJiYgcHVyY2hhc2VEZXNwYXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlJlZmVyYW5zIG9sYXJhayB5YWxuxLF6Y2EgYmlyIGJlbGdlIHTDvHLDvCBzZcOnaWxlYmlsaXIuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHVyY2hhc2VPcmRlcnMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgcmVmZXJlbmNlRG9jcyA9IHB1cmNoYXNlT3JkZXJzO1xyXG4gICAgICAgIGlmIChwdXJjaGFzZURlc3BhdGNoZXMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgcmVmZXJlbmNlRG9jcyA9IHB1cmNoYXNlRGVzcGF0Y2hlcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRMaW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChyZWZlcmVuY2VEb2NzLnNvbWUoZSA9PiAhdGhpcy5kb2N1bWVudExpbmVzLnNvbWUoZCA9PiBkLm9ialR5cGUgPT09IGUub2JqVHlwZSkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiUmVmZXJhbnMgb2xhcmFrIHlhbG7EsXpjYSBiaXIgYmVsZ2UgdMO8csO8IHNlw6dpbGViaWxpci5cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlZmVyZW5jZURvY3MuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgIXRoaXMuZG9jdW1lbnRMaW5lcy5zb21lKGRyYWZ0ID0+XHJcbiAgICAgICAgICAgICAgICBkcmFmdC5vYmpUeXBlID09PSBlbGVtZW50Lm9ialR5cGUgJiZcclxuICAgICAgICAgICAgICAgIGRyYWZ0LmRvY0VudHJ5ID09PSBlbGVtZW50LmRvY0VudHJ5ICYmXHJcbiAgICAgICAgICAgICAgICBkcmFmdC5saW5lTnVtID09PSBlbGVtZW50LmxpbmVOdW1cclxuICAgICAgICAgICAgKSAmJiB0aGlzLmRvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFF0eTogZWxlbWVudC5vcGVuUXR5LFxyXG4gICAgICAgICAgICAgICAgb3BlblF0eTogZWxlbWVudC5vcGVuUXR5LFxyXG4gICAgICAgICAgICAgICAgb2JqVHlwZTogZWxlbWVudC5vYmpUeXBlLFxyXG4gICAgICAgICAgICAgICAgZG9jRW50cnk6IGVsZW1lbnQuZG9jRW50cnksXHJcbiAgICAgICAgICAgICAgICBkb2NOdW06IGVsZW1lbnQuZG9jTnVtLFxyXG4gICAgICAgICAgICAgICAgbnVtQXRDYXJkOiBlbGVtZW50Lm51bUF0Q2FyZCxcclxuICAgICAgICAgICAgICAgIGxpbmVOdW06IGVsZW1lbnQubGluZU51bSxcclxuICAgICAgICAgICAgICAgIGRvY0RhdGU6IGVsZW1lbnQuZG9jRGF0ZSxcclxuICAgICAgICAgICAgICAgIGRvY0R1ZURhdGU6IGVsZW1lbnQuZG9jRHVlRGF0ZSxcclxuICAgICAgICAgICAgICAgIGl0ZW1Db2RlOiBlbGVtZW50Lml0ZW1Db2RlLFxyXG4gICAgICAgICAgICAgICAgZHNjcmlwdGlvbjogZWxlbWVudC5kc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC50ZXh0LFxyXG4gICAgICAgICAgICAgICAgZnJlZVR4dDogZWxlbWVudC5mcmVlVHh0LFxyXG4gICAgICAgICAgICAgICAgY2FyZENvZGU6IGVsZW1lbnQuY2FyZENvZGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaGlkZUZvcm1PcGVuRG9jdW1lbnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZUZvcm1PcGVuRG9jdW1lbnRzKCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JPcGVuRG9jcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JPcGVuRG9jcyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBoaWRlRm9ybURyYWZ0KCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JEb2N1bWVudCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JEb2N1bWVudCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaW5lcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbmREcmFmdChkcmFmdEdyaWRMaW5lczogYW55W10pIHtcclxuICAgICAgICBsZXQgcmVxdWVzdER0b0RvY3VtZW50TGluZXM6IENvbm5lY3RvckRyYWZ0RG9jdW1lbnRMaW5lRHRvW10gPSBbXTtcclxuXHJcbiAgICAgICAgZHJhZnRHcmlkTGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQub2JqVHlwZSA9PT0gMCB8fCBlbGVtZW50Lm9ialR5cGUgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBNYW51ZWwga2FsZW0gKDApIHZleWEgS2F0YWxvZyBlxZ9sZcWfdGlybWUgKC0xKVxyXG4gICAgICAgICAgICAgICAgcmVxdWVzdER0b0RvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGVsZW1lbnQuc2VsZWN0ZWRRdHksXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZUVudHJ5OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VMaW5lOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Db2RlOiBlbGVtZW50Lml0ZW1Db2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EZXNjcmlwdGlvbjogZWxlbWVudC5kc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHVuaXRQcmljZTogZWxlbWVudC51bml0UHJpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGF4Q29kZTogZWxlbWVudC5mcmVlVHh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHZhdEdyb3VwOiBlbGVtZW50LmZyZWVUeHQsXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uZG9jdW1lbnRDdXJyZW5jeUNvZGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgdW9tQ29kZTogZWxlbWVudC50ZXh0IHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICBkaXNjUHJjbnQ6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBSZWZlcmFucyBiZWxnZWxpIGthbGVtIC0gbWV2Y3V0IGFrxLHFn1xyXG4gICAgICAgICAgICAgICAgcmVxdWVzdER0b0RvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGVsZW1lbnQuc2VsZWN0ZWRRdHksXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGU6IGVsZW1lbnQub2JqVHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlRW50cnk6IGVsZW1lbnQuZG9jRW50cnksXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZUxpbmU6IGVsZW1lbnQubGluZU51bVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IHJlcXVlc3REdG86IENvbm5lY3RvckRyYWZ0RG9jdW1lbnREdG8gPSB7XHJcbiAgICAgICAgICAgIGRvY0VudHJ5OiBudWxsLFxyXG4gICAgICAgICAgICBkb2NOdW06IG51bGwsXHJcbiAgICAgICAgICAgIGRvY0N1cnJlbmN5OiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmRvY3VtZW50Q3VycmVuY3lDb2RlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkb2NPYmplY3RDb2RlOnRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZVR5cGVDb2RlPT09XCJJQURFXCI/XCJvQ3JlZGl0Tm90ZXNcIjpcIm9QdXJjaGFzZUludm9pY2VzXCIsXHJcbiAgICAgICAgICAgIGRvY0RhdGU6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaXNzdWVEYXRlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB0YXhEYXRlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmlzc3VlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jRHVlRGF0ZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wYXltZW50VGVybXNQYXltZW50RHVlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jUmF0ZTogKHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSA8PSAxIHx8IGlzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlKSkgPyAxIDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUsXHJcbiAgICAgICAgICAgIGNhcmRDb2RlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbj8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgbnVtQXRDYXJkOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9FRkFUTk86IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB1X1VVSUQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8udXVJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9TRU5EOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VUeXBlQ29kZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9Qcm9maWxlSWQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJvZmlsZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkb2N1bWVudExpbmVzOiByZXF1ZXN0RHRvRG9jdW1lbnRMaW5lcyxcclxuICAgICAgICAgICAgYlBMX0lEQXNzaWduZWRUb0ludm9pY2U6IHRoaXMuaXNCcmFuY2ggPyB0aGlzLmZvcm1Eb2N1bWVudD8uY29udHJvbHM/LnNlbGVjdGVkQnJhbmNoPy52YWx1ZSA6IDEgLy8gVmFyc2F5xLFsYW4gxZ91YmUgLSB0ZXN0IGnDp2luXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZURyYWZ0RG9jdW1lbnQocmVxdWVzdER0bywgdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmlkKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVGb3JtRHJhZnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0LmRvY0VudHJ5ICsgXCIgbnVtYXJhbMSxIHRhc2xhayBiZWxnZSBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kRG9jdW1lbnQoZG9jdW1lbnRHcmlkTGluZXM6IGFueVtdKSB7XHJcbiAgICAgICAgbGV0IHJlcXVlc3REdG9Eb2N1bWVudExpbmVzOiBDb25uZWN0b3JQdXJjaGFzZUludm9pY2VEb2N1bWVudExpbmVEdG9bXSA9IFtdO1xyXG5cclxuICAgICAgICBkb2N1bWVudEdyaWRMaW5lcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5vYmpUeXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBNYW51ZWwga2FsZW1cclxuICAgICAgICAgICAgICAgIHJlcXVlc3REdG9Eb2N1bWVudExpbmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBlbGVtZW50LnNlbGVjdGVkUXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VFbnRyeTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlTGluZTogbnVsbFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBSZWZlcmFucyBiZWxnZWxpIGthbGVtXHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0RHRvRG9jdW1lbnRMaW5lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogZWxlbWVudC5zZWxlY3RlZFF0eSxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZTogZWxlbWVudC5vYmpUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VFbnRyeTogZWxlbWVudC5kb2NFbnRyeSxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlTGluZTogZWxlbWVudC5saW5lTnVtXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdER0bzogQ29ubmVjdG9yUHVyY2hhc2VJbnZvaWNlRG9jdW1lbnREdG8gPSB7XHJcbiAgICAgICAgICAgIGRvY0VudHJ5OiBudWxsLFxyXG4gICAgICAgICAgICBkb2NOdW06IG51bGwsXHJcbiAgICAgICAgICAgIGRvY0N1cnJlbmN5OiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmRvY3VtZW50Q3VycmVuY3lDb2RlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkb2NEYXRlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmlzc3VlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdGF4RGF0ZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pc3N1ZURhdGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGRvY0R1ZURhdGU6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGRvY1JhdGU6ICh0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUgPD0gMSB8fCBpc051bGxPckVtcHR5KHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSkpID8gMSA6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5wcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlLFxyXG4gICAgICAgICAgICBjYXJkQ29kZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIG51bUF0Q2FyZDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pbnZvaWNlSWQ/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHVfRUZBVE5POiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9VVUlEOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnV1SWQ/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHVfU0VORDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pbnZvaWNlVHlwZUNvZGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHVfUHJvZmlsZUlkOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByb2ZpbGVJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgYlBMX0lEQXNzaWduZWRUb0ludm9pY2U6IHRoaXMuaXNCcmFuY2ggPyB0aGlzLmZvcm1Eb2N1bWVudD8uY29udHJvbHM/LnNlbGVjdGVkQnJhbmNoPy52YWx1ZSA6IG51bGwsXHJcbiAgICAgICAgICAgIGRvY3VtZW50TGluZXM6IHJlcXVlc3REdG9Eb2N1bWVudExpbmVzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZVB1cmNoYXNlSW52b2ljZURvY3VtZW50KHJlcXVlc3REdG8sIHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pZClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRm9ybURyYWZ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0LmRvY0VudHJ5ICsgXCIgbnVtYXJhbMSxIGJlbGdlIGJhxZ9hcsSxeWxhIG9sdcWfdHVydWxkdS5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZURyYWZ0RG9jdW1lbnQoKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvckRvY3VtZW50ID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB0aGlzLmR4RG9jdW1lbnRMaW5lcy5pbnN0YW5jZS5nZXREYXRhU291cmNlKCk7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5zdG9yZSgpLmxvYWQoKS50aGVuKChncmlkTGluZXM6IGFueVtdKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAoZ3JpZExpbmVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0RyYWZ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgLmluZm8oJ1RhYmxvZGEgc2F0xLFyIGJ1bHVubWFkxLHEn8SxIGnDp2luIHRhc2xhayBiZWxnZSBib8WfIG9sYXJhayBvbHXFn3R1cnVsYWNha3TEsXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBcImNvbmZpcm1cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZERyYWZ0KGdyaWRMaW5lcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JEb2N1bWVudCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJLYXnEsXRsxLEgYmVsZ2Ugb2x1xZ90dXJ1bHVya2VuIGJvxZ8gc2F0xLFyIGdpcmlsZW1lei5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyaWRMaW5lcy5maWx0ZXIoeCA9PiB4LnNlbGVjdGVkUXR5ID4geC5vcGVuUXR5KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgLmluZm8oJ1Nlw6dpbGVuIG1pa3RhcsSxLCBhw6fEsWsgbWlrdGFyZGFuIGLDvHnDvGsgb2xhbiBzYXTEsXIvc2F0xLFybGFyIG1ldmN1dC4gRGV2YW0gZXRtZWsgaXN0aXlvciBtdXN1bnV6PycsIHsga2V5OiAnOjpCaWxnaScsIGRlZmF1bHRWYWx1ZTogJycgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFmdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kRHJhZnQoZ3JpZExpbmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZERvY3VtZW50KGdyaWRMaW5lcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yRG9jdW1lbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0RyYWZ0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmREcmFmdChncmlkTGluZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kRG9jdW1lbnQoZ3JpZExpbmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc01hbnVhbChyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UucHJvY2Vzc01hbnVhbChyZWNvcmQuaWQpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXCJCZWxnZSBiYcWfYXLEsXlsYSBtYW51ZWwgacWfbGVuZGkuXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFudWVsIEthbGVtIEVrbGUgLSBNb2RhbCBhw6dcclxuICAgIG9wZW5NYW51YWxMaW5lTW9kYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRMaW5lcy5zb21lKGQgPT4gZC5vYmpUeXBlID09PSAwIHx8IGQub2JqVHlwZSA9PT0gLTEpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIlNhdMSxcmxhciB6YXRlbiBla2xlbm1pxZ90aXIuIMOWbmNlIG1ldmN1dCBzYXTEsXJsYXLEsSB0ZW1pemxleWluaXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JNYW51YWxMaW5lID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1hbnVhbExpbmVzID0gW107XHJcbiAgICAgICAgdGhpcy5pbml0U2FwSXRlbXNTdG9yZSgpO1xyXG5cclxuICAgICAgICAvLyBYTUwgc2F0xLFybGFyxLFuxLEgdmUgdmVyZ2kgZ3J1cGxhcsSxbsSxIHBhcmFsZWwgw6dla1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbnZvaWNlWG1sTGluZXModGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoeG1sTGluZXM6IEludm9pY2VYbWxMaW5lRHRvW10pID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIFZlcmdpIGdydXBsYXLEsW7EsSDDp2VrIChDYXRlZ29yeT0nSScsIEluYWN0aXZlPSdOJylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5nZXRUYXhHcm91cHMoJ0knKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IChncm91cHM6IFNhcFRheEdyb3VwRHRvW10pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhHcm91cHMgPSBncm91cHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSWFkZSA9IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJvZmlsZUlkID09PSAnSUFERSc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBYTUwgc2F0xLFybGFyxLFuxLEgTWFudWFsTGluZUR0byd5YSBkw7Zuw7zFn3TDvHJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW51YWxMaW5lcyA9IHhtbExpbmVzLm1hcChsaW5lID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZlcmdpIG9yYW7EsW5hIGfDtnJlIHZhcnNhecSxbGFuIHZlcmdpIGdydWJ1IGXFn2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFRheENvZGUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lLnRheFBlcmNlbnQgIT0gbnVsbCAmJiBncm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBncm91cHMuZmluZChnID0+IE1hdGguYWJzKGcucmF0ZSAtIGxpbmUudGF4UGVyY2VudCkgPCAwLjAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VGF4Q29kZSA9IG1hdGNoZWQuY29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lLmxpbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUNvZGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiBsaW5lLml0ZW1OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBsaW5lLnF1YW50aXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRQcmljZTogbGluZS51bml0UHJpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4Q29kZTogZGVmYXVsdFRheENvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiBsaW5lLmN1cnJlbmN5Q29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBNYW51YWxMaW5lRHRvO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JNYW51YWxMaW5lID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JNYW51YWxMaW5lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZlcmdpIGdydXBsYXLEsSBhbMSxbmFtYXpzYSAoU0FQIGJhxJ9sYW50xLFzxLEgeW9rKSB5aW5lIGRlIGHDp1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRheEdyb3VwcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hbnVhbExpbmVzID0geG1sTGluZXMubWFwKGxpbmUgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmUubGluZU51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db2RlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiBsaW5lLml0ZW1OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGxpbmUucXVhbnRpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0UHJpY2U6IGxpbmUudW5pdFByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4Q29kZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeUNvZGU6IGxpbmUuY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBNYW51YWxMaW5lRHRvKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yTWFudWFsTGluZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yTWFudWFsTGluZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yTWFudWFsTGluZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlhNTCBzYXTEsXJsYXLEsSBva3VuYW1hZMSxOiBcIiArIChlcnI/LmVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSXRlbXMgbG9va3VwJ3RhbiBzZcOnaW1cclxuICAgIG9uSXRlbUxvb2t1cENoYW5nZWQoZXZlbnQ6IGFueSwgbGluZUluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAoZXZlbnQudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXBJdGVtc1N0b3JlLmJ5S2V5KGV2ZW50LnZhbHVlKS50aGVuKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW51YWxMaW5lc1tsaW5lSW5kZXhdLml0ZW1OYW1lID0gaXRlbS5pdGVtTmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEl0ZW1zIEN1c3RvbVN0b3JlIC0gc3VudWN1IHRhcmFmbMSxIGFyYW1hIHZlIHNheWZhbGFtYVxyXG4gICAgaW5pdFNhcEl0ZW1zU3RvcmUoKSB7XHJcbiAgICAgICAgdGhpcy5zYXBJdGVtc1N0b3JlID0gbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAga2V5OiAnaXRlbUNvZGUnLFxyXG4gICAgICAgICAgICBsb2FkTW9kZTogJ3JhdycsXHJcbiAgICAgICAgICAgIGxvYWQ6IChsb2FkT3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gbG9hZE9wdGlvbnMuc2VhcmNoVmFsdWUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEl0ZW1zKHNlYXJjaFRleHQpLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGl0ZW1zOiBTYXBJdGVtRHRvW10pID0+IGl0ZW1zIHx8IFtdKVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBbXSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ5S2V5OiAoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0SXRlbXMoa2V5KS50b1Byb21pc2UoKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChpdGVtczogU2FwSXRlbUR0b1tdKSA9PiBpdGVtcz8uZmluZChpID0+IGkuaXRlbUNvZGUgPT09IGtleSkgfHwgbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4gbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVBbGxNYW51YWxMaW5lcyhldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICAgIHRoaXMubWFudWFsTGluZXMuZm9yRWFjaChsID0+IGwuc2VsZWN0ZWQgPSBjaGVja2VkKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNdWhhdGFwIEthdGFsb2cgTnVtYXJhc8SxIGlsZSBUYXNsYWsgQmVsZ2UgT2x1xZ90dXIgLSBNb2RhbCBhw6dcclxuICAgIG9wZW5DYXRhbG9nTWF0Y2hNb2RhbCgpIHtcclxuICAgICAgICBpZiAodGhpcy5kb2N1bWVudExpbmVzLnNvbWUoZCA9PiBkLm9ialR5cGUgPT09IDAgfHwgZC5vYmpUeXBlID09PSAtMSkpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwiU2F0xLFybGFyIHphdGVuIGVrbGVubWnFn3Rpci4gw5ZuY2UgbWV2Y3V0IHNhdMSxcmxhcsSxIHRlbWl6bGV5aW5pei5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvckNhdGFsb2cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ01hdGNoTGluZXMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldENhdGFsb2dNYXRjaExpbmVzKHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKGxpbmVzOiBDYXRhbG9nTWF0Y2hMaW5lRHRvW10pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ01hdGNoTGluZXMgPSBsaW5lcztcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yQ2F0YWxvZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yQ2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIkthdGFsb2cgZcWfbGXFn3Rpcm1lIGhhdGFzxLE6IFwiICsgKGVycj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNdWhhdGFwIEthdGFsb2cgc2F0xLFybGFyxLFuxLEgZG9jdW1lbnRMaW5lcydhIGVrbGVcclxuICAgIGFkZENhdGFsb2dMaW5lc1RvRG9jdW1lbnQoKSB7XHJcbiAgICAgICAgLy8gRcWfbGXFn21lIGtvbnRyb2zDvFxyXG4gICAgICAgIGNvbnN0IHVubWF0Y2hlZExpbmVzID0gdGhpcy5jYXRhbG9nTWF0Y2hMaW5lcy5maWx0ZXIobCA9PiAhbC5pc01hdGNoZWQpO1xyXG4gICAgICAgIGlmICh1bm1hdGNoZWRMaW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJFxZ9sZcWfbWVtacWfIEthbGVtIHZleWEgS2FsZW1sZXIgTWV2Y3V0dHVyLiBMw7x0ZmVuIE11aGF0YXAgS2F0YWxvZyBUYW7EsW3EsSBZYXDEsW7EsXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFxZ9sZcWfZW4gc2F0xLFybGFyxLEgZG9jdW1lbnRMaW5lcydhIGVrbGVcclxuICAgICAgICB0aGlzLmNhdGFsb2dNYXRjaExpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaW5lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUXR5OiBsaW5lLnF1YW50aXR5LFxyXG4gICAgICAgICAgICAgICAgb3BlblF0eTogbGluZS5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgIG9ialR5cGU6IC0xLCAvLyBLYXRhbG9nIGXFn2xlxZ90aXJtZSBpxZ9hcmV0aVxyXG4gICAgICAgICAgICAgICAgZG9jRW50cnk6IDAsXHJcbiAgICAgICAgICAgICAgICBkb2NOdW06IDAsXHJcbiAgICAgICAgICAgICAgICBudW1BdENhcmQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgbGluZU51bTogbGluZS5saW5lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgZG9jRGF0ZTogJycsXHJcbiAgICAgICAgICAgICAgICBkb2NEdWVEYXRlOiAnJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1Db2RlOiBsaW5lLmNhdGFsb2dJdGVtQ29kZSxcclxuICAgICAgICAgICAgICAgIGRzY3JpcHRpb246IGxpbmUueG1sSXRlbU5hbWUsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBsaW5lLnVuaXRDb2RlLFxyXG4gICAgICAgICAgICAgICAgZnJlZVR4dDogbGluZS50YXhDb2RlLFxyXG4gICAgICAgICAgICAgICAgdW5pdFByaWNlOiBsaW5lLnVuaXRQcmljZSA/ICtsaW5lLnVuaXRQcmljZSA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBjYXJkQ29kZTogJydcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKHRoaXMuY2F0YWxvZ01hdGNoTGluZXMubGVuZ3RoICsgXCIgc2F0xLFyIGVrbGVuZGkuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE1hbnVlbCBzYXTEsXJsYXLEsSBkb2N1bWVudCBsaW5lcydhIGVrbGVcclxuICAgIGFkZE1hbnVhbExpbmVzVG9Eb2N1bWVudCgpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZExpbmVzID0gdGhpcy5tYW51YWxMaW5lcy5maWx0ZXIobCA9PiBsLnNlbGVjdGVkKTtcclxuXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIkVuIGF6IGJpciBzYXTEsXIgc2XDp2luaXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUw7xtIHNhdMSxcmxhciBzZcOnaWxtZWxpIC0gWE1MIHNhdMSxciBzYXnEsXPEsSBpbGUgZcWfbGXFn21lbGlcclxuICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lcy5sZW5ndGggIT09IHRoaXMubWFudWFsTGluZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJYTUwgc2F0xLFyIHNhecSxc8SxIGlsZSBzZcOnaWxlbiBzYXTEsXIgc2F5xLFzxLEgZcWfbGXFn21peW9yLiBUw7xtIHNhdMSxcmxhciBpw6dpbiBrYWxlbSBzZcOnaW1pIHlhcMSxbG1hbMSxZMSxci5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGVtcHR5SXRlbUxpbmVzID0gc2VsZWN0ZWRMaW5lcy5maWx0ZXIobCA9PiAhbC5pdGVtQ29kZSk7XHJcbiAgICAgICAgaWYgKGVtcHR5SXRlbUxpbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlTDvG0gc2F0xLFybGFyIGnDp2luIGthbGVtIGtvZHUgc2XDp2luaXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZWxlY3RlZExpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaW5lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUXR5OiBsaW5lLnF1YW50aXR5LFxyXG4gICAgICAgICAgICAgICAgb3BlblF0eTogbGluZS5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgIG9ialR5cGU6IDAsIC8vIE1hbnVlbCBrYWxlbSBpxZ9hcmV0aVxyXG4gICAgICAgICAgICAgICAgZG9jRW50cnk6IDAsXHJcbiAgICAgICAgICAgICAgICBkb2NOdW06IDAsXHJcbiAgICAgICAgICAgICAgICBudW1BdENhcmQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgbGluZU51bTogbGluZS5saW5lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgZG9jRGF0ZTogJycsXHJcbiAgICAgICAgICAgICAgICBkb2NEdWVEYXRlOiAnJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1Db2RlOiBsaW5lLml0ZW1Db2RlLFxyXG4gICAgICAgICAgICAgICAgZHNjcmlwdGlvbjogbGluZS5pdGVtTmFtZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgZnJlZVR4dDogbGluZS50YXhDb2RlLFxyXG4gICAgICAgICAgICAgICAgdW5pdFByaWNlOiBsaW5lLnVuaXRQcmljZSxcclxuICAgICAgICAgICAgICAgIGNhcmRDb2RlOiAnJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvck1hbnVhbExpbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3Moc2VsZWN0ZWRMaW5lcy5sZW5ndGggKyBcIiBzYXTEsXIgZWtsZW5kaS5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tCb3hDaGFuZ2VkKGV2ZW50KSB7XHJcblxyXG4gICAgICAgIGxldCBmb3JtQ29udHJvbHMgPSB0aGlzLmZvcm1SZXNwb25zZS5jb250cm9sc1xyXG4gICAgICAgIHZhciBpZCA9IGV2ZW50LnRhcmdldC5pZDtcclxuICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdyZXNwb25zZUNoZWNrJykgYXMgTm9kZUxpc3RPZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICAgICAgICBjaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hlY2tib3guaWQgIT09IGlkKSB7XHJcbiAgICAgICAgICAgICAgICBjaGVja2JveC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbHNbY2hlY2tib3guYXR0cmlidXRlc1tcImZvcm1jb250cm9sbmFtZVwiXS52YWx1ZV0uc2V0VmFsdWUoY2hlY2tib3guY2hlY2tlZClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVJvd3NDb2xvcihlKSB7XHJcblxyXG4gICAgICAgIGlmIChlLnJvd1R5cGUgPT0gXCJkYXRhXCIpIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChlLmRhdGEucmVjZWl2ZXJSZXNwb25zZSAhPSAwKVxyXG4gICAgICAgICAgICAgICAgZS5yb3dFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGUuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09IDEgPyBcIiMzZWJkNjBcIiA6IFwiI2NjNGY0NVwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmluYm91bmRJbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09PSByZXNwb25zZUlkKTtcclxuICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRpc3BsYXlOYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJY29uQ2xhc3MocmVzcG9uc2VJZCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZUlkID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiZmFzIGZhLWNsb2NrXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlSWQgPT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2hlY2stY2lyY2xlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlSWQgPT0gMikge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtdGltZXMtY2lyY2xlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERvY09iamVjdE5hbWUoZGF0YSkge1xyXG4gICAgICAgIGxldCBvYmpOYW1lID0gKChkYXRhLmlzRHJhZnQgPyBcIlRhc2xhayBcIiA6IFwiXCIpICsgdGhpcy5pbnZvaWNlT2JqZWN0c0VudW1Mb29rdXAuZmluZCgoeCkgPT4geC5pZCA9PSAoZGF0YS5pc0RyYWZ0ID8gZGF0YS5yZXNvdXJjZVN1YkRvY1R5cGUgOiBkYXRhLnJlc291cmNlRG9jVHlwZSkpPy5kaXNwbGF5TmFtZSk7XHJcbiAgICAgICAgaWYgKG9iak5hbWUgPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgIHJldHVybiBvYmpOYW1lO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvbkluYm91bmRTZWxlY3Rpb25DaGFuZ2VkKGUpIHtcclxuICAgICAgICBjb25zdCByb3dzID0gZS5zZWxlY3RlZFJvd3NEYXRhO1xyXG5cclxuICAgICAgICBpZiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNWYWxpZFNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDEsMWfIGt1cmFsxLFcclxuICAgICAgICBjb25zdCB2YWxpZCA9IHJvd3MuZXZlcnkoeCA9PlxyXG4gICAgICAgICAgICAhKHgucHJvZmlsZUlkID09ICdUSUNBUklGQVRVUkEnICYmIHguc3RhdHVzID09IDcwMCAmJiB4LnJlY2VpdmVyUmVzcG9uc2UgPT0gMikgJiZcclxuICAgICAgICAgICAgKHguaW52b2ljZVR5cGVDb2RlICE9PSAnSUFERScgJiZcclxuICAgICAgICAgICAgICAgICh4LnN0YXR1cyA9PT0gNjAwIHx8IHguc3RhdHVzID09PSA3MDApKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFzVmFsaWRTZWxlY3Rpb24gPSB2YWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVNdWx0aXBsZUVtcHR5RHJhZnRzKCkge1xyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvczogQ29ubmVjdG9yTXVsdGlwbGVFbXB0eURyYWZ0RHRvW10gPSBbXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmJvdW5kSW52b2ljZVJvd3MgPSB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5nZXRTZWxlY3RlZFJvd3NEYXRhKCk7XHJcblxyXG4gICAgICAgIGlmICghc2VsZWN0ZWRJbmJvdW5kSW52b2ljZVJvd3MgfHwgc2VsZWN0ZWRJbmJvdW5kSW52b2ljZVJvd3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJMw7x0ZmVuIGVuIGF6IGJpciBrYXnEsXQgc2XDp2luaXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB2YWxpZFJvd3MgPSBzZWxlY3RlZEluYm91bmRJbnZvaWNlUm93cy5maWx0ZXIoeCA9PiB4Lmludm9pY2VUeXBlQ29kZSAhPT0gJ0lBREUnICYmICh4LnN0YXR1cyA9PT0gNjAwIHx8IHguc3RhdHVzID09PSA3MDApKTtcclxuICAgICAgICBpZiAodmFsaWRSb3dzLmxlbmd0aCAhPT0gc2VsZWN0ZWRJbmJvdW5kSW52b2ljZVJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJMaXN0ZSBpw6dlcmlzaW5kZSBmYXR1cmEgdGlwaSAnSUFERScgb2xhbiB2ZXlhIGJlbGdlIGR1cnVtdSBlbnRlZ3JhdMO2cmRlbiBhbMSxbmTEsSB2ZSB5YSBlbnRlZ3JhdMO2cmRlbiB5YW7EsXRsYW5kxLEgb2xtYXlhbiBrYXnEsXRsYXIgbWV2Y3V0LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5ib3VuZEludm9pY2VSb3dzLnNvbWUoeCA9PiB4LnN0YXR1cyA9PT0gNjUwIHx8IHguc3RhdHVzID09PSA3NTApKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJMaXN0ZW5pbiBpw6dlcmlzaW5kZSBkYWhhIMO2bmNlZGVuIHRhc2xhayBiZWxnZXNpIG9sdcWfdHVydWxhbiBiZWxnZWxlciBidWx1bm1ha3RhZMSxci4gS29udHJvbCBlZGluaXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZWxlY3RlZEluYm91bmRJbnZvaWNlUm93cy5mb3JFYWNoKHNlbGVjdGVkSW5ib3VuZEludm9pY2UgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZHJhZnREb2N1bWVudDogQ29ubmVjdG9yRHJhZnREb2N1bWVudER0byA9IHtcclxuICAgICAgICAgICAgICAgIGRvY0VudHJ5OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZG9jTnVtOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZG9jQ3VycmVuY3k6IHNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmRvY3VtZW50Q3VycmVuY3lDb2RlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZG9jT2JqZWN0Q29kZTogXCJvUHVyY2hhc2VJbnZvaWNlc1wiLFxyXG4gICAgICAgICAgICAgICAgZG9jRGF0ZTogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaXNzdWVEYXRlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgdGF4RGF0ZTogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaXNzdWVEYXRlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZG9jRHVlRGF0ZTogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBkb2NSYXRlOiAoc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSA8PSAxIHx8IGlzTnVsbE9yRW1wdHkoc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZEluYm91bmRJbnZvaWNlLnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUsXHJcbiAgICAgICAgICAgICAgICBjYXJkQ29kZTogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgbnVtQXRDYXJkOiBzZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pbnZvaWNlSWQ/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICB1X0VGQVROTzogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgdV9VVUlEOiBzZWxlY3RlZEluYm91bmRJbnZvaWNlPy51dUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgdV9TRU5EOiBzZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pbnZvaWNlVHlwZUNvZGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICB1X1Byb2ZpbGVJZDogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJvZmlsZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRMaW5lczogW10sXHJcbiAgICAgICAgICAgICAgICBiUExfSURBc3NpZ25lZFRvSW52b2ljZTogdGhpcy5pc0JyYW5jaFxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEJyYW5jaElkXHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICByZXF1ZXN0RHRvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGludm9pY2VJRDogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pZCxcclxuICAgICAgICAgICAgICAgIGRyYWZ0RG9jdW1lbnQ6IGRyYWZ0RG9jdW1lbnRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFNlcnZpcyBpw6dlcnNpbmRlIE11aGF0YXAga29udHJvbMO8IGRlIHlhcMSxbMSxeW9yXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZU11bHRpcGxlRW1wdHlEcmFmdHMocmVxdWVzdER0b3MpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZnRSZXN1bHRzID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRQb3B1cFZpc2libGUgPSB0cnVlOyAvLyBwb3B1cCBhw6fEsWzEsXJcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uUmVzdWx0UG9wdXBDbG9zZWQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRQb3B1cFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5jbGVhclNlbGVjdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVJlc3VsdFBvcHVwID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzdWx0UG9wdXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UuY2xlYXJTZWxlY3Rpb24oKTtcclxuICAgICAgICB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRJbmNvbWluZ1BERk11bHRpcGxlKCkge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlXHJcbiAgICAgICAgICAgIC5nZXRWaXNpYmxlUm93cygpXHJcbiAgICAgICAgICAgIC5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgLm1hcChwID0+IHAuZGF0YS5pZCk7XHJcblxyXG4gICAgICAgIGlmIChpZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybignTMO8dGZlbiBlbiBheiBiaXIgZmF0dXJhIHNlw6dpbml6LicpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0SW5jb21pbmdJbnZvaWNlUGRmc011bHRpcGxlKGlkcykuc3Vic2NyaWJlKChkYXRhOiBCbG9iKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ppcCcgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIGEuZG93bmxvYWQgPSAnR2VsZW5GYXR1cmFsYXItJyArIHRoaXMuZ2V0WmlwRGF0ZSgpICsgJy56aXAnO1xyXG4gICAgICAgICAgICBhLmNsaWNrKCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBkb3dubG9hZFBERk11bHRpcGxlKCkge1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgbGV0IGlkczogQXJyYXk8eyBpZDogc3RyaW5nIH0+ID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKCkuZmlsdGVyKGkgPT4gaS5pc1NlbGVjdGVkID09IHRydWUpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlkcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmRhdGEuaWQsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRJbnZvaWNlUGRmc011bHRpcGxlKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGRhdGEpO1xyXG4gICAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vemlwJyB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIMSwbmRpcm1lXHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIGEuZG93bmxvYWQgPSAnRmF0dXJhbGFyLScgKyB0aGlzLmdldFppcERhdGUoKSArICcuemlwJztcclxuICAgICAgICAgICAgYS5jbGljaygpO1xyXG5cclxuICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkJyYW5jaFBvcHVwKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0JyYW5jaCkge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU11bHRpcGxlRW1wdHlEcmFmdHMoKTsgLy8gxZ91YmVzaXogZGlyZWt0XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5icmFuY2hQb3B1cFZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1CcmFuY2hTZWxlY3Rpb24gPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQnJhbmNoSWQpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIkzDvHRmZW4gxZ91YmUgc2XDp2luaXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmJyYW5jaFBvcHVwVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTXVsdGlwbGVFbXB0eURyYWZ0cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dBbGxGaWxlcyhyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VGaWxlc0RhdGFTb3VyY2UgPSB0aGlzLnNlcnZpY2UuTG9hZEluYm91bmRJbnZvaWNlRmlsZXMocmVjb3JkLmlkKTtcclxuICAgICAgICB0aGlzLmlzRmlsZU1vZGFsT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgRG93bmxvYWRGaWxlKHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5kb3dubG9hZEZpbGVCeUlkKHJlY29yZC5jb250ZW50TWFzdGVySWQpLnN1YnNjcmliZShpdGVtID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6JHtpdGVtLm1pbWVUeXBlfTtiYXNlNjQsJHtpdGVtLmNvbnRlbnR9YDtcclxuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGluay5ocmVmID0gc291cmNlO1xyXG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gYCR7aXRlbS5maWxlbmFtZX1gO1xyXG4gICAgICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRJbmJvdW5kUERGTXVsdGlwbGUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKVxyXG4gICAgICAgICAgICAuZmlsdGVyKHIgPT4gci5pc1NlbGVjdGVkICYmIHIucm93VHlwZSA9PT0gJ2RhdGEnKVxyXG4gICAgICAgICAgICAubWFwKHIgPT4gci5kYXRhKTtcclxuXHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZFJvd3MgfHwgc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLndhcm4oXCJMw7x0ZmVuIGVuIGF6IGJpciBmYXR1cmEgc2XDp2luLlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaWRzOiBzdHJpbmdbXSA9IHNlbGVjdGVkUm93cy5tYXAociA9PiByLmlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldEluYm91bmRJbnZvaWNlUGRmc011bHRpcGxlKGlkcykuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vemlwJyB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIGEuZG93bmxvYWQgPSAnR2VsZW5GYXR1cmFsYXItJyArIHRoaXMuZ2V0WmlwRGF0ZSgpICsgJy56aXAnO1xyXG4gICAgICAgICAgICBhLmNsaWNrKCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0WmlwRGF0ZSgpIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKGRhdGUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtaW51dGVzID0gU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRTZWNvbmRzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgcmV0dXJuIGAke3llYXJ9LiR7bW9udGh9LiR7ZGF5fS0ke2hvdXJzfS4ke21pbnV0ZXN9LiR7c2Vjb25kc31gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaW50SW5ib3VuZFBERk11bHRpcGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKClcclxuICAgICAgICAgICAgLmZpbHRlcihyID0+IHIuaXNTZWxlY3RlZCAmJiByLnJvd1R5cGUgPT09ICdkYXRhJylcclxuICAgICAgICAgICAgLm1hcChyID0+IHIuZGF0YSk7XHJcblxyXG4gICAgICAgIGlmICghc2VsZWN0ZWRSb3dzIHx8IHNlbGVjdGVkUm93cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwiTMO8dGZlbiBlbiBheiBiaXIgZmF0dXJhIHNlw6dpbi5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBzZWxlY3RlZFJvd3MubWFwKHIgPT4gci5pZCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZVBkZnNNZXJnZWQoaWRzKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihkYXRhKTtcclxuICAgICAgICAgICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgYnl0ZUFycmF5W2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn0iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidlRG9udXN1bTo6SW5ib3VuZEludm9pY2VzJyB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtbGctZW5kIHB0LTJcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cImRvd25sb2FkSW5ib3VuZFBERk11bHRpcGxlKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGUtcGRmLW8gbWUtMVwiPjwvaT5cclxuICAgICAgICBUb3BsdSBQREYgxLBuZGlyXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwicHJpbnRJbmJvdW5kUERGTXVsdGlwbGUoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcHJpbnQgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICBUb3BsdSBQREYgWWF6ZMSxclxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5JbnZvaWNlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwib3BlbkJyYW5jaFBvcHVwKClcIiBbZGlzYWJsZWRdPVwiIWhhc1ZhbGlkU2VsZWN0aW9uXCI+XHJcblxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29weSBtZS0xXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6Q3JlYXRlTXVsdGlwbGVFbXB0eURyYWZ0cycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkludm9pY2VzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJnZXRJbmJvdW5kSW52b2ljZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6Q2hlY2tJbmJvdW5kSW52b2ljZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gIDxwPkVudGVncmF0w7ZyZGVuIGFsxLFuYW4gZmF0dXJhbGFyxLEgbGlzdGVsZXllbiBla3JhbjwvcD5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeEluYm91bmRJbnZvaWNlSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiaW5ib3VuZEludm9pY2VzRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNzV2aDtcIlxyXG4gICAgICAgIChvblNlbGVjdGlvbkNoYW5nZWQpPVwib25JbmJvdW5kU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCIgW3Nob3dJbmZvXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsMTAwLDIwMF1cIiBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZ3JvdXAtcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiIFthbGxvd0NvbHVtbkRyYWdnaW5nXT1cInRydWVcIj48L2R4by1ncm91cC1wYW5lbD5cclxuICAgICAgICA8ZHhvLWdyb3VwaW5nICNleHBhbmQgW2F1dG9FeHBhbmRBbGxdPVwiZmFsc2VcIiBbYWxsb3dDb2xsYXBzaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbnRleHRNZW51RW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZ3JvdXBpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBbYWxsb3dFeHBvcnRTZWxlY3RlZERhdGFdPVwiZmFsc2VcIj48L2R4by1leHBvcnQ+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLWJ1aWxkZXIgW2FsbG93SGllcmFyY2hpY2FsRmllbGRzXT1cInRydWVcIj48L2R4by1maWx0ZXItYnVpbGRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIiBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkSWRDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJ1cGRhdGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZGVsZXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZ2V0SW52b2ljZVByZXZpZXcocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gNjAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDY1MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzUwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA2ODAgfHwgcm93LmRhdGEuc3RhdHVzID09IDc4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNjcwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3NzBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6R2V0VmlldycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cIm9wZW5SZXNwb25zZU1vZGFsKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEucHJvZmlsZUlkID09ICdUSUNBUklGQVRVUkEnICYmIHJvdy5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlJlc3BvbnNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwib3BlblBhcnRuZXJNb2RhbChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiEocm93LmRhdGEucHJvZmlsZUlkID09ICdUSUNBUklGQVRVUkEnICYmIHJvdy5kYXRhLnN0YXR1cyA9PSA3MDAgICYmIHJvdy5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMikgJiYgKHJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMClcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS11c2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkNyZWF0ZUJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cIm9wZW5EcmFmdEZvcm0ocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHJvdy5kYXRhLnByb2ZpbGVJZCA9PSAnVElDQVJJRkFUVVJBJyAmJiByb3cuZGF0YS5zdGF0dXMgPT0gNzAwICAmJiByb3cuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09IDIpICYmIChyb3cuZGF0YS5zdGF0dXMgPT0gNjAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDApXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmlsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpDcmVhdGVEcmFmdERvY3VtZW50JyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwib3BlbkRvY3VtZW50Rm9ybShyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiEocm93LmRhdGEucHJvZmlsZUlkID09ICdUSUNBUklGQVRVUkEnICYmIHJvdy5kYXRhLnN0YXR1cyA9PSA3MDAgICYmIHJvdy5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMikgJiYgKHJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMClcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1maWxlLXRleHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6Q3JlYXRlRG9jdW1lbnQnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJwcm9jZXNzTWFudWFsKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIShyb3cuZGF0YS5wcm9maWxlSWQgPT0gJ1RJQ0FSSUZBVFVSQScgJiYgcm93LmRhdGEuc3RhdHVzID09IDcwMCAgJiYgcm93LmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAyKSAmJiAocm93LmRhdGEuc3RhdHVzID09IDYwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWhhbmQtcGFwZXItb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpQcm9jZXNzTWFudWFsJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2hvd0FsbEZpbGVzKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDYwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA2NTAgfHwgcm93LmRhdGEuc3RhdHVzID09IDc1MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNjgwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3ODAgfHwgcm93LmRhdGEuc3RhdHVzID09IDY3MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzcwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNob3dBbGxGaWxlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpc3N1ZURhdGVcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJc3N1ZURhdGUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UGF5bWVudER1ZURhdGUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInV1SWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlV1SWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImludm9pY2VJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SW52b2ljZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY2NvdW50aW5nU3VwcGxpZXJQYXJ0eU5hbWVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpBY2NvdW50aW5nU3VwcGxpZXJQYXJ0eU5hbWUnfGFicExvY2FsaXphdGlvbn19XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbid8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic3RhdHVzXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTdGF0dXMnfGFicExvY2FsaXphdGlvbn19XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJpbmJvdW5kSW52b2ljZVN0YXR1c0xvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZXNvdXJjZURvY0VudHJ5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY0VudHJ5J3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NOdW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gY2VsbFRlbXBsYXRlPVwiZG9jVHlwZVRlbXBsYXRlXCIgZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NUeXBlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NUeXBlJ3xhYnBMb2NhbGl6YXRpb259fVwiPlxyXG4gICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdkb2NUeXBlVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIHt7Z2V0RG9jT2JqZWN0TmFtZShkYXRhLmRhdGEpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVjZWl2ZXJSZXNwb25zZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVjZWl2ZXJSZXNwb25zZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwiaWNvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJpbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdpY29uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydjb2xvcic6ZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzEnID8gJ2dyZWVuJyA6IGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09ICcyJyA/ICdyZWQnIDogJ2dyYXknfVwiPjwvaT5cclxuICAgICAgICAgIHt7Z2V0UmVjZWl2ZXJSZXNwb25zZU5hbWUoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpfX1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicHJvZmlsZUlkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpQcm9maWxlSWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImludm9pY2VUeXBlQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SW52b2ljZVR5cGVDb2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJsZWdhbE1vbmV0YXJ5VG90YWxQYXlhYmxlQW1vdW50XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpQYXlhYmxlQW1vdW50J3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBkYXRhVHlwZT1cIm51bWJlclwiIGZvcm1hdD1cIiMsIyMwLjAwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY3VtZW50Q3VycmVuY3lDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NDdXJyZW5jeSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jUmF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgZGF0YVR5cGU9XCJudW1iZXJcIiBmb3JtYXQ9XCIjLCMjMC4wMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpbmJvdW5kRG9jdW1lbnRDcmVhdGVMb2dcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJbmJvdW5kRG9jdW1lbnRDcmVhdGVMb2cnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeUZvclJlc3BvbnNlXCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvclJlc3BvbnNlXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbScgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlNlbmRSZXNwb25zZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUmVzcG9uc2VcIiBpZD1cImludm9pY2UtcmVzcG9uc2VcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6MjBweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtaWRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OklkJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtaWRcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRcIiBtYXhsZW5ndGg9XCIyNTZcIiBhdXRvZm9jdXM+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLXV1aWRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlV1SWQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS11dWlkXCIgW2Rpc2FibGVkXT1cInRydWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VVVUlEXCIgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS1hY2NlcHRcIiBmb3JtQ29udHJvbE5hbWU9XCJpc0FjY2VwdGVkXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlc3BvbnNlQ2hlY2tcIiAoY2hhbmdlKT1cImNoZWNrQm94Q2hhbmdlZCgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLWFjY2VwdFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkFjY2VwdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLXJlamVjdFwiIGZvcm1Db250cm9sTmFtZT1cImlzUmVqZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVzcG9uc2VDaGVja1wiIChjaGFuZ2UpPVwiY2hlY2tCb3hDaGFuZ2VkKCRldmVudClcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtcmVqZWN0XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UmVqZWN0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIGZvcm1OYW1lPVwiaW52b2ljZS1yZXNwb25zZVwiXHJcbiAgICAgIChjbGljayk9XCJzZW5kSW52b2ljZVJlc3BvbnNlKGZhbHNlKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlJlamVjdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGZvcm1OYW1lPVwiaW52b2ljZS1yZXNwb25zZVwiXHJcbiAgICAgIChjbGljayk9XCJzZW5kSW52b2ljZVJlc3BvbnNlKHRydWUpXCI+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6QWNjZXB0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yUGFydG5lclwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyXCIgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgJ2VEb251c3VtOjpDcmVhdGVCdXNpbmVzc1BhcnRuZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVBhcnRuZXJcIiBpZD1cImNyZWF0ZS1wYXJ0bmVyXCIgKG5nU3VibWl0KT1cImNyZWF0ZUJ1c2luZXNzUGFydG5lcigpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyTmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1uYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIG1heGxlbmd0aD1cIjI1NlwiIGF1dG9mb2N1cz48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci12a25cIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJWS04nfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItdmtuXCIgW2Rpc2FibGVkXT1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJ2a25cIlxyXG4gICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1wYXJ0bmVyLWFkZC1pZFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckFkZGl0aW9uYWxJZCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1wYXJ0bmVyLWFkZC1pZFwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckFkZElkXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY3VycmVuY3lcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJDdXJyZW5jeSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1jdXJyZW5jeVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXdlYi1zaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyV2ViU2l0ZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci13ZWItc2l0ZVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJXZWJTaXRlVVJJXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItc2VyaWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyU2VyaWVzJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC1kcm9wLWRvd24tYm94IFsodmFsdWUpXT1cInNlcmlhbEdyaWRCb3hWYWx1ZVwiIFsob3BlbmVkKV09XCJpc1NlcmlhbEdyaWRCb3hPcGVuZWRcIiB2YWx1ZUV4cHI9XCJzZXJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICBbZGVmZXJSZW5kZXJpbmddPVwiZmFsc2VcIiBbZGlzcGxheUV4cHJdPVwic2VyaWFsR3JpZEJveF9kaXNwbGF5RXhwclwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpTZWxlY3RBVmFsdWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lclNlcmllc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlU2VyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgKG9uT3B0aW9uQ2hhbmdlZCk9XCJvblNlcmlhbEdyaWRCb3hPcHRpb25DaGFuZ2VkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlU2VyaWVzXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbaGVpZ2h0XT1cIjI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvd0tleXMpXT1cInNlcmlhbEdyaWRCb3hWYWx1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzZXJpZXNcIiBjYXB0aW9uPVwiU2VyaVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJuYW1lXCIgY2FwdGlvbj1cIkFkXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJpbmZpbml0ZVwiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbZW5hYmxlZF09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICAgIDwvZHgtZHJvcC1kb3duLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyR3JvdXAnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1ncm91cHNcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlR3JvdXBzXCIgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJuYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyR3JvdXBcIiBtYXhsZW5ndGg9XCIyNTZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdHcm91cHNcIiBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgYXV0b2ZvY3VzPjwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ0dyb3Vwc1wiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHN0YXJ0LTUwIHRyYW5zbGF0ZS1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydlRG9udXN1bTo6TG9hZGluZyd8YWJwTG9jYWxpemF0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRyb3AtZG93bi1ib3ggWyh2YWx1ZSldPVwiZ3JvdXBHcmlkQm94VmFsdWVcIiBbKG9wZW5lZCldPVwiaXNHcm91cEdyaWRCb3hPcGVuZWRcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgW2RlZmVyUmVuZGVyaW5nXT1cImZhbHNlXCIgW2Rpc3BsYXlFeHByXT1cImdyb3VwR3JpZEJveF9kaXNwbGF5RXhwclwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpTZWxlY3RBVmFsdWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVHcm91cHNcIlxyXG4gICAgICAgICAgICAgICAgICAob25PcHRpb25DaGFuZ2VkKT1cIm9uR3JvdXBHcmlkQm94T3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUdyb3Vwc1wiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW2hlaWdodF09XCIyNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJncm91cEdyaWRCb3hWYWx1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjb2RlXCIgY2FwdGlvbj1cIktvZFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJuYW1lXCIgY2FwdGlvbj1cIkFkXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJpbmZpbml0ZVwiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbZW5hYmxlZF09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICAgIDwvZHgtZHJvcC1kb3duLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItYWNjb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckJhbmtBY2NvdW50J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItYWNjb3VudFwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVBY2NvdW50c1wiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJBY2NvdW50XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nQWNjb3VudHNcIiBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nQWNjb3VudHNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxkeC1kcm9wLWRvd24tYm94IFsodmFsdWUpXT1cImFjY291bnRHcmlkQm94VmFsdWVcIiBbKG9wZW5lZCldPVwiaXNBY2NvdW50R3JpZEJveE9wZW5lZFwiIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICBbZGVmZXJSZW5kZXJpbmddPVwiZmFsc2VcIiBbZGlzcGxheUV4cHJdPVwiYWNjb3VudEdyaWRCb3hfZGlzcGxheUV4cHJcIiBbZHJvcERvd25PcHRpb25zXT1cInsgd2lkdGg6IDc1MCB9XCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZURvbnVzdW06OlNlbGVjdEFWYWx1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQWNjb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlQWNjb3VudHNcIlxyXG4gICAgICAgICAgICAgICAgICAob25PcHRpb25DaGFuZ2VkKT1cIm9uQWNjb3VudEdyaWRCb3hPcHRpb25DaGFuZ2VkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlQWNjb3VudHNcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtoZWlnaHRdPVwiMjUwXCJcclxuICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm93S2V5cyldPVwiYWNjb3VudEdyaWRCb3hWYWx1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpZFwiIGNhcHRpb249XCJLb2RcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidGV4dFwiIGNhcHRpb249XCJBZFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwic2luZ2xlXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaW5maW5pdGVcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2R4LWRyb3AtZG93bi1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1tYWlsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyTWFpbCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1tYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckVtYWlsXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1jb3VudHJ5XCIgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUNvdW50cmllc1wiIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckNvdW50cnlcIiBtYXhsZW5ndGg9XCIyNTZcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXRTdGF0ZXMoKVwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdDb3VudHJpZXNcIiBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXM+PC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nQ291bnRyaWVzXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgc3RhcnQtNTAgdHJhbnNsYXRlLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2VEb251c3VtOjpMb2FkaW5nJ3xhYnBMb2NhbGl6YXRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY291bnRyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGFydG5lckNvdW50cnknIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRyb3AtZG93bi1ib3ggWyh2YWx1ZSldPVwiY291bnRyeUdyaWRCb3hWYWx1ZVwiIFsob3BlbmVkKV09XCJpc0NvdW50cnlHcmlkQm94T3BlbmVkXCIgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RlZmVyUmVuZGVyaW5nXT1cImZhbHNlXCIgW2Rpc3BsYXlFeHByXT1cImNvdW50cnlHcmlkQm94X2Rpc3BsYXlFeHByXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlRG9udXN1bTo6U2VsZWN0QVZhbHVlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJDb3VudHJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUNvdW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uT3B0aW9uQ2hhbmdlZCk9XCJvbkNvdW50cnlHcmlkQm94T3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlQ291bnRyaWVzXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbaGVpZ2h0XT1cIjI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm93S2V5cyldPVwiY291bnRyeUdyaWRCb3hWYWx1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNvZGVcIiBjYXB0aW9uPVwiQ29kZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm5hbWVcIiBjYXB0aW9uPVwiTmFtZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaW5maW5pdGVcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbZW5hYmxlZF09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4LWRyb3AtZG93bi1ib3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItc3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJTdGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGR4LXNlbGVjdC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1zdGF0ZVwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVTdGF0ZXNcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cIm5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTdGF0ZVwiIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1N0YXRlc1wiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBhdXRvZm9jdXM+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1N0YXRlc1wiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHN0YXJ0LTUwIHRyYW5zbGF0ZS1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydlRG9udXN1bTo6TG9hZGluZyd8YWJwTG9jYWxpemF0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRyb3AtZG93bi1ib3ggWyh2YWx1ZSldPVwic3RhdGVHcmlkQm94VmFsdWVcIiBbKG9wZW5lZCldPVwiaXNTdGF0ZUdyaWRCb3hPcGVuZWRcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGVmZXJSZW5kZXJpbmddPVwiZmFsc2VcIiBbZGlzcGxheUV4cHJdPVwic3RhdGVHcmlkQm94X2Rpc3BsYXlFeHByXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlRG9udXN1bTo6U2VsZWN0QVZhbHVlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvbk9wdGlvbkNoYW5nZWQpPVwib25TdGF0ZUdyaWRCb3hPcHRpb25DaGFuZ2VkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVTdGF0ZXNcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtoZWlnaHRdPVwiMjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzdGF0ZUdyaWRCb3hWYWx1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNvZGVcIiBjYXB0aW9uPVwiQ29kZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm5hbWVcIiBjYXB0aW9uPVwiTmFtZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaW5maW5pdGVcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbZW5hYmxlZF09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4LWRyb3AtZG93bi1ib3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItemlwY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lclppcGNvZGUnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItemlwY29kZVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJaaXBDb2RlXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY2l0eVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckNpdHknfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItY2l0eVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJDaXR5XCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY291bnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyQ291bnR5J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWNvdW50eVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJDb3VudHlcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1zdHJlZXRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJTdHJlZXQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItc3RyZWV0XCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lclN0cmVldFwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyQmxvY2snfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItYmxvY2tcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQmxvY2tcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lGb3JQYXJ0bmVyXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICBmb3JtPVwiY3JlYXRlLXBhcnRuZXJcIj5cclxuICAgICAge3sgJ2VEb251c3VtOjpDcmVhdGVCdXNpbmVzc1BhcnRuZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lGb3JEb2N1bWVudFwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JEb2N1bWVudFwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ3hsJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7IChpc0RyYWZ0ID8gJ2VEb251c3VtOjpDcmVhdGVEcmFmdCcgOiAnZURvbnVzdW06OkNyZWF0ZURvY3VtZW50JykgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtRG9jdW1lbnRcIiBpZD1cImNyZWF0ZS1kb2N1bWVudFwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmRcIj4gLS0+XHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPiAtLT5cclxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtM1wiPiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLWxhYmVsXCI+IHt7J2VEb251c3VtOjpQYXJ0bmVyVktOJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLWRyYWZ0LXZrblwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja25cIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6SXNzdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IGlkPVwiY3JlYXRlLWRyYWZ0LWlzc3VlLWRhdGVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuaXNzdWVEYXRlXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6UGFydG5lck5hbWUnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtZHJhZnQtcGFydG5lci1uYW1lXCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiICpuZ0lmPVwiaXNCcmFuY2hcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6QXV0b1Rha2VEb2NDcmVhdGVCcmFuY2gnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cImNyZWF0ZS1kcmFmdC1icmFuY2gtbmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkQnJhbmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cIm5hbWVcIiB2YWx1ZUV4cHI9XCJjb2RlXCIgW2RhdGFTb3VyY2VdPVwiYnJhbmNoZXNEYXRhU291cmNlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtbGFiZWxcIj4ge3snZURvbnVzdW06Okludm9pY2VJZCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1kcmFmdC1pbnZvaWNlLWlkXCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmludm9pY2VJZFwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeERvY3VtZW50TGluZXMgW2RhdGFTb3VyY2VdPVwiZG9jdW1lbnRMaW5lc1wiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCJcclxuICAgICAgICBbcmVtb3RlT3BlcmF0aW9uc109XCJmYWxzZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgIDxkeG8tZWRpdGluZyBbYWxsb3dVcGRhdGluZ109XCJ0cnVlXCIgW2FsbG93QWRkaW5nXT1cImZhbHNlXCIgW2FsbG93RGVsZXRpbmddPVwidHJ1ZVwiIG1vZGU9XCJjZWxsXCIgW3VzZUljb25zXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1lZGl0aW5nPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm9ialR5cGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok9iamVjdFR5cGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJvYmplY3RUeXBlc0xvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0VudHJ5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NOdW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY051bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJudW1BdENhcmRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok51bUF0Q2FyZCd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJsaW5lTnVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpMaW5lTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICA8IS0tIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNhcmRDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpDYXJkQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj4gLS0+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NEdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NEdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIml0ZW1Db2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJdGVtQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkc2NyaXB0aW9uXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEc2NyaXB0aW9uJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ0ZXh0XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpUZXh0J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJmcmVlVHh0XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpGcmVlVHh0J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJvcGVuUXR5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPcGVuUXR5J3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInNlbGVjdGVkUXR5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZFF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJ0cnVlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgIDwhLS0gPC9kaXY+XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1pbmZvXCIgKGNsaWNrKT1cIm9wZW5NYW51YWxMaW5lTW9kYWwoKVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvck1hbnVhbExpbmVcIj5cclxuICAgICAgTWFudWVsIEthbGVtIEVrbGVcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib3BlbkNhdGFsb2dNYXRjaE1vZGFsKClcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lGb3JDYXRhbG9nXCI+XHJcbiAgICAgIE11aGF0YXAgS2F0YWxvZyBObyBpbGUgVGFzbGFrIEJlbGdlIE9sdcWfdHVyXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCIgKGNsaWNrKT1cIm9wZW5PcGVuRG9jdW1lbnRzRm9ybSgpXCI+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6UmVzb3VyY2VEb2N1bWVudHMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5Rm9yRHJhZnRcIiAoY2xpY2spPVwiY3JlYXRlRHJhZnREb2N1bWVudCgpXCI+XHJcbiAgICAgIHt7IChpc0RyYWZ0ID8gJ2VEb251c3VtOjpDcmVhdGVEcmFmdERvY3VtZW50JyA6ICdlRG9udXN1bTo6Q3JlYXRlRG9jdW1lbnQnKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48IS0tIE1hbnVlbCBLYWxlbSBFa2xlbWUgTW9kYWwgLS0+XHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lGb3JNYW51YWxMaW5lXCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvck1hbnVhbExpbmVcIiBbb3B0aW9uc109XCJ7IHNpemU6ICd4bCcgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPk1hbnVlbCBLYWxlbSBFa2xlbWU8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLXNtXCI+XHJcbiAgICAgICAgPHRoZWFkIGNsYXNzPVwidGhlYWQtbGlnaHRcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDQwcHg7XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwidG9nZ2xlQWxsTWFudWFsTGluZXMoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+S2FsZW0gS29kdTwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5LYWxlbSBUYW7EsW3EsTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj5NaWt0YXI8L3RoPlxyXG4gICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTIwcHg7XCI+QmlyaW0gRml5YXQ8L3RoPlxyXG4gICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+VmVyZ2kgR3J1YnU8L3RoPlxyXG4gICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogODBweDtcIj5QYXJhIEJpcmltaTwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBsaW5lIG9mIG1hbnVhbExpbmVzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwibGluZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGR4LWxvb2t1cCBbKHZhbHVlKV09XCJsaW5lLml0ZW1Db2RlXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInNhcEl0ZW1zU3RvcmVcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJpdGVtQ29kZVwiIHZhbHVlRXhwcj1cIml0ZW1Db2RlXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiS2FsZW0ga29kdSBzZcOnaW5pei4uLlwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbbWluU2VhcmNoTGVuZ3RoXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgW3NlYXJjaFRpbWVvdXRdPVwiNTAwXCJcclxuICAgICAgICAgICAgICAgIFtkcm9wRG93bk9wdGlvbnNdPVwieyB3aWR0aDogNDUwLCBoZWlnaHQ6IDQwMCB9XCJcclxuICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25JdGVtTG9va3VwQ2hhbmdlZCgkZXZlbnQsIGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGl0ZW0gb2YgJ2l0ZW1UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Ryb25nPnt7aXRlbS5pdGVtQ29kZX19PC9zdHJvbmc+IC0ge3tpdGVtLml0ZW1OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZHgtbG9va3VwPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsodmFsdWUpXT1cImxpbmUuaXRlbU5hbWVcIiBbcmVhZE9ubHldPVwiZmFsc2VcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggWyh2YWx1ZSldPVwibGluZS5xdWFudGl0eVwiIFtzaG93U3BpbkJ1dHRvbnNdPVwiZmFsc2VcIiBmb3JtYXQ9XCIjLCMjMC4jI1wiPjwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkeC1udW1iZXItYm94IFsodmFsdWUpXT1cImxpbmUudW5pdFByaWNlXCIgW3Nob3dTcGluQnV0dG9uc109XCJmYWxzZVwiIGZvcm1hdD1cIiMsIyMwLjAwXCI+PC9keC1udW1iZXItYm94PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGR4LWxvb2t1cCBbKHZhbHVlKV09XCJsaW5lLnRheENvZGVcIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGF4R3JvdXBzXCJcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwiY29kZVwiIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJWZXJnaSBncnVidSBzZcOnaW5pei4uLlwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hFeHByPVwiWydjb2RlJywnbmFtZSddXCJcclxuICAgICAgICAgICAgICAgIFtkcm9wRG93bk9wdGlvbnNdPVwieyB3aWR0aDogMzUwLCBoZWlnaHQ6IDMwMCB9XCJcclxuICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZT1cInRheFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGl0ZW0gb2YgJ3RheFRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzdHJvbmc+e3tpdGVtLmNvZGV9fTwvc3Ryb25nPiAtIHt7aXRlbS5uYW1lfX0gKHt7aXRlbS5yYXRlfX0lKTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9keC1sb29rdXA+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyh2YWx1ZSldPVwibGluZS5jdXJyZW5jeUNvZGVcIiBbcmVhZE9ubHldPVwidHJ1ZVwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJtYW51YWxMaW5lcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtbXV0ZWQgcHktM1wiPlxyXG4gICAgICBYTUwnZGUgZmF0dXJhIHNhdMSxcsSxIGJ1bHVuYW1hZMSxLlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImlzTW9kYWxPcGVuRm9yTWFudWFsTGluZSA9IGZhbHNlXCI+XHJcbiAgICAgIFZhemdlw6dcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiYWRkTWFudWFsTGluZXNUb0RvY3VtZW50KClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwibWFudWFsTGluZXMubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgIFNhdMSxcmxhcsSxIEVrbGVcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPCEtLSBNdWhhdGFwIEthdGFsb2cgTnVtYXJhc8SxIEXFn2xlxZ90aXJtZSBNb2RhbCAtLT5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeUZvckNhdGFsb2dcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuRm9yQ2F0YWxvZ1wiIFtvcHRpb25zXT1cInsgc2l6ZTogJ3hsJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+TXVoYXRhcCBLYXRhbG9nIE51bWFyYXPEsSBFxZ9sZcWfdGlybWU8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwiY2F0YWxvZ01hdGNoTGluZXNcIlxyXG4gICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCI+XHJcblxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXRhbG9nSXRlbUNvZGVcIiBjYXB0aW9uPVwiS2FsZW0gS29kdVwiIFt3aWR0aF09XCIxMjBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInhtbEl0ZW1OYW1lXCIgY2FwdGlvbj1cIkthbGVtIFRhbsSxbcSxXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXRhbG9nU3Vic3RpdHV0ZVwiIGNhcHRpb249XCJNdWhhdGFwIEthdGFsb2cgVGFuxLFtxLFcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm1hdGNoZWRJdGVtQ29kZVwiIGNhcHRpb249XCJNdWhhdGFwIEthdGFsb2cgS29kdVwiIFt3aWR0aF09XCIxNTBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzTWF0Y2hlZFwiIGNhcHRpb249XCJFxZ9sZcWfbWUgRHVydW11XCIgW3dpZHRoXT1cIjEzMFwiIGNlbGxUZW1wbGF0ZT1cIm1hdGNoU3RhdHVzVGVtcGxhdGVcIj5cclxuICAgICAgPC9keGktY29sdW1uPlxyXG5cclxuICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsIG9mICdtYXRjaFN0YXR1c1RlbXBsYXRlJ1wiPlxyXG4gICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsnY29sb3InOiBjZWxsLnZhbHVlID8gJ2dyZWVuJyA6ICdyZWQnLCAnZm9udC13ZWlnaHQnOiAnYm9sZCd9XCI+XHJcbiAgICAgICAgICB7eyBjZWxsLnZhbHVlID8gJ0V2ZXQnIDogJ0hhecSxcicgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicXVhbnRpdHlcIiBjYXB0aW9uPVwiTWlrdGFyXCIgW3dpZHRoXT1cIjgwXCIgZm9ybWF0PVwiIywjIzAuIyNcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVuaXRQcmljZVwiIGNhcHRpb249XCJCaXJpbSBGaXlhdFwiIFt3aWR0aF09XCIxMDBcIiBmb3JtYXQ9XCIjLCMjMC4wMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidGF4Q29kZVwiIGNhcHRpb249XCJWZXJnaSBHcnVidVwiIFt3aWR0aF09XCIxMDBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVuaXRDb2RlXCIgY2FwdGlvbj1cIsOWbMOnw7wgQmlyaW1pXCIgW3dpZHRoXT1cIjkwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkaXNjb3VudFBlcmNlbnRcIiBjYXB0aW9uPVwixLBuZGlyaW0gJVwiIFt3aWR0aF09XCI4MFwiIGZvcm1hdD1cIiMsIyMwLiMjXCI+PC9keGktY29sdW1uPlxyXG4gICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImlzTW9kYWxPcGVuRm9yQ2F0YWxvZyA9IGZhbHNlXCI+XHJcbiAgICAgIFZhemdlw6dcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiYWRkQ2F0YWxvZ0xpbmVzVG9Eb2N1bWVudCgpXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5Rm9yQ2F0YWxvZ1wiPlxyXG4gICAgICBTYXTEsXJsYXLEsSBFa2xlXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lGb3JPcGVuRG9jc1wiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JPcGVuRG9jc1wiIFtvcHRpb25zXT1cInsgc2l6ZTogJ3hsJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7IChzZWxlY3RlZCA/ICdBYnBVaTo6RWRpdCcgOiAnZURvbnVzdW06Ok9wZW5Eb2NzJykgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBpZD1cIm9wZW4tZG9jdW1lbnRzXCI+XHJcbiAgICAgIDwhLS0gRGV2RXh0cmVtZSBUYWIgUGFuZWwgLS0+XHJcbiAgICAgIDxkeC10YWItcGFuZWwgW2FuaW1hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIFtzd2lwZUVuYWJsZWRdPVwidHJ1ZVwiIFtsb29wXT1cImZhbHNlXCIgI3RhYlBhbmVsPlxyXG4gICAgICAgIDxkeGktaXRlbSB0aXRsZT1cInt7ICdlRG9udXN1bTo6UHVyY2hhc2VPcmRlcicgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBpY29uPVwiZmFzIGZhLXNob3BwaW5nLWNhcnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQdXJjaGFzZU9yZGVyRG9jdW1lbnRzIFtkYXRhU291cmNlXT1cInB1cmNoYXNlT3JkZXJEb2N1bWVudHNcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cImZhbHNlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1jaG9vc2VyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW2VuYWJsZWRdPVwidHJ1ZVwiIG1vZGU9XCJzZWxlY3RcIj48L2R4by1jb2x1bW4tY2hvb3Nlcj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwiZmFsc2VcIiBbYWxsb3dBZGRpbmddPVwiZmFsc2VcIiBbYWxsb3dEZWxldGluZ109XCJmYWxzZVwiIG1vZGU9XCJjZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0VudHJ5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY051bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibnVtQXRDYXJkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpOdW1BdENhcmQnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJsaW5lTnVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpMaW5lTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNhcmRDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpDYXJkQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0RhdGVcIiBkYXRhVHlwZT1cImRhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0RhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NEdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0R1ZURhdGUnfGFicExvY2FsaXphdGlvbn19XCIgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okl0ZW1Db2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZHNjcmlwdGlvblwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RHNjcmlwdGlvbid8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInRleHRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlRleHQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJmcmVlVHh0XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpGcmVlVHh0J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3BlblF0eVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3BlblF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktaXRlbT5cclxuXHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpQdXJjaGFzZURlc3BhdGNoJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGljb249XCJmYXMgZmEtdHJ1Y2tcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzIFtkYXRhU291cmNlXT1cInB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cImZhbHNlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIiBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tZWRpdGluZyBbYWxsb3dVcGRhdGluZ109XCJmYWxzZVwiIFthbGxvd0FkZGluZ109XCJmYWxzZVwiIFthbGxvd0RlbGV0aW5nXT1cImZhbHNlXCIgbW9kZT1cImNlbGxcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tZWRpdGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwibXVsdGlwbGVcIiBzZWxlY3RBbGxNb2RlPVwicGFnZVwiIHNob3dDaGVja0JveGVzTW9kZT1cImFsd2F5c1wiPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0VudHJ5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY051bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibnVtQXRDYXJkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpOdW1BdENhcmQnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJsaW5lTnVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpMaW5lTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY2FyZENvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkNhcmRDb2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0R1ZURhdGVcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXRlbUNvZGUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkc2NyaXB0aW9uXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEc2NyaXB0aW9uJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidGV4dFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6VGV4dCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImZyZWVUeHRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkZyZWVUeHQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJvcGVuUXR5XCIgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPcGVuUXR5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgIDwvZHgtdGFiLXBhbmVsPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvck9wZW5Eb2NzXCIgKGNsaWNrKT1cInNlbGVjdE9wZW5Eb2N1bWVudHMoKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlNlbGVjdERvY3VtZW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG5cclxuPGR4LXBvcHVwIFsodmlzaWJsZSldPVwicmVzdWx0UG9wdXBWaXNpYmxlXCIgdGl0bGU9XCJ7eydlRG9udXN1bTo6Q3JlYXRlRHJhZnRSZXN1bHRzJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgW3Nob3dDbG9zZUJ1dHRvbl09XCJ0cnVlXCIgKG9uSGlkaW5nKT1cIm9uUmVzdWx0UG9wdXBDbG9zZWQoKVwiPlxyXG5cclxuICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cImRyYWZ0UmVzdWx0c1wiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgaGVpZ2h0PVwiMTAwJVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIiBbd29yZFdyYXBFbmFibGVkXT1cInRydWVcIj5cclxuXHJcblxyXG4gICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNTdWNjZXNzXCIgY2FwdGlvbj1cInt7ICdlRG9udXN1bTo6U3RhdHVzJyB8IGFicExvY2FsaXphdGlvbiB9fVwiXHJcbiAgICAgIFtjZWxsVGVtcGxhdGVdPVwiJ3N0YXR1c1RlbXBsYXRlJ1wiPlxyXG4gICAgPC9keGktY29sdW1uPlxyXG5cclxuICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnc3RhdHVzVGVtcGxhdGUnXCI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS52YWx1ZVwiIHN0eWxlPVwiY29sb3I6IGdyZWVuOyBmb250LXNpemU6IDE4cHg7XCI+4pyUPC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLnZhbHVlXCIgc3R5bGU9XCJjb2xvcjogcmVkOyBmb250LXNpemU6IDE4cHg7XCI+4pyWPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZWZhdG5vXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJbnZvaWNlSWQnfGFicExvY2FsaXphdGlvbn19XCIgW3dpZHRoXT1cIjIwMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRyYWZ0RG9jdW1lbnQuZG9jRW50cnlcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkcmFmdERvY3VtZW50LmRvY051bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NOdW0nfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJlcnJvck1lc3NhZ2VcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkVycm9yTWVzc2FnZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBbd2lkdGhdPVwiNTAwXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBkeFRlbXBsYXRlPVwiY2VsbFwiIGxldC1kYXRhPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm9ybWFsOyBsaW5lLWhlaWdodDogMS42OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiNiMDAwMjBcIiBbdGl0bGVdPVwiZGF0YS52YWx1ZVwiPlxyXG4gICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9keGktY29sdW1uPlxyXG5cclxuICA8L2R4LWRhdGEtZ3JpZD5cclxuXHJcbiAgPCEtLSBBTFQgQlVUT05MQVIgLS0+XHJcbiAgPGR4aS10b29sYmFyLWl0ZW0gd2lkZ2V0PVwiZHhCdXR0b25cIiB0b29sYmFyPVwiYm90dG9tXCIgbG9jYXRpb249XCJhZnRlclwiXHJcbiAgICBbb3B0aW9uc109XCJ7IHRleHQ6ICgnZURvbnVzdW06Ok9rJyB8IGFicExvY2FsaXphdGlvbiksIHR5cGU6ICdkZWZhdWx0Jywgb25DbGljazogb25SZXN1bHRQb3B1cENsb3NlZCB9XCI+XHJcbiAgPC9keGktdG9vbGJhci1pdGVtPlxyXG5cclxuICA8ZHhpLXRvb2xiYXItaXRlbSB3aWRnZXQ9XCJkeEJ1dHRvblwiIHRvb2xiYXI9XCJib3R0b21cIiBsb2NhdGlvbj1cImFmdGVyXCJcclxuICAgIFtvcHRpb25zXT1cInsgIHRleHQ6ICgnZURvbnVzdW06OkNsb3NlJyB8IGFicExvY2FsaXphdGlvbiksICB0eXBlOiAnbm9ybWFsJywgb25DbGljazogY2xvc2VSZXN1bHRQb3B1cCB9XCI+XHJcbiAgPC9keGktdG9vbGJhci1pdGVtPlxyXG5cclxuPC9keC1wb3B1cD5cclxuXHJcbjxkeC1wb3B1cCBbKHZpc2libGUpXT1cImJyYW5jaFBvcHVwVmlzaWJsZVwiIHRpdGxlPVwie3sgJ2VEb251c3VtOjpCcmFuY2hTZWxlY3Rpb25UaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxyXG4gIFt3aWR0aF09XCI0MDBcIiBbaGVpZ2h0XT1cIjI1MFwiIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiPlxyXG5cclxuICA8ZHgtc2VsZWN0LWJveCBbZGF0YVNvdXJjZV09XCJicmFuY2hlc0RhdGFTb3VyY2VcIiBkaXNwbGF5RXhwcj1cIm5hbWVcIiB2YWx1ZUV4cHI9XCJjb2RlXCIgWyh2YWx1ZSldPVwic2VsZWN0ZWRCcmFuY2hJZFwiXHJcbiAgICBwbGFjZWhvbGRlcj1cInt7ICdlRG9udXN1bTo6U2VsZWN0QnJhbmNoUGxhY2Vob2xkZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgPC9keC1zZWxlY3QtYm94PlxyXG5cclxuICA8ZHhpLXRvb2xiYXItaXRlbSB3aWRnZXQ9XCJkeEJ1dHRvblwiIHRvb2xiYXI9XCJib3R0b21cIiBsb2NhdGlvbj1cImFmdGVyXCIgW29wdGlvbnNdPVwieyBcclxuICAgICAgICAgdGV4dDogKCdlRG9udXN1bTo6Q29udGludWUnIHwgYWJwTG9jYWxpemF0aW9uKSwgXHJcbiAgICAgICAgIHR5cGU6ICdzdWNjZXNzJywgXHJcbiAgICAgICAgIG9uQ2xpY2s6IGNvbmZpcm1CcmFuY2hTZWxlY3Rpb25cclxuICAgICAgfVwiPlxyXG4gIDwvZHhpLXRvb2xiYXItaXRlbT5cclxuXHJcbjwvZHgtcG9wdXA+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzRmlsZU1vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNGaWxlTW9kYWxPcGVuXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbGcnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz57eyAnZURvbnVzdW06Okludm9pY2VGaWxlcycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwiaW52b2ljZUZpbGVzRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIiBbYWxsb3dIZWFkZXJGaWx0ZXJpbmddPVwiZmFsc2VcIiBjZWxsVGVtcGxhdGU9XCJmaWxlT3BlcmF0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnZmlsZU9wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCI+PC9pPiB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiRG93bmxvYWRGaWxlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIj48L2k+IHt7ICdlRG9udXN1bTo6RG93bmxvYWQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gW2FsbG93RWRpdGluZ109XCJmYWxzZVwiIGRhdGFGaWVsZD1cImV4dHJhSXRlbVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwiaW52b2ljZUZpbGVOYW1lTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+PC9keG8tbG9va3VwPlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+e3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+Il19
|
|
1137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWluYm91bmQtaW52b2ljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1pbmJvdW5kLWludm9pY2VzL2hpdC1pbmJvdW5kLWludm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW5ib3VuZC1pbnZvaWNlcy9oaXQtaW5ib3VuZC1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7QUFHdkQsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtwRSxPQUFPLEVBQUUsUUFBUSxFQUFPLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYXJDLE1BQU0sT0FBTywwQkFBMEI7SUF3Rm5DLFlBQ29CLElBQWlCLEVBQ2hCLE9BQWlDLEVBQ2pDLGNBQWlDLEVBQ2pDLGtCQUFzQyxFQUN0Qyx3QkFBa0QsRUFDbEQsV0FBd0IsRUFDeEIscUJBQWtDLEVBQ2xDLHNCQUFtQyxFQUNuQyxjQUE4QixFQUM5QiwyQkFBMkQsRUFDM0QsR0FBc0IsRUFDdEIsWUFBaUMsRUFDakMsZ0JBQWtDLEVBQ2xDLHVCQUFtRDtRQWJwRCxTQUFJLEdB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QVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLGdsQkN0QmhGLDRuMkRBcWdDWTsyRkQzK0JDLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBQ2QsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO29oQkFLbEIsd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRSx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNLLDJCQUEyQjtzQkFBdkYsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1YsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0wsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBpc051bGxPckVtcHR5LCBpc051bGxPclVuZGVmaW5lZCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQsIER4VGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgQ3VzdG9tU3RvcmUgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2N1c3RvbV9zdG9yZSc7XHJcbmltcG9ydCB7IEhpdEluYm91bmRJbnZvaWNlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW5ib3VuZC1pbnZvaWNlcy9oaXQtaW5ib3VuZC1pbnZvaWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRJbnZvaWNlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW52b2ljZXMvaGl0LWludm9pY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IGZvcm1hdERhdGUsIGdldExvY2FsZURhdGVGb3JtYXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIaXRCdXNpbmVzc1BhcnRuZXJHcm91cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWJ1c2luZXNzLXBhcnRuZXItZ3JvdXBzL2hpdC1idXNpbmVzcy1wYXJ0bmVyLWdyb3VwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcEFkZHJlc3MsIENhdGFsb2dNYXRjaExpbmVEdG8sIENvbm5lY3RvckRyYWZ0RG9jdW1lbnREdG8sIENvbm5lY3RvckRyYWZ0RG9jdW1lbnRMaW5lRHRvLCBDb25uZWN0b3JNdWx0aXBsZUVtcHR5RHJhZnREdG8sIENvbm5lY3RvclB1cmNoYXNlSW52b2ljZURvY3VtZW50RHRvLCBDb25uZWN0b3JQdXJjaGFzZUludm9pY2VEb2N1bWVudExpbmVEdG8sIENyZWF0ZUJ1c2luZXNzUGFydG5lclN1cHBsaWVyRHRvLCBJbnZvaWNlWG1sTGluZUR0bywgTWFudWFsTGluZUR0bywgT3BlbkRvY3VtZW50RHRvLCBTYXBJdGVtRHRvLCBTYXBUYXhHcm91cER0byB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW5ib3VuZC1pbnZvaWNlcy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdEJyYW5jaGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtYnJhbmNoZXMvaGl0LWJyYW5jaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L3NoYXJlZC9oaXQtc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRGaWxlRG9jdW1lbnRUeXBlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsZS1kb2N1bWVudC10eXBlL2hpdC1maWxlLWRvY3VtZW50LXR5cGUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWluYm91bmQtaW52b2ljZScsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hpdC1pbmJvdW5kLWludm9pY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdEluYm91bmRJbnZvaWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2R4SW5ib3VuZEludm9pY2VJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeEluYm91bmRJbnZvaWNlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4UHVyY2hhc2VPcmRlckRvY3VtZW50cycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFB1cmNoYXNlT3JkZXJEb2N1bWVudHM6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4UHVyY2hhc2VEZXNwYXRjaERvY3VtZW50cycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHM6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4RG9jdW1lbnRMaW5lcycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERvY3VtZW50TGluZXM6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ3RhYlBhbmVsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRhYlBhbmVsOiBEeFRhYlBhbmVsQ29tcG9uZW50XHJcblxyXG4gICAgaW5ib3VuZEludm9pY2VzRGF0YVNvdXJjZTogYW55XHJcbiAgICBpbmJvdW5kSW52b2ljZVN0YXR1c0xvb2t1cDogYW55XHJcbiAgICBpbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXA6IGFueVxyXG5cclxuICAgIHBhcnRuZXJBdmFpbGFibGVBY2NvdW50czogQXJyYXk8eyBpZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcgfT4gPSBbXTtcclxuICAgIG9iamVjdFR5cGVzTG9va3VwOiBBcnJheTx7IGlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB9PiA9IFtcclxuICAgICAgICB7IGlkOiBcIjIwXCIsIHRleHQ6IFwiU2F0xLFuIEFsbWEgxLByc2FsaXllc2lcIiB9LFxyXG4gICAgICAgIHsgaWQ6IFwiMjJcIiwgdGV4dDogXCJTYXTEsW4gQWxtYSBTaXBhcmnFn2lcIiB9XHJcbiAgICBdOyBwYXJ0bmVyQXZhaWxhYmxlU2VyaWVzOiBbXTtcclxuICAgIHBhcnRuZXJBdmFpbGFibGVHcm91cHM6IFtdO1xyXG4gICAgcGFydG5lckF2YWlsYWJsZUNvdW50cmllczogW107XHJcbiAgICBwYXJ0bmVyQXZhaWxhYmxlU3RhdGVzOiBbXTtcclxuICAgIG9wZW5Eb2N1bWVudHNGb3JQYXJ0bmVyOiBbXTtcclxuICAgIGludm9pY2VPYmplY3RzRW51bUxvb2t1cDogYW55O1xyXG4gICAgaW52b2ljZUZpbGVzRGF0YVNvdXJjZTogYW55XHJcbiAgICBwdXJjaGFzZU9yZGVyRG9jdW1lbnRzOiBbXTtcclxuICAgIGRvY3VtZW50TGluZXM6IE9wZW5Eb2N1bWVudER0b1tdID0gW107XHJcbiAgICBwdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzOiBbXTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yUmVzcG9uc2UgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuRm9yUmVzcG9uc2UgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yUGFydG5lciA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICBpc01vZGFsQnVzeUZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbkZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICBpc01vZGFsQnVzeUZvckRvY3VtZW50ID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbkZvckRvY3VtZW50ID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdTdGF0ZXMgPSBmYWxzZTtcclxuICAgIGlzTG9hZGluZ1NlcmllcyA9IGZhbHNlO1xyXG4gICAgaXNMb2FkaW5nR3JvdXBzID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdBY2NvdW50cyA9IGZhbHNlO1xyXG4gICAgaXNMb2FkaW5nQ291bnRyaWVzID0gZmFsc2U7XHJcbiAgICBpc0ZpbGVNb2RhbE9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICBmYXR1cmFPbml6bGVtZTogYW55O1xyXG4gICAgZm9ybVJlc3BvbnNlOiBGb3JtR3JvdXA7XHJcbiAgICBmb3JtUGFydG5lcjogRm9ybUdyb3VwO1xyXG4gICAgZm9ybURvY3VtZW50OiBGb3JtR3JvdXA7XHJcblxyXG4gICAgY291bnRyeUdyaWRCb3hWYWx1ZTogYW55XHJcbiAgICBpc0NvdW50cnlHcmlkQm94T3BlbmVkOiBib29sZWFuXHJcblxyXG4gICAgc3RhdGVHcmlkQm94VmFsdWU6IGFueVxyXG4gICAgaXNTdGF0ZUdyaWRCb3hPcGVuZWQ6IGJvb2xlYW5cclxuXHJcbiAgICBzZXJpYWxHcmlkQm94VmFsdWU6IGFueVxyXG4gICAgaXNTZXJpYWxHcmlkQm94T3BlbmVkOiBib29sZWFuXHJcblxyXG4gICAgZ3JvdXBHcmlkQm94VmFsdWU6IGFueVxyXG4gICAgaXNHcm91cEdyaWRCb3hPcGVuZWQ6IGJvb2xlYW5cclxuXHJcbiAgICBhY2NvdW50R3JpZEJveFZhbHVlOiBhbnlcclxuICAgIGlzQWNjb3VudEdyaWRCb3hPcGVuZWQ6IGJvb2xlYW5cclxuXHJcbiAgICBicmFuY2hlc0RhdGFTb3VyY2U6IGFueTtcclxuICAgIHNlbGVjdGVkSW5ib3VuZEludm9pY2U6IGFueTtcclxuICAgIGNpdGllczogYW55O1xyXG4gICAgY2l0eVNlcnZpY2U6IGFueTtcclxuICAgIGlzRHJhZnQ6IGFueTtcclxuICAgIGlzQnJhbmNoID0gZmFsc2U7XHJcblxyXG4gICAgZHJhZnRSZXN1bHRzOiBhbnlbXSA9IFtdO1xyXG4gICAgcmVzdWx0UG9wdXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICBoYXNWYWxpZFNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgYnJhbmNoUG9wdXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZEJyYW5jaElkOiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAgIC8vIE1hbnVlbCBLYWxlbSBFa2xlXHJcbiAgICBpc01vZGFsT3BlbkZvck1hbnVhbExpbmUgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yTWFudWFsTGluZSA9IGZhbHNlO1xyXG4gICAgbWFudWFsTGluZXM6IE1hbnVhbExpbmVEdG9bXSA9IFtdO1xyXG4gICAgc2FwSXRlbXNTdG9yZTogQ3VzdG9tU3RvcmU7XHJcbiAgICB0YXhHcm91cHM6IFNhcFRheEdyb3VwRHRvW10gPSBbXTtcclxuXHJcbiAgICAvLyBNdWhhdGFwIEthdGFsb2cgTnVtYXJhc8SxXHJcbiAgICBpc01vZGFsT3BlbkZvckNhdGFsb2cgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yQ2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgY2F0YWxvZ01hdGNoTGluZXM6IENhdGFsb2dNYXRjaExpbmVEdG9bXSA9IFtdO1xyXG5cclxuICAgIGludm9pY2VGaWxlTmFtZUxvb2t1cDogYW55O1xyXG4gICAgaXNGaWxlTW9kYWxCdXN5ID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogSGl0SW5ib3VuZEludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW52b2ljZVNlcnZpY2U6IEhpdEludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0QnJhbmNoZXNTZXJ2aWNlOiBIaXRCcmFuY2hlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2U6IEhpdFBhcmFtc0dlbmVyYWxzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyRm9yUGFydG5lcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlckZvckRvY3VtZW50OiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZTogSGl0QnVzaW5lc3NQYXJ0bmVyR3JvdXBTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFNoYXJlZFNlcnZpY2U6IEhpdFNoYXJlZFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWxlRG9jdW1lbnRUeXBlU2VydmljZTogSGl0RmlsZURvY3VtZW50VHlwZVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuY291bnRyeUdyaWRCb3hfZGlzcGxheUV4cHIgPSB0aGlzLmNvdW50cnlHcmlkQm94X2Rpc3BsYXlFeHByLmJpbmQodGhpcylcclxuICAgICAgICB0aGlzLnN0YXRlR3JpZEJveF9kaXNwbGF5RXhwciA9IHRoaXMuc3RhdGVHcmlkQm94X2Rpc3BsYXlFeHByLmJpbmQodGhpcylcclxuICAgICAgICB0aGlzLnNlcmlhbEdyaWRCb3hfZGlzcGxheUV4cHIgPSB0aGlzLnNlcmlhbEdyaWRCb3hfZGlzcGxheUV4cHIuYmluZCh0aGlzKVxyXG4gICAgICAgIHRoaXMuZ3JvdXBHcmlkQm94X2Rpc3BsYXlFeHByID0gdGhpcy5ncm91cEdyaWRCb3hfZGlzcGxheUV4cHIuYmluZCh0aGlzKVxyXG4gICAgICAgIHRoaXMuYWNjb3VudEdyaWRCb3hfZGlzcGxheUV4cHIgPSB0aGlzLmFjY291bnRHcmlkQm94X2Rpc3BsYXlFeHByLmJpbmQodGhpcylcclxuICAgIH1cclxuICAgIGNvdW50cnlHcmlkQm94X2Rpc3BsYXlFeHByKCkge1xyXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jb3VudHJ5R3JpZEJveFZhbHVlKSAmJiAhaXNOdWxsT3JFbXB0eSh0aGlzLmNvdW50cnlHcmlkQm94VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lckNvdW50cnkuc2V0VmFsdWUodGhpcy5jb3VudHJ5R3JpZEJveFZhbHVlWzBdLmNvZGUpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3RhdGVzKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmNvdW50cnlHcmlkQm94VmFsdWVbMF0ubmFtZX1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0ZUdyaWRCb3hfZGlzcGxheUV4cHIoKSB7XHJcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnN0YXRlR3JpZEJveFZhbHVlKSAmJiAhaXNOdWxsT3JFbXB0eSh0aGlzLnN0YXRlR3JpZEJveFZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1QYXJ0bmVyLmNvbnRyb2xzLnBhcnRuZXJTdGF0ZS5zZXRWYWx1ZSh0aGlzLnN0YXRlR3JpZEJveFZhbHVlWzBdLmNvZGUpXHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN0YXRlR3JpZEJveFZhbHVlWzBdLm5hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2VyaWFsR3JpZEJveF9kaXNwbGF5RXhwcigpIHtcclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuc2VyaWFsR3JpZEJveFZhbHVlKSAmJiAhaXNOdWxsT3JFbXB0eSh0aGlzLnNlcmlhbEdyaWRCb3hWYWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFydG5lci5jb250cm9scy5wYXJ0bmVyU2VyaWVzLnNldFZhbHVlKHRoaXMuc2VyaWFsR3JpZEJveFZhbHVlWzBdLnNlcmllcylcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VyaWFsR3JpZEJveFZhbHVlWzBdLm5hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ3JvdXBHcmlkQm94X2Rpc3BsYXlFeHByKCkge1xyXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy5ncm91cEdyaWRCb3hWYWx1ZSkgJiYgIWlzTnVsbE9yRW1wdHkodGhpcy5ncm91cEdyaWRCb3hWYWx1ZSkpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lckdyb3VwLnNldFZhbHVlKHRoaXMuZ3JvdXBHcmlkQm94VmFsdWVbMF0uY29kZSlcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZ3JvdXBHcmlkQm94VmFsdWVbMF0ubmFtZX1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhY2NvdW50R3JpZEJveF9kaXNwbGF5RXhwcigpIHtcclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYWNjb3VudEdyaWRCb3hWYWx1ZSkgJiYgIWlzTnVsbE9yRW1wdHkodGhpcy5hY2NvdW50R3JpZEJveFZhbHVlKSkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFydG5lci5jb250cm9scy5wYXJ0bmVyQWNjb3VudC5zZXRWYWx1ZSh0aGlzLmFjY291bnRHcmlkQm94VmFsdWVbMF0uaWQpXHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmFjY291bnRHcmlkQm94VmFsdWVbMF0udGV4dH1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qIHNob3dBbGxGaWxlcyhyZWNvcmQpIHtcclxuICAgICAgICAgdGhpcy5pbnZvaWNlRmlsZXNEYXRhU291cmNlID0gdGhpcy5pbnZvaWNlU2VydmljZS5Mb2FkSW52b2ljZUZpbGVzKHJlY29yZC51dUlkKVxyXG4gICAgICAgICB0aGlzLmlzRmlsZU1vZGFsT3BlbiA9IHRydWU7XHJcbiAgICAgfSovXHJcbiAgICBvbkNvdW50cnlHcmlkQm94T3B0aW9uQ2hhbmdlZChlKSB7XHJcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ3ZhbHVlJykge1xyXG5cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNDb3VudHJ5R3JpZEJveE9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU3RhdGVHcmlkQm94T3B0aW9uQ2hhbmdlZChlKSB7XHJcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ3ZhbHVlJykge1xyXG5cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0ZUdyaWRCb3hPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblNlcmlhbEdyaWRCb3hPcHRpb25DaGFuZ2VkKGUpIHtcclxuICAgICAgICBpZiAoZS5uYW1lID09PSAndmFsdWUnKSB7XHJcblxyXG5cclxuICAgICAgICAgICAgdGhpcy5pc1NlcmlhbEdyaWRCb3hPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkdyb3VwR3JpZEJveE9wdGlvbkNoYW5nZWQoZSkge1xyXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICd2YWx1ZScpIHtcclxuXHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzR3JvdXBHcmlkQm94T3BlbmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25BY2NvdW50R3JpZEJveE9wdGlvbkNoYW5nZWQoZSkge1xyXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICd2YWx1ZScpIHtcclxuXHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzQWNjb3VudEdyaWRCb3hPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmluYm91bmRJbnZvaWNlc0RhdGFTb3VyY2UgPSB0aGlzLnNlcnZpY2UuTG9hZEluYm91bmRJbnZvaWNlcztcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFN0YXR1c2VzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmluYm91bmRJbnZvaWNlU3RhdHVzTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlLmdldEZpbGVEb2N1bWVudFR5cGVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VGaWxlTmFtZUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlLmdldFBhcmFtc0dlbmVyYWwoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzQnJhbmNoID0gZGF0YS5pc0JyYW5jaDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpdEJyYW5jaGVzU2VydmljZS5nZXRCcmFuY2hlcygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyYW5jaGVzRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0NvdW50cmllcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldENvdW50cmllcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ291bnRyaWVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVDb3VudHJpZXMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiw5xsa2VsZXIgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY291bnRyaWVzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZS5nZXRTdXBwbGllckdyb3VwcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVHcm91cHMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiUGFydG5lciBncnVwbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZ3JvdXBzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0U2FwT2JqZWN0cygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlT2JqZWN0c0VudW1Mb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldEluYm91bmRJbnZvaWNlKCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbnZvaWNlUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZVZpZXcocmVjb3JkLnV1SWQpLnN1YnNjcmliZShpdGVtID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGl0ZW0uY29udGVudCwgaXRlbS5maWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICAvKmNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXRlbS5taW1lVHlwZX07YmFzZTY0LCR7aXRlbS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHNvdXJjZTtcclxuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGAke2l0ZW0uZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpOyovXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB2aWV3UERGc011bHRpcGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlXHJcbiAgICAgICAgICAgIC5nZXRWaXNpYmxlUm93cygpXHJcbiAgICAgICAgICAgIC5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSk7XHJcblxyXG4gICAgICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIkzDvHRmZW4gZW4gYXogYmlyIGZhdHVyYSBzZcOnaW5pei5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlbGVjdGVkUm93cy5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludm9pY2VObyA9IHJvdy5kYXRhLmludm9pY2VJZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZVZpZXcocm93LmRhdGEudXVJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW5CYXNlNjQgPSBpdGVtLmNvbnRlbnQuaW5jbHVkZXMoJywnKVxyXG4gICAgICAgICAgICAgICAgICAgID8gaXRlbS5jb250ZW50LnNwbGl0KCcsJylbMV1cclxuICAgICAgICAgICAgICAgICAgICA6IGl0ZW0uY29udGVudDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShhdG9iKGNsZWFuQmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlc10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsICdub29wZW5lcicpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1RhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1RhYi5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IGludm9pY2VObyA/PyByb3cuZGF0YS51dUlkO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gRmF0dXJhIG51bWFyYXPEsXlsYSBpbmRpclxyXG4gICAgICAgICAgICAgICAgLyogICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBgJHtpbnZvaWNlTm8gPz8gcm93LmRhdGEudXVJZH0ucGRmYDtcclxuICAgICAgICAgICAgICAgICAgICAgYS5jbGljaygpOyAqL1xyXG5cclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLCA2MF8wMDApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUmVzcG9uc2VNb2RhbChyZWNvcmQpIHtcclxuXHJcbiAgICAgICAgdGhpcy5idWlsZEZvcm0ocmVjb3JkKTtcclxuICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yUmVzcG9uc2UgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRm9ybShyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmZvcm1SZXNwb25zZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBpZDogcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICBpbnZvaWNlVVVJRDogcmVjb3JkLnV1SWQsXHJcbiAgICAgICAgICAgIGlzQWNjZXB0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1JlamVjdGVkOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbmRJbnZvaWNlUmVzcG9uc2UocmVzcG9uc2U6IGJvb2xlYW4pIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVJlc3BvbnNlLmludmFsaWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZm9ybVJlc3BvbnNlLnZhbHVlXHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5zZW5kSW52b2ljZVJlc3BvbnNlKHJlc3VsdC5pbnZvaWNlVVVJRCwgcmVzcG9uc2UsIHJlc3VsdC5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yUmVzcG9uc2UgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5QYXJ0bmVyTW9kYWwocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbyhcIk11aGF0YXAga29udHJvbMO8IHlhcMSxbMSxeW9yLCBsw7x0ZmVuIGJla2xleWluaXouXCIpXHJcbiAgICAgICAgbGV0IGNhcmRUeXBlID0gXCJjU3VwcGxpZXJcIjtcclxuICAgICAgICBpZiAocmVjb3JkLmludm9pY2VUeXBlQ29kZSA9PSBcIklBREVcIilcclxuICAgICAgICAgICAgY2FyZFR5cGUgPSBcImNDdXN0b21lclwiO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5jaGVja0J1c2luZXNzUGFydG5lckV4aXN0KHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24sY2FyZFR5cGUpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZEZvcm1Gb3JQYXJ0bmVyKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihyZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuICsgXCIgbnVtYXJhbMSxIHNhdMSxY8SxIHphdGVuIG1ldmN1dC5cIilcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0ZXMoKSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdTdGF0ZXMgPSB0cnVlO1xyXG4gICAgICAgIC8vIMOWbmNlIG1ldmN1dCBzdGF0ZSBzZcOnaW1pbmkgdGVtaXpsZVxyXG4gICAgICAgIHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lclN0YXRlLnNldFZhbHVlKCcnKTtcclxuICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVTdGF0ZXMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFN0YXRlcyh0aGlzLmZvcm1QYXJ0bmVyLmNvbnRyb2xzLnBhcnRuZXJDb3VudHJ5LnZhbHVlKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ1N0YXRlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJ0bmVyQXZhaWxhYmxlU3RhdGVzID0gbGlzdDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIsSwbC9leWFsZXQgYmlsZ2lsZXJpIHnDvGtsZW5pcmtlbiBiaXIgaGF0YSBvbHXFn3R1LlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHN0YXRlczonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVGb3JtUGFydG5lcigpIHtcclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yUGFydG5lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFydG5lci5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUJ1c2luZXNzUGFydG5lcigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVBhcnRuZXIuaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yUGFydG5lciA9IHRydWU7XHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvQWRkcmVzc2VzOiBCcEFkZHJlc3NbXSA9IFtdXHJcbiAgICAgICAgcmVxdWVzdER0b0FkZHJlc3Nlcy5wdXNoKHtcclxuICAgICAgICAgICAgYWRkcmVzc05hbWU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWRkcmVzcz8udmFsdWUsXHJcbiAgICAgICAgICAgIHN0cmVldDogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJTdHJlZXQ/LnZhbHVlLFxyXG4gICAgICAgICAgICBibG9jazogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJCbG9jaz8udmFsdWUsXHJcbiAgICAgICAgICAgIHppcENvZGU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyWmlwQ29kZT8udmFsdWUsXHJcbiAgICAgICAgICAgIGNpdHk6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQ2l0eT8udmFsdWUsXHJcbiAgICAgICAgICAgIGNvdW50eTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJDb3VudHk/LnZhbHVlLFxyXG4gICAgICAgICAgICBjb3VudHJ5OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckNvdW50cnk/LnZhbHVlLFxyXG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJTdGF0ZT8udmFsdWUsXHJcbiAgICAgICAgICAgIGFkZHJlc3NUeXBlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckFkZHJlc3NUeXBlPy52YWx1ZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdER0bzogQ3JlYXRlQnVzaW5lc3NQYXJ0bmVyU3VwcGxpZXJEdG8gPSB7XHJcbiAgICAgICAgICAgIGNhcmRDb2RlOiBcIlwiLFxyXG4gICAgICAgICAgICB1bmlmaWVkRmVkZXJhbFRheElEOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8udmtuPy52YWx1ZSxcclxuICAgICAgICAgICAgY2FyZE5hbWU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5uYW1lPy52YWx1ZSxcclxuICAgICAgICAgICAgY2FyZFR5cGU6IFwiU1wiLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJDdXJyZW5jeT8udmFsdWUsXHJcbiAgICAgICAgICAgIGRlYml0b3JBY2NvdW50OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckFjY291bnQ/LnZhbHVlLFxyXG4gICAgICAgICAgICBzZXJpZXM6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyU2VyaWVzPy52YWx1ZSxcclxuICAgICAgICAgICAgZ3JvdXBDb2RlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckdyb3VwPy52YWx1ZSxcclxuICAgICAgICAgICAgd2Vic2l0ZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJXZWJTaXRlVVJJPy52YWx1ZSxcclxuICAgICAgICAgICAgYWRkaXRpb25hbElEOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckFkZElkPy52YWx1ZSxcclxuICAgICAgICAgICAgYnBBZGRyZXNzZXM6IHJlcXVlc3REdG9BZGRyZXNzZXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuY3JlYXRlQnVzaW5lc3NQYXJ0bmVyRm9yU3VwcGxpZXIocmVxdWVzdER0bylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRm9ybVBhcnRuZXIoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKHJlc3VsdC5jYXJkQ29kZSArIFwiIGtvZGx1IG11aGF0YXAgYmHFn2FyxLF5bGEgb2x1xZ90dXJ1bGR1LlwiKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIk11aGF0YXAgb2x1xZ90dXJ1bHVya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ011aGF0YXAgb2x1xZ90dXJ1bHVya2VuIGJpciBoYXRhIG9sdcWfdHU6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZvcm1Gb3JQYXJ0bmVyKHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRQYXJ0bmVyRGV0YWlscyhyZWNvcmQuaWQpLnN1YnNjcmliZShpbnZvaWNlID0+IHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhcnRuZXIgPSB0aGlzLmZvcm1CdWlsZGVyRm9yUGFydG5lci5ncm91cCh7XHJcbiAgICAgICAgICAgICAgICB2a246IFtyZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuID8/IFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBbcmVjb3JkLmFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZSA/PyBcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckN1cnJlbmN5OiBbcmVjb3JkLmRvY3VtZW50Q3VycmVuY3lDb2RlID8/IFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyQWNjb3VudDogW1wiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyU2VyaWVzOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJHcm91cDogW1wiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyRW1haWw6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LmNvbnRhY3Q/LmVsZWN0cm9uaWNNYWlsPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJXZWJTaXRlVVJJOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py53ZWJzaXRlVVJJPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBZGRJZDogW2ludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5Py5wYXJ0eT8ucGFydHlUYXhTY2hlbWU/LnRheFNjaGVtZT8ubmFtZT8udmFsdWUgPz8gXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBZGRyZXNzVHlwZTogXCJCXCIsXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyQWRkcmVzczogXCJGYXR1cmEgQWRyZXNpXCIsXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyU3RyZWV0OiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5zdHJlZXROYW1lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJCbG9jazogW2ludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5Py5wYXJ0eT8ucG9zdGFsQWRkcmVzcz8uYmxvY2tOYW1lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJDaXR5OiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5jaXR5TmFtZT8udmFsdWUgPz8gXCJcIl0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyWmlwQ29kZTogW2ludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5Py5wYXJ0eT8ucG9zdGFsQWRkcmVzcz8ucG9zdGFsWm9uZT8udmFsdWUgPz8gXCJcIl0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyQ291bnR5OiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5jaXR5U3ViZGl2aXNpb25OYW1lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJTdGF0ZTogXCJcIixcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJDb3VudHJ5OiBcIlwiXHJcblxyXG4gICAgICAgICAgICAgICAgLy9wYXJ0bmVyQ2l0eTogaW52b2ljZURldGFpbHMuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yUGFydG5lciA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nQWNjb3VudHMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VyaWFsR3JpZEJveFZhbHVlID0gXCJcIjtcclxuICAgICAgICB0aGlzLmdyb3VwR3JpZEJveFZhbHVlID0gXCJcIjtcclxuICAgICAgICB0aGlzLnN0YXRlR3JpZEJveFZhbHVlID0gXCJcIjtcclxuICAgICAgICB0aGlzLmNvdW50cnlHcmlkQm94VmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYWNjb3VudEdyaWRCb3hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldEJhbmtBY2NvdW50QnlDdXJyZW5jeShyZWNvcmQuZG9jdW1lbnRDdXJyZW5jeUNvZGUpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQWNjb3VudHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZUFjY291bnRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVBY2NvdW50cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmFjY3RDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5hY2N0Q29kZSArIFwiIFwiICsgZWxlbWVudC5hY2N0TmFtZS50b1VwcGVyQ2FzZSgpICsgXCIgXCIgKyBlbGVtZW50LmFjdEN1cnIudG9VcHBlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIkJhbmthIGhlc2FwbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgYWNjb3VudHM6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdTZXJpZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRQYXJ0bmVyTnVtYmVyaW5nU2VyaWVzKClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdTZXJpZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZVNlcmllcyA9IGxpc3Q7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJTZXJpIG51bWFyYWxhcsSxIHnDvGtsZW5pcmtlbiBiaXIgaGF0YSBvbHXFn3R1LlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHNlcmllczonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVTdGF0ZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZvcm1Gb3JEb2N1bWVudCgpIHtcclxuICAgICAgICB0aGlzLmZvcm1Eb2N1bWVudCA9IHRoaXMuZm9ybUJ1aWxkZXJGb3JEb2N1bWVudC5ncm91cCh7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkQnJhbmNoOiB0aGlzLmJyYW5jaGVzRGF0YVNvdXJjZT8uZmlsdGVyKHAgPT4gcC5pc01haW4pWzBdLmNvZGUgPz8gXCJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5EcmFmdEZvcm0ocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiTXVoYXRhcCBrb250cm9sw7wgeWFwxLFsxLF5b3IsIGzDvHRmZW4gYmVrbGV5aW5pei5cIilcclxuICAgICAgICAgbGV0IGNhcmRUeXBlID0gXCJjU3VwcGxpZXJcIjtcclxuICAgICAgICBpZiAocmVjb3JkLmludm9pY2VUeXBlQ29kZSA9PSBcIklBREVcIilcclxuICAgICAgICAgICAgY2FyZFR5cGUgPSBcImNDdXN0b21lclwiO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5jaGVja0J1c2luZXNzUGFydG5lckV4aXN0KHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24sY2FyZFR5cGUpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIsSwbGdpbGkgVktOJ3llIGFpdCAoXCIgKyByZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuICsgXCIpIG11aGF0YXAgYnVsdW5hbWFkxLEsIGzDvHRmZW4gw7ZuY2UgbXVoYXRhcCBvbHXFn3R1cnVuLlwiKVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRGb3JtRm9yRG9jdW1lbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZSA9IHJlY29yZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JEb2N1bWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZnQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRvY3VtZW50Rm9ybShyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJNdWhhdGFwIGtvbnRyb2zDvCB5YXDEsWzEsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG4gICAgICAgIGxldCBjYXJkVHlwZSA9IFwiY1N1cHBsaWVyXCI7XHJcbiAgICAgICAgaWYgKHJlY29yZC5pbnZvaWNlVHlwZUNvZGUgPT0gXCJJQURFXCIpXHJcbiAgICAgICAgICAgIGNhcmRUeXBlID0gXCJjQ3VzdG9tZXJcIjtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuY2hlY2tCdXNpbmVzc1BhcnRuZXJFeGlzdChyZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuLGNhcmRUeXBlKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCLEsGxnaWxpIFZLTid5ZSBhaXQgKFwiICsgcmVjb3JkLmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbiArIFwiKSBtdWhhdGFwIGJ1bHVuYW1hZMSxLCBsw7x0ZmVuIMO2bmNlIG11aGF0YXAgb2x1xZ90dXJ1bi5cIilcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRm9ybUZvckRvY3VtZW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UgPSByZWNvcmQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yRG9jdW1lbnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RyYWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuT3BlbkRvY3VtZW50c0Zvcm0oKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiQcOnxLFrIGJlbGdlIHNhdMSxcmxhcsSxIHNvcmd1bGFuxLF5b3IsIGzDvHRmZW4gYmVrbGV5aW5pei5cIilcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldE9wZW5Eb2N1bWVudHModGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbikuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Eb2N1bWVudHNGb3JQYXJ0bmVyID0gbGlzdDtcclxuXHJcbiAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVyY2hhc2VPcmRlckRvY3VtZW50cyA9IGxpc3QuZmlsdGVyKGRvYyA9PiBkb2Mub2JqVHlwZSA9PT0gMjIpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1NhdMSxbiBhbG1hIHNpcGFyacWfbGVyaSAoT2JqVHlwZT0yMik6JywgdGhpcy5wdXJjaGFzZU9yZGVyRG9jdW1lbnRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBPYmpUeXBlPTIwIG9sYW5sYXLEsSBzYXTEsW4gYWxtYSBpcnNhbGl5ZXNpIHRhYsSxbmEgZmlsdHJlbGVcclxuICAgICAgICAgICAgICAgIHRoaXMucHVyY2hhc2VEZXNwYXRjaERvY3VtZW50cyA9IGxpc3QuZmlsdGVyKGRvYyA9PiBkb2Mub2JqVHlwZSA9PT0gMjApO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1NhdMSxbiBhbG1hIGlyc2FsaXllbGVyaSAoT2JqVHlwZT0yMCk6JywgdGhpcy5wdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzKTtcclxuICAgICAgICAgICAgICAgIC8vIE9ialR5cGU9MjIgb2xhbmxhcsSxIHNhdMSxbiBhbG1hIHNpcGFyacWfaSB0YWLEsW5hIGZpbHRyZWxlXHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvck9wZW5Eb2NzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIsSwbGdpbGkgbXVoYXRhcCBpw6dpbiBhw6fEsWsgYmVsZ2Ugc2F0xLFyxLEgYnVsdW5hbWFkxLEuXCIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RPcGVuRG9jdW1lbnRzKCkge1xyXG4gICAgICAgIGxldCBwdXJjaGFzZURlc3BhdGNoZXMgPSB0aGlzLmR4UHVyY2hhc2VEZXNwYXRjaERvY3VtZW50cy5pbnN0YW5jZS5nZXRTZWxlY3RlZFJvd3NEYXRhKClcclxuICAgICAgICBsZXQgcHVyY2hhc2VPcmRlcnMgPSB0aGlzLmR4UHVyY2hhc2VPcmRlckRvY3VtZW50cy5pbnN0YW5jZS5nZXRTZWxlY3RlZFJvd3NEYXRhKClcclxuICAgICAgICBsZXQgcmVmZXJlbmNlRG9jcyA9IFtdO1xyXG4gICAgICAgIGlmIChwdXJjaGFzZU9yZGVycy5sZW5ndGggPiAwICYmIHB1cmNoYXNlRGVzcGF0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJSZWZlcmFucyBvbGFyYWsgeWFsbsSxemNhIGJpciBiZWxnZSB0w7xyw7wgc2XDp2lsZWJpbGlyLlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHB1cmNoYXNlT3JkZXJzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZURvY3MgPSBwdXJjaGFzZU9yZGVycztcclxuICAgICAgICBpZiAocHVyY2hhc2VEZXNwYXRjaGVzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZURvY3MgPSBwdXJjaGFzZURlc3BhdGNoZXM7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50TGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAocmVmZXJlbmNlRG9jcy5zb21lKGUgPT4gIXRoaXMuZG9jdW1lbnRMaW5lcy5zb21lKGQgPT4gZC5vYmpUeXBlID09PSBlLm9ialR5cGUpKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlJlZmVyYW5zIG9sYXJhayB5YWxuxLF6Y2EgYmlyIGJlbGdlIHTDvHLDvCBzZcOnaWxlYmlsaXIuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWZlcmVuY2VEb2NzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICF0aGlzLmRvY3VtZW50TGluZXMuc29tZShkcmFmdCA9PlxyXG4gICAgICAgICAgICAgICAgZHJhZnQub2JqVHlwZSA9PT0gZWxlbWVudC5vYmpUeXBlICYmXHJcbiAgICAgICAgICAgICAgICBkcmFmdC5kb2NFbnRyeSA9PT0gZWxlbWVudC5kb2NFbnRyeSAmJlxyXG4gICAgICAgICAgICAgICAgZHJhZnQubGluZU51bSA9PT0gZWxlbWVudC5saW5lTnVtXHJcbiAgICAgICAgICAgICkgJiYgdGhpcy5kb2N1bWVudExpbmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRRdHk6IGVsZW1lbnQub3BlblF0eSxcclxuICAgICAgICAgICAgICAgIG9wZW5RdHk6IGVsZW1lbnQub3BlblF0eSxcclxuICAgICAgICAgICAgICAgIG9ialR5cGU6IGVsZW1lbnQub2JqVHlwZSxcclxuICAgICAgICAgICAgICAgIGRvY0VudHJ5OiBlbGVtZW50LmRvY0VudHJ5LFxyXG4gICAgICAgICAgICAgICAgZG9jTnVtOiBlbGVtZW50LmRvY051bSxcclxuICAgICAgICAgICAgICAgIG51bUF0Q2FyZDogZWxlbWVudC5udW1BdENhcmQsXHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtOiBlbGVtZW50LmxpbmVOdW0sXHJcbiAgICAgICAgICAgICAgICBkb2NEYXRlOiBlbGVtZW50LmRvY0RhdGUsXHJcbiAgICAgICAgICAgICAgICBkb2NEdWVEYXRlOiBlbGVtZW50LmRvY0R1ZURhdGUsXHJcbiAgICAgICAgICAgICAgICBpdGVtQ29kZTogZWxlbWVudC5pdGVtQ29kZSxcclxuICAgICAgICAgICAgICAgIGRzY3JpcHRpb246IGVsZW1lbnQuZHNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQudGV4dCxcclxuICAgICAgICAgICAgICAgIGZyZWVUeHQ6IGVsZW1lbnQuZnJlZVR4dCxcclxuICAgICAgICAgICAgICAgIGNhcmRDb2RlOiBlbGVtZW50LmNhcmRDb2RlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmhpZGVGb3JtT3BlbkRvY3VtZW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVGb3JtT3BlbkRvY3VtZW50cygpIHtcclxuICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yT3BlbkRvY3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yT3BlbkRvY3MgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaGlkZUZvcm1EcmFmdCgpIHtcclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yRG9jdW1lbnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yRG9jdW1lbnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50TGluZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kRHJhZnQoZHJhZnRHcmlkTGluZXM6IGFueVtdKSB7XHJcbiAgICAgICAgbGV0IHJlcXVlc3REdG9Eb2N1bWVudExpbmVzOiBDb25uZWN0b3JEcmFmdERvY3VtZW50TGluZUR0b1tdID0gW107XHJcblxyXG4gICAgICAgIGRyYWZ0R3JpZExpbmVzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm9ialR5cGUgPT09IDAgfHwgZWxlbWVudC5vYmpUeXBlID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgLy8gTWFudWVsIGthbGVtICgwKSB2ZXlhIEthdGFsb2cgZcWfbGXFn3Rpcm1lICgtMSlcclxuICAgICAgICAgICAgICAgIHJlcXVlc3REdG9Eb2N1bWVudExpbmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBlbGVtZW50LnNlbGVjdGVkUXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VFbnRyeTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlTGluZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtQ29kZTogZWxlbWVudC5pdGVtQ29kZSxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtRGVzY3JpcHRpb246IGVsZW1lbnQuZHNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICB1bml0UHJpY2U6IGVsZW1lbnQudW5pdFByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRheENvZGU6IGVsZW1lbnQuZnJlZVR4dCxcclxuICAgICAgICAgICAgICAgICAgICB2YXRHcm91cDogZWxlbWVudC5mcmVlVHh0LFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmRvY3VtZW50Q3VycmVuY3lDb2RlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgICAgIHVvbUNvZGU6IGVsZW1lbnQudGV4dCB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzY1ByY250OiB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVmZXJhbnMgYmVsZ2VsaSBrYWxlbSAtIG1ldmN1dCBha8SxxZ9cclxuICAgICAgICAgICAgICAgIHJlcXVlc3REdG9Eb2N1bWVudExpbmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBlbGVtZW50LnNlbGVjdGVkUXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlOiBlbGVtZW50Lm9ialR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZUVudHJ5OiBlbGVtZW50LmRvY0VudHJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIGJhc2VMaW5lOiBlbGVtZW50LmxpbmVOdW1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvOiBDb25uZWN0b3JEcmFmdERvY3VtZW50RHRvID0ge1xyXG4gICAgICAgICAgICBkb2NFbnRyeTogbnVsbCxcclxuICAgICAgICAgICAgZG9jTnVtOiBudWxsLFxyXG4gICAgICAgICAgICBkb2NDdXJyZW5jeTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5kb2N1bWVudEN1cnJlbmN5Q29kZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jT2JqZWN0Q29kZTp0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VUeXBlQ29kZT09PVwiSUFERVwiP1wib0NyZWRpdE5vdGVzXCI6XCJvUHVyY2hhc2VJbnZvaWNlc1wiLFxyXG4gICAgICAgICAgICBkb2NEYXRlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmlzc3VlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdGF4RGF0ZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pc3N1ZURhdGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGRvY0R1ZURhdGU6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGRvY1JhdGU6ICh0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUgPD0gMSB8fCBpc051bGxPckVtcHR5KHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSkpID8gMSA6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5wcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlLFxyXG4gICAgICAgICAgICBjYXJkQ29kZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIG51bUF0Q2FyZDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pbnZvaWNlSWQ/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHVfRUZBVE5POiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9VVUlEOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnV1SWQ/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHVfU0VORDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pbnZvaWNlVHlwZUNvZGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHVfUHJvZmlsZUlkOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByb2ZpbGVJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jdW1lbnRMaW5lczogcmVxdWVzdER0b0RvY3VtZW50TGluZXMsXHJcbiAgICAgICAgICAgIGJQTF9JREFzc2lnbmVkVG9JbnZvaWNlOiB0aGlzLmlzQnJhbmNoID8gdGhpcy5mb3JtRG9jdW1lbnQ/LmNvbnRyb2xzPy5zZWxlY3RlZEJyYW5jaD8udmFsdWUgOiAxIC8vIFZhcnNhecSxbGFuIMWfdWJlIC0gdGVzdCBpw6dpblxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVEcmFmdERvY3VtZW50KHJlcXVlc3REdG8sIHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pZClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRm9ybURyYWZ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKHJlc3VsdC5kb2NFbnRyeSArIFwiIG51bWFyYWzEsSB0YXNsYWsgYmVsZ2UgYmHFn2FyxLF5bGEgb2x1xZ90dXJ1bGR1LlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZERvY3VtZW50KGRvY3VtZW50R3JpZExpbmVzOiBhbnlbXSkge1xyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvRG9jdW1lbnRMaW5lczogQ29ubmVjdG9yUHVyY2hhc2VJbnZvaWNlRG9jdW1lbnRMaW5lRHRvW10gPSBbXTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnRHcmlkTGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQub2JqVHlwZSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gTWFudWVsIGthbGVtXHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0RHRvRG9jdW1lbnRMaW5lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogZWxlbWVudC5zZWxlY3RlZFF0eSxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlRW50cnk6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZUxpbmU6IG51bGxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVmZXJhbnMgYmVsZ2VsaSBrYWxlbVxyXG4gICAgICAgICAgICAgICAgcmVxdWVzdER0b0RvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGVsZW1lbnQuc2VsZWN0ZWRRdHksXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGU6IGVsZW1lbnQub2JqVHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBiYXNlRW50cnk6IGVsZW1lbnQuZG9jRW50cnksXHJcbiAgICAgICAgICAgICAgICAgICAgYmFzZUxpbmU6IGVsZW1lbnQubGluZU51bVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IHJlcXVlc3REdG86IENvbm5lY3RvclB1cmNoYXNlSW52b2ljZURvY3VtZW50RHRvID0ge1xyXG4gICAgICAgICAgICBkb2NFbnRyeTogbnVsbCxcclxuICAgICAgICAgICAgZG9jTnVtOiBudWxsLFxyXG4gICAgICAgICAgICBkb2NDdXJyZW5jeTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5kb2N1bWVudEN1cnJlbmN5Q29kZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jRGF0ZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pc3N1ZURhdGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHRheERhdGU6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaXNzdWVEYXRlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkb2NEdWVEYXRlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnBheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkb2NSYXRlOiAodGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlIDw9IDEgfHwgaXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUpKSA/IDEgOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSxcclxuICAgICAgICAgICAgY2FyZENvZGU6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBudW1BdENhcmQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB1X0VGQVROTzogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5pbnZvaWNlSWQ/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHVfVVVJRDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy51dUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB1X1NFTkQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZVR5cGVDb2RlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB1X1Byb2ZpbGVJZDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wcm9maWxlSWQ/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGJQTF9JREFzc2lnbmVkVG9JbnZvaWNlOiB0aGlzLmlzQnJhbmNoID8gdGhpcy5mb3JtRG9jdW1lbnQ/LmNvbnRyb2xzPy5zZWxlY3RlZEJyYW5jaD8udmFsdWUgOiBudWxsLFxyXG4gICAgICAgICAgICBkb2N1bWVudExpbmVzOiByZXF1ZXN0RHRvRG9jdW1lbnRMaW5lc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVQdXJjaGFzZUludm9pY2VEb2N1bWVudChyZXF1ZXN0RHRvLCB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuaWQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUZvcm1EcmFmdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKHJlc3VsdC5kb2NFbnRyeSArIFwiIG51bWFyYWzEsSBiZWxnZSBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVEcmFmdERvY3VtZW50KCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JEb2N1bWVudCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5keERvY3VtZW50TGluZXMuaW5zdGFuY2UuZ2V0RGF0YVNvdXJjZSgpO1xyXG4gICAgICAgIGRhdGFTb3VyY2Uuc3RvcmUoKS5sb2FkKCkudGhlbigoZ3JpZExpbmVzOiBhbnlbXSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKGdyaWRMaW5lcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFmdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmZvKCdUYWJsb2RhIHNhdMSxciBidWx1bm1hZMSxxJ/EsSBpw6dpbiB0YXNsYWsgYmVsZ2UgYm/FnyBvbGFyYWsgb2x1xZ90dXJ1bGFjYWt0xLFyLiBEZXZhbSBldG1layBpc3RpeW9yIG11c3VudXo/JywgeyBrZXk6ICc6OkJpbGdpJywgZGVmYXVsdFZhbHVlOiAnJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gXCJjb25maXJtXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmREcmFmdChncmlkTGluZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yRG9jdW1lbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiS2F5xLF0bMSxIGJlbGdlIG9sdcWfdHVydWx1cmtlbiBib8WfIHNhdMSxciBnaXJpbGVtZXouXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChncmlkTGluZXMuZmlsdGVyKHggPT4geC5zZWxlY3RlZFF0eSA+IHgub3BlblF0eSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmZvKCdTZcOnaWxlbiBtaWt0YXLEsSwgYcOnxLFrIG1pa3RhcmRhbiBiw7x5w7xrIG9sYW4gc2F0xLFyL3NhdMSxcmxhciBtZXZjdXQuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBcImNvbmZpcm1cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZERyYWZ0KGdyaWRMaW5lcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmREb2N1bWVudChncmlkTGluZXMpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvckRvY3VtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFmdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kRHJhZnQoZ3JpZExpbmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZERvY3VtZW50KGdyaWRMaW5lcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHByb2Nlc3NNYW51YWwocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnByb2Nlc3NNYW51YWwocmVjb3JkLmlkKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwiQmVsZ2UgYmHFn2FyxLF5bGEgbWFudWVsIGnFn2xlbmRpLlwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE1hbnVlbCBLYWxlbSBFa2xlIC0gTW9kYWwgYcOnXHJcbiAgICBvcGVuTWFudWFsTGluZU1vZGFsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50TGluZXMuc29tZShkID0+IGQub2JqVHlwZSA9PT0gMCB8fCBkLm9ialR5cGUgPT09IC0xKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLndhcm4oXCJTYXTEsXJsYXIgemF0ZW4gZWtsZW5tacWfdGlyLiDDlm5jZSBtZXZjdXQgc2F0xLFybGFyxLEgdGVtaXpsZXlpbml6LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yTWFudWFsTGluZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tYW51YWxMaW5lcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaW5pdFNhcEl0ZW1zU3RvcmUoKTtcclxuXHJcbiAgICAgICAgLy8gWE1MIHNhdMSxcmxhcsSxbsSxIHZlIHZlcmdpIGdydXBsYXLEsW7EsSBwYXJhbGVsIMOnZWtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0SW52b2ljZVhtbExpbmVzKHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHhtbExpbmVzOiBJbnZvaWNlWG1sTGluZUR0b1tdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBWZXJnaSBncnVwbGFyxLFuxLEgw6dlayAoQ2F0ZWdvcnk9J0knLCBJbmFjdGl2ZT0nTicpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0VGF4R3JvdXBzKCdJJykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0OiAoZ3JvdXBzOiBTYXBUYXhHcm91cER0b1tdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGF4R3JvdXBzID0gZ3JvdXBzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0lhZGUgPSB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByb2ZpbGVJZCA9PT0gJ0lBREUnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gWE1MIHNhdMSxcmxhcsSxbsSxIE1hbnVhbExpbmVEdG8neWEgZMO2bsO8xZ90w7xyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFudWFsTGluZXMgPSB4bWxMaW5lcy5tYXAobGluZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJnaSBvcmFuxLFuYSBnw7ZyZSB2YXJzYXnEsWxhbiB2ZXJnaSBncnVidSBlxZ9sZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRUYXhDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZS50YXhQZXJjZW50ICE9IG51bGwgJiYgZ3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gZ3JvdXBzLmZpbmQoZyA9PiBNYXRoLmFicyhnLnJhdGUgLSBsaW5lLnRheFBlcmNlbnQpIDwgMC4wMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFRheENvZGUgPSBtYXRjaGVkLmNvZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZS5saW5lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db2RlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTmFtZTogbGluZS5pdGVtTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogbGluZS5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0UHJpY2U6IGxpbmUudW5pdFByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheENvZGU6IGRlZmF1bHRUYXhDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogbGluZS5jdXJyZW5jeUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgTWFudWFsTGluZUR0bztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yTWFudWFsTGluZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yTWFudWFsTGluZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJnaSBncnVwbGFyxLEgYWzEsW5hbWF6c2EgKFNBUCBiYcSfbGFudMSxc8SxIHlvaykgeWluZSBkZSBhw6dcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhHcm91cHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW51YWxMaW5lcyA9IHhtbExpbmVzLm1hcChsaW5lID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lLmxpbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtQ29kZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTmFtZTogbGluZS5pdGVtTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBsaW5lLnF1YW50aXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdFByaWNlOiBsaW5lLnVuaXRQcmljZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheENvZGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiBsaW5lLmN1cnJlbmN5Q29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgTWFudWFsTGluZUR0bykpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvck1hbnVhbExpbmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvck1hbnVhbExpbmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvck1hbnVhbExpbmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJYTUwgc2F0xLFybGFyxLEgb2t1bmFtYWTEsTogXCIgKyAoZXJyPy5lcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEl0ZW1zIGxvb2t1cCd0YW4gc2XDp2ltXHJcbiAgICBvbkl0ZW1Mb29rdXBDaGFuZ2VkKGV2ZW50OiBhbnksIGxpbmVJbmRleDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2FwSXRlbXNTdG9yZS5ieUtleShldmVudC52YWx1ZSkudGhlbigoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFudWFsTGluZXNbbGluZUluZGV4XS5pdGVtTmFtZSA9IGl0ZW0uaXRlbU5hbWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJdGVtcyBDdXN0b21TdG9yZSAtIHN1bnVjdSB0YXJhZmzEsSBhcmFtYSB2ZSBzYXlmYWxhbWFcclxuICAgIGluaXRTYXBJdGVtc1N0b3JlKCkge1xyXG4gICAgICAgIHRoaXMuc2FwSXRlbXNTdG9yZSA9IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgIGtleTogJ2l0ZW1Db2RlJyxcclxuICAgICAgICAgICAgbG9hZE1vZGU6ICdyYXcnLFxyXG4gICAgICAgICAgICBsb2FkOiAobG9hZE9wdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IGxvYWRPcHRpb25zLnNlYXJjaFZhbHVlIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRJdGVtcyhzZWFyY2hUZXh0KS50b1Byb21pc2UoKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChpdGVtczogU2FwSXRlbUR0b1tdKSA9PiBpdGVtcyB8fCBbXSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4gW10pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBieUtleTogKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEl0ZW1zKGtleSkudG9Qcm9taXNlKClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigoaXRlbXM6IFNhcEl0ZW1EdG9bXSkgPT4gaXRlbXM/LmZpbmQoaSA9PiBpLml0ZW1Db2RlID09PSBrZXkpIHx8IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQWxsTWFudWFsTGluZXMoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLm1hbnVhbExpbmVzLmZvckVhY2gobCA9PiBsLnNlbGVjdGVkID0gY2hlY2tlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTXVoYXRhcCBLYXRhbG9nIE51bWFyYXPEsSBpbGUgVGFzbGFrIEJlbGdlIE9sdcWfdHVyIC0gTW9kYWwgYcOnXHJcbiAgICBvcGVuQ2F0YWxvZ01hdGNoTW9kYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRMaW5lcy5zb21lKGQgPT4gZC5vYmpUeXBlID09PSAwIHx8IGQub2JqVHlwZSA9PT0gLTEpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIlNhdMSxcmxhciB6YXRlbiBla2xlbm1pxZ90aXIuIMOWbmNlIG1ldmN1dCBzYXTEsXJsYXLEsSB0ZW1pemxleWluaXouXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JDYXRhbG9nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dNYXRjaExpbmVzID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRDYXRhbG9nTWF0Y2hMaW5lcyh0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChsaW5lczogQ2F0YWxvZ01hdGNoTGluZUR0b1tdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGFsb2dNYXRjaExpbmVzID0gbGluZXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yQ2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvckNhdGFsb2cgPSB0cnVlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvckNhdGFsb2cgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJLYXRhbG9nIGXFn2xlxZ90aXJtZSBoYXRhc8SxOiBcIiArIChlcnI/LmVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTXVoYXRhcCBLYXRhbG9nIHNhdMSxcmxhcsSxbsSxIGRvY3VtZW50TGluZXMnYSBla2xlXHJcbiAgICBhZGRDYXRhbG9nTGluZXNUb0RvY3VtZW50KCkge1xyXG4gICAgICAgIC8vIEXFn2xlxZ9tZSBrb250cm9sw7xcclxuICAgICAgICBjb25zdCB1bm1hdGNoZWRMaW5lcyA9IHRoaXMuY2F0YWxvZ01hdGNoTGluZXMuZmlsdGVyKGwgPT4gIWwuaXNNYXRjaGVkKTtcclxuICAgICAgICBpZiAodW5tYXRjaGVkTGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiRcWfbGXFn21lbWnFnyBLYWxlbSB2ZXlhIEthbGVtbGVyIE1ldmN1dHR1ci4gTMO8dGZlbiBNdWhhdGFwIEthdGFsb2cgVGFuxLFtxLEgWWFwxLFuxLF6LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRcWfbGXFn2VuIHNhdMSxcmxhcsSxIGRvY3VtZW50TGluZXMnYSBla2xlXHJcbiAgICAgICAgdGhpcy5jYXRhbG9nTWF0Y2hMaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFF0eTogbGluZS5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgIG9wZW5RdHk6IGxpbmUucXVhbnRpdHksXHJcbiAgICAgICAgICAgICAgICBvYmpUeXBlOiAtMSwgLy8gS2F0YWxvZyBlxZ9sZcWfdGlybWUgacWfYXJldGlcclxuICAgICAgICAgICAgICAgIGRvY0VudHJ5OiAwLFxyXG4gICAgICAgICAgICAgICAgZG9jTnVtOiAwLFxyXG4gICAgICAgICAgICAgICAgbnVtQXRDYXJkOiAnJyxcclxuICAgICAgICAgICAgICAgIGxpbmVOdW06IGxpbmUubGluZU51bWJlcixcclxuICAgICAgICAgICAgICAgIGRvY0RhdGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgZG9jRHVlRGF0ZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtQ29kZTogbGluZS5jYXRhbG9nSXRlbUNvZGUsXHJcbiAgICAgICAgICAgICAgICBkc2NyaXB0aW9uOiBsaW5lLnhtbEl0ZW1OYW1lLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogbGluZS51bml0Q29kZSxcclxuICAgICAgICAgICAgICAgIGZyZWVUeHQ6IGxpbmUudGF4Q29kZSxcclxuICAgICAgICAgICAgICAgIHVuaXRQcmljZTogbGluZS51bml0UHJpY2UgPyArbGluZS51bml0UHJpY2UgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgY2FyZENvZGU6ICcnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yQ2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmNhdGFsb2dNYXRjaExpbmVzLmxlbmd0aCArIFwiIHNhdMSxciBla2xlbmRpLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNYW51ZWwgc2F0xLFybGFyxLEgZG9jdW1lbnQgbGluZXMnYSBla2xlXHJcbiAgICBhZGRNYW51YWxMaW5lc1RvRG9jdW1lbnQoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRMaW5lcyA9IHRoaXMubWFudWFsTGluZXMuZmlsdGVyKGwgPT4gbC5zZWxlY3RlZCk7XHJcblxyXG4gICAgICAgIGlmIChzZWxlY3RlZExpbmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLndhcm4oXCJFbiBheiBiaXIgc2F0xLFyIHNlw6dpbml6LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVMO8bSBzYXTEsXJsYXIgc2XDp2lsbWVsaSAtIFhNTCBzYXTEsXIgc2F5xLFzxLEgaWxlIGXFn2xlxZ9tZWxpXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMubGVuZ3RoICE9PSB0aGlzLm1hbnVhbExpbmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiWE1MIHNhdMSxciBzYXnEsXPEsSBpbGUgc2XDp2lsZW4gc2F0xLFyIHNhecSxc8SxIGXFn2xlxZ9taXlvci4gVMO8bSBzYXTEsXJsYXIgacOnaW4ga2FsZW0gc2XDp2ltaSB5YXDEsWxtYWzEsWTEsXIuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBlbXB0eUl0ZW1MaW5lcyA9IHNlbGVjdGVkTGluZXMuZmlsdGVyKGwgPT4gIWwuaXRlbUNvZGUpO1xyXG4gICAgICAgIGlmIChlbXB0eUl0ZW1MaW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJUw7xtIHNhdMSxcmxhciBpw6dpbiBrYWxlbSBrb2R1IHNlw6dpbml6LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZWN0ZWRMaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFF0eTogbGluZS5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgIG9wZW5RdHk6IGxpbmUucXVhbnRpdHksXHJcbiAgICAgICAgICAgICAgICBvYmpUeXBlOiAwLCAvLyBNYW51ZWwga2FsZW0gacWfYXJldGlcclxuICAgICAgICAgICAgICAgIGRvY0VudHJ5OiAwLFxyXG4gICAgICAgICAgICAgICAgZG9jTnVtOiAwLFxyXG4gICAgICAgICAgICAgICAgbnVtQXRDYXJkOiAnJyxcclxuICAgICAgICAgICAgICAgIGxpbmVOdW06IGxpbmUubGluZU51bWJlcixcclxuICAgICAgICAgICAgICAgIGRvY0RhdGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgZG9jRHVlRGF0ZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtQ29kZTogbGluZS5pdGVtQ29kZSxcclxuICAgICAgICAgICAgICAgIGRzY3JpcHRpb246IGxpbmUuaXRlbU5hbWUsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgICAgICAgIGZyZWVUeHQ6IGxpbmUudGF4Q29kZSxcclxuICAgICAgICAgICAgICAgIHVuaXRQcmljZTogbGluZS51bml0UHJpY2UsXHJcbiAgICAgICAgICAgICAgICBjYXJkQ29kZTogJydcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JNYW51YWxMaW5lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKHNlbGVjdGVkTGluZXMubGVuZ3RoICsgXCIgc2F0xLFyIGVrbGVuZGkuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrQm94Q2hhbmdlZChldmVudCkge1xyXG5cclxuICAgICAgICBsZXQgZm9ybUNvbnRyb2xzID0gdGhpcy5mb3JtUmVzcG9uc2UuY29udHJvbHNcclxuICAgICAgICB2YXIgaWQgPSBldmVudC50YXJnZXQuaWQ7XHJcbiAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgncmVzcG9uc2VDaGVjaycpIGFzIE5vZGVMaXN0T2Y8SFRNTElucHV0RWxlbWVudD47XHJcbiAgICAgICAgY2hlY2tib3hlcy5mb3JFYWNoKGNoZWNrYm94ID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoZWNrYm94LmlkICE9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tib3guY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xzW2NoZWNrYm94LmF0dHJpYnV0ZXNbXCJmb3JtY29udHJvbG5hbWVcIl0udmFsdWVdLnNldFZhbHVlKGNoZWNrYm94LmNoZWNrZWQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VSb3dzQ29sb3IoZSkge1xyXG5cclxuICAgICAgICBpZiAoZS5yb3dUeXBlID09IFwiZGF0YVwiKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoZS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgIT0gMClcclxuICAgICAgICAgICAgICAgIGUucm93RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBlLmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAxID8gXCIjM2ViZDYwXCIgOiBcIiNjYzRmNDVcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UmVjZWl2ZXJSZXNwb25zZU5hbWUocmVzcG9uc2VJZCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5pbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXAuZmluZCgoeCkgPT4geC5pZCA9PT0gcmVzcG9uc2VJZCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kaXNwbGF5TmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SWNvbkNsYXNzKHJlc3BvbnNlSWQpIHtcclxuICAgICAgICBpZiAocmVzcG9uc2VJZCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jbG9ja1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChyZXNwb25zZUlkID09IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiZmFzIGZhLWNoZWNrLWNpcmNsZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChyZXNwb25zZUlkID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiZmFzIGZhLXRpbWVzLWNpcmNsZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXREb2NPYmplY3ROYW1lKGRhdGEpIHtcclxuICAgICAgICBsZXQgb2JqTmFtZSA9ICgoZGF0YS5pc0RyYWZ0ID8gXCJUYXNsYWsgXCIgOiBcIlwiKSArIHRoaXMuaW52b2ljZU9iamVjdHNFbnVtTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT0gKGRhdGEuaXNEcmFmdCA/IGRhdGEucmVzb3VyY2VTdWJEb2NUeXBlIDogZGF0YS5yZXNvdXJjZURvY1R5cGUpKT8uZGlzcGxheU5hbWUpO1xyXG4gICAgICAgIGlmIChvYmpOYW1lID09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgICAgICByZXR1cm4gb2JqTmFtZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb25JbmJvdW5kU2VsZWN0aW9uQ2hhbmdlZChlKSB7XHJcbiAgICAgICAgY29uc3Qgcm93cyA9IGUuc2VsZWN0ZWRSb3dzRGF0YTtcclxuXHJcbiAgICAgICAgaWYgKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzVmFsaWRTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gxLDFnyBrdXJhbMSxXHJcbiAgICAgICAgY29uc3QgdmFsaWQgPSByb3dzLmV2ZXJ5KHggPT5cclxuICAgICAgICAgICAgISh4LnByb2ZpbGVJZCA9PSAnVElDQVJJRkFUVVJBJyAmJiB4LnN0YXR1cyA9PSA3MDAgJiYgeC5yZWNlaXZlclJlc3BvbnNlID09IDIpICYmXHJcbiAgICAgICAgICAgICh4Lmludm9pY2VUeXBlQ29kZSAhPT0gJ0lBREUnICYmXHJcbiAgICAgICAgICAgICAgICAoeC5zdGF0dXMgPT09IDYwMCB8fCB4LnN0YXR1cyA9PT0gNzAwKSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmhhc1ZhbGlkU2VsZWN0aW9uID0gdmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlTXVsdGlwbGVFbXB0eURyYWZ0cygpIHtcclxuICAgICAgICBsZXQgcmVxdWVzdER0b3M6IENvbm5lY3Rvck11bHRpcGxlRW1wdHlEcmFmdER0b1tdID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5ib3VuZEludm9pY2VSb3dzID0gdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dzRGF0YSgpO1xyXG5cclxuICAgICAgICBpZiAoIXNlbGVjdGVkSW5ib3VuZEludm9pY2VSb3dzIHx8IHNlbGVjdGVkSW5ib3VuZEludm9pY2VSb3dzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiTMO8dGZlbiBlbiBheiBiaXIga2F5xLF0IHNlw6dpbml6LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdmFsaWRSb3dzID0gc2VsZWN0ZWRJbmJvdW5kSW52b2ljZVJvd3MuZmlsdGVyKHggPT4geC5pbnZvaWNlVHlwZUNvZGUgIT09ICdJQURFJyAmJiAoeC5zdGF0dXMgPT09IDYwMCB8fCB4LnN0YXR1cyA9PT0gNzAwKSk7XHJcbiAgICAgICAgaWYgKHZhbGlkUm93cy5sZW5ndGggIT09IHNlbGVjdGVkSW5ib3VuZEludm9pY2VSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiTGlzdGUgacOnZXJpc2luZGUgZmF0dXJhIHRpcGkgJ0lBREUnIG9sYW4gdmV5YSBiZWxnZSBkdXJ1bXUgZW50ZWdyYXTDtnJkZW4gYWzEsW5kxLEgdmUgeWEgZW50ZWdyYXTDtnJkZW4geWFuxLF0bGFuZMSxIG9sbWF5YW4ga2F5xLF0bGFyIG1ldmN1dC5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZWxlY3RlZEluYm91bmRJbnZvaWNlUm93cy5zb21lKHggPT4geC5zdGF0dXMgPT09IDY1MCB8fCB4LnN0YXR1cyA9PT0gNzUwKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiTGlzdGVuaW4gacOnZXJpc2luZGUgZGFoYSDDtm5jZWRlbiB0YXNsYWsgYmVsZ2VzaSBvbHXFn3R1cnVsYW4gYmVsZ2VsZXIgYnVsdW5tYWt0YWTEsXIuIEtvbnRyb2wgZWRpbml6LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZWN0ZWRJbmJvdW5kSW52b2ljZVJvd3MuZm9yRWFjaChzZWxlY3RlZEluYm91bmRJbnZvaWNlID0+IHtcclxuICAgICAgICAgICAgbGV0IGRyYWZ0RG9jdW1lbnQ6IENvbm5lY3RvckRyYWZ0RG9jdW1lbnREdG8gPSB7XHJcbiAgICAgICAgICAgICAgICBkb2NFbnRyeTogbnVsbCxcclxuICAgICAgICAgICAgICAgIGRvY051bTogbnVsbCxcclxuICAgICAgICAgICAgICAgIGRvY0N1cnJlbmN5OiBzZWxlY3RlZEluYm91bmRJbnZvaWNlPy5kb2N1bWVudEN1cnJlbmN5Q29kZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGRvY09iamVjdENvZGU6IFwib1B1cmNoYXNlSW52b2ljZXNcIixcclxuICAgICAgICAgICAgICAgIGRvY0RhdGU6IHNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmlzc3VlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIHRheERhdGU6IHNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmlzc3VlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGRvY0R1ZURhdGU6IHNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnBheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZG9jUmF0ZTogKHNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUgPD0gMSB8fCBpc051bGxPckVtcHR5KHNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUpKVxyXG4gICAgICAgICAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5wcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlLFxyXG4gICAgICAgICAgICAgICAgY2FyZENvZGU6IHNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbj8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIG51bUF0Q2FyZDogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgdV9FRkFUTk86IHNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIHVfVVVJRDogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8udXVJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIHVfU0VORDogc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZVR5cGVDb2RlPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgdV9Qcm9maWxlSWQ6IHNlbGVjdGVkSW5ib3VuZEludm9pY2U/LnByb2ZpbGVJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50TGluZXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgYlBMX0lEQXNzaWduZWRUb0ludm9pY2U6IHRoaXMuaXNCcmFuY2hcclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRCcmFuY2hJZFxyXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmVxdWVzdER0b3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpbnZvaWNlSUQ6IHNlbGVjdGVkSW5ib3VuZEludm9pY2UuaWQsXHJcbiAgICAgICAgICAgICAgICBkcmFmdERvY3VtZW50OiBkcmFmdERvY3VtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBTZXJ2aXMgacOnZXJzaW5kZSBNdWhhdGFwIGtvbnRyb2zDvCBkZSB5YXDEsWzEsXlvclxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVNdWx0aXBsZUVtcHR5RHJhZnRzKHJlcXVlc3REdG9zKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWZ0UmVzdWx0cyA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0UG9wdXBWaXNpYmxlID0gdHJ1ZTsgLy8gcG9wdXAgYcOnxLFsxLFyXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvblJlc3VsdFBvcHVwQ2xvc2VkID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzdWx0UG9wdXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UuY2xlYXJTZWxlY3Rpb24oKTtcclxuICAgICAgICB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VSZXN1bHRQb3B1cCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc3VsdFBvcHVwVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkSW5jb21pbmdQREZNdWx0aXBsZSgpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZVxyXG4gICAgICAgICAgICAuZ2V0VmlzaWJsZVJvd3MoKVxyXG4gICAgICAgICAgICAuZmlsdGVyKGkgPT4gaS5pc1NlbGVjdGVkID09IHRydWUpXHJcbiAgICAgICAgICAgIC5tYXAocCA9PiBwLmRhdGEuaWQpO1xyXG5cclxuICAgICAgICBpZiAoaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLndhcm4oJ0zDvHRmZW4gZW4gYXogYmlyIGZhdHVyYSBzZcOnaW5pei4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldEluY29taW5nSW52b2ljZVBkZnNNdWx0aXBsZShpZHMpLnN1YnNjcmliZSgoZGF0YTogQmxvYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi96aXAnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgICBhLmRvd25sb2FkID0gJ0dlbGVuRmF0dXJhbGFyLScgKyB0aGlzLmdldFppcERhdGUoKSArICcuemlwJztcclxuICAgICAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZG93bmxvYWRQREZNdWx0aXBsZSgpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIGxldCBpZHM6IEFycmF5PHsgaWQ6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0SW52b2ljZVBkZnNNdWx0aXBsZShpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihkYXRhKTtcclxuICAgICAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ppcCcgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyDEsG5kaXJtZVxyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgICBhLmRvd25sb2FkID0gJ0ZhdHVyYWxhci0nICsgdGhpcy5nZXRaaXBEYXRlKCkgKyAnLnppcCc7XHJcbiAgICAgICAgICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5CcmFuY2hQb3B1cCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNCcmFuY2gpIHtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVNdWx0aXBsZUVtcHR5RHJhZnRzKCk7IC8vIMWfdWJlc2l6IGRpcmVrdFxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYnJhbmNoUG9wdXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtQnJhbmNoU2VsZWN0aW9uID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEJyYW5jaElkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJMw7x0ZmVuIMWfdWJlIHNlw6dpbml6LlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5icmFuY2hQb3B1cFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNyZWF0ZU11bHRpcGxlRW1wdHlEcmFmdHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93QWxsRmlsZXMocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlRmlsZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWRJbmJvdW5kSW52b2ljZUZpbGVzKHJlY29yZC5pZCk7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGVNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIERvd25sb2FkRmlsZShyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWRGaWxlQnlJZChyZWNvcmQuY29udGVudE1hc3RlcklkKS5zdWJzY3JpYmUoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXRlbS5taW1lVHlwZX07YmFzZTY0LCR7aXRlbS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHNvdXJjZTtcclxuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGAke2l0ZW0uZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkSW5ib3VuZFBERk11bHRpcGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKClcclxuICAgICAgICAgICAgLmZpbHRlcihyID0+IHIuaXNTZWxlY3RlZCAmJiByLnJvd1R5cGUgPT09ICdkYXRhJylcclxuICAgICAgICAgICAgLm1hcChyID0+IHIuZGF0YSk7XHJcblxyXG4gICAgICAgIGlmICghc2VsZWN0ZWRSb3dzIHx8IHNlbGVjdGVkUm93cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwiTMO8dGZlbiBlbiBheiBiaXIgZmF0dXJhIHNlw6dpbi5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBzZWxlY3RlZFJvd3MubWFwKHIgPT4gci5pZCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZVBkZnNNdWx0aXBsZShpZHMpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGRhdGEpO1xyXG4gICAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ppcCcgfSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgICBhLmRvd25sb2FkID0gJ0dlbGVuRmF0dXJhbGFyLScgKyB0aGlzLmdldFppcERhdGUoKSArICcuemlwJztcclxuICAgICAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFppcERhdGUoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICBjb25zdCBob3VycyA9IFN0cmluZyhkYXRlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgbWludXRlcyA9IFN0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBzZWNvbmRzID0gU3RyaW5nKGRhdGUuZ2V0U2Vjb25kcygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIHJldHVybiBgJHt5ZWFyfS4ke21vbnRofS4ke2RheX0tJHtob3Vyc30uJHttaW51dGVzfS4ke3NlY29uZHN9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcmludEluYm91bmRQREZNdWx0aXBsZSgpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpXHJcbiAgICAgICAgICAgIC5maWx0ZXIociA9PiByLmlzU2VsZWN0ZWQgJiYgci5yb3dUeXBlID09PSAnZGF0YScpXHJcbiAgICAgICAgICAgIC5tYXAociA9PiByLmRhdGEpO1xyXG5cclxuICAgICAgICBpZiAoIXNlbGVjdGVkUm93cyB8fCBzZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIkzDvHRmZW4gZW4gYXogYmlyIGZhdHVyYSBzZcOnaW4uXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpZHM6IHN0cmluZ1tdID0gc2VsZWN0ZWRSb3dzLm1hcChyID0+IHIuaWQpO1xyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0SW5ib3VuZEludm9pY2VQZGZzTWVyZ2VkKGlkcykuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGJ5dGVBcnJheVtpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG59IiwiPGFicC1wYWdlIFt0aXRsZV09XCInZURvbnVzdW06OkluYm91bmRJbnZvaWNlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJkb3dubG9hZEluYm91bmRQREZNdWx0aXBsZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1maWxlLXBkZi1vIG1lLTFcIj48L2k+XHJcbiAgICAgICAgVG9wbHUgUERGIMSwbmRpclxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cInByaW50SW5ib3VuZFBERk11bHRpcGxlKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXByaW50IG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgVG9wbHUgUERGIFlhemTEsXJcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uSW52b2ljZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cIm9wZW5CcmFuY2hQb3B1cCgpXCIgW2Rpc2FibGVkXT1cIiFoYXNWYWxpZFNlbGVjdGlvblwiPlxyXG5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvcHkgbWUtMVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkNyZWF0ZU11bHRpcGxlRW1wdHlEcmFmdHMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5JbnZvaWNlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwiZ2V0SW5ib3VuZEludm9pY2UoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkNoZWNrSW5ib3VuZEludm9pY2VzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8cD5FbnRlZ3JhdMO2cmRlbiBhbMSxbmFuIGZhdHVyYWxhcsSxIGxpc3RlbGV5ZW4gZWtyYW48L3A+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlIFtkYXRhU291cmNlXT1cImluYm91bmRJbnZvaWNlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCIgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCIgc3R5bGU9XCJoZWlnaHQ6IDc1dmg7XCJcclxuICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2VkKT1cIm9uSW5ib3VuZFNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkeG8tcGFnZXIgW3Zpc2libGVdPVwidHJ1ZVwiIFtzaG93SW5mb109XCJ0cnVlXCIgW2FsbG93ZWRQYWdlU2l6ZXNdPVwiWzUwLDEwMCwyMDBdXCIgW3Nob3dOYXZpZ2F0aW9uQnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tcGFnZXI+XHJcbiAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjUwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCIgc2hvd0NoZWNrQm94ZXNNb2RlPVwiYWx3YXlzXCI+XHJcbiAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWNob29zZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbZW5hYmxlZF09XCJ0cnVlXCIgbW9kZT1cInNlbGVjdFwiPjwvZHhvLWNvbHVtbi1jaG9vc2VyPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWdyb3VwLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIiBbYWxsb3dDb2x1bW5EcmFnZ2luZ109XCJ0cnVlXCI+PC9keG8tZ3JvdXAtcGFuZWw+XHJcbiAgICAgICAgPGR4by1ncm91cGluZyAjZXhwYW5kIFthdXRvRXhwYW5kQWxsXT1cImZhbHNlXCIgW2FsbG93Q29sbGFwc2luZ109XCJ0cnVlXCJcclxuICAgICAgICAgIFtjb250ZXh0TWVudUVuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWdyb3VwaW5nPlxyXG4gICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgW2FsbG93RXhwb3J0U2VsZWN0ZWREYXRhXT1cImZhbHNlXCI+PC9keG8tZXhwb3J0PlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWZpbHRlci1idWlsZGVyIFthbGxvd0hpZXJhcmNoaWNhbEZpZWxkc109XCJ0cnVlXCI+PC9keG8tZmlsdGVyLWJ1aWxkZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1wYW5lbD5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCIgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIFthbGxvd0hlYWRlckZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd0hpZGluZ109XCJmYWxzZVwiIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwib3BlcmF0aW9uVGVtcGxhdGVcIiBjYXB0aW9uPVwie3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPlxyXG4gICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlIFtkaXNhYmxlZF09XCJkaXNhYmxlZElkQ29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAge3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwidXBkYXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRlbGV0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImdldEludm9pY2VQcmV2aWV3KHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDYwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA2NTAgfHwgcm93LmRhdGEuc3RhdHVzID09IDc1MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNjgwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3ODAgfHwgcm93LmRhdGEuc3RhdHVzID09IDY3MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzcwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkdldFZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJvcGVuUmVzcG9uc2VNb2RhbChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnByb2ZpbGVJZCA9PSAnVElDQVJJRkFUVVJBJyAmJiByb3cuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpSZXNwb25zZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cIm9wZW5QYXJ0bmVyTW9kYWwocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHJvdy5kYXRhLnByb2ZpbGVJZCA9PSAnVElDQVJJRkFUVVJBJyAmJiByb3cuZGF0YS5zdGF0dXMgPT0gNzAwICAmJiByb3cuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09IDIpICYmIChyb3cuZGF0YS5zdGF0dXMgPT0gNjAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDApXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdXNlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpDcmVhdGVCdXNpbmVzc1BhcnRuZXInIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJvcGVuRHJhZnRGb3JtKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIShyb3cuZGF0YS5wcm9maWxlSWQgPT0gJ1RJQ0FSSUZBVFVSQScgJiYgcm93LmRhdGEuc3RhdHVzID09IDcwMCAgJiYgcm93LmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAyKSAmJiAocm93LmRhdGEuc3RhdHVzID09IDYwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6Q3JlYXRlRHJhZnREb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cIm9wZW5Eb2N1bWVudEZvcm0ocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHJvdy5kYXRhLnByb2ZpbGVJZCA9PSAnVElDQVJJRkFUVVJBJyAmJiByb3cuZGF0YS5zdGF0dXMgPT0gNzAwICAmJiByb3cuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09IDIpICYmIChyb3cuZGF0YS5zdGF0dXMgPT0gNjAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDApXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmlsZS10ZXh0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkNyZWF0ZURvY3VtZW50JyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwicHJvY2Vzc01hbnVhbChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiEocm93LmRhdGEucHJvZmlsZUlkID09ICdUSUNBUklGQVRVUkEnICYmIHJvdy5kYXRhLnN0YXR1cyA9PSA3MDAgICYmIHJvdy5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMikgJiYgKHJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMClcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1oYW5kLXBhcGVyLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6UHJvY2Vzc01hbnVhbCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dBbGxGaWxlcyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNjUwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3NTAgfHwgcm93LmRhdGEuc3RhdHVzID09IDY4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzgwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA2NzAgfHwgcm93LmRhdGEuc3RhdHVzID09IDc3MFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTaG93QWxsRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNzdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXNzdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlBheW1lbnREdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1dUlkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpVdUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpbnZvaWNlSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okludm9pY2VJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWNjb3VudGluZ1N1cHBsaWVyUGFydHlOYW1lXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6QWNjb3VudGluZ1N1cHBsaWVyUGFydHlOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja25cIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpBY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24nfGFicExvY2FsaXphdGlvbn19XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInN0YXR1c1wiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6U3RhdHVzJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwiaW5ib3VuZEludm9pY2VTdGF0dXNMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInJlc291cmNlRG9jTnVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY051bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cImRvY1R5cGVUZW1wbGF0ZVwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jVHlwZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jVHlwZSd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnZG9jVHlwZVRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICB7e2dldERvY09iamVjdE5hbWUoZGF0YS5kYXRhKX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcblxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInJlY2VpdmVyUmVzcG9uc2VcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlY2VpdmVyUmVzcG9uc2UnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cImljb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwiaW5ib3VuZEludm9pY2VSZWNlaXZlclJlc3BvbnNlTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnaWNvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwiZ2V0SWNvbkNsYXNzKGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlKVwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnY29sb3InOmRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09ICcxJyA/ICdncmVlbicgOiBkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAnMicgPyAncmVkJyA6ICdncmF5J31cIj48L2k+XHJcbiAgICAgICAgICB7e2dldFJlY2VpdmVyUmVzcG9uc2VOYW1lKGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlKX19XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInByb2ZpbGVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UHJvZmlsZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpbnZvaWNlVHlwZUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okludm9pY2VUeXBlQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGVnYWxNb25ldGFyeVRvdGFsUGF5YWJsZUFtb3VudFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UGF5YWJsZUFtb3VudCd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgZGF0YVR5cGU9XCJudW1iZXJcIiBmb3JtYXQ9XCIjLCMjMC4wMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2N1bWVudEN1cnJlbmN5Q29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jQ3VycmVuY3knfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY1JhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGRhdGFUeXBlPVwibnVtYmVyXCIgZm9ybWF0PVwiIywjIzAuMDBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaW5ib3VuZERvY3VtZW50Q3JlYXRlTG9nXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SW5ib3VuZERvY3VtZW50Q3JlYXRlTG9nJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9hYnAtcGFnZT5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lGb3JSZXNwb25zZVwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JSZXNwb25zZVwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ20nIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgJ2VEb251c3VtOjpTZW5kUmVzcG9uc2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVJlc3BvbnNlXCIgaWQ9XCJpbnZvaWNlLXJlc3BvbnNlXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpJZCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLWlkXCIgW2Rpc2FibGVkXT1cInRydWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlkXCIgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS11dWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpVdUlkJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtdXVpZFwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlVVVJRFwiIG1heGxlbmd0aD1cIjI1NlwiIGF1dG9mb2N1cz48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtYWNjZXB0XCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNBY2NlcHRlZFwiXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZXNwb25zZUNoZWNrXCIgKGNoYW5nZSk9XCJjaGVja0JveENoYW5nZWQoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS1hY2NlcHRcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpBY2NlcHQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS1yZWplY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJpc1JlamVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlc3BvbnNlQ2hlY2tcIiAoY2hhbmdlKT1cImNoZWNrQm94Q2hhbmdlZCgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLXJlamVjdFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlJlamVjdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiBmb3JtTmFtZT1cImludm9pY2UtcmVzcG9uc2VcIlxyXG4gICAgICAoY2xpY2spPVwic2VuZEludm9pY2VSZXNwb25zZShmYWxzZSlcIj5cclxuICAgICAge3sgJ2VEb251c3VtOjpSZWplY3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBmb3JtTmFtZT1cImludm9pY2UtcmVzcG9uc2VcIlxyXG4gICAgICAoY2xpY2spPVwic2VuZEludm9pY2VSZXNwb25zZSh0cnVlKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OkFjY2VwdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeUZvclBhcnRuZXJcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuRm9yUGFydG5lclwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ3hsJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6Q3JlYXRlQnVzaW5lc3NQYXJ0bmVyJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1QYXJ0bmVyXCIgaWQ9XCJjcmVhdGUtcGFydG5lclwiIChuZ1N1Ym1pdCk9XCJjcmVhdGVCdXNpbmVzc1BhcnRuZXIoKVwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmYWRlLWluLXRvcFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyMHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lck5hbWUnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItbmFtZVwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBtYXhsZW5ndGg9XCIyNTZcIiBhdXRvZm9jdXM+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItdmtuXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyVktOJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXZrblwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwidmtuXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItcGFydG5lci1hZGQtaWRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJBZGRpdGlvbmFsSWQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItcGFydG5lci1hZGQtaWRcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJBZGRJZFwiXHJcbiAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWN1cnJlbmN5XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyQ3VycmVuY3knfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItY3VycmVuY3lcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJDdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiIGF1dG9mb2N1cz48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci13ZWItc2l0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lcldlYlNpdGUnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItd2ViLXNpdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyV2ViU2l0ZVVSSVwiXHJcbiAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXNlcmllc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lclNlcmllcyd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtZHJvcC1kb3duLWJveCBbKHZhbHVlKV09XCJzZXJpYWxHcmlkQm94VmFsdWVcIiBbKG9wZW5lZCldPVwiaXNTZXJpYWxHcmlkQm94T3BlbmVkXCIgdmFsdWVFeHByPVwic2VyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgW2RlZmVyUmVuZGVyaW5nXT1cImZhbHNlXCIgW2Rpc3BsYXlFeHByXT1cInNlcmlhbEdyaWRCb3hfZGlzcGxheUV4cHJcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlRG9udXN1bTo6U2VsZWN0QVZhbHVlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTZXJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZVNlcmllc1wiXHJcbiAgICAgICAgICAgICAgICAgIChvbk9wdGlvbkNoYW5nZWQpPVwib25TZXJpYWxHcmlkQm94T3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZVNlcmllc1wiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW2hlaWdodF09XCIyNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzZXJpYWxHcmlkQm94VmFsdWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic2VyaWVzXCIgY2FwdGlvbj1cIlNlcmlcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibmFtZVwiIGNhcHRpb249XCJBZFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwic2luZ2xlXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaW5maW5pdGVcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2R4LWRyb3AtZG93bi1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWdyb3Vwc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckdyb3VwJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItZ3JvdXBzXCIgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUdyb3Vwc1wiIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckdyb3VwXCIgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nR3JvdXBzXCIgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiIGF1dG9mb2N1cz48L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdHcm91cHNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxkeC1kcm9wLWRvd24tYm94IFsodmFsdWUpXT1cImdyb3VwR3JpZEJveFZhbHVlXCIgWyhvcGVuZWQpXT1cImlzR3JvdXBHcmlkQm94T3BlbmVkXCIgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkZWZlclJlbmRlcmluZ109XCJmYWxzZVwiIFtkaXNwbGF5RXhwcl09XCJncm91cEdyaWRCb3hfZGlzcGxheUV4cHJcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlRG9udXN1bTo6U2VsZWN0QVZhbHVlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJHcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlR3JvdXBzXCJcclxuICAgICAgICAgICAgICAgICAgKG9uT3B0aW9uQ2hhbmdlZCk9XCJvbkdyb3VwR3JpZEJveE9wdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVHcm91cHNcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtoZWlnaHRdPVwiMjUwXCJcclxuICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm93S2V5cyldPVwiZ3JvdXBHcmlkQm94VmFsdWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY29kZVwiIGNhcHRpb249XCJLb2RcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibmFtZVwiIGNhcHRpb249XCJBZFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwic2luZ2xlXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaW5maW5pdGVcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2R4LWRyb3AtZG93bi1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWFjY291bnRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJCYW5rQWNjb3VudCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWFjY291bnRcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlQWNjb3VudHNcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQWNjb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ0FjY291bnRzXCIgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ0FjY291bnRzXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgc3RhcnQtNTAgdHJhbnNsYXRlLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2VEb251c3VtOjpMb2FkaW5nJ3xhYnBMb2NhbGl6YXRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZHgtZHJvcC1kb3duLWJveCBbKHZhbHVlKV09XCJhY2NvdW50R3JpZEJveFZhbHVlXCIgWyhvcGVuZWQpXT1cImlzQWNjb3VudEdyaWRCb3hPcGVuZWRcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgW2RlZmVyUmVuZGVyaW5nXT1cImZhbHNlXCIgW2Rpc3BsYXlFeHByXT1cImFjY291bnRHcmlkQm94X2Rpc3BsYXlFeHByXCIgW2Ryb3BEb3duT3B0aW9uc109XCJ7IHdpZHRoOiA3NTAgfVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpTZWxlY3RBVmFsdWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckFjY291bnRcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUFjY291bnRzXCJcclxuICAgICAgICAgICAgICAgICAgKG9uT3B0aW9uQ2hhbmdlZCk9XCJvbkFjY291bnRHcmlkQm94T3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUFjY291bnRzXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbaGVpZ2h0XT1cIjI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvd0tleXMpXT1cImFjY291bnRHcmlkQm94VmFsdWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaWRcIiBjYXB0aW9uPVwiS29kXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInRleHRcIiBjYXB0aW9uPVwiQWRcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNlbGVjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImluZmluaXRlXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtlbmFibGVkXT1cInRydWVcIiBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgICAgPC9keC1kcm9wLWRvd24tYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItbWFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lck1haWwnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJFbWFpbFwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItY291bnRyeVwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVDb3VudHJpZXNcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cIm5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJDb3VudHJ5XCIgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0U3RhdGVzKClcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nQ291bnRyaWVzXCIgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzPjwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ0NvdW50cmllc1wiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHN0YXJ0LTUwIHRyYW5zbGF0ZS1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydlRG9udXN1bTo6TG9hZGluZyd8YWJwTG9jYWxpemF0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWNvdW50cnlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlBhcnRuZXJDb3VudHJ5JyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1kcm9wLWRvd24tYm94IFsodmFsdWUpXT1cImNvdW50cnlHcmlkQm94VmFsdWVcIiBbKG9wZW5lZCldPVwiaXNDb3VudHJ5R3JpZEJveE9wZW5lZFwiIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZWZlclJlbmRlcmluZ109XCJmYWxzZVwiIFtkaXNwbGF5RXhwcl09XCJjb3VudHJ5R3JpZEJveF9kaXNwbGF5RXhwclwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZURvbnVzdW06OlNlbGVjdEFWYWx1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ291bnRyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVDb3VudHJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvbk9wdGlvbkNoYW5nZWQpPVwib25Db3VudHJ5R3JpZEJveE9wdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUNvdW50cmllc1wiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW2hlaWdodF09XCIyNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvd0tleXMpXT1cImNvdW50cnlHcmlkQm94VmFsdWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjb2RlXCIgY2FwdGlvbj1cIkNvZGVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJuYW1lXCIgY2FwdGlvbj1cIk5hbWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwic2luZ2xlXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImluZmluaXRlXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kcm9wLWRvd24tYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyU3RhdGUnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItc3RhdGVcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlU3RhdGVzXCIgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJuYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyU3RhdGVcIiBtYXhsZW5ndGg9XCIyNTZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdTdGF0ZXNcIiBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgYXV0b2ZvY3VzPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdTdGF0ZXNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkeC1kcm9wLWRvd24tYm94IFsodmFsdWUpXT1cInN0YXRlR3JpZEJveFZhbHVlXCIgWyhvcGVuZWQpXT1cImlzU3RhdGVHcmlkQm94T3BlbmVkXCIgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RlZmVyUmVuZGVyaW5nXT1cImZhbHNlXCIgW2Rpc3BsYXlFeHByXT1cInN0YXRlR3JpZEJveF9kaXNwbGF5RXhwclwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZURvbnVzdW06OlNlbGVjdEFWYWx1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAob25PcHRpb25DaGFuZ2VkKT1cIm9uU3RhdGVHcmlkQm94T3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlU3RhdGVzXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbaGVpZ2h0XT1cIjI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm93S2V5cyldPVwic3RhdGVHcmlkQm94VmFsdWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjb2RlXCIgY2FwdGlvbj1cIkNvZGVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJuYW1lXCIgY2FwdGlvbj1cIk5hbWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwic2luZ2xlXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImluZmluaXRlXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kcm9wLWRvd24tYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXppcGNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJaaXBjb2RlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXppcGNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyWmlwQ29kZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJDaXR5J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWNpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ2l0eVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWNvdW50eVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckNvdW50eSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1jb3VudHlcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ291bnR5XCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItc3RyZWV0XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyU3RyZWV0J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXN0cmVldFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTdHJlZXRcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckJsb2NrJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWJsb2NrXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckJsb2NrXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5Rm9yUGFydG5lclwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgZm9ybT1cImNyZWF0ZS1wYXJ0bmVyXCI+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6Q3JlYXRlQnVzaW5lc3NQYXJ0bmVyJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yRG9jdW1lbnRcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuRm9yRG9jdW1lbnRcIiBbb3B0aW9uc109XCJ7IHNpemU6ICd4bCcgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoaXNEcmFmdCA/ICdlRG9udXN1bTo6Q3JlYXRlRHJhZnQnIDogJ2VEb251c3VtOjpDcmVhdGVEb2N1bWVudCcpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybURvY3VtZW50XCIgaWQ9XCJjcmVhdGUtZG9jdW1lbnRcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkXCI+IC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj4gLS0+XHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm10LTNcIj4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6UGFydG5lclZLTid8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1kcmFmdC12a25cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtbGFiZWxcIj4ge3snZURvbnVzdW06Oklzc3VlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveCBpZD1cImNyZWF0ZS1kcmFmdC1pc3N1ZS1kYXRlXCIgW2Rpc2FibGVkXT1cInRydWVcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmlzc3VlRGF0ZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtZGF0ZS1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtbGFiZWxcIj4ge3snZURvbnVzdW06OlBhcnRuZXJOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLWRyYWZ0LXBhcnRuZXItbmFtZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eU5hbWVcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIiAqbmdJZj1cImlzQnJhbmNoXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtbGFiZWxcIj4ge3snZURvbnVzdW06OkF1dG9UYWtlRG9jQ3JlYXRlQnJhbmNoJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJjcmVhdGUtZHJhZnQtYnJhbmNoLW5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZEJyYW5jaFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJuYW1lXCIgdmFsdWVFeHByPVwiY29kZVwiIFtkYXRhU291cmNlXT1cImJyYW5jaGVzRGF0YVNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLWxhYmVsXCI+IHt7J2VEb251c3VtOjpJbnZvaWNlSWQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtZHJhZnQtaW52b2ljZS1pZFwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pbnZvaWNlSWRcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhEb2N1bWVudExpbmVzIFtkYXRhU291cmNlXT1cImRvY3VtZW50TGluZXNcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwiZmFsc2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWNob29zZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbZW5hYmxlZF09XCJ0cnVlXCIgbW9kZT1cInNlbGVjdFwiPjwvZHhvLWNvbHVtbi1jaG9vc2VyPlxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwidHJ1ZVwiIFthbGxvd0FkZGluZ109XCJmYWxzZVwiIFthbGxvd0RlbGV0aW5nXT1cInRydWVcIiBtb2RlPVwiY2VsbFwiIFt1c2VJY29uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tZWRpdGluZz5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJvYmpUeXBlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPYmplY3RUeXBlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwib2JqZWN0VHlwZXNMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwidGV4dFwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jTnVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NOdW0nfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibnVtQXRDYXJkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpOdW1BdENhcmQnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGluZU51bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TGluZU51bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXJkQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6Q2FyZENvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+IC0tPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0RhdGVcIiBkYXRhVHlwZT1cImRhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0RhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRHVlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXRlbUNvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZHNjcmlwdGlvblwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RHNjcmlwdGlvbid8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidGV4dFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6VGV4dCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZnJlZVR4dFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RnJlZVR4dCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3BlblF0eVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3BlblF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzZWxlY3RlZFF0eVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6U2VsZWN0ZWRRdHknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICA8IS0tIDwvZGl2PlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4taW5mb1wiIChjbGljayk9XCJvcGVuTWFudWFsTGluZU1vZGFsKClcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lGb3JNYW51YWxMaW5lXCI+XHJcbiAgICAgIE1hbnVlbCBLYWxlbSBFa2xlXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5DYXRhbG9nTWF0Y2hNb2RhbCgpXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5Rm9yQ2F0YWxvZ1wiPlxyXG4gICAgICBNdWhhdGFwIEthdGFsb2cgTm8gaWxlIFRhc2xhayBCZWxnZSBPbHXFn3R1clxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIChjbGljayk9XCJvcGVuT3BlbkRvY3VtZW50c0Zvcm0oKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlJlc291cmNlRG9jdW1lbnRzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvckRyYWZ0XCIgKGNsaWNrKT1cImNyZWF0ZURyYWZ0RG9jdW1lbnQoKVwiPlxyXG4gICAgICB7eyAoaXNEcmFmdCA/ICdlRG9udXN1bTo6Q3JlYXRlRHJhZnREb2N1bWVudCcgOiAnZURvbnVzdW06OkNyZWF0ZURvY3VtZW50JykgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPCEtLSBNYW51ZWwgS2FsZW0gRWtsZW1lIE1vZGFsIC0tPlxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yTWFudWFsTGluZVwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JNYW51YWxMaW5lXCIgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5NYW51ZWwgS2FsZW0gRWtsZW1lPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1zbVwiPlxyXG4gICAgICAgIDx0aGVhZCBjbGFzcz1cInRoZWFkLWxpZ2h0XCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiA0MHB4O1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cInRvZ2dsZUFsbE1hbnVhbExpbmVzKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoPkthbGVtIEtvZHU8L3RoPlxyXG4gICAgICAgICAgICA8dGg+S2FsZW0gVGFuxLFtxLE8L3RoPlxyXG4gICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+TWlrdGFyPC90aD5cclxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDEyMHB4O1wiPkJpcmltIEZpeWF0PC90aD5cclxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDE1MHB4O1wiPlZlcmdpIEdydWJ1PC90aD5cclxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+UGFyYSBCaXJpbWk8L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbGluZSBvZiBtYW51YWxMaW5lczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImxpbmUuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkeC1sb29rdXAgWyh2YWx1ZSldPVwibGluZS5pdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJzYXBJdGVtc1N0b3JlXCJcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwiaXRlbUNvZGVcIiB2YWx1ZUV4cHI9XCJpdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkthbGVtIGtvZHUgc2XDp2luaXouLi5cIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW21pblNlYXJjaExlbmd0aF09XCIwXCJcclxuICAgICAgICAgICAgICAgIFtzZWFyY2hUaW1lb3V0XT1cIjUwMFwiXHJcbiAgICAgICAgICAgICAgICBbZHJvcERvd25PcHRpb25zXT1cInsgd2lkdGg6IDQ1MCwgaGVpZ2h0OiA0MDAgfVwiXHJcbiAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU9XCJpdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uSXRlbUxvb2t1cENoYW5nZWQoJGV2ZW50LCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBpdGVtIG9mICdpdGVtVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHN0cm9uZz57e2l0ZW0uaXRlbUNvZGV9fTwvc3Ryb25nPiAtIHt7aXRlbS5pdGVtTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2R4LWxvb2t1cD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKHZhbHVlKV09XCJsaW5lLml0ZW1OYW1lXCIgW3JlYWRPbmx5XT1cImZhbHNlXCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkeC1udW1iZXItYm94IFsodmFsdWUpXT1cImxpbmUucXVhbnRpdHlcIiBbc2hvd1NwaW5CdXR0b25zXT1cImZhbHNlXCIgZm9ybWF0PVwiIywjIzAuIyNcIj48L2R4LW51bWJlci1ib3g+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8ZHgtbnVtYmVyLWJveCBbKHZhbHVlKV09XCJsaW5lLnVuaXRQcmljZVwiIFtzaG93U3BpbkJ1dHRvbnNdPVwiZmFsc2VcIiBmb3JtYXQ9XCIjLCMjMC4wMFwiPjwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkeC1sb29rdXAgWyh2YWx1ZSldPVwibGluZS50YXhDb2RlXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInRheEdyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cImNvZGVcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmVyZ2kgZ3J1YnUgc2XDp2luaXouLi5cIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRXhwcj1cIlsnY29kZScsJ25hbWUnXVwiXHJcbiAgICAgICAgICAgICAgICBbZHJvcERvd25PcHRpb25zXT1cInsgd2lkdGg6IDM1MCwgaGVpZ2h0OiAzMDAgfVwiXHJcbiAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU9XCJ0YXhUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBpdGVtIG9mICd0YXhUZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Ryb25nPnt7aXRlbS5jb2RlfX08L3N0cm9uZz4gLSB7e2l0ZW0ubmFtZX19ICh7e2l0ZW0ucmF0ZX19JSk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZHgtbG9va3VwPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsodmFsdWUpXT1cImxpbmUuY3VycmVuY3lDb2RlXCIgW3JlYWRPbmx5XT1cInRydWVcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibWFudWFsTGluZXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTNcIj5cclxuICAgICAgWE1MJ2RlIGZhdHVyYSBzYXTEsXLEsSBidWx1bmFtYWTEsS5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJpc01vZGFsT3BlbkZvck1hbnVhbExpbmUgPSBmYWxzZVwiPlxyXG4gICAgICBWYXpnZcOnXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZE1hbnVhbExpbmVzVG9Eb2N1bWVudCgpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIm1hbnVhbExpbmVzLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICBTYXTEsXJsYXLEsSBFa2xlXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjwhLS0gTXVoYXRhcCBLYXRhbG9nIE51bWFyYXPEsSBFxZ9sZcWfdGlybWUgTW9kYWwgLS0+XHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lGb3JDYXRhbG9nXCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvckNhdGFsb2dcIiBbb3B0aW9uc109XCJ7IHNpemU6ICd4bCcgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPk11aGF0YXAgS2F0YWxvZyBOdW1hcmFzxLEgRcWfbGXFn3Rpcm1lPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cImNhdGFsb2dNYXRjaExpbmVzXCJcclxuICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiPlxyXG5cclxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY2F0YWxvZ0l0ZW1Db2RlXCIgY2FwdGlvbj1cIkthbGVtIEtvZHVcIiBbd2lkdGhdPVwiMTIwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ4bWxJdGVtTmFtZVwiIGNhcHRpb249XCJLYWxlbSBUYW7EsW3EsVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY2F0YWxvZ1N1YnN0aXR1dGVcIiBjYXB0aW9uPVwiTXVoYXRhcCBLYXRhbG9nIFRhbsSxbcSxXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJtYXRjaGVkSXRlbUNvZGVcIiBjYXB0aW9uPVwiTXVoYXRhcCBLYXRhbG9nIEtvZHVcIiBbd2lkdGhdPVwiMTUwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpc01hdGNoZWRcIiBjYXB0aW9uPVwiRcWfbGXFn21lIER1cnVtdVwiIFt3aWR0aF09XCIxMzBcIiBjZWxsVGVtcGxhdGU9XCJtYXRjaFN0YXR1c1RlbXBsYXRlXCI+XHJcbiAgICAgIDwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbCBvZiAnbWF0Y2hTdGF0dXNUZW1wbGF0ZSdcIj5cclxuICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7J2NvbG9yJzogY2VsbC52YWx1ZSA/ICdncmVlbicgOiAncmVkJywgJ2ZvbnQtd2VpZ2h0JzogJ2JvbGQnfVwiPlxyXG4gICAgICAgICAge3sgY2VsbC52YWx1ZSA/ICdFdmV0JyA6ICdIYXnEsXInIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInF1YW50aXR5XCIgY2FwdGlvbj1cIk1pa3RhclwiIFt3aWR0aF09XCI4MFwiIGZvcm1hdD1cIiMsIyMwLiMjXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1bml0UHJpY2VcIiBjYXB0aW9uPVwiQmlyaW0gRml5YXRcIiBbd2lkdGhdPVwiMTAwXCIgZm9ybWF0PVwiIywjIzAuMDBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInRheENvZGVcIiBjYXB0aW9uPVwiVmVyZ2kgR3J1YnVcIiBbd2lkdGhdPVwiMTAwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1bml0Q29kZVwiIGNhcHRpb249XCLDlmzDp8O8IEJpcmltaVwiIFt3aWR0aF09XCI5MFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGlzY291bnRQZXJjZW50XCIgY2FwdGlvbj1cIsSwbmRpcmltICVcIiBbd2lkdGhdPVwiODBcIiBmb3JtYXQ9XCIjLCMjMC4jI1wiPjwvZHhpLWNvbHVtbj5cclxuICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJpc01vZGFsT3BlbkZvckNhdGFsb2cgPSBmYWxzZVwiPlxyXG4gICAgICBWYXpnZcOnXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZENhdGFsb2dMaW5lc1RvRG9jdW1lbnQoKVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvckNhdGFsb2dcIj5cclxuICAgICAgU2F0xLFybGFyxLEgRWtsZVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yT3BlbkRvY3NcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuRm9yT3BlbkRvY3NcIiBbb3B0aW9uc109XCJ7IHNpemU6ICd4bCcgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpPcGVuRG9jcycpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gaWQ9XCJvcGVuLWRvY3VtZW50c1wiPlxyXG4gICAgICA8IS0tIERldkV4dHJlbWUgVGFiIFBhbmVsIC0tPlxyXG4gICAgICA8ZHgtdGFiLXBhbmVsIFthbmltYXRpb25FbmFibGVkXT1cInRydWVcIiBbc3dpcGVFbmFibGVkXT1cInRydWVcIiBbbG9vcF09XCJmYWxzZVwiICN0YWJQYW5lbD5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OlB1cmNoYXNlT3JkZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1zaG9wcGluZy1jYXJ0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4UHVyY2hhc2VPcmRlckRvY3VtZW50cyBbZGF0YVNvdXJjZV09XCJwdXJjaGFzZU9yZGVyRG9jdW1lbnRzXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJmYWxzZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCIgc2hvd0NoZWNrQm94ZXNNb2RlPVwiYWx3YXlzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1lZGl0aW5nIFthbGxvd1VwZGF0aW5nXT1cImZhbHNlXCIgW2FsbG93QWRkaW5nXT1cImZhbHNlXCIgW2FsbG93RGVsZXRpbmddPVwiZmFsc2VcIiBtb2RlPVwiY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4by1lZGl0aW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NOdW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY051bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm51bUF0Q2FyZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TnVtQXRDYXJkJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGluZU51bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TGluZU51bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXJkQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6Q2FyZENvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRHVlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NEdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIml0ZW1Db2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJdGVtQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRzY3JpcHRpb25cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRzY3JpcHRpb24nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ0ZXh0XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpUZXh0J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZnJlZVR4dFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RnJlZVR4dCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm9wZW5RdHlcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok9wZW5RdHknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWl0ZW0+XHJcblxyXG4gICAgICAgIDxkeGktaXRlbSB0aXRsZT1cInt7ICdlRG9udXN1bTo6UHVyY2hhc2VEZXNwYXRjaCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBpY29uPVwiZmFzIGZhLXRydWNrXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4UHVyY2hhc2VEZXNwYXRjaERvY3VtZW50cyBbZGF0YVNvdXJjZV09XCJwdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJmYWxzZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiXHJcbiAgICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWNob29zZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbZW5hYmxlZF09XCJ0cnVlXCIgbW9kZT1cInNlbGVjdFwiPjwvZHhvLWNvbHVtbi1jaG9vc2VyPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwiZmFsc2VcIiBbYWxsb3dBZGRpbmddPVwiZmFsc2VcIiBbYWxsb3dEZWxldGluZ109XCJmYWxzZVwiIG1vZGU9XCJjZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NOdW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY051bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm51bUF0Q2FyZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TnVtQXRDYXJkJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGluZU51bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TGluZU51bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNhcmRDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpDYXJkQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0RhdGVcIiBkYXRhVHlwZT1cImRhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0RhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NEdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0R1ZURhdGUnfGFicExvY2FsaXphdGlvbn19XCIgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okl0ZW1Db2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZHNjcmlwdGlvblwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RHNjcmlwdGlvbid8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInRleHRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlRleHQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJmcmVlVHh0XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpGcmVlVHh0J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3BlblF0eVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3BlblF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4LXRhYi1wYW5lbD5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lGb3JPcGVuRG9jc1wiIChjbGljayk9XCJzZWxlY3RPcGVuRG9jdW1lbnRzKClcIj5cclxuICAgICAge3sgJ2VEb251c3VtOjpTZWxlY3REb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuXHJcbjxkeC1wb3B1cCBbKHZpc2libGUpXT1cInJlc3VsdFBvcHVwVmlzaWJsZVwiIHRpdGxlPVwie3snZURvbnVzdW06OkNyZWF0ZURyYWZ0UmVzdWx0cyd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChvbkhpZGluZyk9XCJvblJlc3VsdFBvcHVwQ2xvc2VkKClcIj5cclxuXHJcbiAgPGR4LWRhdGEtZ3JpZCBbZGF0YVNvdXJjZV09XCJkcmFmdFJlc3VsdHNcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIGhlaWdodD1cIjEwMCVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCIgW3dvcmRXcmFwRW5hYmxlZF09XCJ0cnVlXCI+XHJcblxyXG5cclxuICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzU3VjY2Vzc1wiIGNhcHRpb249XCJ7eyAnZURvbnVzdW06OlN0YXR1cycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxyXG4gICAgICBbY2VsbFRlbXBsYXRlXT1cIidzdGF0dXNUZW1wbGF0ZSdcIj5cclxuICAgIDwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ3N0YXR1c1RlbXBsYXRlJ1wiPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cImRhdGEudmFsdWVcIiBzdHlsZT1cImNvbG9yOiBncmVlbjsgZm9udC1zaXplOiAxOHB4O1wiPuKclDwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0YS52YWx1ZVwiIHN0eWxlPVwiY29sb3I6IHJlZDsgZm9udC1zaXplOiAxOHB4O1wiPuKcljwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImVmYXRub1wiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SW52b2ljZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiIFt3aWR0aF09XCIyMDBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkcmFmdERvY3VtZW50LmRvY0VudHJ5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY0VudHJ5J3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPC9keGktY29sdW1uPlxyXG4gICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZHJhZnREb2N1bWVudC5kb2NOdW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPC9keGktY29sdW1uPlxyXG4gICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZXJyb3JNZXNzYWdlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpFcnJvck1lc3NhZ2UnfGFicExvY2FsaXphdGlvbn19XCIgW3dpZHRoXT1cIjUwMFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgZHhUZW1wbGF0ZT1cImNlbGxcIiBsZXQtZGF0YT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IDEuNjsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjojYjAwMDIwXCIgW3RpdGxlXT1cImRhdGEudmFsdWVcIj5cclxuICAgICAgICAgIHt7IGRhdGEudmFsdWUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZHhpLWNvbHVtbj5cclxuXHJcbiAgPC9keC1kYXRhLWdyaWQ+XHJcblxyXG4gIDwhLS0gQUxUIEJVVE9OTEFSIC0tPlxyXG4gIDxkeGktdG9vbGJhci1pdGVtIHdpZGdldD1cImR4QnV0dG9uXCIgdG9vbGJhcj1cImJvdHRvbVwiIGxvY2F0aW9uPVwiYWZ0ZXJcIlxyXG4gICAgW29wdGlvbnNdPVwieyB0ZXh0OiAoJ2VEb251c3VtOjpPaycgfCBhYnBMb2NhbGl6YXRpb24pLCB0eXBlOiAnZGVmYXVsdCcsIG9uQ2xpY2s6IG9uUmVzdWx0UG9wdXBDbG9zZWQgfVwiPlxyXG4gIDwvZHhpLXRvb2xiYXItaXRlbT5cclxuXHJcbiAgPGR4aS10b29sYmFyLWl0ZW0gd2lkZ2V0PVwiZHhCdXR0b25cIiB0b29sYmFyPVwiYm90dG9tXCIgbG9jYXRpb249XCJhZnRlclwiXHJcbiAgICBbb3B0aW9uc109XCJ7ICB0ZXh0OiAoJ2VEb251c3VtOjpDbG9zZScgfCBhYnBMb2NhbGl6YXRpb24pLCAgdHlwZTogJ25vcm1hbCcsIG9uQ2xpY2s6IGNsb3NlUmVzdWx0UG9wdXAgfVwiPlxyXG4gIDwvZHhpLXRvb2xiYXItaXRlbT5cclxuXHJcbjwvZHgtcG9wdXA+XHJcblxyXG48ZHgtcG9wdXAgWyh2aXNpYmxlKV09XCJicmFuY2hQb3B1cFZpc2libGVcIiB0aXRsZT1cInt7ICdlRG9udXN1bTo6QnJhbmNoU2VsZWN0aW9uVGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XCJcclxuICBbd2lkdGhdPVwiNDAwXCIgW2hlaWdodF09XCIyNTBcIiBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIj5cclxuXHJcbiAgPGR4LXNlbGVjdC1ib3ggW2RhdGFTb3VyY2VdPVwiYnJhbmNoZXNEYXRhU291cmNlXCIgZGlzcGxheUV4cHI9XCJuYW1lXCIgdmFsdWVFeHByPVwiY29kZVwiIFsodmFsdWUpXT1cInNlbGVjdGVkQnJhbmNoSWRcIlxyXG4gICAgcGxhY2Vob2xkZXI9XCJ7eyAnZURvbnVzdW06OlNlbGVjdEJyYW5jaFBsYWNlaG9sZGVyJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPlxyXG4gIDwvZHgtc2VsZWN0LWJveD5cclxuXHJcbiAgPGR4aS10b29sYmFyLWl0ZW0gd2lkZ2V0PVwiZHhCdXR0b25cIiB0b29sYmFyPVwiYm90dG9tXCIgbG9jYXRpb249XCJhZnRlclwiIFtvcHRpb25zXT1cInsgXHJcbiAgICAgICAgIHRleHQ6ICgnZURvbnVzdW06OkNvbnRpbnVlJyB8IGFicExvY2FsaXphdGlvbiksIFxyXG4gICAgICAgICB0eXBlOiAnc3VjY2VzcycsIFxyXG4gICAgICAgICBvbkNsaWNrOiBjb25maXJtQnJhbmNoU2VsZWN0aW9uXHJcbiAgICAgIH1cIj5cclxuICA8L2R4aS10b29sYmFyLWl0ZW0+XHJcblxyXG48L2R4LXBvcHVwPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc0ZpbGVNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzRmlsZU1vZGFsT3BlblwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+e3sgJ2VEb251c3VtOjpJbnZvaWNlRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cImludm9pY2VGaWxlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgY2VsbFRlbXBsYXRlPVwiZmlsZU9wZXJhdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ2ZpbGVPcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBuZ2JEcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2cgbXItMVwiPjwvaT4ge3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cIkRvd25sb2FkRmlsZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWRvd25sb2FkXCI+PC9pPiB7eyAnZURvbnVzdW06OkRvd25sb2FkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIiBkYXRhRmllbGQ9XCJleHRyYUl0ZW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok5hbWUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImludm9pY2VGaWxlTmFtZUxvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPjwvZHhvLWxvb2t1cD5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPnt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPiJdfQ==
|