@sunbird-cb/toc 0.0.3-mauritius → 0.0.4-mauritius
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/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +2 -2
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +3 -5
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +5 -3
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +46 -26
- package/esm2022/lib/_services/widget-content.service.mjs +8 -8
- package/esm2022/lib/app-toc-lib.module.mjs +10 -5
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +20 -3
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +19 -3
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +22 -6
- package/esm2022/lib/models/user-profile.model.mjs +1 -1
- package/esm2022/lib/services/app-toc.service.mjs +5 -5
- package/esm2022/lib/services/discuss-utils.service.mjs +30 -43
- package/esm2022/lib/services/netcore.service.mjs +116 -46
- package/esm2022/lib/services/nps-grid.service.mjs +34 -22
- package/esm2022/lib/services/otp.service.mjs +63 -25
- package/esm2022/lib/services/profile-v2.service.mjs +47 -19
- package/esm2022/lib/services/user-profile.service.mjs +160 -35
- package/esm2022/lib/services/viewer-util.service.mjs +6 -6
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/sunbird-cb-toc.mjs +698 -373
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +1 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +1 -0
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +1 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +2 -0
- package/lib/models/user-profile.model.d.ts +87 -0
- package/lib/services/app-toc.service.d.ts +2 -2
- package/lib/services/discuss-utils.service.d.ts +5 -27
- package/lib/services/netcore.service.d.ts +16 -28
- package/lib/services/nps-grid.service.d.ts +11 -10
- package/lib/services/otp.service.d.ts +5 -10
- package/lib/services/profile-v2.service.d.ts +7 -10
- package/lib/services/user-profile.service.d.ts +35 -15
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/sunbird-cb-toc-0.0.4-mauritius.tgz +0 -0
- package/sunbird-cb-toc-0.0.3-mauritius.tgz +0 -0
|
@@ -227,7 +227,10 @@ export class ContentTocComponent {
|
|
|
227
227
|
}
|
|
228
228
|
if (changes && changes['playResourceId']) {
|
|
229
229
|
if (changes?.playResourceId?.previousValue !== changes?.playResourceId?.currentValue) {
|
|
230
|
-
if (this.viewerPage && this.
|
|
230
|
+
if (this.viewerPage && this.enableTranscriptionFlag) {
|
|
231
|
+
this.resourceIdentifier = this.playResourceId || this.viewerDataSvc?.resourceId;
|
|
232
|
+
this.subTitles = [];
|
|
233
|
+
this.vttLangArr = [];
|
|
231
234
|
this.parseVTT();
|
|
232
235
|
}
|
|
233
236
|
}
|
|
@@ -378,7 +381,6 @@ export class ContentTocComponent {
|
|
|
378
381
|
}
|
|
379
382
|
}
|
|
380
383
|
showAiTutorConfirmPopup() {
|
|
381
|
-
debugger;
|
|
382
384
|
this.raiseAIPopupStartTelemetry();
|
|
383
385
|
if (this.isEnrolled) {
|
|
384
386
|
this.fromAITutor = true;
|
|
@@ -830,4 +832,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
830
832
|
type: HostListener,
|
|
831
833
|
args: ['window:scroll', ['$event']]
|
|
832
834
|
}] } });
|
|
833
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQTRCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFakwsT0FBTyxFQUEwRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQU12SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUN4RyxPQUFPLEVBQWdDLHFCQUFxQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRS9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9wRCxNQUFNLE9BQU8sbUJBQW1CO0lBc0U5QixZQUNVLEtB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QkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBb1ZQLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIERvbWFpbkNvbmZTZXJ2aWNlLCBFdmVudFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBXc0V2ZW50cyB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgTG9hZENoZWNrU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvYWQtY2hlY2suc2VydmljZSdcbmltcG9ydCB7IE1hdExlZ2FjeVRhYkdyb3VwIGFzIE1hdFRhYkdyb3VwLCBNYXRMZWdhY3lUYWJDaGFuZ2VFdmVudCBhcyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS10YWJzJ1xuaW1wb3J0IHsgTnNEaXNjdXNzaW9uVjIgfSBmcm9tICdAc3VuYmlyZC1jYi9kaXNjdXNzaW9uLXYyJ1xuaW1wb3J0IHsgQWlUdXRvckNvbmZpcm1Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4vYWktdHV0b3ItY29uZmlybS1wb3B1cC9haS10dXRvci1jb25maXJtLXBvcHVwLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuaW1wb3J0IHsgdmlld2VyUm91dGVHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvdmlld2VyLXJvdXRlLXV0aWwnXG5pbXBvcnQgeyBBcHBUb2NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLXRvYy5zZXJ2aWNlJ1xuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FjdGlvbi5zZXJ2aWNlJ1xuaW1wb3J0IHsgVnR0RmlsZSB9IGZyb20gJ0Bwb2x5ZmxpeC92dHQtcGFyc2VyJ1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBWaWV3ZXJEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZpZXdlci1kYXRhLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXRUYWIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJ1xuaW1wb3J0IHsgU2FtdWhpa0NoYXJjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL3NhbXVoaWstY2hhcmNoYS5zZXJ2aWNlJ1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9fY29sbGVjdGlvbi1hcGknXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtY29udGVudC10b2MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC10b2MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LXRvYy5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIENvbnRlbnRUb2NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgdGFiQ2hhbmdlVmFsdWU6IGFueSA9ICcnXG4gIEBJbnB1dCgpIGNvbnRlbnQhOiBhbnlcbiAgQElucHV0KCkgY29udGVudFJlYWREYXRhITogYW55XG4gIEBJbnB1dCgpIGluaXRpYWxSb3V0ZURhdGE6IGFueVxuICBASW5wdXQoKSBjaGFuZ2VUYWIgPSBmYWxzZVxuICBASW5wdXQoKSBiYXNlQ29udGVudFJlYWREYXRhITogYW55XG4gIHJvdXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKVxuICBASW5wdXQoKSBjb250ZW50VGFiRmxhZyA9IHRydWVcbiAgQElucHV0KCkgcmVzdW1lRGF0YTogYW55IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgYmF0Y2hEYXRhOiAvKipOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlICovIGFueSB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIHNrZWxldG9uTG9hZGVyID0gZmFsc2VcbiAgQElucHV0KCkgdG9jU3RydWN0dXJlOiBhbnkgPSB7fVxuICBASW5wdXQoKSBwYXRoU2V0OiBhbnlcbiAgQElucHV0KCkgZnJvbVZpZXdlciA9IGZhbHNlXG4gIEBJbnB1dCgpIGhpZXJhcmNoeU1hcERhdGE6IGFueSA9IHt9XG4gIEBWaWV3Q2hpbGQoJ3N0aWNreU1lbnUnKSB0YWJFbGVtZW50ITogTWF0VGFiR3JvdXBcbiAgQFZpZXdDaGlsZHJlbihNYXRUYWIpIHRhYnMhOiBRdWVyeUxpc3Q8TWF0VGFiPlxuICBASW5wdXQoKSBjb25kaXRpb246IGFueVxuICBASW5wdXQoKSBrcGFycmF5OiBhbnlcbiAgQElucHV0KCkgc2VsZWN0ZWRCYXRjaERhdGE6IGFueVxuICBASW5wdXQoKSBjb25maWc6IGFueVxuICBASW5wdXQoKSBjb21wb25lbnROYW1lITogc3RyaW5nXG4gIEBJbnB1dCgpIGlzRW5yb2xsZWQhOiBib29sZWFuXG4gIEBJbnB1dCgpIHBsYXlSZXNvdXJjZUlkID0gJydcbiAgQElucHV0KCkgc2lkZU5hdkJhck9wZW5lZCA9IGZhbHNlXG4gIEBJbnB1dCgpIGxhbmd1YWdlTGlzdCA9IFtdXG4gIEBJbnB1dCgpIGxvY2tDZXJ0aWZpY2F0ZSA9IGZhbHNlXG4gIEBJbnB1dCgpIGZyb21NRE8gPSBmYWxzZVxuICBAT3V0cHV0KCkgcGxheVJlc3VtZUZvckFJID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBlbnJvbGxVc2VyVG9BSSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgdHJpZ2VyQ29tcGxldGlvblN1cnZleUZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcbiAgQE91dHB1dCgpIHJlc3VtZUNvbnRlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcblxuICBjb21tZW50SWQ/OiBzdHJpbmcgPSAnJ1xuICBzdGlja3kgPSBmYWxzZVxuICBtZW51UG9zaXRpb246IGFueVxuICBpc01vYmlsZSA9IGZhbHNlXG4gIHNlbGVjdGVkVGFiSW5kZXggPSAwXG4gIGRpc2N1c3NXaWRnZXREYXRhITogTnNEaXNjdXNzaW9uVjIuSUNvbW1lbnRXaWRnZXREYXRhXG4gIHRlYWNoZXJOb3Rlc0ZsYWcgPSBmYWxzZVxuICByZWZlcmVuY2VOb3Rlc0ZsYWcgPSBmYWxzZVxuICB2aWV3ZXJQYWdlID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy92aWV3ZXIvJykgPyB0cnVlIDogZmFsc2VcbiAgcmVzdW1lRGF0YUxpbms6IGFueVxuICBlbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gIGVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gZmFsc2VcbiAgY291cnNlQ2F0ZWdvcnkgPSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5XG4gIHN1YlRpdGxlcyQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIHJlc291cmNlSWRlbnRpZmllcjogYW55XG4gIHJlc291cmNlSWRlbnRpZmllciQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIHN1YlRpdGxlczogYW55ID0gW11cbiAga2V5d29yZFRvSGlnaGxpZ2h0OiBhbnkgPSAnJ1xuICBoaWdobGlnaHRDb25kaXRpb24gPSBmYWxzZVxuICB2dHRMYW5nQXJyOiBhbnkgPSBbXVxuICB0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPSAnZW4nXG4gIGRlZmF1bHRUcmFuc2NyaXB0TGFuZ3VhZ2UgPSAnZW4nXG4gIHRyYW5zcmlwdGlvbkxhbmd1YWdlU3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZTogYW55XG4gIGZyb21BSVR1dG9yID0gZmFsc2VcbiAgdG90YWxSZXNvdXJjZSA9IDBcbiAgc2Nvcm1Bc3Nlc3NtZW50Q291bnQgPSAwXG4gIHNob3dBSVR1dG9yUG9wdXAgPSBmYWxzZVxuICBmcm9tQUlTZWxlY3RlZFRhYkluZGV4ID0gZmFsc2VcbiAgaXNNb2JpbGVGb3JBSSA9IGZhbHNlXG4gIHRyYW5zY3JpcHRBY3RpdmVMYW5ndWFnZVRleHQgPSAnRW5nbGlzaCdcbiAgc2hvd0Fzc2lnbm1lbnRzVGFiID0gZmFsc2VcbiAgZW5hYmxlU2FtdWhpa0NoYXJjaGFUYWIgPSBmYWxzZVxuICBzYW11aGlrQ29uZmlnOiBhbnlcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2FkQ2hlY2tTZXJ2aWNlOiBMb2FkQ2hlY2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgdG9jU3ZjOiBBcHBUb2NTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9uU1ZDOiBBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBldmVudFN2YzogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyRGF0YVN2YzogVmlld2VyRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYW11aGlrQ2hhcmNoYVN2YzogU2FtdWhpa0NoYXJjaGFTZXJ2aWNlLFxuICAgIHB1YmxpYyBkb21haW5Db25mU2VydmljZTogRG9tYWluQ29uZlNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnlcblxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3IgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uYWxsKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdGhpcy5vbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKHRoaXMucm91dGUuc25hcHNob3Q/LmRhdGE/LmNvbnRlbnQ/LmRhdGE/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgICAgLy8gdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZy5haVR1dG9yPy5mb3JPcmc/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uZm9yT3JnLmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRoaXMub25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyh0aGlzLnJvdXRlLnNuYXBzaG90Py5kYXRhPy5jb250ZW50Py5kYXRhPy5jaGlsZHJlbiwgJ21pbWVUeXBlJywgWydhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmh0bWwtYXJjaGl2ZScsICdhcHBsaWNhdGlvbi92bmQuc3VuYmlyZC5xdWVzdGlvbnNldCcsICdhcHBsaWNhdGlvbi9qc29uJywgJ3RleHQveC11cmwnXSlcbiAgICAgIC8vIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cbiAgICAgaWYodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5MRUFSTklOR19QQVRIV0FZKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gZmFsc2VcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uYWxsKSB7XG4gICAgICAvLyB0aGlzLnJlc291cmNlSWRlbnRpZmllciQgPSB0aGlzLnRvY1N2Yy50cmFuc3JpcHRpb25JZGVudGlmaWVyLnN1YnNjcmliZSgodmFsdWU6YW55KT0+e1xuICAgICAgLy8gICBpZih2YWx1ZSAmJiAgdmFsdWU/LmlkZW50aWZpZXIpIHtcbiAgICAgIC8vICAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciA9IHZhbHVlPy5pZGVudGlmaWVyIC8vdmFsdWU/LmlkZW50aWZpZXIgLy8gZG9fMTEzODg5MTE5ODQ4OTA2NzUyMTE0N1xuICAgICAgLy8gICAgIHRoaXMucGFyc2VWVFQoKVxuICAgICAgLy8gICB9XG5cbiAgICAgIC8vIH0pXG5cbiAgICAgIHRoaXMuc3ViVGl0bGVzJCA9IHRoaXMudG9jU3ZjLnRyYW5zY3JpcHRpb25EYXRhJC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5rZXl3b3JkVG9IaWdobGlnaHQgPSB2YWx1ZVxuICAgICAgfSlcblxuICAgICAgdGhpcy50cmFuc3JpcHRpb25MYW5ndWFnZVN1YiA9IHRoaXMudG9jU3ZjLnRyYW5zcmlwdGlvbkFjdGl2ZUxhbmd1YWdlRGF0YU9iamVjdCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChsYW5ndmFsdWU6IGFueSkgPT4gY29uc29sZS5sb2coJ3RhcCBsYW5ndmFsdWU6JywgbGFuZ3ZhbHVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChsYW5ndmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChsYW5ndmFsdWUpIHtcbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24gJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmc/LmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgLy8gdGhpcy5yZXNvdXJjZUlkZW50aWZpZXIkID0gdGhpcy50b2NTdmMudHJhbnNyaXB0aW9uSWRlbnRpZmllci5zdWJzY3JpYmUoKHZhbHVlOmFueSk9PntcbiAgICAgIC8vICAgaWYodmFsdWUgJiYgIHZhbHVlPy5pZGVudGlmaWVyKSB7XG4gICAgICAvLyAgICAgdGhpcy5yZXNvdXJjZUlkZW50aWZpZXIgPSB2YWx1ZT8uaWRlbnRpZmllciAvL3ZhbHVlPy5pZGVudGlmaWVyIC8vIGRvXzExMzg4OTExOTg0ODkwNjc1MjExNDdcbiAgICAgIC8vICAgICB0aGlzLnBhcnNlVlRUKClcbiAgICAgIC8vICAgfVxuXG4gICAgICAvLyB9KVxuXG4gICAgICB0aGlzLnN1YlRpdGxlcyQgPSB0aGlzLnRvY1N2Yy50cmFuc2NyaXB0aW9uRGF0YSQuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMua2V5d29yZFRvSGlnaGxpZ2h0ID0gdmFsdWVcbiAgICAgIH0pXG5cbiAgICAgIHRoaXMudHJhbnNyaXB0aW9uTGFuZ3VhZ2VTdWIgPSB0aGlzLnRvY1N2Yy50cmFuc3JpcHRpb25BY3RpdmVMYW5ndWFnZURhdGFPYmplY3QkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgobGFuZ3ZhbHVlOiBhbnkpID0+IGNvbnNvbGUubG9nKCd0YXAgbGFuZ3ZhbHVlOicsIGxhbmd2YWx1ZSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgobGFuZ3ZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAobGFuZ3ZhbHVlKSB7XG4gICAgICAgICAgICAvLyB0aGlzLnJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBiYXRjaElkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5iYXRjaElkID9cbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuYmF0Y2hJZCA6ICcnXG4gICAgaWYgKGJhdGNoSWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDFcbiAgICB9XG4gICAgdGhpcy5jb21tZW50SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLmNvbW1lbnRJZCA/IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuY29tbWVudElkIDogJydcbiAgICBpZiAodGhpcy5jb21tZW50SWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDJcbiAgICB9XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy51dGlsaXR5U2VydmljZS5pc01vYmlsZVxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0ODApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVGb3JBSSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICB9XG4gICAgdGhpcy5tZW51UG9zaXRpb24gPSB0aGlzLnRhYkVsZW1lbnQuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRUb3BcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoYXN5bmMgKHBhcmFtczogYW55KSA9PiB7XG5cbiAgICAgIGxldCBmcm9tQUlUdXRvciA9IHBhcmFtcy5nZXQoJ2Zyb21BSVR1dG9yJylcblxuICAgICAgaWYgKChmcm9tQUlUdXRvciA9PT0gJ3RydWUnIHx8IGZyb21BSVR1dG9yID09PSB0cnVlKSAmJiB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYnNBcnJheSA9IHRoaXMudGFicz8udG9BcnJheSgpXG4gICAgICAgICAgbGV0IGluZGV4ID0gdGFic0FycmF5Py5maW5kSW5kZXgodGFiID0+IHRhYi50ZXh0TGFiZWwudHJpbSgpID09PSBcIkFJIFR1dG9yXCIudHJpbSgpKVxuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgdGhpcy5mcm9tQUlTZWxlY3RlZFRhYkluZGV4ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwMClcblxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXQgZ2V0Q3VycmVudFRpbWVJblVUQygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKVxuICAgIGNvbnN0IGlzb1N0cmluZyA9IGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKClcbiAgICByZXR1cm4gaXNvU3RyaW5nLnJlcGxhY2UoJ1onLCAnKzAwMDAnKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRTYW11aGlrQ29uZmlnKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNhbXVoaWtDb25maWcgPSBhd2FpdCB0aGlzLnNhbXVoaWtDaGFyY2hhU3ZjLmZldGNoQ29uZmlnRmlsZSgpLnRvUHJvbWlzZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB9XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciA9IHRoaXMudmlld2VyRGF0YVN2Yy5yZXNvdXJjZUlkXG5cbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5hbGwpIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24gJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmc/LmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZT8udXNlclByb2ZpbGU/LnJvb3RPcmdJZClcbiAgICApIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3IgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZy5haVR1dG9yPy5hbGwpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0aGlzLm9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHModGhpcy5jb250ZW50Py5jaGlsZHJlbiwgJ21pbWVUeXBlJywgWydhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmh0bWwtYXJjaGl2ZScsICdhcHBsaWNhdGlvbi92bmQuc3VuYmlyZC5xdWVzdGlvbnNldCcsICdhcHBsaWNhdGlvbi9qc29uJywgJ3RleHQveC11cmwnXSlcbiAgICAgIC8vIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3IgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uZm9yT3JnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3I/LmZvck9yZz8ubGVuZ3RoXG4gICAgICAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnLmFpVHV0b3I/LmZvck9yZz8uaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlPy51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRoaXMub25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyh0aGlzLmNvbnRlbnQ/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZih0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LkxFQVJOSU5HX1BBVEhXQVkpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ3BsYXlSZXNvdXJjZUlkJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzPy5wbGF5UmVzb3VyY2VJZD8ucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlcz8ucGxheVJlc291cmNlSWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICBpZiAodGhpcy52aWV3ZXJQYWdlICYmIHRoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZCAmJiB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnKSB7XG4gICAgICAgICAgdGhpcy5wYXJzZVZUVCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuY2hhbmdlVGFiICYmIGNoYW5nZXMuY2hhbmdlVGFiLmN1cnJlbnRWYWx1ZSAmJiAhdGhpcy5mcm9tQUlTZWxlY3RlZFRhYkluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAxXG4gICAgfVxuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEucGFnZURhdGEgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnBhZ2VEYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnBhZ2VEYXRhLmRhdGFcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmRpc2N1c3NXaWRnZXREYXRhKSB7XG4gICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhID0gdGhpcy5jb25maWcuZGlzY3Vzc1dpZGdldERhdGFcbiAgICAgIGlmICh0aGlzLmJhc2VDb250ZW50UmVhZERhdGEgJiYgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLmlkZW50aWZpZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLmNvbW1lbnRUcmVlRGF0YS5lbnRpdHlJZCkge1xuICAgICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudFRyZWVEYXRhLmVudGl0eUlkID0gdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLmlkZW50aWZpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24gJiYgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24ubmV3Q29tbWVudFJlcGx5KSB7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24ubmV3Q29tbWVudFJlcGx5LmNvbW1lbnRUcmVlRGF0YS5lbnRpdHlJZCA9IHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS5pZGVudGlmaWVyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXNFbnJvbGxlZCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNKSB7XG4gICAgICAgICAgdGhpcy5zaG93QXNzaWdubWVudHNUYWIgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5lbnJvbGxlZENvbnRlbnQgPSB0cnVlXG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudEJveC5wbGFjZWhvbGRlciA9ICdTdGFydCBhIGRpc2N1c3Npb24nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmVucm9sbGVkQ29udGVudCA9IGZhbHNlXG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudEJveC5wbGFjZWhvbGRlciA9ICdFbnJvbCB0byBhZGQgeW91ciBjb21tZW50cydcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbW1lbnRJZCkge1xuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLnNob3cgPSBmYWxzZVxuICAgICAgfVxuICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YSA9IHsgLi4udGhpcy5kaXNjdXNzV2lkZ2V0RGF0YSB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhICYmIHRoaXMuY29udGVudFJlYWREYXRhPy5ldmVudExpbmtlZD8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBvcmdJZCA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ3VzZXJQcm9maWxlLnVzZXJSb290T3JnLmlkJywgJycpXG4gICAgICBhd2FpdCB0aGlzLmdldFNhbXVoaWtDb25maWcoKVxuICAgICAgY29uc3QgZXZlbnRzTGlua2VkID0gdGhpcy5jb250ZW50UmVhZERhdGEuZXZlbnRMaW5rZWQgfHwgW11cbiAgICAgIGxldCBldmVudHNEYXRhOiBhbnkgPSBbXVxuICAgICAgdGhpcy5zYW11aGlrQ29uZmlnPy5zdHJpcHNbMF0udGFicy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICBlbGUucmVxdWVzdC5zZWFyY2hWNi5yZXF1ZXN0LmZpbHRlcnMuaWRlbnRpZmllciA9IGV2ZW50c0xpbmtlZFxuICAgICAgICBlbGUucmVxdWVzdC5zZWFyY2hWNi5yZXF1ZXN0LmZpbHRlcnMuY3JlYXRlZEZvciA9IFtvcmdJZF1cbiAgICAgICAgaWYgKGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZS5oYXNPd25Qcm9wZXJ0eSgnPj0nKSkge1xuICAgICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZVsnPj0nXSA9IHRoaXMuZ2V0Q3VycmVudFRpbWVJblVUQ1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGUucmVxdWVzdC5zZWFyY2hWNi5yZXF1ZXN0LmZpbHRlcnMuZW5kRGF0ZVRpbWUuaGFzT3duUHJvcGVydHkoJzwnKSkge1xuICAgICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZVsnPCddID0gdGhpcy5nZXRDdXJyZW50VGltZUluVVRDXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zYW11aGlrQ2hhcmNoYVN2Yy5nZXRTZWFyY2hWNlJlc3VsdHMoZWxlLnJlcXVlc3Quc2VhcmNoVjYpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5jb3VudCAmJiByZXMucmVzdWx0Py5FdmVudCAmJiByZXMucmVzdWx0LkV2ZW50Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGV2ZSA9IDA7IGV2ZSA8IHJlcy5yZXN1bHQuRXZlbnQ/Lmxlbmd0aDsgZXZlKyspIHtcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuRXZlbnRbZXZlXVsnY3JlYXRlZEZvciddICYmIHJlcy5yZXN1bHQuRXZlbnRbZXZlXVsnY3JlYXRlZEZvciddLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIHJlcy5yZXN1bHQuRXZlbnRbZXZlXVsncmVzb3VyY2VUeXBlJ10gPT09ICdTYW11aGlrIENoYXJjaGEnXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBldmVudHNEYXRhLnB1c2gocmVzLnJlc3VsdC5FdmVudFtldmVdWydjcmVhdGVkRm9yJ11bMF0pXG4gICAgICAgICAgICAgIGlmIChldmVudHNEYXRhLmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlU2FtdWhpa0NoYXJjaGFUYWIgPSB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhICYmIHRoaXMuY29udGVudFJlYWREYXRhLnJlZmVyZW5jZU5vZGVzKSB7XG4gICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YS5yZWZlcmVuY2VOb2Rlcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHVzZXJSb2xlczogU2V0PHN0cmluZz4gPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LnVzZXJSb2xlcyB8fCBuZXcgU2V0KClcbiAgICAgICAgbGV0IGhhc0VkdWNhdG9yUm9sZSA9IGZhbHNlXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgTUVOVE9SIHJvbGVcbiAgICAgICAgaWYgKHVzZXJSb2xlcy5oYXMoJ01FTlRPUicpIHx8XG4gICAgICAgICAgdXNlclJvbGVzLmhhcygnbWVudG9yJykgfHxcbiAgICAgICAgICB1c2VyUm9sZXMuaGFzKCdNZW50b3InKSkge1xuICAgICAgICAgIGhhc0VkdWNhdG9yUm9sZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGxvY2FsIHN0b3JhZ2UgZm9yIHN1cnZleSByZXNwb25zZSBvbmx5IGlmIFVSTCBjb250YWlucyAncHVibGljJyBvciAncHJldmlldz10cnVlJ1xuICAgICAgICBpZiAoIWhhc0VkdWNhdG9yUm9sZSAmJiB0aGlzLmZvclByZXZpZXcpIHtcbiAgICAgICAgICBjb25zdCBzdXJ2ZXlJZCA9IHRoaXMuZW52aXJvbm1lbnQucHVibGljQ29udGVudFN1cnZleUlkIHx8ICcnXG4gICAgICAgICAgY29uc3QgY291cnNlSWQgPSB0aGlzLmNvbnRlbnRSZWFkRGF0YT8uaWRlbnRpZmllciB8fCAnJ1xuICAgICAgICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBgc3VydmV5XyR7c3VydmV5SWR9XyR7Y291cnNlSWR9YFxuICAgICAgICAgIGNvbnN0IHN0b3JlZERhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KVxuXG4gICAgICAgICAgaWYgKHN0b3JlZERhdGEpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1cnZleVJlc3BvbnNlcyA9IEpTT04ucGFyc2Uoc3RvcmVkRGF0YSlcbiAgICAgICAgICAgICAgY29uc3QgZWR1Y2F0b3JRdWVzdGlvbiA9IHN1cnZleVJlc3BvbnNlcy5maW5kKChyZXNwb25zZTogYW55KSA9PlxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnF1ZXN0aW9uID09PSAnQXJlIHlvdSBhbiBFZHVjYXRvci9GYWN1bHR5IG1lbWJlcj8nXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKGVkdWNhdG9yUXVlc3Rpb24gJiYgZWR1Y2F0b3JRdWVzdGlvbi5hbnN3ZXIgPT09ICdZZXMnKSB7XG4gICAgICAgICAgICAgICAgaGFzRWR1Y2F0b3JSb2xlID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIHN1cnZleSBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZTonLCBlcnJvcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGVhY2hlck5vdGVzRmxhZyBpZiB1c2VyIGhhcyBlZHVjYXRvciByb2xlXG4gICAgICAgIGlmIChoYXNFZHVjYXRvclJvbGUpIHtcbiAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnJlc291cmNlQ2F0ZWdvcnkgJiYgaXRlbS5yZXNvdXJjZUNhdGVnb3J5ID09PSAnVGVhY2hlcnMgUmVzb3VyY2UnKSB7XG4gICAgICAgICAgICB0aGlzLnRlYWNoZXJOb3Rlc0ZsYWcgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5yZXNvdXJjZUNhdGVnb3J5ICYmIGl0ZW0ucmVzb3VyY2VDYXRlZ29yeSA9PT0gJ1JlZmVyZW5jZSBSZXNvdXJjZScpIHtcbiAgICAgICAgICB0aGlzLnJlZmVyZW5jZU5vdGVzRmxhZyA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuc2lkZU5hdkJhck9wZW5lZCkge1xuICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQ4MCkge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUZvckFJKSB7XG4gICAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDgwKSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGVGb3JBSSA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGVGb3JBSSA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlU2Nyb2xsKCkge1xuICAgIGNvbnN0IHdpbmRvd1Njcm9sbCA9IHdpbmRvdy5zY3JvbGxZXG4gICAgaWYgKHdpbmRvd1Njcm9sbCA+PSAodGhpcy5tZW51UG9zaXRpb24gLSAoKHRoaXMuaXNNb2JpbGUpID8gOTYgOiAxMDQpKSkge1xuICAgICAgdGhpcy5zdGlja3kgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RpY2t5ID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBoYW5kbGVUYWJDaGFuZ2UoZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy50YWJDaGFuZ2VWYWx1ZSA9IGV2ZW50LnRhYlxuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGV2ZW50LmluZGV4XG4gICAgdGhpcy5sb2FkQ2hlY2tTZXJ2aWNlLmNvbXBvbmVudExvYWRlZCh0cnVlKVxuICAgIGlmIChldmVudCAmJiBldmVudC50YWIudGV4dExhYmVsID09PSAnQUkgVHV0b3InKSB7XG4gICAgICB0aGlzLnNob3dBSVR1dG9yUG9wdXAgPSB0cnVlXG4gICAgfVxuICAgIGlmIChldmVudCAmJiBldmVudC5pbmRleCA9PT0gMCAmJiBldmVudC50YWIudGV4dExhYmVsID09PSAnVHJhbnNjcmlwdGlvbicpIHtcbiAgICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uVGFiU3RhcnRUZWxlbWV0cnkoKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uVGFiSW50ZXJhY3RUZWxlbWV0cnkoKVxuICAgICAgfSwgMTAwMClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25UYWJTdG9wVGVsZW1ldHJ5KClcbiAgICB9XG5cbiAgfVxuXG4gIHNob3dBaVR1dG9yQ29uZmlybVBvcHVwKCkge1xuICAgIGRlYnVnZ2VyXG4gICAgdGhpcy5yYWlzZUFJUG9wdXBTdGFydFRlbGVtZXRyeSgpXG4gICAgaWYgKHRoaXMuaXNFbnJvbGxlZCkge1xuICAgICAgdGhpcy5mcm9tQUlUdXRvciA9IHRydWVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJhaXNlQUlQb3B1cEludGVyYWN0VGVsZW1ldHJ5KClcbiAgICAgIH0sIDEwMDApXG5cblxuICAgICAgdGhpcy5nZW5lcmF0ZVJlc3VtZURhdGFMaW5rTmV3KClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJhaXNlQUlQb3B1cEVuZFRlbGVtZXRyeSgpXG4gICAgICB9LCAxMDAwKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yYWlzZUFJUG9wdXBJbnRlcmFjdFRlbGVtZXRyeSgpXG4gICAgICB9LCAxMDAwKVxuICAgICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpXG5cbiAgICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICc0MjFweCdcbiAgICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0ge1xuICAgICAgICBlbnJvbGw6IHRoaXMuaXNFbnJvbGxlZFxuICAgICAgfVxuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBaVR1dG9yQ29uZmlybVBvcHVwQ29tcG9uZW50LCBkaWFsb2dDb25maWcpXG5cbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UgPT09ICdlbnJvbGwnKSB7XG4gICAgICAgICAgdGhpcy5mcm9tQUlUdXRvciA9IHRydWVcbiAgICAgICAgICB0aGlzLmdlbmVyYXRlUmVzdW1lRGF0YUxpbmtOZXcoKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlID09PSAnbmVlZFRvRW5yb2xsJykge1xuICAgICAgICAgIHRoaXMuZW5yb2xsVXNlckZvckFJVHV0b3IoKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmFpc2VBSVBvcHVwRW5kVGVsZW1ldHJ5KClcbiAgICAgIH0pXG4gICAgfVxuXG4gIH1cblxuICBnZW5lcmF0ZVJlc3VtZURhdGFMaW5rTmV3KCkge1xuICAgIGlmICh0aGlzLnJlc3VtZURhdGEgJiYgdGhpcy5jb250ZW50KSB7XG4gICAgICBsZXQgcmVzdW1lRGF0YVYyOiBhbnlcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQuY29tcGxldGlvblBlcmNlbnRhZ2UgPT09IDEwMCkge1xuICAgICAgICByZXN1bWVEYXRhVjIgPSB0aGlzLmdldFJlc3VtZURhdGFGcm9tTGlzdCgnc3RhcnQnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdW1lRGF0YVYyID0gdGhpcy5nZXRSZXN1bWVEYXRhRnJvbUxpc3QoKVxuICAgICAgfVxuICAgICAgaWYgKCFyZXN1bWVEYXRhVjIubWltZVR5cGUpIHtcbiAgICAgICAgcmVzdW1lRGF0YVYyLm1pbWVUeXBlID0gdGhpcy50b2NTdmMuZ2V0TWltZVR5cGUodGhpcy5jb250ZW50LCByZXN1bWVEYXRhVjIuaWRlbnRpZmllcilcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzdW1lRGF0YUxpbmsgPSB2aWV3ZXJSb3V0ZUdlbmVyYXRvcihcbiAgICAgICAgcmVzdW1lRGF0YVYyLmlkZW50aWZpZXIsXG4gICAgICAgIHJlc3VtZURhdGFWMi5taW1lVHlwZSxcbiAgICAgICAgdGhpcy5jb250ZW50LmlkZW50aWZpZXIsXG4gICAgICAgIHRoaXMuY29udGVudC5jb250ZW50VHlwZSxcbiAgICAgICAgdGhpcy5mb3JQcmV2aWV3LFxuICAgICAgICAnTGVhcm5pbmcgUmVzb3VyY2UnLFxuICAgICAgICB0aGlzLmdldEJhdGNoSWQoKSxcbiAgICAgICAgdGhpcy5jb250ZW50Lm5hbWUsXG4gICAgICApXG4gICAgICB0aGlzLmFjdGlvblNWQy5zZXRVcGRhdGVDb21wR3JvdXBPID0gdGhpcy5yZXN1bWVEYXRhTGlua1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmVzdW1lRGF0YUxpbmsudXJsXSwge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgIC4uLnRoaXMucmVzdW1lRGF0YUxpbmsucXVlcnlQYXJhbXMsXG4gICAgICAgICAgZnJvbUFJVHV0b3I6IHRoaXMuZnJvbUFJVHV0b3JcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXG4gICAgICAvLyAgIFt0aGlzLnJlc3VtZURhdGFMaW5rLnVybF0sXG4gICAgICAvLyAgIHtcbiAgICAgIC8vICAgICByZWxhdGl2ZVRvOiB0aGlzLnJlc3VtZURhdGFMaW5rLnVybCxcbiAgICAgIC8vICAgICBxdWVyeVBhcmFtczogdGhpcy5yZXN1bWVEYXRhTGluay5xdWVyeVBhcmFtcyxcbiAgICAgIC8vICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgLy8gICB9KVxuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxheVJlc3VtZUZvckFJLmVtaXQoKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzdW1lRGF0YUZyb21MaXN0KHR5cGU/OiBzdHJpbmcpOiBhbnkgfCB2b2lkIHtcbiAgICBjb25zdCByZXN1bWVDb3B5ID0gWy4uLnRoaXMucmVzdW1lRGF0YV1cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcblxuICAgICAgY29uc3QgbGFzdEl0ZW0gPSByZXN1bWVDb3B5ICYmIHJlc3VtZUNvcHkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+XG4gICAgICAgIG5ldyBEYXRlKGIubGFzdEFjY2Vzc1RpbWUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEubGFzdEFjY2Vzc1RpbWUpLmdldFRpbWUoKSkuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWRlbnRpZmllcjogbGFzdEl0ZW0uY29udGVudElkLFxuICAgICAgICBtaW1lVHlwZTogbGFzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzICYmIGxhc3RJdGVtLnByb2dyZXNzZGV0YWlscy5taW1lVHlwZSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZmlyc3RJdGVtID0gcmVzdW1lQ29weSAmJiByZXN1bWVDb3B5Lmxlbmd0aCAmJiByZXN1bWVDb3B5WzBdXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkZW50aWZpZXI6IGZpcnN0SXRlbS5jb250ZW50SWQsXG4gICAgICBtaW1lVHlwZTogZmlyc3RJdGVtLnByb2dyZXNzZGV0YWlscyAmJiBmaXJzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzLm1pbWVUeXBlLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRCYXRjaElkKCk6IHN0cmluZyB7XG4gICAgbGV0IGJhdGNoSWQgPSAnJ1xuICAgIGlmICh0aGlzLmJhdGNoRGF0YSAmJiB0aGlzLmJhdGNoRGF0YS5jb250ZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIHRoaXMuYmF0Y2hEYXRhLmNvbnRlbnQpIHtcbiAgICAgICAgYmF0Y2hJZCA9IGJhdGNoLmJhdGNoSWRcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJhdGNoSWRcbiAgfVxuXG4gIHJhaXNlQUlQb3B1cFN0YXJ0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiBcImFpLXR1dG9yLXRvYy1wYWdlXCIsIFwicGFnZWlkXCI6IGAvYXBwL3RvYy8ke3RoaXMuY29udGVudD8uaWRlbnRpZmllcn1gIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiAnL2FwcC90b2MnLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VBSVBvcHVwRW5kVGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiBcImFpLXR1dG9yLXRvYy1wYWdlXCIsIFwicGFnZWlkXCI6IGAvYXBwL3RvYy8ke3RoaXMuY29udGVudD8uaWRlbnRpZmllcn1gIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLlVubG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6ICcvYXBwL3RvYycsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZUFJUG9wdXBJbnRlcmFjdFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci10b2MtcGFnZVwiLCBcInBhZ2VpZFwiOiBgL2FwcC90b2MvJHt0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXJ9YCB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiAnL2FwcC90b2MnLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgZW5yb2xsVXNlckZvckFJVHV0b3IoKSB7XG4gICAgdGhpcy5lbnJvbGxVc2VyVG9BSS5lbWl0KClcbiAgfVxuXG4gIGFzeW5jIHBhcnNlVlRUKCkge1xuICAgIGxldCBpZGVudGlmaWVyID0gdGhpcy5yZXNvdXJjZUlkZW50aWZpZXJcbiAgICAvLyBjb25zb2xlLmxvZygnaWRlbnRpZmllci0tJywgaWRlbnRpZmllcilcbiAgICBhd2FpdCB0aGlzLnRvY1N2Yy5haUdldFJlc291cmNlVnR0RmlsZShpZGVudGlmaWVyKS5zdWJzY3JpYmUoYXN5bmMgKGRhdGFzOiBhbnkpID0+IHtcbiAgICAgIGxldCBkYXRhOiBhbnkgPSBkYXRhcz8uZGF0YVxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggJiYgZGF0YVswXVsndHJhbnNjcmlwdGlvbl91cmxzJ10gJiYgZGF0YVswXVsndHJhbnNjcmlwdGlvbl91cmxzJ10ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudnR0TGFuZ0FyciA9IGRhdGFbMF1bJ3RyYW5zY3JpcHRpb25fdXJscyddXG5cbiAgICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IHRydWVcbiAgICAgICAgLy8gbGV0IHVybCA9ICBkYXRhWzBdWyd0cmFuc2NyaXB0aW9uX3VybHMnXVswXVsndXJpJ11cbiAgICAgICAgdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPSB0aGlzLnZ0dExhbmdBcnIgJiYgdGhpcy52dHRMYW5nQXJyLmxlbmd0aCAmJiB0aGlzLnZ0dExhbmdBcnJbMF0gJiYgdGhpcy52dHRMYW5nQXJyWzBdWydkZWZhdWx0X2xhbmcnXSA/ICdlbicgOiAnZW4nXG4gICAgICAgIHRoaXMuZGVmYXVsdFRyYW5zY3JpcHRMYW5ndWFnZSA9IHRoaXMudnR0TGFuZ0FyciAmJiB0aGlzLnZ0dExhbmdBcnIubGVuZ3RoICYmIHRoaXMudnR0TGFuZ0FyclswXSAmJiB0aGlzLnZ0dExhbmdBcnJbMF1bJ2RlZmF1bHRfbGFuZyddID8gJ2VuJyA6ICdlbidcbiAgICAgICAgbGV0IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlID0gdGhpcy52dHRMYW5nQXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0/LmxhYmVsID09PSB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZVxuICAgICAgICB9KVxuICAgICAgICBpZiAoc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgJiYgc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSA9IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlWzBdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSA9IHRoaXMudnR0TGFuZ0FyclswXVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQXJyID0gdGhpcy52dHRMYW5nQXJyLmZpbHRlcihcbiAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLmxhYmVsID09PSB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZVxuICAgICAgICApXG4gICAgICAgIGxldCB1cmwgPSBmaWx0ZXJlZEFyci5sZW5ndGggPiAwID8gZmlsdGVyZWRBcnJbMF0udXJpIDogbnVsbFxuICAgICAgICAvL2xldCB1cmwgPSB0aGlzLnZ0dExhbmdBcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ubGFiZWwgPT09IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlKVswXVsndXJpJ11cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBWdHRGaWxlLmZyb21VcmwodXJsKVxuICAgICAgICAgIGxldCBibG9ja3M6IGFueSA9IGZpbGUuZ2V0QmxvY2tzKClcblxuICAgICAgICAgIHRoaXMuc3ViVGl0bGVzID0gYmxvY2tzXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b2NTdmMuY2hhbmdlVHJhbnNjcmlwdGlvbkxhbmd1YWdlRXZlbnQubmV4dCh7IGFjdGl2ZUxhbmc6IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlLCBsYW5nRGF0YTogdGhpcy52dHRMYW5nQXJyLCBsb2FkUGxheWVyOiB0cnVlIH0pXG5cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52dHRMYW5nQXJyID0gW11cbiAgICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IGZhbHNlXG4gICAgICB9XG5cbiAgICB9KVxuXG4gIH1cblxuICBhc3luYyByZW5kZXJTZWxlY3RlZExhbmd1YWdlVHJhbnNjcmlwdGlvbihfbGFuZ3ZhbHVlOiBhbnkpIHtcbiAgICAvLyB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9IHRoaXMuc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsXG4gICAgaWYgKHR5cGVvZiBfbGFuZ3ZhbHVlID09PSAnc3RyaW5nJyAmJiBfbGFuZ3ZhbHVlKSB7XG4gICAgICB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9IF9sYW5ndmFsdWVcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlID0gX2xhbmd2YWx1ZT8udmFsdWVcbiAgICAgIHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcbiAgICAgIHRoaXMudHJhbnNjcmlwdEFjdGl2ZUxhbmd1YWdlVGV4dCA9IF9sYW5ndmFsdWU/LnZhbHVlPy5sYW5ndWFnZVxuICAgIH1cbiAgICB0aGlzLnJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlU3RhcnRUZWxlbWV0cnkoKVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZUludGVyYWN0VGVsZW1ldHJ5KClcbiAgICB9KVxuICAgIGxldCBjdXJyZW50UGF0aCA9IHRoaXMudnR0TGFuZ0Fyci5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8ubGFiZWwgPT09IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlKVxuICAgIGlmIChjdXJyZW50UGF0aCAmJiBjdXJyZW50UGF0aC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgPSBjdXJyZW50UGF0aFswXVxuICAgIH1cbiAgICBjb25zdCBmaWxlID0gYXdhaXQgVnR0RmlsZS5mcm9tVXJsKGN1cnJlbnRQYXRoICYmIGN1cnJlbnRQYXRoWzBdPy51cmkpXG4gICAgbGV0IGJsb2NrczogYW55ID0gZmlsZS5nZXRCbG9ja3MoKVxuICAgIHRoaXMuc3ViVGl0bGVzID0gYmxvY2tzXG4gICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZVN0b3BUZWxlbWV0cnkoKVxuICAgIC8vIHRoaXMudG9jU3ZjLmNoYW5nZVRyYW5zY3JpcHRpb25MYW5ndWFnZUV2ZW50Lm5leHQoe2FjdGl2ZUxhbmc6IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlLCBsYW5nRGF0YTogdGhpcy52dHRMYW5nQXJyLCBsb2FkUGxheWVyOmZhbHNlfSlcblxuICB9XG5cbiAgb3BlblN1cnZleUZvcm1Qb3B1cChldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMudHJpZ2VyQ29tcGxldGlvblN1cnZleUZvcm0uZW1pdChldmVudClcbiAgfVxuXG4gIHBsYXlGcm9tU2xvdChzdWJ0aXRsZTogYW55KSB7XG4gICAgaWYgKHN1YnRpdGxlKSB7XG4gICAgICBsZXQgc3RhcnRUaW1lID0gc3VidGl0bGUuc3RhcnRUaW1lIC8gMTAwMFxuICAgICAgbGV0IGVuZFRpbWUgPSBzdWJ0aXRsZS5lbmRUaW1lIC8gMTAwMFxuICAgICAgdGhpcy50b2NTdmMucGxheVRyYW5zY3JpcHRpb25WaWRlby5uZXh0KHsgc3RhcnRUaW1lLCBlbmRUaW1lIH0pXG4gICAgfVxuICB9XG5cbiAgZm9ybWF0TXNUb1Z0dFRpbWUobXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdG90YWxTZWNvbmRzID0gTWF0aC5mbG9vcihtcyAvIDEwMDApXG4gICAgLy8gIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG1zICUgMTAwMDtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxTZWNvbmRzIC8gMzYwMClcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcigodG90YWxTZWNvbmRzICUgMzYwMCkgLyA2MClcbiAgICBjb25zdCBzZWNvbmRzID0gdG90YWxTZWNvbmRzICUgNjBcblxuICAgIGNvbnN0IHBhZCA9IChudW06IG51bWJlciwgc2l6ZTogbnVtYmVyKSA9PiBudW0udG9TdHJpbmcoKS5wYWRTdGFydChzaXplLCAnMCcpXG5cbiAgICAvLyByZXR1cm4gYCR7cGFkKGhvdXJzLCAyKX06JHtwYWQobWludXRlcywgMil9OiR7cGFkKHNlY29uZHMsIDIpfS4ke3BhZChtaWxsaXNlY29uZHMsIDMpfWA7XG4gICAgcmV0dXJuIGAke3BhZChob3VycywgMil9OiR7cGFkKG1pbnV0ZXMsIDIpfToke3BhZChzZWNvbmRzLCAyKX1gXG4gIH1cblxuICBvbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKGRhdGE6IGFueSwga2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChkYXRhW2ldICYmIGRhdGFbaV1bJ2NoaWxkcmVuJ10gJiYgZGF0YVtpXVsnY2hpbGRyZW4nXS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKGRhdGFbaV0/LmNoaWxkcmVuLCBrZXksIHZhbHVlKVxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB0aGlzLnRvdGFsUmVzb3VyY2UgPSB0aGlzLnRvdGFsUmVzb3VyY2UgKyAxXG4gICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcyhkYXRhW2ldW2tleV0pKSB7XG4gICAgICAgICAgLy8gdGhpcy5zaG93QUlUdXRvckZsYWcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNjb3JtQXNzZXNzbWVudENvdW50ID0gdGhpcy5zY29ybUFzc2Vzc21lbnRDb3VudCArIDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRvdGFsUmVzb3VyY2UgPT09IHRoaXMuc2Nvcm1Bc3Nlc3NtZW50Q291bnQpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbmFibGVBSVR1dG9yRmxhZ1xuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uVGFiU3RhcnRUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3Itdmlld2VyLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtdGFiJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5Mb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlVHJhbnNjcmlwdGlvblRhYkludGVyYWN0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiBcImFpLXR1dG9yLXZpZXdlci1wYWdlXCIsIFwicGFnZWlkXCI6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIHN1YlR5cGU6ICd0cmFuc2NyaXB0LXRhYicgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlVHJhbnNjcmlwdGlvblRhYlN0b3BUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3Itdmlld2VyLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtdGFiJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VTdGFydFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogdGhpcy50cmFuc2NyaXB0QWN0aXZlTGFuZ3VhZ2VUZXh0LCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC1sYW5ndWFnZScgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZUludGVyYWN0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiB0aGlzLnRyYW5zY3JpcHRBY3RpdmVMYW5ndWFnZVRleHQsIFwicGFnZWlkXCI6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIHN1YlR5cGU6ICd0cmFuc2NyaXB0LWxhbmd1YWdlJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VTdG9wVGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiB0aGlzLnRyYW5zY3JpcHRBY3RpdmVMYW5ndWFnZVRleHQsIFwicGFnZWlkXCI6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIHN1YlR5cGU6ICd0cmFuc2NyaXB0LWxhbmd1YWdlJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgY2xvc2VBSVBvcHVwKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuc2hvd0FJVHV0b3JQb3B1cCA9IGZhbHNlXG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAwXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucmVzb3VyY2VJZGVudGlmaWVyJCkge1xuICAgICAgdGhpcy5yZXNvdXJjZUlkZW50aWZpZXIkLnVuc3Vic2NyaWJlKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJUaXRsZXMkKSB7XG4gICAgICB0aGlzLnN1YlRpdGxlcyQudW5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRyYW5zcmlwdGlvbkxhbmd1YWdlU3ViKSB7XG4gICAgICB0aGlzLnRyYW5zcmlwdGlvbkxhbmd1YWdlU3ViLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cblxuICBjbGVhckNvbW1lbnRJZEZyb21VcmwoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFF1ZXJ5UGFyYW1zID0geyAuLi50aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIH1cbiAgICBkZWxldGUgY3VycmVudFF1ZXJ5UGFyYW1zLmNvbW1lbnRJZFxuICAgIHRoaXMuY29tbWVudElkID0gJydcbiAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLnNob3cgPSB0cnVlXG4gIH1cblxuICByZXN1bWVDb250ZW50Q2FsbCgpIHtcbiAgICB0aGlzLnJlc3VtZUNvbnRlbnQuZW1pdCgpXG4gIH1cbn0iLCI8IS0tICYmIChjb250ZW50Py5jb3Vyc2VDYXRlZ29yeSAhPT0gY291cnNlQ2F0ZWdvcnk/LkJMRU5ERURfUFJPR1JBTSkgLS0+XG48ZGl2IGNsYXNzPVwiYWktdHV0b3ItZ2V0LXN0YXJ0ZWRcIiAqbmdJZj1cIiF2aWV3ZXJQYWdlICYmIGVuYWJsZUFJVHV0b3JGbGFnICYmICFpc01vYmlsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0yXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9ib3QtY2hhdC1zbWFsbC5zdmdcIiBoZWlnaHQ9XCI2NHB4XCIgd2lkdGg9XCI2NHB4XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTJcIiA+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LXdlaWdodC02MDBcIj5HZXQgU3RhcnRlZCB3aXRoIEFJIFR1dG9yPC9wPlxuICAgICAgICAgICAgICAgIDxzcGFuPkdldCBpbnN0YW50IGV4cGxhbmF0aW9ucywgc3RlcC1ieS1zdGVwIGxlYXJuaW5nIGd1aWRhbmNlLCBhbmQgY3VzdG9taXNlZCBsZWFybmluZyB0YWlsb3JlZCBqdXN0XG4gICAgICAgICAgICAgICAgICAgIGZvciB5b3UuPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktdHV0b3ItYnRuIHB4LTIgcHktMVwiIFtuZ0NsYXNzXT1cImlzTW9iaWxlID8gJ3ctMTYwJyA6ICcnXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzaG93QWlUdXRvckNvbmZpcm1Qb3B1cCgpXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2FpLXR1dG9yL2FpLWljb24uc3ZnXCI+Jm5ic3A7ICZuYnNwOyA8c3BhbiBjbGFzcz1cImFpLXR1dG9yLWxhYmVsXCI+QUkgVHV0b3I8L3NwYW4+PC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidGFiLWdyb3VwLWNvbnRhaW5lclwiPlxuICAgIDxtYXQtdGFiLWdyb3VwIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJoYW5kbGVUYWJDaGFuZ2UoJGV2ZW50KVwiICNzdGlja3lNZW51IFtjbGFzcy5zdGlja3ktbWF0LXRhYnNdPVwic3RpY2t5XCJcbiAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRUYWJJbmRleFwiIFtuZ0NsYXNzXT1cInsnY29udGVudC10YWJzJzohZnJvbVZpZXdlciwnY29udGVudFN0aWNreSc6IGZvclByZXZpZXd9XCI+XG5cbiAgICAgICAgPCEtLSBUcmFuc2NyaXB0aW9uIFRhYiAtLT5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJUcmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwidmlld2VyUGFnZSAmJiBlbmFibGVUcmFuc2NyaXB0aW9uRmxhZyAmJiB2dHRMYW5nQXJyPy5sZW5ndGggJiYgc3ViVGl0bGVzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5UcmFuc2NyaXB0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZC1jaXJjbGUgbWwtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgTmV3XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpc2NsYWltZXIgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInB5LTIgcHgtMlwiPkRpc2NsYWltZXIgOiBUaGVzZSB0cmFuc2NyaXB0cyBhbmQgc3VidGl0bGVzIGFyZSBBSS1nZW5lcmF0ZWQgYW5kIG1heSBjb250YWluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbWwtNSBtci01XCIgKm5nSWY9XCJpc01vYmlsZUZvckFJXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2NyaXB0LWZsZXgtY29udGFpbmVyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3RcIiBhcHBlYXJhbmNlPVwiZmlsbFwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvOyB3aWR0aDogMTAwJTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0TGFiZWw9XCJuZXZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1ib3ggcHItNVwiIFsodmFsdWUpXT1cInNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJyZW5kZXJTZWxlY3RlZExhbmd1YWdlVHJhbnNjcmlwdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LWJveC10cmlnZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtb3B0aW9uLWNvbnRlbnQgcHgtNSBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID09PSBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlRyYW5zY3JpcHQgTGFuZ3VhZ2U6IDwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/Lmxhbmd1YWdlIHwgdGl0bGVjYXNlfX0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGVmYXVsdFRyYW5zY3JpcHRMYW5ndWFnZSA9PT0gc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsXCI+KEF1dG8pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3Qtb3B0aW9uXCIgdmFsdWU9XCJcIiAqbmdGb3I9XCJsZXQgbGFuZyBvZiB2dHRMYW5nQXJyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJsYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW9wdGlvbic6IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbCA9PT0gbGFuZz8ubGFiZWx9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57e2xhbmc/Lmxhbmd1YWdlIHwgdGl0bGVjYXNlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTQgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCB0cmFuc2NyaXB0LWNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sIHJlcXVpcmVkIGNsYXNzPVwic2VjdGlvbi1kZFwiIChjaGFuZ2UpPVwicmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwibGFuZz8ubGFuZ3VhZ2VcIiAqbmdGb3I9XCJsZXQgbGFuZyBvZiB2dHRMYW5nQXJyXCIgW3NlbGVjdGVkXT1cImxhbmc/LmxhYmVsID09PSB0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID09PSBsYW5nPy5sYWJlbFwiPiBUcmFuc2NyaXB0IExhbmd1YWdlOiA8L3NwYW4+IHt7bGFuZz8ubGFuZ3VhZ2UgfCB0aXRsZWNhc2V9fSA8c3BhbiAqbmdJZj1cInRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9PT0gbGFuZz8ubGFuZ3VhZ2VcIj4oQXV0byk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCIhaXNNb2JpbGVGb3JBSSA/ICd3LXN1YnRpdGxlLTgwJzondy1mdWxsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiIWlzTW9iaWxlRm9yQUkgPyAnbWwtNS1wZXInIDogJydcIiAqbmdJZj1cInN1YlRpdGxlcyAmJiBzdWJUaXRsZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRyYW5zY3JpcHRpb24gY29udGVudCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VidGl0bGUgb2Ygc3ViVGl0bGVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCAgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInBsYXlGcm9tU2xvdChzdWJ0aXRsZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTEgYmx1ZS11bmRlcmxpbmVcIj4ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TXNUb1Z0dFRpbWUoc3VidGl0bGU/LnN0YXJ0VGltZSkgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmxhY2stdGV4dFwiPi08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0xIGJsdWUtdW5kZXJsaW5lXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TXNUb1Z0dFRpbWUoc3VidGl0bGU/LmVuZFRpbWUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTQgc3VidGl0bGUtdGV4dC1zbG90IG1yLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYmxhY2stdGV4dFwiIFtpbm5lckh0bWxdPVwic3VidGl0bGU/LnRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaGlnaGxpZ2h0IDoga2V5d29yZFRvSGlnaGxpZ2h0Py50ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgoc3VidGl0bGU/LnN0YXJ0VGltZSAvIDEwMDApID49IGtleXdvcmRUb0hpZ2hsaWdodD8uc3RhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3VidGl0bGU/LmVuZFRpbWUgLyAxMDAwKSA8PSBrZXl3b3JkVG9IaWdobGlnaHQ/LmVuZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LXN1YnRpdGxlLTIwXCIgKm5nSWY9XCIhaXNNb2JpbGVGb3JBSVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2NyaXB0LWZsZXgtY29udGFpbmVyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdFwiIGFwcGVhcmFuY2U9XCJmaWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBhdXRvOyB3aWR0aDogMTAwJTtcIiBmbG9hdExhYmVsPVwibmV2ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1ib3ggcHItNVwiIFsodmFsdWUpXT1cInNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1ib3gtdHJpZ2dlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtb3B0aW9uLWNvbnRlbnQgcHgtNSBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj48c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9PT0gc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlRyYW5zY3JpcHQgTGFuZ3VhZ2U6IDwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFuZ3VhZ2UgfCB0aXRsZWNhc2V9fSA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRlZmF1bHRUcmFuc2NyaXB0TGFuZ3VhZ2UgPT09IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFwiPihBdXRvKTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3Qtb3B0aW9uXCIgdmFsdWU9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFuZyBvZiB2dHRMYW5nQXJyXCIgW3ZhbHVlXT1cImxhbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZS1vcHRpb24nOiBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWwgPT09IGxhbmc/LmxhYmVsfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7bGFuZz8ubGFuZ3VhZ2UgfCB0aXRsZWNhc2V9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBteS0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHA+MC4wMDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cD5BSSBmb3IgRGlnaXRhbCBUcmFuc2Zvcm1hdGlvbjogTWFjaGluZSBMZWFybmluZyBhbmQgRGVlcCBMZWFybmluZyAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbWF0TmF0aXZlQ29udHJvbCByZXF1aXJlZCBjbGFzcz1cInNlY3Rpb24tZGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+VHJhbnNjcmlwdGlvbiBMYW5ndWFnZTogRW5nbGlzaCAoQXV0byk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC10YWI+XG5cbiAgICAgICAgPCEtLSBBYm91dCBUYWIgLS0+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2UuYWJvdXQnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktdHV0b3ItZ2V0LXN0YXJ0ZWQtbW9iaWxlIG15LTIgbWwtMlwiICpuZ0lmPVwiIXZpZXdlclBhZ2UgJiYgZW5hYmxlQUlUdXRvckZsYWcgJiYgaXNNb2JpbGUgJiYgICAoZG9tYWluQ29uZlNlcnZpY2U/LmlzRmVhdHVyZUJ5UGFnZUVuYWJsZWQoJ3RvYycsJ2FpVHV0b3InKSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIHctOThcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9ib3QtY2hhdC1zbWFsbC5zdmdcIiBoZWlnaHQ9XCI0OHB4XCIgd2lkdGg9XCI0OHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIHctNjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtd2VpZ2h0LTYwMFwiPkdldCBTdGFydGVkIHdpdGggQUkgVHV0b3I8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkdldCBpbnN0YW50IGV4cGxhbmF0aW9ucywgc3RlcC1ieS1zdGVwIGxlYXJuaW5nIGd1aWRhbmNlLCBhbmQgY3VzdG9taXNlZCBsZWFybmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbG9yZWQganVzdCBmb3IgeW91Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktdHV0b3ItYnRuIHB4LTIgcHktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwic2hvd0FpVHV0b3JDb25maXJtUG9wdXAoKVwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9haS10dXRvci9haS1pY29uLnN2Z1wiPiZuYnNwOyAmbmJzcDsgPHNwYW4gY2xhc3M9XCJhaS10dXRvci1sYWJlbFwiPkFJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUdXRvcjwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBteS0yIG14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXR1dG9yLWJ0biBweC0yIHB5LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwic2hvd0FpVHV0b3JDb25maXJtUG9wdXAoKVwiPjxpbWcgc3JjPVwiYXNzZXRzL2FpLXR1dG9yL2FpLWljb24uc3ZnXCI+Jm5ic3A7ICZuYnNwOyA8c3BhbiBjbGFzcz1cImFpLXR1dG9yLWxhYmVsXCI+QUkgVHV0b3I8L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLWFib3V0IFtmcm9tVmlld2VyXT1cImZyb21WaWV3ZXJcIiBbcGF0aFNldF09XCJwYXRoU2V0XCIgW2NvbnRlbnRdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50UmVhZERhdGFdPVwiY29udGVudFJlYWREYXRhXCIgW2Jhc2VDb250ZW50UmVhZERhdGFdPVwiYmFzZUNvbnRlbnRSZWFkRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIFt0b2NTdHJ1Y3R1cmVdPVwidG9jU3RydWN0dXJlXCIgW2NvbmZpZ109XCJjb25maWdcIiBbZm9yUHJldmlld109XCJmYWxzZVwiIFtzdGlja3ldPVwic3RpY2t5XCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkQmF0Y2hEYXRhXT1cInNlbGVjdGVkQmF0Y2hEYXRhXCIgW3NlbGVjdGVkVGFiVmFsdWVdPVwic2VsZWN0ZWRUYWJJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXN1bWVEYXRhXT1cInJlc3VtZURhdGFcIiBbYmF0Y2hEYXRhXT1cImJhdGNoRGF0YVwiIFtza2VsZXRvbkxvYWRlcl09XCJza2VsZXRvbkxvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjb25kaXRpb25dPVwiY29uZGl0aW9uXCIgW2twYXJyYXldPVwia3BhcnJheVwiIFtzaG93UmV2aWV3c109XCIndHJ1ZSdcIiBbbGFuZ3VhZ2VMaXN0XT1cImxhbmd1YWdlTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtsb2NrQ2VydGlmaWNhdGVdPVwibG9ja0NlcnRpZmljYXRlXCIgKHRyaWdlckNvbXBsZXRpb25TdXJ2ZXlGb3JtKT1cIm9wZW5TdXJ2ZXlGb3JtUG9wdXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtmcm9tTURPXT1cImZyb21NRE9cIj5cbiAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1hcHAtdG9jLWFib3V0PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuXG4gICAgICAgIDwhLS0gQ29udGVudCBUYWIgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLmNvbnRlbnQnIHwgdHJhbnNsYXRlIH19XCIgKm5nSWY9XCJjb250ZW50VGFiRmxhZ1wiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWFwcC10b2MtY29udGVudCBbYmF0Y2hJZF09XCJiYXRjaElkXCIgW2NvbXBvbmVudE5hbWVdPVwiY29tcG9uZW50TmFtZVwiIFtwYXRoU2V0XT1cInBhdGhTZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiY29udGVudFwiIFt0b2NTdHJ1Y3R1cmVdPVwidG9jU3RydWN0dXJlXCIgW2NvbmZpZ109XCJjb25maWdcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXN1bWVEYXRhXT1cInJlc3VtZURhdGFcIiBbYmF0Y2hEYXRhXT1cImJhdGNoRGF0YVwiIFtza2VsZXRvbkxvYWRlcl09XCJza2VsZXRvbkxvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGllcmFyY2h5TWFwRGF0YV09XCJoaWVyYXJjaHlNYXBEYXRhXCIgW2Jhc2VDb250ZW50UmVhZERhdGFdPVwiYmFzZUNvbnRlbnRSZWFkRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZz8uY29tbWVudHNUYWIgJiYgIWZvclByZXZpZXcgJiYgICAoZG9tYWluQ29uZlNlcnZpY2U/LmlzRmVhdHVyZUJ5UGFnZUVuYWJsZWQoJ3RvYycsJ3N0YXJ0RGlzY3Vzc2lvbicpKVwiPlxuICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5zdGFydERpc2N1c3Npb24nIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cImNvbW1lbnRzRGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGlzY3Vzc1dpZGdldERhdGEgJiYgZGlzY3Vzc1dpZGdldERhdGE/Lm5ld0NvbW1lbnRTZWN0aW9uPy5jb21tZW50VHJlZURhdGE/LmVudGl0eUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbW1lbnRJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkLXYyLXdpZGdldC1jb21tZW50IFt3aWRnZXREYXRhXT1cImRpc2N1c3NXaWRnZXREYXRhXCI+PC9kLXYyLXdpZGdldC1jb21tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbWVudElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTMgY3Vyc29yLXBvaW50ZXIgbWItNVwiIChjbGljayk9XCJjbGVhckNvbW1lbnRJZEZyb21VcmwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPmFycm93X2JhY2s8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrIHRvIGFsbCBjb21tZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkLXYyLXdpZGdldC1jb21tZW50IFt3aWRnZXREYXRhXT1cImRpc2N1c3NXaWRnZXREYXRhXCIgW2NvbW1lbnRJZF09XCJjb21tZW50SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2tlbGV0b25Mb2FkZXJdPjwvZC12Mi13aWRnZXQtY29tbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZz8uc2FtdWhpa0NoYXJjaGFUYWIgJiYgY29uZGl0aW9uICYmIGNvbnRlbnRSZWFkRGF0YT8uZXZlbnRMaW5rZWQ/Lmxlbmd0aCA+IDAgJiYgZW5hYmxlU2FtdWhpa0NoYXJjaGFUYWIgJiYgKGRvbWFpbkNvbmZTZXJ2aWNlPy5pc0ZlYXR1cmVCeVBhZ2VFbmFibGVkKCd0b2MnLCdzYW11aGlrQ2hhcmNoYScpKVwiPlxuICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5zYW11aGlrQ2hhcmNoYScgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcmF0aW5ncy1kaXYgbXQtNVwiIGlkPVwic2FtdWhpa0NoYXJjaGFEaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2FtdWhpay1jaGFyY2hhLWNvbnRlbnQgW2NvbnRlbnRdPVwiY29udGVudFJlYWREYXRhXCIgW2NvbmRpdGlvbkRhdGFdPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdW1lQ29udGVudCk9XCJyZXN1bWVDb250ZW50Q2FsbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1zYW11aGlrLWNoYXJjaGEtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUZWFjaGVycyBOb3RlIFRhYiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8ucmVmZXJlbmNlTm9kZXMgJiYgdGVhY2hlck5vdGVzRmxhZ1wiPlxuICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJUZWFjaGVycyBOb3RlXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cInRlYWNoZXJzTm90ZURpdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzIFtjb250ZW50XT1cImNvbnRlbnRSZWFkRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vdGVzRGlzcGxheVR5cGVdPVwiJ1RlYWNoZXJzIFJlc291cmNlJ1wiPjwvd3Mtd2lkZ2V0LWFwcC10b2MtdGVhY2hlcnMtbm90ZXM+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gUmVmZXJlbmNlIE5vdGUgVGFiIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFJlYWREYXRhPy5yZWZlcmVuY2VOb2RlcyAmJiByZWZlcmVuY2VOb3Rlc0ZsYWdcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiUmVmZXJlbmNlIE5vdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcmF0aW5ncy1kaXYgbXQtNVwiIGlkPVwidGVhY2hlcnNOb3RlRGl2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWFwcC10b2MtdGVhY2hlcnMtbm90ZXMgW2NvbnRlbnRdPVwiY29udGVudFJlYWREYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbm90ZXNEaXNwbGF5VHlwZV09XCInUmVmZXJlbmNlIFJlc291cmNlJ1wiPjwvd3Mtd2lkZ2V0LWFwcC10b2MtdGVhY2hlcnMtbm90ZXM+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHdzLXdpZGdldC1hcHAtdG9jLXJlZmVyZW5jZS1ub3RlcyBbY29udGVudF09XCJjb250ZW50UmVhZERhdGFcIj48L3dzLXdpZGdldC1hcHAtdG9jLXJlZmVyZW5jZS1ub3Rlcz4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QXNzaWdubWVudHNUYWIgJiYgIWZvclByZXZpZXcgJiYgKGRvbWFpbkNvbmZTZXJ2aWNlPy5pc0ZlYXR1cmVCeVBhZ2VFbmFibGVkKCd0b2MnLCdhc3NpZ25tZW50JykpXCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLmFzc2lnbm1lbnRzJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJ0YWtlQXNzZXNzbWVudERpdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtYmF0Y2gtYXNzaWdubWVudHMgW2NvbnRlbnRdPVwiY29udGVudFwiPjwvd3Mtd2lkZ2V0LWFwcC1iYXRjaC1hc3NpZ25tZW50cz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUcmFuc2NyaXB0aW9uIFRhYiAtLT5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJBSSBUdXRvclwiICpuZ0lmPVwidmlld2VyUGFnZSAmJiBlbmFibGVBSVR1dG9yRmxhZyAmJiBpc01vYmlsZSAmJiAoZG9tYWluQ29uZlNlcnZpY2U/LmlzRmVhdHVyZUJ5UGFnZUVuYWJsZWQoJ3RvYycsJ3RyYW5zY3JpcHRpb24nKSlcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BSSBUdXRvcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWQtY2lyY2xlIG1sLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5ld1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QUlUdXRvclBvcHVwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWFpLXR1dG9yIFtjb250ZW50XT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUFJUG9wdXApPVwiY2xvc2VBSVBvcHVwKCRldmVudClcIj48L3dzLXdpZGdldC1haS10dXRvcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC10YWI+XG5cbiAgICA8L21hdC10YWItZ3JvdXA+XG48L2Rpdj4iXX0=
|
|
835
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQTRCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFakwsT0FBTyxFQUEwRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQU12SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUN4RyxPQUFPLEVBQWdDLHFCQUFxQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRS9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9wRCxNQUFNLE9BQU8sbUJBQW1CO0lBc0U5QixZQUNVLEtB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QWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBdVZQLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIERvbWFpbkNvbmZTZXJ2aWNlLCBFdmVudFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBXc0V2ZW50cyB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgTG9hZENoZWNrU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvYWQtY2hlY2suc2VydmljZSdcbmltcG9ydCB7IE1hdExlZ2FjeVRhYkdyb3VwIGFzIE1hdFRhYkdyb3VwLCBNYXRMZWdhY3lUYWJDaGFuZ2VFdmVudCBhcyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS10YWJzJ1xuaW1wb3J0IHsgTnNEaXNjdXNzaW9uVjIgfSBmcm9tICdAc3VuYmlyZC1jYi9kaXNjdXNzaW9uLXYyJ1xuaW1wb3J0IHsgQWlUdXRvckNvbmZpcm1Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4vYWktdHV0b3ItY29uZmlybS1wb3B1cC9haS10dXRvci1jb25maXJtLXBvcHVwLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuaW1wb3J0IHsgdmlld2VyUm91dGVHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvdmlld2VyLXJvdXRlLXV0aWwnXG5pbXBvcnQgeyBBcHBUb2NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLXRvYy5zZXJ2aWNlJ1xuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FjdGlvbi5zZXJ2aWNlJ1xuaW1wb3J0IHsgVnR0RmlsZSB9IGZyb20gJ0Bwb2x5ZmxpeC92dHQtcGFyc2VyJ1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBWaWV3ZXJEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZpZXdlci1kYXRhLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXRUYWIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJ1xuaW1wb3J0IHsgU2FtdWhpa0NoYXJjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL3NhbXVoaWstY2hhcmNoYS5zZXJ2aWNlJ1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9fY29sbGVjdGlvbi1hcGknXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtY29udGVudC10b2MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC10b2MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LXRvYy5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIENvbnRlbnRUb2NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgdGFiQ2hhbmdlVmFsdWU6IGFueSA9ICcnXG4gIEBJbnB1dCgpIGNvbnRlbnQhOiBhbnlcbiAgQElucHV0KCkgY29udGVudFJlYWREYXRhITogYW55XG4gIEBJbnB1dCgpIGluaXRpYWxSb3V0ZURhdGE6IGFueVxuICBASW5wdXQoKSBjaGFuZ2VUYWIgPSBmYWxzZVxuICBASW5wdXQoKSBiYXNlQ29udGVudFJlYWREYXRhITogYW55XG4gIHJvdXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKVxuICBASW5wdXQoKSBjb250ZW50VGFiRmxhZyA9IHRydWVcbiAgQElucHV0KCkgcmVzdW1lRGF0YTogYW55IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgYmF0Y2hEYXRhOiAvKipOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlICovIGFueSB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIHNrZWxldG9uTG9hZGVyID0gZmFsc2VcbiAgQElucHV0KCkgdG9jU3RydWN0dXJlOiBhbnkgPSB7fVxuICBASW5wdXQoKSBwYXRoU2V0OiBhbnlcbiAgQElucHV0KCkgZnJvbVZpZXdlciA9IGZhbHNlXG4gIEBJbnB1dCgpIGhpZXJhcmNoeU1hcERhdGE6IGFueSA9IHt9XG4gIEBWaWV3Q2hpbGQoJ3N0aWNreU1lbnUnKSB0YWJFbGVtZW50ITogTWF0VGFiR3JvdXBcbiAgQFZpZXdDaGlsZHJlbihNYXRUYWIpIHRhYnMhOiBRdWVyeUxpc3Q8TWF0VGFiPlxuICBASW5wdXQoKSBjb25kaXRpb246IGFueVxuICBASW5wdXQoKSBrcGFycmF5OiBhbnlcbiAgQElucHV0KCkgc2VsZWN0ZWRCYXRjaERhdGE6IGFueVxuICBASW5wdXQoKSBjb25maWc6IGFueVxuICBASW5wdXQoKSBjb21wb25lbnROYW1lITogc3RyaW5nXG4gIEBJbnB1dCgpIGlzRW5yb2xsZWQhOiBib29sZWFuXG4gIEBJbnB1dCgpIHBsYXlSZXNvdXJjZUlkID0gJydcbiAgQElucHV0KCkgc2lkZU5hdkJhck9wZW5lZCA9IGZhbHNlXG4gIEBJbnB1dCgpIGxhbmd1YWdlTGlzdCA9IFtdXG4gIEBJbnB1dCgpIGxvY2tDZXJ0aWZpY2F0ZSA9IGZhbHNlXG4gIEBJbnB1dCgpIGZyb21NRE8gPSBmYWxzZVxuICBAT3V0cHV0KCkgcGxheVJlc3VtZUZvckFJID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBlbnJvbGxVc2VyVG9BSSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgdHJpZ2VyQ29tcGxldGlvblN1cnZleUZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcbiAgQE91dHB1dCgpIHJlc3VtZUNvbnRlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcblxuICBjb21tZW50SWQ/OiBzdHJpbmcgPSAnJ1xuICBzdGlja3kgPSBmYWxzZVxuICBtZW51UG9zaXRpb246IGFueVxuICBpc01vYmlsZSA9IGZhbHNlXG4gIHNlbGVjdGVkVGFiSW5kZXggPSAwXG4gIGRpc2N1c3NXaWRnZXREYXRhITogTnNEaXNjdXNzaW9uVjIuSUNvbW1lbnRXaWRnZXREYXRhXG4gIHRlYWNoZXJOb3Rlc0ZsYWcgPSBmYWxzZVxuICByZWZlcmVuY2VOb3Rlc0ZsYWcgPSBmYWxzZVxuICB2aWV3ZXJQYWdlID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy92aWV3ZXIvJykgPyB0cnVlIDogZmFsc2VcbiAgcmVzdW1lRGF0YUxpbms6IGFueVxuICBlbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gIGVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gZmFsc2VcbiAgY291cnNlQ2F0ZWdvcnkgPSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5XG4gIHN1YlRpdGxlcyQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIHJlc291cmNlSWRlbnRpZmllcjogYW55XG4gIHJlc291cmNlSWRlbnRpZmllciQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIHN1YlRpdGxlczogYW55ID0gW11cbiAga2V5d29yZFRvSGlnaGxpZ2h0OiBhbnkgPSAnJ1xuICBoaWdobGlnaHRDb25kaXRpb24gPSBmYWxzZVxuICB2dHRMYW5nQXJyOiBhbnkgPSBbXVxuICB0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPSAnZW4nXG4gIGRlZmF1bHRUcmFuc2NyaXB0TGFuZ3VhZ2UgPSAnZW4nXG4gIHRyYW5zcmlwdGlvbkxhbmd1YWdlU3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZTogYW55XG4gIGZyb21BSVR1dG9yID0gZmFsc2VcbiAgdG90YWxSZXNvdXJjZSA9IDBcbiAgc2Nvcm1Bc3Nlc3NtZW50Q291bnQgPSAwXG4gIHNob3dBSVR1dG9yUG9wdXAgPSBmYWxzZVxuICBmcm9tQUlTZWxlY3RlZFRhYkluZGV4ID0gZmFsc2VcbiAgaXNNb2JpbGVGb3JBSSA9IGZhbHNlXG4gIHRyYW5zY3JpcHRBY3RpdmVMYW5ndWFnZVRleHQgPSAnRW5nbGlzaCdcbiAgc2hvd0Fzc2lnbm1lbnRzVGFiID0gZmFsc2VcbiAgZW5hYmxlU2FtdWhpa0NoYXJjaGFUYWIgPSBmYWxzZVxuICBzYW11aGlrQ29uZmlnOiBhbnlcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2FkQ2hlY2tTZXJ2aWNlOiBMb2FkQ2hlY2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgdG9jU3ZjOiBBcHBUb2NTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9uU1ZDOiBBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBldmVudFN2YzogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyRGF0YVN2YzogVmlld2VyRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYW11aGlrQ2hhcmNoYVN2YzogU2FtdWhpa0NoYXJjaGFTZXJ2aWNlLFxuICAgIHB1YmxpYyBkb21haW5Db25mU2VydmljZTogRG9tYWluQ29uZlNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnlcblxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3IgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uYWxsKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdGhpcy5vbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKHRoaXMucm91dGUuc25hcHNob3Q/LmRhdGE/LmNvbnRlbnQ/LmRhdGE/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgICAgLy8gdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZy5haVR1dG9yPy5mb3JPcmc/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uZm9yT3JnLmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRoaXMub25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyh0aGlzLnJvdXRlLnNuYXBzaG90Py5kYXRhPy5jb250ZW50Py5kYXRhPy5jaGlsZHJlbiwgJ21pbWVUeXBlJywgWydhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmh0bWwtYXJjaGl2ZScsICdhcHBsaWNhdGlvbi92bmQuc3VuYmlyZC5xdWVzdGlvbnNldCcsICdhcHBsaWNhdGlvbi9qc29uJywgJ3RleHQveC11cmwnXSlcbiAgICAgIC8vIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cbiAgICAgaWYodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5MRUFSTklOR19QQVRIV0FZKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gZmFsc2VcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uYWxsKSB7XG4gICAgICAvLyB0aGlzLnJlc291cmNlSWRlbnRpZmllciQgPSB0aGlzLnRvY1N2Yy50cmFuc3JpcHRpb25JZGVudGlmaWVyLnN1YnNjcmliZSgodmFsdWU6YW55KT0+e1xuICAgICAgLy8gICBpZih2YWx1ZSAmJiAgdmFsdWU/LmlkZW50aWZpZXIpIHtcbiAgICAgIC8vICAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciA9IHZhbHVlPy5pZGVudGlmaWVyIC8vdmFsdWU/LmlkZW50aWZpZXIgLy8gZG9fMTEzODg5MTE5ODQ4OTA2NzUyMTE0N1xuICAgICAgLy8gICAgIHRoaXMucGFyc2VWVFQoKVxuICAgICAgLy8gICB9XG5cbiAgICAgIC8vIH0pXG5cbiAgICAgIHRoaXMuc3ViVGl0bGVzJCA9IHRoaXMudG9jU3ZjLnRyYW5zY3JpcHRpb25EYXRhJC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5rZXl3b3JkVG9IaWdobGlnaHQgPSB2YWx1ZVxuICAgICAgfSlcblxuICAgICAgdGhpcy50cmFuc3JpcHRpb25MYW5ndWFnZVN1YiA9IHRoaXMudG9jU3ZjLnRyYW5zcmlwdGlvbkFjdGl2ZUxhbmd1YWdlRGF0YU9iamVjdCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChsYW5ndmFsdWU6IGFueSkgPT4gY29uc29sZS5sb2coJ3RhcCBsYW5ndmFsdWU6JywgbGFuZ3ZhbHVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChsYW5ndmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChsYW5ndmFsdWUpIHtcbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24gJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmc/LmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgLy8gdGhpcy5yZXNvdXJjZUlkZW50aWZpZXIkID0gdGhpcy50b2NTdmMudHJhbnNyaXB0aW9uSWRlbnRpZmllci5zdWJzY3JpYmUoKHZhbHVlOmFueSk9PntcbiAgICAgIC8vICAgaWYodmFsdWUgJiYgIHZhbHVlPy5pZGVudGlmaWVyKSB7XG4gICAgICAvLyAgICAgdGhpcy5yZXNvdXJjZUlkZW50aWZpZXIgPSB2YWx1ZT8uaWRlbnRpZmllciAvL3ZhbHVlPy5pZGVudGlmaWVyIC8vIGRvXzExMzg4OTExOTg0ODkwNjc1MjExNDdcbiAgICAgIC8vICAgICB0aGlzLnBhcnNlVlRUKClcbiAgICAgIC8vICAgfVxuXG4gICAgICAvLyB9KVxuXG4gICAgICB0aGlzLnN1YlRpdGxlcyQgPSB0aGlzLnRvY1N2Yy50cmFuc2NyaXB0aW9uRGF0YSQuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMua2V5d29yZFRvSGlnaGxpZ2h0ID0gdmFsdWVcbiAgICAgIH0pXG5cbiAgICAgIHRoaXMudHJhbnNyaXB0aW9uTGFuZ3VhZ2VTdWIgPSB0aGlzLnRvY1N2Yy50cmFuc3JpcHRpb25BY3RpdmVMYW5ndWFnZURhdGFPYmplY3QkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgobGFuZ3ZhbHVlOiBhbnkpID0+IGNvbnNvbGUubG9nKCd0YXAgbGFuZ3ZhbHVlOicsIGxhbmd2YWx1ZSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgobGFuZ3ZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAobGFuZ3ZhbHVlKSB7XG4gICAgICAgICAgICAvLyB0aGlzLnJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBiYXRjaElkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5iYXRjaElkID9cbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuYmF0Y2hJZCA6ICcnXG4gICAgaWYgKGJhdGNoSWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDFcbiAgICB9XG4gICAgdGhpcy5jb21tZW50SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLmNvbW1lbnRJZCA/IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuY29tbWVudElkIDogJydcbiAgICBpZiAodGhpcy5jb21tZW50SWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDJcbiAgICB9XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy51dGlsaXR5U2VydmljZS5pc01vYmlsZVxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0ODApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVGb3JBSSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICB9XG4gICAgdGhpcy5tZW51UG9zaXRpb24gPSB0aGlzLnRhYkVsZW1lbnQuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRUb3BcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoYXN5bmMgKHBhcmFtczogYW55KSA9PiB7XG5cbiAgICAgIGxldCBmcm9tQUlUdXRvciA9IHBhcmFtcy5nZXQoJ2Zyb21BSVR1dG9yJylcblxuICAgICAgaWYgKChmcm9tQUlUdXRvciA9PT0gJ3RydWUnIHx8IGZyb21BSVR1dG9yID09PSB0cnVlKSAmJiB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYnNBcnJheSA9IHRoaXMudGFicz8udG9BcnJheSgpXG4gICAgICAgICAgbGV0IGluZGV4ID0gdGFic0FycmF5Py5maW5kSW5kZXgodGFiID0+IHRhYi50ZXh0TGFiZWwudHJpbSgpID09PSBcIkFJIFR1dG9yXCIudHJpbSgpKVxuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgdGhpcy5mcm9tQUlTZWxlY3RlZFRhYkluZGV4ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwMClcblxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXQgZ2V0Q3VycmVudFRpbWVJblVUQygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKVxuICAgIGNvbnN0IGlzb1N0cmluZyA9IGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKClcbiAgICByZXR1cm4gaXNvU3RyaW5nLnJlcGxhY2UoJ1onLCAnKzAwMDAnKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRTYW11aGlrQ29uZmlnKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNhbXVoaWtDb25maWcgPSBhd2FpdCB0aGlzLnNhbXVoaWtDaGFyY2hhU3ZjLmZldGNoQ29uZmlnRmlsZSgpLnRvUHJvbWlzZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB9XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciA9IHRoaXMudmlld2VyRGF0YVN2Yy5yZXNvdXJjZUlkXG5cbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5hbGwpIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24gJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmc/LmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZT8udXNlclByb2ZpbGU/LnJvb3RPcmdJZClcbiAgICApIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3IgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZy5haVR1dG9yPy5hbGwpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0aGlzLm9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHModGhpcy5jb250ZW50Py5jaGlsZHJlbiwgJ21pbWVUeXBlJywgWydhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmh0bWwtYXJjaGl2ZScsICdhcHBsaWNhdGlvbi92bmQuc3VuYmlyZC5xdWVzdGlvbnNldCcsICdhcHBsaWNhdGlvbi9qc29uJywgJ3RleHQveC11cmwnXSlcbiAgICAgIC8vIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3IgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uZm9yT3JnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3I/LmZvck9yZz8ubGVuZ3RoXG4gICAgICAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnLmFpVHV0b3I/LmZvck9yZz8uaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlPy51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRoaXMub25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyh0aGlzLmNvbnRlbnQ/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZih0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LkxFQVJOSU5HX1BBVEhXQVkpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ3BsYXlSZXNvdXJjZUlkJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzPy5wbGF5UmVzb3VyY2VJZD8ucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlcz8ucGxheVJlc291cmNlSWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICBpZiAodGhpcy52aWV3ZXJQYWdlICYmIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcpIHtcbiAgICAgICAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciA9IHRoaXMucGxheVJlc291cmNlSWQgfHwgdGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkXG4gICAgICAgICAgdGhpcy5zdWJUaXRsZXMgPSBbXVxuICAgICAgICAgIHRoaXMudnR0TGFuZ0FyciA9IFtdXG4gICAgICAgICAgdGhpcy5wYXJzZVZUVCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuY2hhbmdlVGFiICYmIGNoYW5nZXMuY2hhbmdlVGFiLmN1cnJlbnRWYWx1ZSAmJiAhdGhpcy5mcm9tQUlTZWxlY3RlZFRhYkluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAxXG4gICAgfVxuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEucGFnZURhdGEgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnBhZ2VEYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnBhZ2VEYXRhLmRhdGFcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmRpc2N1c3NXaWRnZXREYXRhKSB7XG4gICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhID0gdGhpcy5jb25maWcuZGlzY3Vzc1dpZGdldERhdGFcbiAgICAgIGlmICh0aGlzLmJhc2VDb250ZW50UmVhZERhdGEgJiYgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLmlkZW50aWZpZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLmNvbW1lbnRUcmVlRGF0YS5lbnRpdHlJZCkge1xuICAgICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudFRyZWVEYXRhLmVudGl0eUlkID0gdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLmlkZW50aWZpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24gJiYgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24ubmV3Q29tbWVudFJlcGx5KSB7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24ubmV3Q29tbWVudFJlcGx5LmNvbW1lbnRUcmVlRGF0YS5lbnRpdHlJZCA9IHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS5pZGVudGlmaWVyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXNFbnJvbGxlZCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNKSB7XG4gICAgICAgICAgdGhpcy5zaG93QXNzaWdubWVudHNUYWIgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5lbnJvbGxlZENvbnRlbnQgPSB0cnVlXG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudEJveC5wbGFjZWhvbGRlciA9ICdTdGFydCBhIGRpc2N1c3Npb24nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmVucm9sbGVkQ29udGVudCA9IGZhbHNlXG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudEJveC5wbGFjZWhvbGRlciA9ICdFbnJvbCB0byBhZGQgeW91ciBjb21tZW50cydcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbW1lbnRJZCkge1xuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLnNob3cgPSBmYWxzZVxuICAgICAgfVxuICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YSA9IHsgLi4udGhpcy5kaXNjdXNzV2lkZ2V0RGF0YSB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhICYmIHRoaXMuY29udGVudFJlYWREYXRhPy5ldmVudExpbmtlZD8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBvcmdJZCA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ3VzZXJQcm9maWxlLnVzZXJSb290T3JnLmlkJywgJycpXG4gICAgICBhd2FpdCB0aGlzLmdldFNhbXVoaWtDb25maWcoKVxuICAgICAgY29uc3QgZXZlbnRzTGlua2VkID0gdGhpcy5jb250ZW50UmVhZERhdGEuZXZlbnRMaW5rZWQgfHwgW11cbiAgICAgIGxldCBldmVudHNEYXRhOiBhbnkgPSBbXVxuICAgICAgdGhpcy5zYW11aGlrQ29uZmlnPy5zdHJpcHNbMF0udGFicy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICBlbGUucmVxdWVzdC5zZWFyY2hWNi5yZXF1ZXN0LmZpbHRlcnMuaWRlbnRpZmllciA9IGV2ZW50c0xpbmtlZFxuICAgICAgICBlbGUucmVxdWVzdC5zZWFyY2hWNi5yZXF1ZXN0LmZpbHRlcnMuY3JlYXRlZEZvciA9IFtvcmdJZF1cbiAgICAgICAgaWYgKGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZS5oYXNPd25Qcm9wZXJ0eSgnPj0nKSkge1xuICAgICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZVsnPj0nXSA9IHRoaXMuZ2V0Q3VycmVudFRpbWVJblVUQ1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGUucmVxdWVzdC5zZWFyY2hWNi5yZXF1ZXN0LmZpbHRlcnMuZW5kRGF0ZVRpbWUuaGFzT3duUHJvcGVydHkoJzwnKSkge1xuICAgICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZVsnPCddID0gdGhpcy5nZXRDdXJyZW50VGltZUluVVRDXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zYW11aGlrQ2hhcmNoYVN2Yy5nZXRTZWFyY2hWNlJlc3VsdHMoZWxlLnJlcXVlc3Quc2VhcmNoVjYpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5jb3VudCAmJiByZXMucmVzdWx0Py5FdmVudCAmJiByZXMucmVzdWx0LkV2ZW50Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGV2ZSA9IDA7IGV2ZSA8IHJlcy5yZXN1bHQuRXZlbnQ/Lmxlbmd0aDsgZXZlKyspIHtcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuRXZlbnRbZXZlXVsnY3JlYXRlZEZvciddICYmIHJlcy5yZXN1bHQuRXZlbnRbZXZlXVsnY3JlYXRlZEZvciddLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIHJlcy5yZXN1bHQuRXZlbnRbZXZlXVsncmVzb3VyY2VUeXBlJ10gPT09ICdTYW11aGlrIENoYXJjaGEnXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBldmVudHNEYXRhLnB1c2gocmVzLnJlc3VsdC5FdmVudFtldmVdWydjcmVhdGVkRm9yJ11bMF0pXG4gICAgICAgICAgICAgIGlmIChldmVudHNEYXRhLmluY2x1ZGVzKHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlU2FtdWhpa0NoYXJjaGFUYWIgPSB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhICYmIHRoaXMuY29udGVudFJlYWREYXRhLnJlZmVyZW5jZU5vZGVzKSB7XG4gICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YS5yZWZlcmVuY2VOb2Rlcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHVzZXJSb2xlczogU2V0PHN0cmluZz4gPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LnVzZXJSb2xlcyB8fCBuZXcgU2V0KClcbiAgICAgICAgbGV0IGhhc0VkdWNhdG9yUm9sZSA9IGZhbHNlXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgTUVOVE9SIHJvbGVcbiAgICAgICAgaWYgKHVzZXJSb2xlcy5oYXMoJ01FTlRPUicpIHx8XG4gICAgICAgICAgdXNlclJvbGVzLmhhcygnbWVudG9yJykgfHxcbiAgICAgICAgICB1c2VyUm9sZXMuaGFzKCdNZW50b3InKSkge1xuICAgICAgICAgIGhhc0VkdWNhdG9yUm9sZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGxvY2FsIHN0b3JhZ2UgZm9yIHN1cnZleSByZXNwb25zZSBvbmx5IGlmIFVSTCBjb250YWlucyAncHVibGljJyBvciAncHJldmlldz10cnVlJ1xuICAgICAgICBpZiAoIWhhc0VkdWNhdG9yUm9sZSAmJiB0aGlzLmZvclByZXZpZXcpIHtcbiAgICAgICAgICBjb25zdCBzdXJ2ZXlJZCA9IHRoaXMuZW52aXJvbm1lbnQucHVibGljQ29udGVudFN1cnZleUlkIHx8ICcnXG4gICAgICAgICAgY29uc3QgY291cnNlSWQgPSB0aGlzLmNvbnRlbnRSZWFkRGF0YT8uaWRlbnRpZmllciB8fCAnJ1xuICAgICAgICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBgc3VydmV5XyR7c3VydmV5SWR9XyR7Y291cnNlSWR9YFxuICAgICAgICAgIGNvbnN0IHN0b3JlZERhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KVxuXG4gICAgICAgICAgaWYgKHN0b3JlZERhdGEpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1cnZleVJlc3BvbnNlcyA9IEpTT04ucGFyc2Uoc3RvcmVkRGF0YSlcbiAgICAgICAgICAgICAgY29uc3QgZWR1Y2F0b3JRdWVzdGlvbiA9IHN1cnZleVJlc3BvbnNlcy5maW5kKChyZXNwb25zZTogYW55KSA9PlxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnF1ZXN0aW9uID09PSAnQXJlIHlvdSBhbiBFZHVjYXRvci9GYWN1bHR5IG1lbWJlcj8nXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKGVkdWNhdG9yUXVlc3Rpb24gJiYgZWR1Y2F0b3JRdWVzdGlvbi5hbnN3ZXIgPT09ICdZZXMnKSB7XG4gICAgICAgICAgICAgICAgaGFzRWR1Y2F0b3JSb2xlID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIHN1cnZleSBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZTonLCBlcnJvcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGVhY2hlck5vdGVzRmxhZyBpZiB1c2VyIGhhcyBlZHVjYXRvciByb2xlXG4gICAgICAgIGlmIChoYXNFZHVjYXRvclJvbGUpIHtcbiAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnJlc291cmNlQ2F0ZWdvcnkgJiYgaXRlbS5yZXNvdXJjZUNhdGVnb3J5ID09PSAnVGVhY2hlcnMgUmVzb3VyY2UnKSB7XG4gICAgICAgICAgICB0aGlzLnRlYWNoZXJOb3Rlc0ZsYWcgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5yZXNvdXJjZUNhdGVnb3J5ICYmIGl0ZW0ucmVzb3VyY2VDYXRlZ29yeSA9PT0gJ1JlZmVyZW5jZSBSZXNvdXJjZScpIHtcbiAgICAgICAgICB0aGlzLnJlZmVyZW5jZU5vdGVzRmxhZyA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuc2lkZU5hdkJhck9wZW5lZCkge1xuICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQ4MCkge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUZvckFJKSB7XG4gICAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDgwKSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGVGb3JBSSA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGVGb3JBSSA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlU2Nyb2xsKCkge1xuICAgIGNvbnN0IHdpbmRvd1Njcm9sbCA9IHdpbmRvdy5zY3JvbGxZXG4gICAgaWYgKHdpbmRvd1Njcm9sbCA+PSAodGhpcy5tZW51UG9zaXRpb24gLSAoKHRoaXMuaXNNb2JpbGUpID8gOTYgOiAxMDQpKSkge1xuICAgICAgdGhpcy5zdGlja3kgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RpY2t5ID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBoYW5kbGVUYWJDaGFuZ2UoZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy50YWJDaGFuZ2VWYWx1ZSA9IGV2ZW50LnRhYlxuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGV2ZW50LmluZGV4XG4gICAgdGhpcy5sb2FkQ2hlY2tTZXJ2aWNlLmNvbXBvbmVudExvYWRlZCh0cnVlKVxuICAgIGlmIChldmVudCAmJiBldmVudC50YWIudGV4dExhYmVsID09PSAnQUkgVHV0b3InKSB7XG4gICAgICB0aGlzLnNob3dBSVR1dG9yUG9wdXAgPSB0cnVlXG4gICAgfVxuICAgIGlmIChldmVudCAmJiBldmVudC5pbmRleCA9PT0gMCAmJiBldmVudC50YWIudGV4dExhYmVsID09PSAnVHJhbnNjcmlwdGlvbicpIHtcbiAgICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uVGFiU3RhcnRUZWxlbWV0cnkoKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uVGFiSW50ZXJhY3RUZWxlbWV0cnkoKVxuICAgICAgfSwgMTAwMClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25UYWJTdG9wVGVsZW1ldHJ5KClcbiAgICB9XG5cbiAgfVxuXG4gIHNob3dBaVR1dG9yQ29uZmlybVBvcHVwKCkge1xuICAgIHRoaXMucmFpc2VBSVBvcHVwU3RhcnRUZWxlbWV0cnkoKVxuICAgIGlmICh0aGlzLmlzRW5yb2xsZWQpIHtcbiAgICAgIHRoaXMuZnJvbUFJVHV0b3IgPSB0cnVlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yYWlzZUFJUG9wdXBJbnRlcmFjdFRlbGVtZXRyeSgpXG4gICAgICB9LCAxMDAwKVxuXG5cbiAgICAgIHRoaXMuZ2VuZXJhdGVSZXN1bWVEYXRhTGlua05ldygpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yYWlzZUFJUG9wdXBFbmRUZWxlbWV0cnkoKVxuICAgICAgfSwgMTAwMClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmFpc2VBSVBvcHVwSW50ZXJhY3RUZWxlbWV0cnkoKVxuICAgICAgfSwgMTAwMClcbiAgICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKVxuXG4gICAgICBkaWFsb2dDb25maWcud2lkdGggPSAnNDIxcHgnXG4gICAgICBkaWFsb2dDb25maWcuZGF0YSA9IHtcbiAgICAgICAgZW5yb2xsOiB0aGlzLmlzRW5yb2xsZWRcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWlUdXRvckNvbmZpcm1Qb3B1cENvbXBvbmVudCwgZGlhbG9nQ29uZmlnKVxuXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlID09PSAnZW5yb2xsJykge1xuICAgICAgICAgIHRoaXMuZnJvbUFJVHV0b3IgPSB0cnVlXG4gICAgICAgICAgdGhpcy5nZW5lcmF0ZVJlc3VtZURhdGFMaW5rTmV3KClcbiAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZSA9PT0gJ25lZWRUb0Vucm9sbCcpIHtcbiAgICAgICAgICB0aGlzLmVucm9sbFVzZXJGb3JBSVR1dG9yKClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJhaXNlQUlQb3B1cEVuZFRlbGVtZXRyeSgpXG4gICAgICB9KVxuICAgIH1cblxuICB9XG5cbiAgZ2VuZXJhdGVSZXN1bWVEYXRhTGlua05ldygpIHtcbiAgICBpZiAodGhpcy5yZXN1bWVEYXRhICYmIHRoaXMuY29udGVudCkge1xuICAgICAgbGV0IHJlc3VtZURhdGFWMjogYW55XG4gICAgICBpZiAodGhpcy5jb250ZW50LmNvbXBsZXRpb25QZXJjZW50YWdlID09PSAxMDApIHtcbiAgICAgICAgcmVzdW1lRGF0YVYyID0gdGhpcy5nZXRSZXN1bWVEYXRhRnJvbUxpc3QoJ3N0YXJ0JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VtZURhdGFWMiA9IHRoaXMuZ2V0UmVzdW1lRGF0YUZyb21MaXN0KClcbiAgICAgIH1cbiAgICAgIGlmICghcmVzdW1lRGF0YVYyLm1pbWVUeXBlKSB7XG4gICAgICAgIHJlc3VtZURhdGFWMi5taW1lVHlwZSA9IHRoaXMudG9jU3ZjLmdldE1pbWVUeXBlKHRoaXMuY29udGVudCwgcmVzdW1lRGF0YVYyLmlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgICB0aGlzLnJlc3VtZURhdGFMaW5rID0gdmlld2VyUm91dGVHZW5lcmF0b3IoXG4gICAgICAgIHJlc3VtZURhdGFWMi5pZGVudGlmaWVyLFxuICAgICAgICByZXN1bWVEYXRhVjIubWltZVR5cGUsXG4gICAgICAgIHRoaXMuY29udGVudC5pZGVudGlmaWVyLFxuICAgICAgICB0aGlzLmNvbnRlbnQuY29udGVudFR5cGUsXG4gICAgICAgIHRoaXMuZm9yUHJldmlldyxcbiAgICAgICAgJ0xlYXJuaW5nIFJlc291cmNlJyxcbiAgICAgICAgdGhpcy5nZXRCYXRjaElkKCksXG4gICAgICAgIHRoaXMuY29udGVudC5uYW1lLFxuICAgICAgKVxuICAgICAgdGhpcy5hY3Rpb25TVkMuc2V0VXBkYXRlQ29tcEdyb3VwTyA9IHRoaXMucmVzdW1lRGF0YUxpbmtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJlc3VtZURhdGFMaW5rLnVybF0sIHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAuLi50aGlzLnJlc3VtZURhdGFMaW5rLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIGZyb21BSVR1dG9yOiB0aGlzLmZyb21BSVR1dG9yXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxuICAgICAgLy8gICBbdGhpcy5yZXN1bWVEYXRhTGluay51cmxdLFxuICAgICAgLy8gICB7XG4gICAgICAvLyAgICAgcmVsYXRpdmVUbzogdGhpcy5yZXN1bWVEYXRhTGluay51cmwsXG4gICAgICAvLyAgICAgcXVlcnlQYXJhbXM6IHRoaXMucmVzdW1lRGF0YUxpbmsucXVlcnlQYXJhbXMsXG4gICAgICAvLyAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgIC8vICAgfSlcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBsYXlSZXN1bWVGb3JBSS5lbWl0KClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJlc3VtZURhdGFGcm9tTGlzdCh0eXBlPzogc3RyaW5nKTogYW55IHwgdm9pZCB7XG4gICAgY29uc3QgcmVzdW1lQ29weSA9IFsuLi50aGlzLnJlc3VtZURhdGFdXG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG5cbiAgICAgIGNvbnN0IGxhc3RJdGVtID0gcmVzdW1lQ29weSAmJiByZXN1bWVDb3B5LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PlxuICAgICAgICBuZXcgRGF0ZShiLmxhc3RBY2Nlc3NUaW1lKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmxhc3RBY2Nlc3NUaW1lKS5nZXRUaW1lKCkpLnNoaWZ0KClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkZW50aWZpZXI6IGxhc3RJdGVtLmNvbnRlbnRJZCxcbiAgICAgICAgbWltZVR5cGU6IGxhc3RJdGVtLnByb2dyZXNzZGV0YWlscyAmJiBsYXN0SXRlbS5wcm9ncmVzc2RldGFpbHMubWltZVR5cGUsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGZpcnN0SXRlbSA9IHJlc3VtZUNvcHkgJiYgcmVzdW1lQ29weS5sZW5ndGggJiYgcmVzdW1lQ29weVswXVxuICAgIHJldHVybiB7XG4gICAgICBpZGVudGlmaWVyOiBmaXJzdEl0ZW0uY29udGVudElkLFxuICAgICAgbWltZVR5cGU6IGZpcnN0SXRlbS5wcm9ncmVzc2RldGFpbHMgJiYgZmlyc3RJdGVtLnByb2dyZXNzZGV0YWlscy5taW1lVHlwZSxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0QmF0Y2hJZCgpOiBzdHJpbmcge1xuICAgIGxldCBiYXRjaElkID0gJydcbiAgICBpZiAodGhpcy5iYXRjaERhdGEgJiYgdGhpcy5iYXRjaERhdGEuY29udGVudCkge1xuICAgICAgZm9yIChjb25zdCBiYXRjaCBvZiB0aGlzLmJhdGNoRGF0YS5jb250ZW50KSB7XG4gICAgICAgIGJhdGNoSWQgPSBiYXRjaC5iYXRjaElkXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXRjaElkXG4gIH1cblxuICByYWlzZUFJUG9wdXBTdGFydFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci10b2MtcGFnZVwiLCBcInBhZ2VpZFwiOiBgL2FwcC90b2MvJHt0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXJ9YCB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5Mb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogJy9hcHAvdG9jJywgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlQUlQb3B1cEVuZFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci10b2MtcGFnZVwiLCBcInBhZ2VpZFwiOiBgL2FwcC90b2MvJHt0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXJ9YCB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiAnL2FwcC90b2MnLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VBSVBvcHVwSW50ZXJhY3RUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3ItdG9jLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC9hcHAvdG9jLyR7dGhpcy5jb250ZW50Py5pZGVudGlmaWVyfWAgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogJy9hcHAvdG9jJywgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIGVucm9sbFVzZXJGb3JBSVR1dG9yKCkge1xuICAgIHRoaXMuZW5yb2xsVXNlclRvQUkuZW1pdCgpXG4gIH1cblxuICBhc3luYyBwYXJzZVZUVCgpIHtcbiAgICBsZXQgaWRlbnRpZmllciA9IHRoaXMucmVzb3VyY2VJZGVudGlmaWVyXG4gICAgLy8gY29uc29sZS5sb2coJ2lkZW50aWZpZXItLScsIGlkZW50aWZpZXIpXG4gICAgYXdhaXQgdGhpcy50b2NTdmMuYWlHZXRSZXNvdXJjZVZ0dEZpbGUoaWRlbnRpZmllcikuc3Vic2NyaWJlKGFzeW5jIChkYXRhczogYW55KSA9PiB7XG4gICAgICBsZXQgZGF0YTogYW55ID0gZGF0YXM/LmRhdGFcbiAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoICYmIGRhdGFbMF1bJ3RyYW5zY3JpcHRpb25fdXJscyddICYmIGRhdGFbMF1bJ3RyYW5zY3JpcHRpb25fdXJscyddLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnZ0dExhbmdBcnIgPSBkYXRhWzBdWyd0cmFuc2NyaXB0aW9uX3VybHMnXVxuXG4gICAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgICAgIC8vIGxldCB1cmwgPSAgZGF0YVswXVsndHJhbnNjcmlwdGlvbl91cmxzJ11bMF1bJ3VyaSddXG4gICAgICAgIHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gdGhpcy52dHRMYW5nQXJyICYmIHRoaXMudnR0TGFuZ0Fyci5sZW5ndGggJiYgdGhpcy52dHRMYW5nQXJyWzBdICYmIHRoaXMudnR0TGFuZ0FyclswXVsnZGVmYXVsdF9sYW5nJ10gPyAnZW4nIDogJ2VuJ1xuICAgICAgICB0aGlzLmRlZmF1bHRUcmFuc2NyaXB0TGFuZ3VhZ2UgPSB0aGlzLnZ0dExhbmdBcnIgJiYgdGhpcy52dHRMYW5nQXJyLmxlbmd0aCAmJiB0aGlzLnZ0dExhbmdBcnJbMF0gJiYgdGhpcy52dHRMYW5nQXJyWzBdWydkZWZhdWx0X2xhbmcnXSA/ICdlbicgOiAnZW4nXG4gICAgICAgIGxldCBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSA9IHRoaXMudnR0TGFuZ0Fyci5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtPy5sYWJlbCA9PT0gdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2VcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlICYmIHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgPSBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZVswXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgPSB0aGlzLnZ0dExhbmdBcnJbMF1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJlZEFyciA9IHRoaXMudnR0TGFuZ0Fyci5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5sYWJlbCA9PT0gdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2VcbiAgICAgICAgKVxuICAgICAgICBsZXQgdXJsID0gZmlsdGVyZWRBcnIubGVuZ3RoID4gMCA/IGZpbHRlcmVkQXJyWzBdLnVyaSA6IG51bGxcbiAgICAgICAgLy9sZXQgdXJsID0gdGhpcy52dHRMYW5nQXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmxhYmVsID09PSB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSlbMF1bJ3VyaSddXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgVnR0RmlsZS5mcm9tVXJsKHVybClcbiAgICAgICAgICBsZXQgYmxvY2tzOiBhbnkgPSBmaWxlLmdldEJsb2NrcygpXG5cbiAgICAgICAgICB0aGlzLnN1YlRpdGxlcyA9IGJsb2Nrc1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9jU3ZjLmNoYW5nZVRyYW5zY3JpcHRpb25MYW5ndWFnZUV2ZW50Lm5leHQoeyBhY3RpdmVMYW5nOiB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSwgbGFuZ0RhdGE6IHRoaXMudnR0TGFuZ0FyciwgbG9hZFBsYXllcjogdHJ1ZSB9KVxuXG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudnR0TGFuZ0FyciA9IFtdXG4gICAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgfSlcblxuICB9XG5cbiAgYXN5bmMgcmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oX2xhbmd2YWx1ZTogYW55KSB7XG4gICAgLy8gdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPSB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFxuICAgIGlmICh0eXBlb2YgX2xhbmd2YWx1ZSA9PT0gJ3N0cmluZycgJiYgX2xhbmd2YWx1ZSkge1xuICAgICAgdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPSBfbGFuZ3ZhbHVlXG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSA9IF9sYW5ndmFsdWU/LnZhbHVlXG4gICAgICB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9IHRoaXMuc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsXG4gICAgICB0aGlzLnRyYW5zY3JpcHRBY3RpdmVMYW5ndWFnZVRleHQgPSBfbGFuZ3ZhbHVlPy52YWx1ZT8ubGFuZ3VhZ2VcbiAgICB9XG4gICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZVN0YXJ0VGVsZW1ldHJ5KClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VJbnRlcmFjdFRlbGVtZXRyeSgpXG4gICAgfSlcbiAgICBsZXQgY3VycmVudFBhdGggPSB0aGlzLnZ0dExhbmdBcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LmxhYmVsID09PSB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSlcbiAgICBpZiAoY3VycmVudFBhdGggJiYgY3VycmVudFBhdGgubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlID0gY3VycmVudFBhdGhbMF1cbiAgICB9XG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IFZ0dEZpbGUuZnJvbVVybChjdXJyZW50UGF0aCAmJiBjdXJyZW50UGF0aFswXT8udXJpKVxuICAgIGxldCBibG9ja3M6IGFueSA9IGZpbGUuZ2V0QmxvY2tzKClcbiAgICB0aGlzLnN1YlRpdGxlcyA9IGJsb2Nrc1xuICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VTdG9wVGVsZW1ldHJ5KClcbiAgICAvLyB0aGlzLnRvY1N2Yy5jaGFuZ2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VFdmVudC5uZXh0KHthY3RpdmVMYW5nOiB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSwgbGFuZ0RhdGE6IHRoaXMudnR0TGFuZ0FyciwgbG9hZFBsYXllcjpmYWxzZX0pXG5cbiAgfVxuXG4gIG9wZW5TdXJ2ZXlGb3JtUG9wdXAoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRyaWdlckNvbXBsZXRpb25TdXJ2ZXlGb3JtLmVtaXQoZXZlbnQpXG4gIH1cblxuICBwbGF5RnJvbVNsb3Qoc3VidGl0bGU6IGFueSkge1xuICAgIGlmIChzdWJ0aXRsZSkge1xuICAgICAgbGV0IHN0YXJ0VGltZSA9IHN1YnRpdGxlLnN0YXJ0VGltZSAvIDEwMDBcbiAgICAgIGxldCBlbmRUaW1lID0gc3VidGl0bGUuZW5kVGltZSAvIDEwMDBcbiAgICAgIHRoaXMudG9jU3ZjLnBsYXlUcmFuc2NyaXB0aW9uVmlkZW8ubmV4dCh7IHN0YXJ0VGltZSwgZW5kVGltZSB9KVxuICAgIH1cbiAgfVxuXG4gIGZvcm1hdE1zVG9WdHRUaW1lKG1zOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRvdGFsU2Vjb25kcyA9IE1hdGguZmxvb3IobXMgLyAxMDAwKVxuICAgIC8vICBjb25zdCBtaWxsaXNlY29uZHMgPSBtcyAlIDEwMDA7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHRvdGFsU2Vjb25kcyAvIDM2MDApXG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHRvdGFsU2Vjb25kcyAlIDM2MDApIC8gNjApXG4gICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwXG5cbiAgICBjb25zdCBwYWQgPSAobnVtOiBudW1iZXIsIHNpemU6IG51bWJlcikgPT4gbnVtLnRvU3RyaW5nKCkucGFkU3RhcnQoc2l6ZSwgJzAnKVxuXG4gICAgLy8gcmV0dXJuIGAke3BhZChob3VycywgMil9OiR7cGFkKG1pbnV0ZXMsIDIpfToke3BhZChzZWNvbmRzLCAyKX0uJHtwYWQobWlsbGlzZWNvbmRzLCAzKX1gO1xuICAgIHJldHVybiBgJHtwYWQoaG91cnMsIDIpfToke3BhZChtaW51dGVzLCAyKX06JHtwYWQoc2Vjb25kcywgMil9YFxuICB9XG5cbiAgb25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyhkYXRhOiBhbnksIGtleTogYW55LCB2YWx1ZTogYW55KSB7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZGF0YVtpXSAmJiBkYXRhW2ldWydjaGlsZHJlbiddICYmIGRhdGFbaV1bJ2NoaWxkcmVuJ10ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMub25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyhkYXRhW2ldPy5jaGlsZHJlbiwga2V5LCB2YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgdGhpcy50b3RhbFJlc291cmNlID0gdGhpcy50b3RhbFJlc291cmNlICsgMVxuICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoZGF0YVtpXVtrZXldKSkge1xuICAgICAgICAgIC8vIHRoaXMuc2hvd0FJVHV0b3JGbGFnID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zY29ybUFzc2Vzc21lbnRDb3VudCA9IHRoaXMuc2Nvcm1Bc3Nlc3NtZW50Q291bnQgKyAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50b3RhbFJlc291cmNlID09PSB0aGlzLnNjb3JtQXNzZXNzbWVudENvdW50KSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gZmFsc2VcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlQUlUdXRvckZsYWdcbiAgfVxuXG4gIHJhaXNlVHJhbnNjcmlwdGlvblRhYlN0YXJ0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiBcImFpLXR1dG9yLXZpZXdlci1wYWdlXCIsIFwicGFnZWlkXCI6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIHN1YlR5cGU6ICd0cmFuc2NyaXB0LXRhYicgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25UYWJJbnRlcmFjdFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci12aWV3ZXItcGFnZVwiLCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC10YWInIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25UYWJTdG9wVGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiBcImFpLXR1dG9yLXZpZXdlci1wYWdlXCIsIFwicGFnZWlkXCI6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIHN1YlR5cGU6ICd0cmFuc2NyaXB0LXRhYicgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlU3RhcnRUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IHRoaXMudHJhbnNjcmlwdEFjdGl2ZUxhbmd1YWdlVGV4dCwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtbGFuZ3VhZ2UnIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VJbnRlcmFjdFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogdGhpcy50cmFuc2NyaXB0QWN0aXZlTGFuZ3VhZ2VUZXh0LCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC1sYW5ndWFnZScgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlU3RvcFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogdGhpcy50cmFuc2NyaXB0QWN0aXZlTGFuZ3VhZ2VUZXh0LCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC1sYW5ndWFnZScgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIGNsb3NlQUlQb3B1cChldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnNob3dBSVR1dG9yUG9wdXAgPSBmYWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMFxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnJlc291cmNlSWRlbnRpZmllciQpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyJC51bnN1YnNjcmliZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3ViVGl0bGVzJCkge1xuICAgICAgdGhpcy5zdWJUaXRsZXMkLnVuc3Vic2NyaWJlKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmFuc3JpcHRpb25MYW5ndWFnZVN1Yikge1xuICAgICAgdGhpcy50cmFuc3JpcHRpb25MYW5ndWFnZVN1Yi51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9XG5cbiAgY2xlYXJDb21tZW50SWRGcm9tVXJsKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRRdWVyeVBhcmFtcyA9IHsgLi4udGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyB9XG4gICAgZGVsZXRlIGN1cnJlbnRRdWVyeVBhcmFtcy5jb21tZW50SWRcbiAgICB0aGlzLmNvbW1lbnRJZCA9ICcnXG4gICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5zaG93ID0gdHJ1ZVxuICB9XG5cbiAgcmVzdW1lQ29udGVudENhbGwoKSB7XG4gICAgdGhpcy5yZXN1bWVDb250ZW50LmVtaXQoKVxuICB9XG59IiwiPCEtLSAmJiAoY29udGVudD8uY291cnNlQ2F0ZWdvcnkgIT09IGNvdXJzZUNhdGVnb3J5Py5CTEVOREVEX1BST0dSQU0pIC0tPlxuPGRpdiBjbGFzcz1cImFpLXR1dG9yLWdldC1zdGFydGVkXCIgKm5nSWY9XCIhdmlld2VyUGFnZSAmJiBlbmFibGVBSVR1dG9yRmxhZyAmJiAhaXNNb2JpbGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHktMlwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvYm90LWNoYXQtc21hbGwuc3ZnXCIgaGVpZ2h0PVwiNjRweFwiIHdpZHRoPVwiNjRweFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yXCIgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC13ZWlnaHQtNjAwXCI+R2V0IFN0YXJ0ZWQgd2l0aCBBSSBUdXRvcjwvcD5cbiAgICAgICAgICAgICAgICA8c3Bhbj5HZXQgaW5zdGFudCBleHBsYW5hdGlvbnMsIHN0ZXAtYnktc3RlcCBsZWFybmluZyBndWlkYW5jZSwgYW5kIGN1c3RvbWlzZWQgbGVhcm5pbmcgdGFpbG9yZWQganVzdFxuICAgICAgICAgICAgICAgICAgICBmb3IgeW91Ljwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXR1dG9yLWJ0biBweC0yIHB5LTFcIiBbbmdDbGFzc109XCJpc01vYmlsZSA/ICd3LTE2MCcgOiAnJ1wiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwic2hvd0FpVHV0b3JDb25maXJtUG9wdXAoKVwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9haS10dXRvci9haS1pY29uLnN2Z1wiPiZuYnNwOyAmbmJzcDsgPHNwYW4gY2xhc3M9XCJhaS10dXRvci1sYWJlbFwiPkFJIFR1dG9yPC9zcGFuPjwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInRhYi1ncm91cC1jb250YWluZXJcIj5cbiAgICA8bWF0LXRhYi1ncm91cCAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwiaGFuZGxlVGFiQ2hhbmdlKCRldmVudClcIiAjc3RpY2t5TWVudSBbY2xhc3Muc3RpY2t5LW1hdC10YWJzXT1cInN0aWNreVwiXG4gICAgICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkVGFiSW5kZXhcIiBbbmdDbGFzc109XCJ7J2NvbnRlbnQtdGFicyc6IWZyb21WaWV3ZXIsJ2NvbnRlbnRTdGlja3knOiBmb3JQcmV2aWV3fVwiPlxuXG4gICAgICAgIDwhLS0gVHJhbnNjcmlwdGlvbiBUYWIgLS0+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiVHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAqbmdJZj1cInZpZXdlclBhZ2UgJiYgZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgJiYgdnR0TGFuZ0Fycj8ubGVuZ3RoICYmIHN1YlRpdGxlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+VHJhbnNjcmlwdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWQtY2lyY2xlIG1sLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5ld1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNjbGFpbWVyIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJweS0yIHB4LTJcIj5EaXNjbGFpbWVyIDogVGhlc2UgdHJhbnNjcmlwdHMgYW5kIHN1YnRpdGxlcyBhcmUgQUktZ2VuZXJhdGVkIGFuZCBtYXkgY29udGFpblxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG1sLTUgbXItNVwiICpuZ0lmPVwiaXNNb2JpbGVGb3JBSVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNjcmlwdC1mbGV4LWNvbnRhaW5lciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0XCIgYXBwZWFyYW5jZT1cImZpbGxcIiBzdHlsZT1cImhlaWdodDogYXV0bzsgd2lkdGg6IDEwMCU7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdExhYmVsPVwibmV2ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3QtYm94IHByLTVcIiBbKHZhbHVlKV09XCJzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwicmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1ib3gtdHJpZ2dlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLW9wdGlvbi1jb250ZW50IHB4LTUgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9PT0gc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5UcmFuc2NyaXB0IExhbmd1YWdlOiA8L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRlZmF1bHRUcmFuc2NyaXB0TGFuZ3VhZ2UgPT09IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFwiPihBdXRvKTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LW9wdGlvblwiIHZhbHVlPVwiXCIgKm5nRm9yPVwibGV0IGxhbmcgb2YgdnR0TGFuZ0FyclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwibGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZS1vcHRpb24nOiBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWwgPT09IGxhbmc/LmxhYmVsfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3tsYW5nPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00IGZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgdHJhbnNjcmlwdC1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbWF0TmF0aXZlQ29udHJvbCByZXF1aXJlZCBjbGFzcz1cInNlY3Rpb24tZGRcIiAoY2hhbmdlKT1cInJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImxhbmc/Lmxhbmd1YWdlXCIgKm5nRm9yPVwibGV0IGxhbmcgb2YgdnR0TGFuZ0FyclwiIFtzZWxlY3RlZF09XCJsYW5nPy5sYWJlbCA9PT0gdHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9PT0gbGFuZz8ubGFiZWxcIj4gVHJhbnNjcmlwdCBMYW5ndWFnZTogPC9zcGFuPiB7e2xhbmc/Lmxhbmd1YWdlIHwgdGl0bGVjYXNlfX0gPHNwYW4gKm5nSWY9XCJ0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPT09IGxhbmc/Lmxhbmd1YWdlXCI+KEF1dG8pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiIWlzTW9iaWxlRm9yQUkgPyAndy1zdWJ0aXRsZS04MCc6J3ctZnVsbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIiFpc01vYmlsZUZvckFJID8gJ21sLTUtcGVyJyA6ICcnXCIgKm5nSWY9XCJzdWJUaXRsZXMgJiYgc3ViVGl0bGVzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUcmFuc2NyaXB0aW9uIGNvbnRlbnQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YnRpdGxlIG9mIHN1YlRpdGxlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUtdGltZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwbGF5RnJvbVNsb3Qoc3VidGl0bGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwci0xIGJsdWUtdW5kZXJsaW5lXCI+IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdE1zVG9WdHRUaW1lKHN1YnRpdGxlPy5zdGFydFRpbWUpIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj4tPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMSBibHVlLXVuZGVybGluZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdE1zVG9WdHRUaW1lKHN1YnRpdGxlPy5lbmRUaW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00IHN1YnRpdGxlLXRleHQtc2xvdCBtci00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImJsYWNrLXRleHRcIiBbaW5uZXJIdG1sXT1cInN1YnRpdGxlPy50ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhpZ2hsaWdodCA6IGtleXdvcmRUb0hpZ2hsaWdodD8udGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoKHN1YnRpdGxlPy5zdGFydFRpbWUgLyAxMDAwKSA+PSBrZXl3b3JkVG9IaWdobGlnaHQ/LnN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHN1YnRpdGxlPy5lbmRUaW1lIC8gMTAwMCkgPD0ga2V5d29yZFRvSGlnaGxpZ2h0Py5lbmQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1zdWJ0aXRsZS0yMFwiICpuZ0lmPVwiIWlzTW9iaWxlRm9yQUlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNjcmlwdC1mbGV4LWNvbnRhaW5lciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3RcIiBhcHBlYXJhbmNlPVwiZmlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogYXV0bzsgd2lkdGg6IDEwMCU7XCIgZmxvYXRMYWJlbD1cIm5ldmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3QtYm94IHByLTVcIiBbKHZhbHVlKV09XCJzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJyZW5kZXJTZWxlY3RlZExhbmd1YWdlVHJhbnNjcmlwdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlciBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3QtYm94LXRyaWdnZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLW9wdGlvbi1jb250ZW50IHB4LTUgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPT09IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5UcmFuc2NyaXB0IExhbmd1YWdlOiA8L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/Lmxhbmd1YWdlIHwgdGl0bGVjYXNlfX0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZWZhdWx0VHJhbnNjcmlwdExhbmd1YWdlID09PSBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcIj4oQXV0byk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LW9wdGlvblwiIHZhbHVlPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhbmcgb2YgdnR0TGFuZ0FyclwiIFt2YWx1ZV09XCJsYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtb3B0aW9uJzogc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsID09PSBsYW5nPy5sYWJlbH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57e2xhbmc/Lmxhbmd1YWdlIHwgdGl0bGVjYXNlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbXktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwPjAuMDA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+QUkgZm9yIERpZ2l0YWwgVHJhbnNmb3JtYXRpb246IE1hY2hpbmUgTGVhcm5pbmcgYW5kIERlZXAgTGVhcm5pbmcgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG1hdE5hdGl2ZUNvbnRyb2wgcmVxdWlyZWQgY2xhc3M9XCJzZWN0aW9uLWRkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlRyYW5zY3JpcHRpb24gTGFuZ3VhZ2U6IEVuZ2xpc2ggKEF1dG8pPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuXG4gICAgICAgIDwhLS0gQWJvdXQgVGFiIC0tPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLmFib3V0JyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXR1dG9yLWdldC1zdGFydGVkLW1vYmlsZSBteS0yIG1sLTJcIiAqbmdJZj1cIiF2aWV3ZXJQYWdlICYmIGVuYWJsZUFJVHV0b3JGbGFnICYmIGlzTW9iaWxlICYmICAgKGRvbWFpbkNvbmZTZXJ2aWNlPy5pc0ZlYXR1cmVCeVBhZ2VFbmFibGVkKCd0b2MnLCdhaVR1dG9yJykpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB3LTk4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvYm90LWNoYXQtc21hbGwuc3ZnXCIgaGVpZ2h0PVwiNDhweFwiIHdpZHRoPVwiNDhweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB3LTYwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LXdlaWdodC02MDBcIj5HZXQgU3RhcnRlZCB3aXRoIEFJIFR1dG9yPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5HZXQgaW5zdGFudCBleHBsYW5hdGlvbnMsIHN0ZXAtYnktc3RlcCBsZWFybmluZyBndWlkYW5jZSwgYW5kIGN1c3RvbWlzZWQgbGVhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhaWxvcmVkIGp1c3QgZm9yIHlvdS48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXR1dG9yLWJ0biBweC0yIHB5LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNob3dBaVR1dG9yQ29uZmlybVBvcHVwKClcIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvYWktdHV0b3IvYWktaWNvbi5zdmdcIj4mbmJzcDsgJm5ic3A7IDxzcGFuIGNsYXNzPVwiYWktdHV0b3ItbGFiZWxcIj5BSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHV0b3I8L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgbXktMiBteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10dXRvci1idG4gcHgtMiBweS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNob3dBaVR1dG9yQ29uZmlybVBvcHVwKClcIj48aW1nIHNyYz1cImFzc2V0cy9haS10dXRvci9haS1pY29uLnN2Z1wiPiZuYnNwOyAmbmJzcDsgPHNwYW4gY2xhc3M9XCJhaS10dXRvci1sYWJlbFwiPkFJIFR1dG9yPC9zcGFuPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy1hYm91dCBbZnJvbVZpZXdlcl09XCJmcm9tVmlld2VyXCIgW3BhdGhTZXRdPVwicGF0aFNldFwiIFtjb250ZW50XT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudFJlYWREYXRhXT1cImNvbnRlbnRSZWFkRGF0YVwiIFtiYXNlQ29udGVudFJlYWREYXRhXT1cImJhc2VDb250ZW50UmVhZERhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbdG9jU3RydWN0dXJlXT1cInRvY1N0cnVjdHVyZVwiIFtjb25maWddPVwiY29uZmlnXCIgW2ZvclByZXZpZXddPVwiZmFsc2VcIiBbc3RpY2t5XT1cInN0aWNreVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEJhdGNoRGF0YV09XCJzZWxlY3RlZEJhdGNoRGF0YVwiIFtzZWxlY3RlZFRhYlZhbHVlXT1cInNlbGVjdGVkVGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbcmVzdW1lRGF0YV09XCJyZXN1bWVEYXRhXCIgW2JhdGNoRGF0YV09XCJiYXRjaERhdGFcIiBbc2tlbGV0b25Mb2FkZXJdPVwic2tlbGV0b25Mb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY29uZGl0aW9uXT1cImNvbmRpdGlvblwiIFtrcGFycmF5XT1cImtwYXJyYXlcIiBbc2hvd1Jldmlld3NdPVwiJ3RydWUnXCIgW2xhbmd1YWdlTGlzdF09XCJsYW5ndWFnZUxpc3RcIlxuICAgICAgICAgICAgICAgICAgICBbbG9ja0NlcnRpZmljYXRlXT1cImxvY2tDZXJ0aWZpY2F0ZVwiICh0cmlnZXJDb21wbGV0aW9uU3VydmV5Rm9ybSk9XCJvcGVuU3VydmV5Rm9ybVBvcHVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZnJvbU1ET109XCJmcm9tTURPXCI+XG4gICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXBwLXRvYy1hYm91dD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cblxuICAgICAgICA8IS0tIENvbnRlbnQgVGFiIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5jb250ZW50JyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwiY29udGVudFRhYkZsYWdcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiIFtjb21wb25lbnROYW1lXT1cImNvbXBvbmVudE5hbWVcIiBbcGF0aFNldF09XCJwYXRoU2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cImNvbnRlbnRcIiBbdG9jU3RydWN0dXJlXT1cInRvY1N0cnVjdHVyZVwiIFtjb25maWddPVwiY29uZmlnXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVzdW1lRGF0YV09XCJyZXN1bWVEYXRhXCIgW2JhdGNoRGF0YV09XCJiYXRjaERhdGFcIiBbc2tlbGV0b25Mb2FkZXJdPVwic2tlbGV0b25Mb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpZXJhcmNoeU1hcERhdGFdPVwiaGllcmFyY2h5TWFwRGF0YVwiIFtiYXNlQ29udGVudFJlYWREYXRhXT1cImJhc2VDb250ZW50UmVhZERhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXBwLXRvYy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LmNvbW1lbnRzVGFiICYmICFmb3JQcmV2aWV3ICYmICAgKGRvbWFpbkNvbmZTZXJ2aWNlPy5pc0ZlYXR1cmVCeVBhZ2VFbmFibGVkKCd0b2MnLCdzdGFydERpc2N1c3Npb24nKSlcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2Uuc3RhcnREaXNjdXNzaW9uJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJjb21tZW50c0RpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRpc2N1c3NXaWRnZXREYXRhICYmIGRpc2N1c3NXaWRnZXREYXRhPy5uZXdDb21tZW50U2VjdGlvbj8uY29tbWVudFRyZWVEYXRhPy5lbnRpdHlJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21tZW50SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZC12Mi13aWRnZXQtY29tbWVudCBbd2lkZ2V0RGF0YV09XCJkaXNjdXNzV2lkZ2V0RGF0YVwiPjwvZC12Mi13aWRnZXQtY29tbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbW1lbnRJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0zIGN1cnNvci1wb2ludGVyIG1iLTVcIiAoY2xpY2spPVwiY2xlYXJDb21tZW50SWRGcm9tVXJsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFjayB0byBhbGwgY29tbWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZC12Mi13aWRnZXQtY29tbWVudCBbd2lkZ2V0RGF0YV09XCJkaXNjdXNzV2lkZ2V0RGF0YVwiIFtjb21tZW50SWRdPVwiY29tbWVudElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NrZWxldG9uTG9hZGVyXT48L2QtdjItd2lkZ2V0LWNvbW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJjb25maWc/LnNhbXVoaWtDaGFyY2hhVGFiICYmIGNvbmRpdGlvbiAmJiBjb250ZW50UmVhZERhdGE/LmV2ZW50TGlua2VkPy5sZW5ndGggPiAwICYmIGVuYWJsZVNhbXVoaWtDaGFyY2hhVGFiICYmIChkb21haW5Db25mU2VydmljZT8uaXNGZWF0dXJlQnlQYWdlRW5hYmxlZCgndG9jJywnc2FtdWhpa0NoYXJjaGEnKSlcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2Uuc2FtdWhpa0NoYXJjaGEnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cInNhbXVoaWtDaGFyY2hhRGl2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNhbXVoaWstY2hhcmNoYS1jb250ZW50IFtjb250ZW50XT1cImNvbnRlbnRSZWFkRGF0YVwiIFtjb25kaXRpb25EYXRhXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VtZUNvbnRlbnQpPVwicmVzdW1lQ29udGVudENhbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtc2FtdWhpay1jaGFyY2hhLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVGVhY2hlcnMgTm90ZSBUYWIgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50UmVhZERhdGE/LnJlZmVyZW5jZU5vZGVzICYmIHRlYWNoZXJOb3Rlc0ZsYWdcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiVGVhY2hlcnMgTm90ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJ0ZWFjaGVyc05vdGVEaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy10ZWFjaGVycy1ub3RlcyBbY29udGVudF09XCJjb250ZW50UmVhZERhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub3Rlc0Rpc3BsYXlUeXBlXT1cIidUZWFjaGVycyBSZXNvdXJjZSdcIj48L3dzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFJlZmVyZW5jZSBOb3RlIFRhYiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8ucmVmZXJlbmNlTm9kZXMgJiYgcmVmZXJlbmNlTm90ZXNGbGFnXCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlJlZmVyZW5jZSBOb3RlXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cInRlYWNoZXJzTm90ZURpdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzIFtjb250ZW50XT1cImNvbnRlbnRSZWFkRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vdGVzRGlzcGxheVR5cGVdPVwiJ1JlZmVyZW5jZSBSZXNvdXJjZSdcIj48L3dzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtYXBwLXRvYy1yZWZlcmVuY2Utbm90ZXMgW2NvbnRlbnRdPVwiY29udGVudFJlYWREYXRhXCI+PC93cy13aWRnZXQtYXBwLXRvYy1yZWZlcmVuY2Utbm90ZXM+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Fzc2lnbm1lbnRzVGFiICYmICFmb3JQcmV2aWV3ICYmIChkb21haW5Db25mU2VydmljZT8uaXNGZWF0dXJlQnlQYWdlRW5hYmxlZCgndG9jJywnYXNzaWdubWVudCcpKVwiPlxuICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5hc3NpZ25tZW50cycgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcmF0aW5ncy1kaXYgbXQtNVwiIGlkPVwidGFrZUFzc2Vzc21lbnREaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLWJhdGNoLWFzc2lnbm1lbnRzIFtjb250ZW50XT1cImNvbnRlbnRcIj48L3dzLXdpZGdldC1hcHAtYmF0Y2gtYXNzaWdubWVudHM+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVHJhbnNjcmlwdGlvbiBUYWIgLS0+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiQUkgVHV0b3JcIiAqbmdJZj1cInZpZXdlclBhZ2UgJiYgZW5hYmxlQUlUdXRvckZsYWcgJiYgaXNNb2JpbGUgJiYgKGRvbWFpbkNvbmZTZXJ2aWNlPy5pc0ZlYXR1cmVCeVBhZ2VFbmFibGVkKCd0b2MnLCd0cmFuc2NyaXB0aW9uJykpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QUkgVHV0b3I8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVkLWNpcmNsZSBtbC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBOZXdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0FJVHV0b3JQb3B1cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1haS10dXRvciBbY29udGVudF09XCJjb250ZW50Py5pZGVudGlmaWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VBSVBvcHVwKT1cImNsb3NlQUlQb3B1cCgkZXZlbnQpXCI+PC93cy13aWRnZXQtYWktdHV0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuXG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuPC9kaXY+Il19
|