tango-app-ui-manage-users 3.7.0-alpha.3 → 3.7.0-alpha.5
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/components/tango-manage-users/brand-user/brand-user.component.mjs +9 -2
- package/esm2022/lib/components-v2/add-users/add-users.component.mjs +6 -3
- package/esm2022/lib/components-v2/teams-list/teams-list.component.mjs +4 -4
- package/fesm2022/tango-app-ui-manage-users.mjs +16 -6
- package/fesm2022/tango-app-ui-manage-users.mjs.map +1 -1
- package/lib/components-v2/add-users/add-users.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -245,7 +245,14 @@ export class BrandUserComponent {
|
|
|
245
245
|
});
|
|
246
246
|
}
|
|
247
247
|
Viewusers(type, user) {
|
|
248
|
-
|
|
248
|
+
let modalOptions = {
|
|
249
|
+
centered: true,
|
|
250
|
+
size: 'lg'
|
|
251
|
+
};
|
|
252
|
+
if (user.role !== 'superadmin') {
|
|
253
|
+
modalOptions.backdrop = 'static';
|
|
254
|
+
}
|
|
255
|
+
const modalRef = this.modalService.open(AddUsersComponent, modalOptions);
|
|
249
256
|
modalRef.componentInstance.user = user;
|
|
250
257
|
modalRef.componentInstance.type = type;
|
|
251
258
|
modalRef.componentInstance.userType = 'client';
|
|
@@ -805,4 +812,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
805
812
|
type: ViewChild,
|
|
806
813
|
args: ['afterValidation']
|
|
807
814
|
}] } });
|
|
808
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXNlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLW1hbmFnZS11c2Vycy9icmFuZC11c2VyL2JyYW5kLXVzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYnJhbmQtdXNlci9icmFuZC11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUsvRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFZLElBQUksRUFBRSxLQUFLLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLDRGQUE0RjtBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7Ozs7QUFFeEcsK0RBQStEO0FBTy9ELE1BQU0sT0FBTyxrQkFBa0I7SUFxQ3JCO0lBQStCO0lBQzlCO0lBQ0E7SUFDRDtJQUNDO0lBRUE7SUFDQTtJQUNBO0lB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VCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqSCxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFFLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQTtRQUN4QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7d0dBMXhCVSxrQkFBa0I7NEZBQWxCLGtCQUFrQiwyWUN4Qi9CLDIzNEJBNlhBOzs0RkRyV2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjs4U0FLaEIsWUFBWTtzQkFBckIsTUFBTTtnQkFFa0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNFLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDTyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0ICxFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQWRkVXNlclBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4uL2FkZC11c2VyLXBvcHVwL2FkZC11c2VyLXBvcHVwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXNzaWduU3RvcmVQb3B1cENvbXBvbmVudCB9IGZyb20gXCIuLi9hc3NpZ24tc3RvcmUtcG9wdXAvYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgU3dhbCBmcm9tIFwic3dlZXRhbGVydDJcIjtcclxuaW1wb3J0IHsgRXhjZWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2V4Y2VsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBXb3JrQm9vaywgcmVhZCwgdXRpbHMsIFdvcmtTaGVldCB9IGZyb20gXCJ4bHN4XCI7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbi8vIGltcG9ydCB7IEFsZXJ0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi91c2VyLXRhYmxlL2FsZXJ0LWJ1bHBvcHVwL2FsZXJ0LXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsZXJ0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi91c2VyLXRhYmxlL2FsZXJ0LXBvcHVwL2FsZXJ0LXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZFVzZXJzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy12Mi9hZGQtdXNlcnMvYWRkLXVzZXJzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRlYW1zQ3JlYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzLXYyL3RlYW1zLWNyZWF0aW9uL3RlYW1zLWNyZWF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG4vLyBpbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJyYW5kLXVzZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9icmFuZC11c2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYnJhbmQtdXNlci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyYW5kVXNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBPdXRwdXQoKSBkYXRhVG9QYXJlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAvLyBAT3V0cHV0KCkgZGF0YVRvdXNlcmxpc3Q6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQFZpZXdDaGlsZCgnYnVsa1VwbG9hZCcpIGJ1bGtVcGxvYWQ6IGFueTtcclxuICBAVmlld0NoaWxkKFwiaW5wdXRGaWxlMVwiKSBpbnB1dEZpbGUxOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FmdGVyVmFsaWRhdGlvbicpIGFmdGVyVmFsaWRhdGlvbjogYW55O1xyXG4gcmVjZWl2ZWREYXRhOmFueT0nJztcclxuIHVzZXJEYXRhOiBzdHJpbmc7XHJcbiBzZWFyY2hWYWx1ZTogYW55O1xyXG4gdXNlckxpc3Q6IGFueVtdID0gW107XHJcbiB1c2VyTGlzdF9yZXE6IGFueTtcclxuIHBhZ2luYXRpb246IGFueSA9IHtcclxuICAgb2Zmc2V0OiAxLFxyXG4gICBsaW1pdDogMTAsXHJcbiAgIHRvdGFsQ291bnQ6IDAsXHJcbiB9O1xyXG4gbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiBub0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuIHBhZ2luYXRpb25TaXplczogbnVtYmVyW10gPSBbMTAsIDIwLCAzMF07XHJcbiBzdXBwb3J0RW1haWw6IHN0cmluZztcclxuIHVzZXJUeXBlOiBzdHJpbmc7XHJcbiAkaGVhZGVyRmlsdGVyczogYW55O1xyXG4gc2VhcmNoSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XHJcbiBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICByb2xlczogYW55O1xyXG4gIGZpbGVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0b3JlczogYW55ID1bXTtcclxuICByb2xlc0NvdW50OiBhbnk7XHJcbiAgU2VsZWN0ZWRUYWI6IGFueTtcclxuICAgIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHsgRGVzY3JpcHRpb246ICdSb2xlcycsIElzc3VlczogW3sgdGV4dDogXCJTdXBlciBBZG1pblwiLCBpZDogJ3N1cGVyYWRtaW4nIH0sIHsgdGV4dDogXCJBZG1pblwiLCBpZDogJ2FkbWluJyB9LCB7IHRleHQ6IFwiVXNlclwiLCBpZDogXCJ1c2VyXCIgfV0gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdTdGF0dXMnLCBJc3N1ZXM6IFt7IHRleHQ6IFwiQWN0aXZlXCIsIGlkOiAnYWN0aXZlJyB9LCB7IHRleHQ6IFwiRGVhY3RpdmVcIiwgaWQ6ICdkZWFjdGl2ZScgfV0gfVxyXG4gIF07XHJcbiAgZmlsdGVyQnlSb2xlczogYW55O1xyXG4gIGZpbHRlckJ5U3RhdHVzOiBhbnk7XHJcbiAgdXNlckluZm86IGFueTtcclxuIGNvbnN0cnVjdG9yKFxyXG4gICBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICBwcml2YXRlIGV4Y2VsU2VydmljZTogRXhjZWxTZXJ2aWNlLFxyXG4gICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAvLyAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiApIHtcclxuICAgdGhpcy5ncy5lbnZpcm9ubWVudC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlbnYpID0+IHtcclxuICAgICBpZiAoZW52KSB7XHJcbiAgICAgICB0aGlzLnN1cHBvcnRFbWFpbCA9IGVudi5zdXBwb3J0X2VtYWlsO1xyXG4gICAgIH1cclxuICAgfSk7ICAgIFxyXG4gfVxyXG5cclxuXHJcbiBzZXRQYWdlRGF0YSgpIHtcclxuICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiVXNlcnNcIik7XHJcbiAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIk9uYm9hcmQgeW91ciB0ZWFtIGFuZCBoZWxwIHRoZW0gdmlzdWFsaXplIHRoZWlyIHN0b3JlcyBwZXJmb3JtYW5jZVwiKTtcclxuICBsZXQgYnJlYWRjcnVtYnMgOiBhbnlbXT1bXTtcclxuICBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSA9PT0gXCJ0YW5nb1wiKSB7XHJcbiAgICBicmVhZGNydW1icz0gIFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9icmFuZHNcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL2JyYW5kc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfSBlbHNlIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSBcImNsaWVudFwiKSB7XHJcbiAgICBicmVhZGNydW1icz0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N1bW1hcnlcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N1bW1hcnlcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzKTtcclxufVxyXG4gbmdPbkluaXQoKSB7XHJcbiAgdGhpcy51c2VySW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcclxuICBcclxuICAgdGhpcy5ncz8uZGF0YVJhbmdlVmFsdWU/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICBuZXh0OihkYXRhOmFueSk9PntcclxuICAgICAgIGlmKGRhdGEgPT09IG51bGwgKSB7XHJcbiAgICAgICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcclxuICAgICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gdXNlckRhdGE7XHJcbiAgICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgPSB1c2VyRGF0YS5jbGllbnRJZFxyXG4gICAgICAgIHRoaXMudXNlckRhdGEgPSBcImNsaWVudFwiO1xyXG4gICAgICAgICAgIHRoaXMudXNlclR5cGUgPSBcImNsaWVudFwiO1xyXG4gICAgICAgICAgIGlmKHVzZXJEYXRhPy5jbGllbnRJZCl7XHJcbiAgICAgICAgICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgICAgICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICAgICAgICAgZXhwb3J0OmZhbHNlXHJcbiAgICAgICAgICAgfTtcclxuICAgICAgICAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gICAgICAgICAgLy8gIHRoaXMuZ2V0Um9sZXMoKTtcclxuICAgICAgICAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgICAgICAgICB0aGlzLnVzZXJEYXRhID0gXCJjbGllbnRcIjtcclxuICAgICAgICAgICB0aGlzLnVzZXJUeXBlID0gXCJjbGllbnRcIjtcclxuICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0gMTtcclxuICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ubGltaXQgPSAxMDtcclxuICAgICAgICAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgICAgICAgIGxpbWl0OiAxMCxcclxuICAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICAgICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgICAgICAgICBleHBvcnQ6ZmFsc2VcclxuICAgICAgICAgICB9O1xyXG4gICAgICAgICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgICAgICAgICAvLyAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgICAgICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgICAgIH0gXHJcbiAgICAgfVxyXG4gICB9KTtcclxuXHJcbiBcclxuICB9XHJcbiAgZ2V0TWFza2VkVmFsdWUodmFsdWU6IHN0cmluZywgcm9sZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChyb2xlID09PSAnc3VwZXJhZG1pbicpIHJldHVybiB2YWx1ZTtcclxuICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmluY2x1ZGVzKCdAJykpIHJldHVybiAnJztcclxuXHJcbiAgICBjb25zdCBbbG9jYWwsIGRvbWFpbl0gPSB2YWx1ZS5zcGxpdCgnQCcpO1xyXG4gICAgY29uc3QgdmlzaWJsZUxlbmd0aCA9IE1hdGgubWluKDUsIGxvY2FsLmxlbmd0aCk7XHJcbiAgICBjb25zdCB2aXNpYmxlUGFydCA9IGxvY2FsLnNsaWNlKDAsIHZpc2libGVMZW5ndGgpO1xyXG4gICAgY29uc3QgbWFza2VkUGFydCA9ICcqJy5yZXBlYXQobG9jYWwubGVuZ3RoIC0gdmlzaWJsZUxlbmd0aCk7XHJcblxyXG4gICAgcmV0dXJuIGAke3Zpc2libGVQYXJ0fSR7bWFza2VkUGFydH1AJHtkb21haW59YDtcclxuICB9XHJcbiAgZ2V0TWFza2VkTW9iaWxlKHZhbHVlOiBzdHJpbmcsIHJvbGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAocm9sZSA9PT0gJ3N1cGVyYWRtaW4nKSByZXR1cm4gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8PSA0KSByZXR1cm4gJyonLnJlcGVhdCh2YWx1ZS5sZW5ndGgpO1xyXG4gIFxyXG4gICAgY29uc3QgZmlyc3QyID0gdmFsdWUuc2xpY2UoMCwgMik7XHJcbiAgICBjb25zdCBsYXN0MiA9IHZhbHVlLnNsaWNlKC0yKTtcclxuICAgIGNvbnN0IG1hc2tlZE1pZGRsZSA9ICcqJy5yZXBlYXQodmFsdWUubGVuZ3RoIC0gNCk7XHJcbiAgXHJcbiAgICByZXR1cm4gYCR7Zmlyc3QyfSR7bWFza2VkTWlkZGxlfSR7bGFzdDJ9YDtcclxuICB9XHJcbiBcclxuIHNlYXJjaERhdGEoKSB7XHJcbiAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9MTtcclxuICB0aGlzLnBhZ2luYXRpb24ubGltaXQgPTEwO1xyXG4gIGlmKHRoaXMuc2VhcmNoVmFsdWUgPT09Jycpe1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICB9IGVsc2Uge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgbGltaXQ6IDEwLFxyXG4gICAgIG9mZnNldDogMSxcclxuICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICBleHBvcnQ6ZmFsc2VcclxuICAgfTtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gIH1cclxuIH1cclxuIHVzZXJzKHR5cGU6IGFueSx1c2VyPzogYW55KSB7XHJcbiAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRVc2VyUG9wdXBDb21wb25lbnQsIHtcclxuICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcclxuICAgfSk7XHJcbiAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB1c2VyO1xyXG4gICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlclR5cGUgPSdjbGllbnQnO1xyXG4gICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZihyZXN1bHQgPT09J3N1Ym1pdCcpe1xyXG4gICAgICB0aGlzLnNlYXJjaFZhbHVlID0nJztcclxuICAgICAgdGhpcy51c2VyTGlzdF9yZXEubGltaXQgPSAxMDtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IDE7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICAgIHRoaXMudXNlclNlcnZpY2UuZGF0YVN1YmplY3QubmV4dCh0aGlzLnVzZXJEYXRhKTtcclxuICAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgICAvLyAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgfVxyXG4gICB9KTtcclxuIH1cclxuIFZpZXd1c2Vycyh0eXBlOiBhbnksdXNlcj86IGFueSl7XHJcbiAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFVzZXJzQ29tcG9uZW50LHsgY2VudGVyZWQ6IHRydWUsYmFja2Ryb3A6J3N0YXRpYycsIHNpemU6ICdsZycgfSk7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlciA9IHVzZXI7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlclR5cGUgPSdjbGllbnQnO1xyXG4gIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgfSlcclxuIH1cclxuIC8vIHNlYXJjaERhdGEoKSB7XHJcbiAvLyAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAvLyB9XHJcblxyXG4gb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IG51bWJlcikge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQgPSBwYWdlT2Zmc2V0O1xyXG4gICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0gcGFnZU9mZnNldDtcclxuICAgaWYodGhpcy5zZWFyY2hWYWx1ZSA9PT0nJyl7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogdGhpcy51c2VyTGlzdF9yZXEubGltaXQsXHJcbiAgICAgIG9mZnNldDogdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0LFxyXG4gICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSwgIFxyXG4gICAgICBleHBvcnQ6ZmFsc2UsXHJcbiAgICAgIHNvcnRDb2x1bU5hbWUgOnRoaXMudXNlckxpc3RfcmVxLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0QnkgOiB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnlcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgZXhwb3J0OmZhbHNlLFxyXG4gICAgICBzb3J0Q29sdW1OYW1lIDp0aGlzLnVzZXJMaXN0X3JlcS5zb3J0Q29sdW1OYW1lLFxyXG4gICAgc29ydEJ5IDogdGhpcy51c2VyTGlzdF9yZXEuc29ydEJ5XHJcbiAgICB9O1xyXG4gIH1cclxuICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5U3RhdHVzID0gdGhpcy5maWx0ZXJCeVN0YXR1cztcclxuICB0aGlzLmNyZWF0ZVRlYW0gPSBmYWxzZTtcclxuICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbXTtcclxuICB0aGlzLnNlbGVjdEFsbENoZWNrZWQgPWZhbHNlO1xyXG4gICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gfVxyXG5cclxuIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IDE7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICBpZih0aGlzLnNlYXJjaFZhbHVlID09PScnKXtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLCAgXHJcbiAgICAgIGV4cG9ydDpmYWxzZSxcclxuICAgICAgc29ydENvbHVtTmFtZSA6dGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSxcclxuICAgIHNvcnRCeSA6IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeVxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IHRoaXMudXNlckxpc3RfcmVxLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2UsXHJcbiAgICAgIHNvcnRDb2x1bU5hbWUgOnRoaXMudXNlckxpc3RfcmVxLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0QnkgOiB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnlcclxuICAgIH07XHJcbiAgfVxyXG4gIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gIHRoaXMuY3JlYXRlVGVhbSA9IGZhbHNlO1xyXG4gIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9ZmFsc2U7XHJcbiAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiB9XHJcblxyXG4gYXNzaWduU3RvcmUodXNlcjogYW55KSB7XHJcbiAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBc3NpZ25TdG9yZVBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgYmFja2Ryb3A6J3N0YXRpYycsXHJcbiAgICAgc2l6ZTogXCJsZ1wiLFxyXG4gICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgIH0pO1xyXG4gICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdXNlcjtcclxuICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYocmVzdWx0ID09PSdzdWJtaXQnKXtcclxuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9Jyc7XHJcbiAgICAgIHRoaXMudXNlckxpc3RfcmVxLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9IDEwO1xyXG4gICAgICB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQgPSAxO1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0gMTtcclxuICAgICB0aGlzLnVzZXJTZXJ2aWNlLmRhdGFTdWJqZWN0Lm5leHQodGhpcy51c2VyRGF0YSk7XHJcbiAgICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2VcclxuICAgIH07XHJcbiAgICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICAgIH1cclxuICAgfSk7XHJcbiB9XHJcblxyXG4gbG9hZFRhYmxlKCkge1xyXG4gICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gIC8vICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0PTE7XHJcbiAgLy8gIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9MTA7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50ID0wO1xyXG4gICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJMaXN0KHRoaXMudXNlckxpc3RfcmVxKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKFxyXG4gICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgICBvZmZzZXQ6IHRoaXMucGFnaW5hdGlvbi5vZmZzZXQsXHJcbiAgICAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbi5saW1pdCxcclxuICAgICAgICAgICB0b3RhbENvdW50OiByZXMuZGF0YS5jb3VudCxcclxuICAgICAgICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgICAgfTtcclxuICAgICAgICAgdGhpcy5kYXRhVG9QYXJlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCk7XHJcbiAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlTWVzc2FnZSh0aGlzLnBhZ2luYXRpb24ubGltaXQpO1xyXG4gICAgICAgICBpZiAocmVzLmRhdGEuY291bnQgPCAxMCkge1xyXG4gICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3Jlcy5kYXRhLmNvdW50XTtcclxuICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgIH0gZWxzZSB7ICAgICAgXHJcblxyXG4gICAgICAgICB0aGlzLnVzZXJMaXN0ID0gW107XHJcbiAgICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICAgIHRvdGFsQ291bnQ6IDAsXHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kYXRhVG9QYXJlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCk7XHJcbiAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICB9XHJcbiAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICB9LFxyXG4gICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICB0aGlzLnVzZXJMaXN0ID0gW107XHJcbiAgICAgICB0aGlzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICAgfTtcclxuICAgICAgIHRoaXMuZGF0YVRvUGFyZW50LmVtaXQodGhpcy5wYWdpbmF0aW9uLnRvdGFsQ291bnQpO1xyXG4gICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgfVxyXG4gICApO1xyXG4gfVxyXG5cclxuIHBhZ2luYXRpb25TaXplKCk6IG51bWJlciB7XHJcbiAgIGlmICh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCA8IDEwKSB7XHJcbiAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50O1xyXG4gICB9IGVsc2Uge1xyXG4gICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24ubGltaXQ7XHJcbiAgIH1cclxuIH1cclxuXHJcbiBleHBvcnRYTFNYKCkge1xyXG4gIGlmKHRoaXMuc2VhcmNoVmFsdWUgPT09Jycpe1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBleHBvcnQ6dHJ1ZVxyXG4gICAgfTtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiAgdGhpcy51c2VyU2VydmljZVxyXG4gIC5nZXRVc2VyTGlzdEV4cG9ydCh0aGlzLnVzZXJMaXN0X3JlcSlcclxuICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5leGNlbFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ1VzZXJzJylcclxuXHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgIGxpbWl0OiAxMDAwMCxcclxuICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgZXhwb3J0OnRydWVcclxuICAgfTtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gdGhpcy51c2VyU2VydmljZVxyXG4gLmdldFVzZXJMaXN0RXhwb3J0KHRoaXMudXNlckxpc3RfcmVxKVxyXG4gLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gLnN1YnNjcmliZSh7XHJcbiAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgIHRoaXMuZXhjZWxTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsICdVc2VycycpXHJcblxyXG4gICB9LFxyXG4gICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICB9LFxyXG4gICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiB9KTtcclxuICB9XHJcblxyXG4gXHJcbiAgXHJcblxyXG4gIH1cclxuICBcclxuICBidWxrQXNzaWduYXN4bHN4KCkge1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmJ1bGtVcGxvYWQse2NlbnRlcmVkOiB0cnVlLGJhY2tkcm9wOidzdGF0aWMnfSlcclxuICB9XHJcblxyXG4gIGFkZFNpbmdsZVVzZXIoKSB7XHJcbiAgICBcclxuICB9XHJcbiAgXHJcbiAgZXhjZWxFcnJvcjogYW55O1xyXG4gIGV4Y2VsRGF0YTogYW55ID0gW11cclxuICB2YWxpZGF0ZWRPdXRwdXQ6IGFueSA9IFtdO1xyXG5cclxuICBnZXRTdG9yZUNvdW50cyhkYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCB1bmlxdWVVc2VyTmFtZXMgPSBuZXcgU2V0KGRhdGE/Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtWydTdG9yZSBOYW1lL1N0b3JlIElkJ10pKTtcclxuICAgIHJldHVybiB1bmlxdWVVc2VyTmFtZXMuc2l6ZTtcclxuXHJcbiAgfVxyXG5cclxuICBvblVwbG9hZDEoZTogYW55KSB7XHJcbiAgICBsZXQgZGF0YTogYW55W107XHJcbiAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgbGV0IHN0b3JlTmFtZTogYW55ID0gJyc7XHJcblxyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gL1xcLih4bHN8eGxzeHxjc3YpJC9pO1xyXG4gIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIiwgXHJcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJ0ZXh0L2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJhcHBsaWNhdGlvbi9jc3ZcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBdO1xyXG5cclxuICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zLnRlc3QoZmlsZS5uYW1lKSB8fCAhYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJPbmx5IC54bHN4LCBvciAuY3N2IGZpbGVzIGFyZSBhbGxvd2VkLlwiKTtcclxuICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSA8RGF0YVRyYW5zZmVyPmUudGFyZ2V0O1xyXG4gICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICghIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKSkge1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogV29ya0Jvb2sgPSByZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3M6IFdvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGRhdGEgPSB1dGlscy5zaGVldF90b19qc29uKHdzKTtcclxuICAgICAgICB0aGlzLmV4Y2VsRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgc3RvcmVOYW1lID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgICByZWFkZXIub25sb2FkZW5kID0gYXN5bmMgKGUpID0+IHtcclxuXHJcbiAgICAgICAgIGlmIChzdG9yZU5hbWUgIT09IFwiVXNlcnNcIikge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIkNhbiB5b3UgY29uZmlybSB3aGV0aGVyIHRoZSBzaGVldCBuYW1lIGlzIFVzZXJzID9cIik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWRhdGE/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGUuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRLZXlzID0gWydTdG9yZSBOYW1lL1N0b3JlIElkJywnRW1haWwnXSAvLyBNdXN0IGFsd2F5cyBiZSBwcmVzZW50XHJcbiAgICAgICAgLy8gY29uc3Qgb3B0aW9uYWxLZXlzID0gWyd1c2VyUGhvbmUnLCAnY2l0eSddIDogWydjaXR5J107XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGRhdGEuc29tZSgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXRlbSk7XHJcbiAgICAgICAgICBjb25zdCBoYXNSZXF1aXJlZEtleXMgPSByZXF1aXJlZEtleXMuZXZlcnkoa2V5ID0+IGtleXMuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgICAgICBjb25zdCBhbGxLZXlzQXJlQWxsb3dlZCA9IGtleXMuZXZlcnkoa2V5ID0+IFxyXG4gICAgICAgICAgICByZXF1aXJlZEtleXMuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICAgICAvLyB8fCBvcHRpb25hbEtleXMuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiBoYXNSZXF1aXJlZEtleXMgJiYgYWxsS2V5c0FyZUFsbG93ZWQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGUuJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50Py5FbWFpbCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LkVtYWlsID0gZWxlbWVudD8uRW1haWwucmVwbGFjZSgvXFxzL2csICcnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICggIWVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddIHx8IGVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddID09ICcnIHx8IGVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBTdG9yZSBOYW1lL1N0b3JlIElkIC0gQiR7aW5kZXggKyAyfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWVsZW1lbnQ/LkVtYWlsIHx8IGVsZW1lbnQ/LkVtYWlsPy50cmltKCkgPT0gJycgfHwgZWxlbWVudC5FbWFpbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgRW1haWwgLSBBJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50Py5FbWFpbCAmJiAhZWxlbWVudC5FbWFpbC5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLykpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBFbWFpbCAtIEEke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChlcnJvci5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgYXBpRGF0YSA9IHRoaXMuZXhjZWxEYXRhLm1hcCgoZWw6IGFueSkgPT57XHJcbiAgICAgICAgICByZXR1cm4ge3N0b3JlIDogZWw/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddLFxyXG4gICAgICAgICAgZW1haWwgOiBlbD8uRW1haWx9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAgICAgLmJ1bGtVc2VyQXNzaWduKHtcclxuICAgICAgICAgICAgZGF0YTogYXBpRGF0YVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICBpZiAocmVzLnN0YXR1cz09PSdlcnJvcicmJnJlcy5lcnJvci5lcnJvci5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjogcmVzLmVycm9yLmVycm9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZChwb3B1cGNvbnRlbnQpXHJcbiAgICAgICAgICB0aGlzLmlucHV0RmlsZTEubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZCgpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZWRPdXRwdXQgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PiB7XHJcbiAgICAgICAgaWYgKGVyci5lcnJvci5jb2RlID09PSA0MDApIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjplcnIuZXJyb3IuZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICAvLyAkKFwiI2t0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIpPy52YWwoXCJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZXVwbG9hZCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICAgcHJvY2VlZFN1Ym1pdCgpIHtcclxuICAgIGxldCBwYXlsb2FkID0ge2RhdGE6dGhpcy52YWxpZGF0ZWRPdXRwdXR9IFxyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuYXNzaWduRGF0YShwYXlsb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgU3RvcmVzIEFzc2lnbmVkIHRvIFVzZXIgU3VjY2Vzc2Z1bGx5IWApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChgVW5hYmxlIHRvIGFzc2lnbiBTdG9yZXMgdG8gdXNlciFgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBBc3NpZ24gU3RvcmVzIHRvIFVzZXIhXCIpO1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBjbG9zZWFjdGl2ZXBvcHVwKCkge1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gIH1cclxuXHJcbiAgYWZ0ZXJVcGxsb2FkKGRhdGE/OiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxFcnJvciA9IGRhdGE7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYWZ0ZXJWYWxpZGF0aW9uLCB7IGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYycgfSlcclxuICB9XHJcblxyXG4gIHVzZXJTdGF0dXNDaGFuZ2UodXNlcjogYW55LCBpOiBudW1iZXIpIHtcclxuICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWxlcnRQb3B1cENvbXBvbmVudCx7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLGJhY2tkcm9wOlwic3RhdGljXCIgfSk7ICAgXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdXNlcjtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICBpZiAocmVzdWx0KSB7XHJcbiAgICBpZiAocmVzdWx0ID09PSdzdWJtaXQnKSB7XHJcbiAgIHRoaXMudXNlclNlcnZpY2UudXBkYXRlVXNlcih7IGVtYWlsOiB1c2VyPy5lbWFpbCwgaXNBY3RpdmU6IHVzZXIuaXNBY3RpdmV9KS5zdWJzY3JpYmUoe1xyXG4gICAgIG5leHQ6KHJlczphbnkpPT4ge1xyXG4gICAgICAgaWYocmVzICYmIHJlcy5jb2RlPT0yMDApIHtcclxuICAgICAgICAgaWYodXNlci5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdCgnVXNlciBTdGF0dXMgQWN0aXZhdGVkIScpO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdCgnVXNlciBTdGF0dXMgRGVhY3RpdmF0ZWQhJyk7XHJcbiAgICAgICAgIH1cclxuICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ1VuYWJsZSB0byBDaGFuZ2UgVXNlciBTdGF0dXMhJyk7XHJcbiAgICAgICAgIHRoaXMudXNlckxpc3RbaV0uaXNBY3RpdmU9IXVzZXIuaXNBY3RpdmU7XHJcbiAgICAgICB9XHJcbiAgICAgfSxcclxuICAgICBlcnJvcjooKT0+e1xyXG4gICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnVW5hYmxlIHRvIENoYW5nZSBVc2VyIFN0YXR1cyEnKTtcclxuICAgICAgIHRoaXMudXNlckxpc3RbaV0uaXNBY3RpdmU9IXVzZXIuaXNBY3RpdmU7XHJcbiAgICAgfSxcclxuICAgICBjb21wbGV0ZTooKT0+e31cclxuICAgfSlcclxuICB9IGVsc2UgaWYocmVzdWx0ID09PSdjbG9zZScpIHtcclxuICAgIHRoaXMudXNlckxpc3RbaV0uaXNBY3RpdmU9IXVzZXIuaXNBY3RpdmU7XHJcbiAgfVxyXG59XHJcbn0pXHJcbiB9XHJcbiBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiB9XHJcbiBnZXRSb2xlcygpIHtcclxuICB2YXIgZGF0YSA9IHsgXHJcbiAgICAgIHVzZXJUeXBlOiAnY2xpZW50JyxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnM/LmNsaWVudFxyXG4gICAgfVxyXG4gIHRoaXMudXNlclNlcnZpY2UuZ2V0Um9sZXMoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnJvbGVzID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgIHRoaXMucm9sZXNDb3VudCA9IHJlcy5kYXRhLmNvdW50O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucm9sZXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICB0aGlzLnJvbGVzID0gW107XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICB9KTtcclxufVxyXG51c2VyRGV0aWFscyhyb2xlOiBhbnkpIHtcclxuICBsZXQgb2JqID17XHJcbiAgICByb2xlOnJvbGUsXHJcbiAgICB1c2VyVHlwZSA6J0JyYW5kIFVzZXInLFxyXG4gICAgcmVjZWl2ZWREYXRhOlwiUm9sZSBWYWx1ZVwiXHJcbiAgfVxyXG4gIHRoaXMudXNlclNlcnZpY2Uucm9sZXNDb21tcy5uZXh0KG9iaik7XHJcbiAgdGhpcy5yZWNlaXZlZERhdGEgPSdSb2xlIFZhbHVlJztcclxufVxyXG5yZWNlaXZlRGF0YShkYXRhOiBzdHJpbmcpIHtcclxuICB0aGlzLnJlY2VpdmVkRGF0YSA9IGRhdGE7XHJcbiAgdGhpcy51c2VyU2VydmljZS5kYXRhU3ViamVjdC5uZXh0KHRoaXMudXNlckRhdGEpO1xyXG59XHJcblxyXG5vblNvcnQoY29sdW1uOiBzdHJpbmcpIHtcclxuICB0aGlzLnVzZXJMaXN0X3JlcS5leHBvcnQgPSBmYWxzZTtcclxuICBpZiAodGhpcy51c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuc29ydEJ5ID0gdGhpcy51c2VyTGlzdF9yZXEuc29ydEJ5ID09PSAxID8gLTEgOiAxO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0Q29sdW1OYW1lID0gY29sdW1uO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuc29ydEJ5ID0gMTtcclxuICB9XHJcbiAgdGhpcy5sb2FkVGFibGUoKVxyXG59XHJcblxyXG5hcHBseUZpbHRlcnMoZXZlbnQ6YW55KXtcclxuICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSBcIlJvbGVzXCIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlckJ5Um9sZXMgPSBlbGVtZW50Lklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWw/LmlkKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJTdGF0dXNcIikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQnlTdGF0dXMgPSBlbGVtZW50Lklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWw/LmlkKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEubGltaXQ9MTA7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiAgICB0aGlzLmxvYWRUYWJsZSgpXHJcbn1cclxuc2VsZWN0QWxsQ2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5zZWxlY3RlZFVzZXJzOiBhbnlbXSA9IFtdOyBcclxuY3JlYXRlVGVhbTogYm9vbGVhbiA9IGZhbHNlO1xyXG5vblNlbGVjdEFsbCgpIHtcclxuICB0aGlzLnNlbGVjdEFsbENoZWNrZWQgPSAhdGhpcy5zZWxlY3RBbGxDaGVja2VkOyBcclxuXHJcbiAgdGhpcy51c2VyTGlzdC5mb3JFYWNoKHVzZXIgPT4ge1xyXG4gICAgdXNlci5jaGVja2VkID0gdGhpcy5zZWxlY3RBbGxDaGVja2VkOyBcclxuICB9KTtcclxuICBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2VkKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbLi4udGhpcy51c2VyTGlzdF07XHJcbiAgICB0aGlzLmNyZWF0ZVRlYW0gPSB0cnVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbXTtcclxuICAgIHRoaXMuY3JlYXRlVGVhbSA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbm9uU2VsZWN0ZWRUZWFtcyh1c2VyOiBhbnksaW5kZXg6YW55KSB7XHJcbiAgICB1c2VyLmNoZWNrZWQgPSAhdXNlci5jaGVja2VkO1xyXG4gICAgaWYgKHVzZXIuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnMucHVzaCh1c2VyKTtcclxuICAgIH0gZWxzZSBpZih1c2VyLmNoZWNrZWQgPT09ZmFsc2UpIHtcclxuICAgICAgIGNvbnN0IHN0b3JlSW5kZXggPSB0aGlzLnNlbGVjdGVkVXNlcnMuZmluZEluZGV4KHNlbGVjdGVkVXNlciA9PiBzZWxlY3RlZFVzZXIuX2lkID09PSB1c2VyLl9pZCk7XHJcbiAgICAgIGlmIChzdG9yZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vycy5zcGxpY2Uoc3RvcmVJbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9IHRoaXMudXNlckxpc3QuZXZlcnkoc3RvcmUgPT4gc3RvcmUuY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNyZWF0ZVRlYW0gPSB0aGlzLnNlbGVjdGVkVXNlcnMubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVRlYW1zKCl7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGVhbXNDcmVhdGlvbkNvbXBvbmVudCx7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnLGJhY2tkcm9wOidzdGF0aWMnIH0pOyAgICBcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRlYW1zVXNlcnMgPSB0aGlzLnNlbGVjdGVkVXNlcnM7XHJcbiAgICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2VkID1mYWxzZTtcclxuICAgICAgIHRoaXMuY3JlYXRlVGVhbSA9IGZhbHNlO1xyXG4gICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gW11cclxuICAgICAgfSlcclxuICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwicmVjZWl2ZWREYXRhICE9PSdSb2xlIFZhbHVlJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgbWItMlwiPlVzZXJzPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e3BhZ2luYXRpb24/LnRvdGFsQ291bnQgPyBwYWdpbmF0aW9uPy50b3RhbENvdW50IDonMCd9fSB0b3RhbCB1c2Vyczwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIHJpZ2h0Y29ybmVyIFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNyZWF0ZVRlYW1cIiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbG9hZGluZyAmJiAhbm9EYXRhXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRYTFNYKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIHAtNCBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYnVsa0Fzc2lnbmFzeGxzeCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgcC00IGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5CdWxrIEFzc2lnbjwvc3Bhbj4gPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0FkZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXNlcnMoJ2FkZCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMiByb3VuZGVkLTMgdGV4dC1ub3dyYXBcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMDEgNC4xNjY2M1YxNS44MzMzTTQuMTY2NzUgOS45OTk5NkgxNS44MzM0XCIgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTIgdGV4dC13aGl0ZVwiPkFkZCBVc2VyPC9zcGFuPiA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3JlYXRlVGVhbVwiIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNyZWF0ZVRlYW1zKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0yIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAwMSA0LjE2NjYzVjE1LjgzMzNNNC4xNjY3NSA5Ljk5OTk2SDE1LjgzMzRcIiBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMiB0ZXh0LXdoaXRlXCI+Q3JlYXRlIFRlYW08L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwIFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNBZGRcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0Y2hlY2tcIj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbENoZWNrZWRcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCd1c2VyTmFtZScpXCI+TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICd1c2VyTmFtZScgJiYgdXNlckxpc3RfcmVxPy5zb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ3VzZXJOYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZW1haWwnKVwiPkVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ2VtYWlsJyAmJiB1c2VyTGlzdF9yZXE/LnNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAnZW1haWwnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdtb2JpbGVOdW1iZXInKVwiPkNvbnRhY3QgTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ21vYmlsZU51bWJlcicgJiYgdXNlckxpc3RfcmVxPy5zb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ21vYmlsZU51bWJlcicgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3JvbGUnKVwiPlJvbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ3JvbGUnICYmIHVzZXJMaXN0X3JlcT8uc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdyb2xlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFzc2lnbmVkIFRvIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFzIGEgTGVhZCBUbyA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJMaXN0O2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0FkZFwiPjxzcGFuIGNsYXNzPVwiaW5wdXRjaGVja1wiPjxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtdC0yXCIgWyhuZ01vZGVsKV09XCJ1c2VyLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWRUZWFtcyh1c2VyLGkpXCI+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t1c2VyPy51c2VyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBnZXRNYXNrZWRWYWx1ZSh1c2VyPy5lbWFpbCwgdXNlckluZm8/LnJvbGUpIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBnZXRNYXNrZWRNb2JpbGUodXNlcj8ubW9iaWxlTnVtYmVyLCB1c2VySW5mbz8ucm9sZSkgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidXNlcj8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIj5TdXBlciBBZG1pbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ1c2VyPy5yb2xlICE9PSdzdXBlcmFkbWluJ1wiPnt7dXNlcj8ucm9sZSB8IHRpdGxlY2FzZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57e3VzZXI/LmFzc2lnbmVkU3RvcmVzfHwwfX0gU3RvcmVzPC9zcGFuPiA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWluZm9cIj57e3VzZXI/LnRlYW1Db3VudHx8MH19IFRlYW1zPC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wdXJwbGVcIj57e3VzZXI/LmNsdXN0ZXJDb3VudHx8MH19IENsdXN0ZXJzPC9zcGFuPiA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWluZm9cIj57e3VzZXI/LnRlYW1sZWFkfHwwfX0gVGVhbXM8L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRkPnt7dXNlcj8udGVhbUNvdW50fHwwfX08L3RkPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEBpZiAoKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lm1hbmFnZV91c2Vyc19pc0VkaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMyBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ1c2VycygnZWRpdCcsdXNlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS42NjY3NSAzLjMzMzMzSDMuODMzNDFDMy4zOTEzOSAzLjMzMzMzIDIuOTY3NDYgMy41MDg5MyAyLjY1NDkgMy44MjE0OUMyLjM0MjM0IDQuMTM0MDUgMi4xNjY3NSA0LjU1Nzk3IDIuMTY2NzUgNVYxNi42NjY3QzIuMTY2NzUgMTcuMTA4NyAyLjM0MjM0IDE3LjUzMjYgMi42NTQ5IDE3Ljg0NTJDMi45Njc0NiAxOC4xNTc3IDMuMzkxMzkgMTguMzMzMyAzLjgzMzQxIDE4LjMzMzNIMTUuNTAwMUMxNS45NDIxIDE4LjMzMzMgMTYuMzY2IDE4LjE1NzcgMTYuNjc4NiAxNy44NDUyQzE2Ljk5MTIgMTcuNTMyNiAxNy4xNjY3IDE3LjEwODcgMTcuMTY2NyAxNi42NjY3VjEwLjgzMzNNMTUuOTE2NyAyLjA4MzMzQzE2LjI0ODMgMS43NTE4MSAxNi42OTc5IDEuNTY1NTcgMTcuMTY2NyAxLjU2NTU3QzE3LjYzNTYgMS41NjU1NyAxOC4wODUyIDEuNzUxODEgMTguNDE2NyAyLjA4MzMzQzE4Ljc0ODMgMi40MTQ4NSAxOC45MzQ1IDIuODY0NDkgMTguOTM0NSAzLjMzMzMzQzE4LjkzNDUgMy44MDIxNyAxOC43NDgzIDQuMjUxODEgMTguNDE2NyA0LjU4MzMzTDEwLjUwMDEgMTIuNUw3LjE2Njc1IDEzLjMzMzNMOC4wMDAwOCAxMEwxNS45MTY3IDIuMDgzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0zIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlZpZXd1c2VycygndmlldycsdXNlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xOTk1XzE2NDAwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjMzMzI1IDEwQzEuMzMzMjUgMTAgNC42NjY1OCAzLjMzMzM3IDEwLjQ5OTkgMy4zMzMzN0MxNi4zMzMzIDMuMzMzMzcgMTkuNjY2NiAxMCAxOS42NjY2IDEwQzE5LjY2NjYgMTAgMTYuMzMzMyAxNi42NjY3IDEwLjQ5OTkgMTYuNjY2N0M0LjY2NjU4IDE2LjY2NjcgMS4zMzMyNSAxMCAxLjMzMzI1IDEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC40OTk5IDEyLjVDMTEuODgwNiAxMi41IDEyLjk5OTkgMTEuMzgwOCAxMi45OTk5IDEwQzEyLjk5OTkgOC42MTkzMyAxMS44ODA2IDcuNTAwMDQgMTAuNDk5OSA3LjUwMDA0QzkuMTE5MjEgNy41MDAwNCA3Ljk5OTkyIDguNjE5MzMgNy45OTk5MiAxMEM3Ljk5OTkyIDExLjM4MDggOS4xMTkyMSAxMi41IDEwLjQ5OTkgMTIuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE5OTVfMTY0MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICgoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNFZGl0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMyBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwidXNlckluZm8ucm9sZSE9PSd1c2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFzc2lnblN0b3JlKHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXVzZXI/LmlzQWN0aXZlIHx8IHVzZXI/LnJvbGUgPT09J3N1cGVyYWRtaW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj5Bc3NpZ248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiICpuZ0lmPVwidXNlckluZm8ucm9sZSE9PSd1c2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtdC0zXCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwic3VwcG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lkdsb2JhbF9Vc2VyX2lzRWRpdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXNlclN0YXR1c0NoYW5nZSh1c2VyLGkpXCIgWyhuZ01vZGVsKV09XCJ1c2VyTGlzdFtpXS5pc0FjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh1c2VyTGlzdFtpXS5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGFcIiBjbGFzcz1cImNvbC14eGwtMTIgY29sLW1kLTEyIGNvbC14bC0xMiBjb2wtbGctMTIgbXktM1wiPlxyXG4gICAgICAgIDxsaWItcGFnaW5hdGlvbiAqbmdJZj1cInVzZXJMaXN0Lmxlbmd0aCE9PTBcIiBbaXRlbXNQZXJQYWdlXT1cInBhZ2luYXRpb24ubGltaXRcIiBbY3VycmVudFBhZ2VdPVwicGFnaW5hdGlvbi5vZmZzZXRcIlxyXG4gICAgICAgICAgICBbdG90YWxJdGVtc109XCJwYWdpbmF0aW9uLnRvdGFsQ291bnRcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uU2l6ZSgpXCJcclxuICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXIgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSA8ZGl2ICpuZ0lmPVwicmVjZWl2ZWREYXRhICE9PSdSb2xlIFZhbHVlJ1wiIGNsYXNzPVwiY29sLXh4bC0xMiBjb2wtbWQtMTIgY29sLXhsLTEyIGNvbC1sZy0xMiBteS0zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGl0bGUgZnctYm9sZFwiPlJvbGVzICYgUGVybWlzc2lvbjwvaDM+XHJcbiAgICAgICAgICAgIDxoNiBjbGFzcz1cInN1Yi10aXRsZSBmdy1ub3JtYWxcIj57e3JvbGVzQ291bnQgfHwgMH19IHRvdGFsIHJvbGVzPC9oNj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGJvcmRlci12YWwgbXgtMyBtYi03IHB5LTdcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIHJvbGVzXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIm9iai5yb2xlTmFtZSA9PT0nc3VwZXJhZG1pbidcIiBjbGFzcz1cInJvbGUtdGl0bGUgbXktMiBjdXJzb3ItcG9pbnRlclwiID5TdXBlciBBZG1pbjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib2JqLnJvbGVOYW1lICE9PSdzdXBlcmFkbWluJ1wiIGNsYXNzPVwicm9sZS10aXRsZSBteS0yIGN1cnNvci1wb2ludGVyXCI+e3tvYmoucm9sZU5hbWUgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVjYXNlfX08L2E+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLnJvbGVOYW1lID09PSdzdXBlcmFkbWluJ1wiIGNsYXNzPVwic3ViLXRpdGxlIGZ3LXNlbWlib2xkIG15LTVcIj5PdmVyc2VlcyBhbGwgdGhlIG9wZXJhdGlvbnMgYW5kIGNvbnRyb2xzIHRoZSBlbnRpcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZGFzaGJvYXJkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLnJvbGVOYW1lID09PSdhZG1pbidcIiBjbGFzcz1cInN1Yi10aXRsZSBmdy1zZW1pYm9sZCBteS01XCI+TWFuYWdlcyBzcGVjaWZpYyBvcGVyYXRpb25zLCBwZXJtaXNzaW9ucywgYW5kIGNhbiBjaGFuZ2Ugc2V0dGluZyBmb3IgYXNzaWduZWQgbG9jYXRpb25zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLnJvbGVOYW1lID09PSd1c2VyJ1wiIGNsYXNzPVwic3ViLXRpdGxlIGZ3LXNlbWlib2xkIG15LTVcIj5BY2Nlc3MgdG8gc3BlY2lmaWMgbG9jYXRpb24gYW5kIHdpbGwgYmUgYWJsZSB0byB2aWV3IGRhc2hib2FyZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuIGNsYXNzPVwibWUtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjUgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE5NzNfMTQzMDgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAyMVYxOUMxNy41IDE3LjkzOTEgMTcuMDc4NiAxNi45MjE3IDE2LjMyODQgMTYuMTcxNkMxNS41NzgzIDE1LjQyMTQgMTQuNTYwOSAxNSAxMy41IDE1SDUuNUM0LjQzOTEzIDE1IDMuNDIxNzIgMTUuNDIxNCAyLjY3MTU3IDE2LjE3MTZDMS45MjE0MyAxNi45MjE3IDEuNSAxNy45MzkxIDEuNSAxOVYyMU0yMy41IDIxVjE5QzIzLjQ5OTMgMTguMTEzNyAyMy4yMDQ0IDE3LjI1MjggMjIuNjYxNCAxNi41NTIzQzIyLjExODQgMTUuODUxOSAyMS4zNTgxIDE1LjM1MTYgMjAuNSAxNS4xM00xNi41IDMuMTNDMTcuMzYwNCAzLjM1MDMgMTguMTIzIDMuODUwNyAxOC42Njc2IDQuNTUyMzFDMTkuMjEyMiA1LjI1MzkyIDE5LjUwNzggNi4xMTY4MyAxOS41MDc4IDcuMDA1QzE5LjUwNzggNy44OTMxNyAxOS4yMTIyIDguNzU2MDggMTguNjY3NiA5LjQ1NzY5QzE4LjEyMyAxMC4xNTkzIDE3LjM2MDQgMTAuNjU5NyAxNi41IDEwLjg4TTEzLjUgN0MxMy41IDkuMjA5MTQgMTEuNzA5MSAxMSA5LjUgMTFDNy4yOTA4NiAxMSA1LjUgOS4yMDkxNCA1LjUgN0M1LjUgNC43OTA4NiA3LjI5MDg2IDMgOS41IDNDMTEuNzA5MSAzIDEzLjUgNC43OTA4NiAxMy41IDdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE5NzNfMTQzMDhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VzLWxpc3QgZnctc2VtaWJvbGRcIj57e29iaj8uY291bnQgfHwgMH19IE1lbWJlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjwhLS1iZWdpbjo6Um93LS0+XHJcbjxkaXYgKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09J1JvbGUgVmFsdWUnXCIgY2xhc3M9XCJyb3cgZ3gtNSBneC14bC0xMFwiPlxyXG4gICAgPCEtLWJlZ2luOjpDb2wtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHhsLTEyIGNvbC1tZC0xMiBjb2wteGwtMTIgY29sLWxnLTEyXCI+XHJcbiAgICAgICAgPGxpYi1yb2xlcy1wZXJtaXNzaW9uLXRhYmxlIChkYXRhRXZlbnQpPVwicmVjZWl2ZURhdGEoJGV2ZW50KVwiPjwvbGliLXJvbGVzLXBlcm1pc3Npb24tdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1lbmQ6OkNvbC0tPlxyXG48L2Rpdj5cclxuPCEtLWVuZDo6Um93LS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2J1bGtVcGxvYWQgbGV0LW1vZGFsPlxyXG4gICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGZsZXgtY29sdW1uIHAtOVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPkJ1bGsgQXNzaWduPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNTAwIG10LTZcIj5cclxuICAgICAgICA8b2wgY2xhc3M9XCJjdXN0b20tb3JkZXJlZC1saXN0IHRleHQtZ3JheS00MDAgZnctYm9sZCBweC01IGZzLTZcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0XCI+VXNlIHRoZSB0ZW1wbGF0ZSBiZWxvdyB0byBhc3NpZ24gbXVsdGlwbGUgdXNlcnMgdG8gbXVsdGlwbGUgc3RvcmVzIGF0IG9uY2UuPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTNcIj48c3BhbiBjbGFzcz1cInVzZXItdGV4dFwiPkRvd25sb2FkIHRoZSB0ZW1wbGF0ZSBoZXJlIC0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJtcy0xXCIgaHJlZj1cIi4uLy4uLy4uL2Fzc2V0cy9maWxlcy9CdWxrQXNzaWduVGVtcGxhdGUueGxzeFwiIGRvd25sb2FkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTUuODMzMzMgOC4zMzMzM0wxMCAxMi41TTEwIDEyLjVMMTQuMTY2NyA4LjMzMzMzTTEwIDEyLjVWMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlbXBsYXRlIG1zLTJcIj5Eb3dubG9hZCBUZW1wbGF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTNcIj5BZGQgeW91ciBkYXRhIHRvIHRoZSBUZW1wbGF0ZSBGaWxlPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTNcIj5VcGxvYWQgaXQgYmVsb3cgZm9yIHByb2Nlc3Npbmc8L2xpPiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPC9vbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIiB3LTEwMCByaWdodC1iYXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgPlxyXG4gICAgICAgIDxpbnB1dCBuYW1lPVwiYWNjb3VudFR5cGVcIiB0eXBlPVwicmFkaW9cIiBpZD1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsMVwiIGFjY2VwdCA9IFwiLmNzdiwgYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQsIGFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiIHZhbHVlPVwicGVyc29uYWwxXCJcclxuICAgICAgICBjbGFzcz1cImJ0bi1jaGVja1wiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvblVwbG9hZDEoJGV2ZW50KVwiXHJcbiAgICAgICAgbmctcmVmbGVjdC12YWx1ZT1cInBlcnNvbmFsXCIgdHlwZT1cImZpbGVcIiAjaW5wdXRGaWxlMSAvPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbDFcIiBjbGFzcz1cIiB3LTEtMCBwLTRcIj48c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQgdGV4dC1jZW50ZXIgdy0xMDAgZnMtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQ2XCIgaGVpZ2h0PVwiNDZcIiB2aWV3Qm94PVwiMCAwIDQ2IDQ2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0YyRjRGN1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIHN0cm9rZT1cIiNGOUZBRkJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjZcIiAvPlxyXG4gICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MDQ3XzQwNTY2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjYuMzMzMyAyNi4zMzM0TDIzIDIzTTIzIDIzTDE5LjY2NjYgMjYuMzMzNE0yMyAyM1YzMC41TTI5Ljk5MTYgMjguMzI1QzMwLjgwNDQgMjcuODgxOSAzMS40NDY1IDI3LjE4MDggMzEuODE2NSAyNi4zMzIyQzMyLjE4NjYgMjUuNDgzNyAzMi4yNjM1IDI0LjUzNjEgMzIuMDM1MSAyMy42Mzg5QzMxLjgwNjggMjIuNzQxOCAzMS4yODYyIDIxLjk0NjMgMzAuNTU1NSAyMS4zNzc5QzI5LjgyNDggMjAuODA5NSAyOC45MjU3IDIwLjUwMDYgMjggMjAuNUgyNi45NUMyNi42OTc3IDE5LjUyNDQgMjYuMjI3NiAxOC42MTg2IDI1LjU3NDkgMTcuODUwOUMyNC45MjIyIDE3LjA4MzEgMjQuMTA0IDE2LjQ3MzIgMjMuMTgxNyAxNi4wNjcyQzIyLjI1OTQgMTUuNjYxMiAyMS4yNTcxIDE1LjQ2OTUgMjAuMjUwMSAxNS41MDY2QzE5LjI0MyAxNS41NDM3IDE4LjI1NzUgMTUuODA4NiAxNy4zNjc2IDE2LjI4MTRDMTYuNDc3NyAxNi43NTQyIDE1LjcwNjYgMTcuNDIyNiAxNS4xMTIyIDE4LjIzNjNDMTQuNTE3NyAxOS4wNTAxIDE0LjExNTUgMTkuOTg4IDEzLjkzNTggMjAuOTc5NUMxMy43NTYgMjEuOTcxMSAxMy44MDM0IDIyLjk5MDUgMTQuMDc0MyAyMy45NjExQzE0LjM0NTIgMjQuOTMxNyAxNC44MzI3IDI1LjgyODIgMTUuNSAyNi41ODM0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNDA0N180MDU2NlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEzIDEzKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUgbWItM1wiPjxzcGFuIGNsYXNzPVwiY2xpY2stdXBsb2FkIGN1cnNvci1wb2ludGVyXCI+Q2xpY2sgdG9cclxuICAgICAgICAgICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIm1zLTJcIj5vciBkcmFnIGFuZCBkcm9wPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPnRoZSBkYXRhIGFkZGVkIHRlbXBsYXRlIGZpbGUgZm9yIHByb2Nlc3NpbmcuPC9kaXY+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC01XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwibW9kYWwuY2xvc2UoKVwiPiBDYW5jZWxcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1wcmltYXJ5IHctNTAgbXMtMlwiIChjbGljayk9XCJtb2RhbC5jbG9zZSgpXCI+IFN1Ym1pdFxyXG4gICAgICAgIDwvYnV0dG9uPiAgICAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhZnRlclZhbGlkYXRpb24gbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgbXQtMFwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgbXQtM1wiPjxzcGFuIGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctc2VtaWJvbGQgdy1hdXRvXCI+QnVsayBBc3NpZ248L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwdC0wIHBvcHVwLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC03MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSl9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5Ub3RhbCBSZWNvcmRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tleGNlbERhdGE/Lmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+Um93cyBwcm9jZXNzZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC03MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdlcnJvci1oZWFkaW5nJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRXJyb3I/LmVycm9yPy5sZW5ndGggfHwgMH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdleGNlbC1lcnJvcic6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5FcnJvcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFleGNlbEVycm9yXCIgY2xhc3M9XCJ0YWJsZS1oZWFkZXIgbXQtNVwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgPllvdSdyZSBhYm91dCB0byBhc3NpZ24ge3tnZXRTdG9yZUNvdW50cyhleGNlbERhdGEpfX0ge3tnZXRTdG9yZUNvdW50cyhleGNlbERhdGEpID4gMSA/ICdTdG9yZXMnIDogJ1N0b3JlJ319LiBBcmUgeW91IHN1cmUgd2FudCB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJmbGV4LWNvbHVtbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctYm9sZFwiPkludmFsaWQgRGV0YWlscyAhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUgbXQtNVwiPlBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaW5mb3JtYXRpb24uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHctMTAwIHJvdW5kZWQtMyBib3JkZXItZXJyb3IgbXQtNSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yIG9mIGV4Y2VsRXJyb3I/LmVycm9yOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIiBbbmdDbGFzc109XCIhbGFzdCA/ICdtYi0yJyA6ICcnXCIgY2xhc3M9XCJ0ZXh0LWVycm9yXCI+e3tpICsgMX19KSB7e2Vycm9yfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wIHRleHQtZW5kIHB0LTBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWQgYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2xvc2VhY3RpdmVwb3B1cCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIGJ0bi1tZCBweS0zIGJ0bi1kZWZhdWx0IG1zLTMgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwicHJvY2VlZFN1Ym1pdCgpXCI+UHJvY2VlZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIHB5LTMgYnRuLW1kIGJ0bi1kZWZhdWx0IG1zLTMgYnRuLWRhbmdlclwiIChjbGljayk9XCJmaWxlMS5jbGljaygpO1wiPlJldXBsb2FkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjtcIiAjZmlsZTEgdHlwZT1cImZpbGVcIiBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkMSgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
815
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXNlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLW1hbmFnZS11c2Vycy9icmFuZC11c2VyL2JyYW5kLXVzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYnJhbmQtdXNlci9icmFuZC11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUsvRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFZLElBQUksRUFBRSxLQUFLLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLDRGQUE0RjtBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7Ozs7QUFFeEcsK0RBQStEO0FBTy9ELE1BQU0sT0FBTyxrQkFBa0I7SUFxQ3JCO0lBQStCO0lBQzlCO0lBQ0E7SUFDRDtJQUNDO0lBRUE7SUFDQTtJQUNBO0lB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QUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqSCxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFFLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQTtRQUN4QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7d0dBbHlCVSxrQkFBa0I7NEZBQWxCLGtCQUFrQiwyWUN4Qi9CLDIzNEJBNlhBOzs0RkRyV2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjs4U0FLaEIsWUFBWTtzQkFBckIsTUFBTTtnQkFFa0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNFLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDTyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0ICxFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQWRkVXNlclBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4uL2FkZC11c2VyLXBvcHVwL2FkZC11c2VyLXBvcHVwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXNzaWduU3RvcmVQb3B1cENvbXBvbmVudCB9IGZyb20gXCIuLi9hc3NpZ24tc3RvcmUtcG9wdXAvYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgU3dhbCBmcm9tIFwic3dlZXRhbGVydDJcIjtcclxuaW1wb3J0IHsgRXhjZWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2V4Y2VsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBXb3JrQm9vaywgcmVhZCwgdXRpbHMsIFdvcmtTaGVldCB9IGZyb20gXCJ4bHN4XCI7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbi8vIGltcG9ydCB7IEFsZXJ0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi91c2VyLXRhYmxlL2FsZXJ0LWJ1bHBvcHVwL2FsZXJ0LXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsZXJ0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi91c2VyLXRhYmxlL2FsZXJ0LXBvcHVwL2FsZXJ0LXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZFVzZXJzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy12Mi9hZGQtdXNlcnMvYWRkLXVzZXJzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRlYW1zQ3JlYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzLXYyL3RlYW1zLWNyZWF0aW9uL3RlYW1zLWNyZWF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG4vLyBpbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJyYW5kLXVzZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9icmFuZC11c2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYnJhbmQtdXNlci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyYW5kVXNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBPdXRwdXQoKSBkYXRhVG9QYXJlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAvLyBAT3V0cHV0KCkgZGF0YVRvdXNlcmxpc3Q6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQFZpZXdDaGlsZCgnYnVsa1VwbG9hZCcpIGJ1bGtVcGxvYWQ6IGFueTtcclxuICBAVmlld0NoaWxkKFwiaW5wdXRGaWxlMVwiKSBpbnB1dEZpbGUxOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FmdGVyVmFsaWRhdGlvbicpIGFmdGVyVmFsaWRhdGlvbjogYW55O1xyXG4gcmVjZWl2ZWREYXRhOmFueT0nJztcclxuIHVzZXJEYXRhOiBzdHJpbmc7XHJcbiBzZWFyY2hWYWx1ZTogYW55O1xyXG4gdXNlckxpc3Q6IGFueVtdID0gW107XHJcbiB1c2VyTGlzdF9yZXE6IGFueTtcclxuIHBhZ2luYXRpb246IGFueSA9IHtcclxuICAgb2Zmc2V0OiAxLFxyXG4gICBsaW1pdDogMTAsXHJcbiAgIHRvdGFsQ291bnQ6IDAsXHJcbiB9O1xyXG4gbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiBub0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuIHBhZ2luYXRpb25TaXplczogbnVtYmVyW10gPSBbMTAsIDIwLCAzMF07XHJcbiBzdXBwb3J0RW1haWw6IHN0cmluZztcclxuIHVzZXJUeXBlOiBzdHJpbmc7XHJcbiAkaGVhZGVyRmlsdGVyczogYW55O1xyXG4gc2VhcmNoSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XHJcbiBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICByb2xlczogYW55O1xyXG4gIGZpbGVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0b3JlczogYW55ID1bXTtcclxuICByb2xlc0NvdW50OiBhbnk7XHJcbiAgU2VsZWN0ZWRUYWI6IGFueTtcclxuICAgIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHsgRGVzY3JpcHRpb246ICdSb2xlcycsIElzc3VlczogW3sgdGV4dDogXCJTdXBlciBBZG1pblwiLCBpZDogJ3N1cGVyYWRtaW4nIH0sIHsgdGV4dDogXCJBZG1pblwiLCBpZDogJ2FkbWluJyB9LCB7IHRleHQ6IFwiVXNlclwiLCBpZDogXCJ1c2VyXCIgfV0gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdTdGF0dXMnLCBJc3N1ZXM6IFt7IHRleHQ6IFwiQWN0aXZlXCIsIGlkOiAnYWN0aXZlJyB9LCB7IHRleHQ6IFwiRGVhY3RpdmVcIiwgaWQ6ICdkZWFjdGl2ZScgfV0gfVxyXG4gIF07XHJcbiAgZmlsdGVyQnlSb2xlczogYW55O1xyXG4gIGZpbHRlckJ5U3RhdHVzOiBhbnk7XHJcbiAgdXNlckluZm86IGFueTtcclxuIGNvbnN0cnVjdG9yKFxyXG4gICBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICBwcml2YXRlIGV4Y2VsU2VydmljZTogRXhjZWxTZXJ2aWNlLFxyXG4gICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAvLyAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiApIHtcclxuICAgdGhpcy5ncy5lbnZpcm9ubWVudC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlbnYpID0+IHtcclxuICAgICBpZiAoZW52KSB7XHJcbiAgICAgICB0aGlzLnN1cHBvcnRFbWFpbCA9IGVudi5zdXBwb3J0X2VtYWlsO1xyXG4gICAgIH1cclxuICAgfSk7ICAgIFxyXG4gfVxyXG5cclxuXHJcbiBzZXRQYWdlRGF0YSgpIHtcclxuICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiVXNlcnNcIik7XHJcbiAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIk9uYm9hcmQgeW91ciB0ZWFtIGFuZCBoZWxwIHRoZW0gdmlzdWFsaXplIHRoZWlyIHN0b3JlcyBwZXJmb3JtYW5jZVwiKTtcclxuICBsZXQgYnJlYWRjcnVtYnMgOiBhbnlbXT1bXTtcclxuICBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSA9PT0gXCJ0YW5nb1wiKSB7XHJcbiAgICBicmVhZGNydW1icz0gIFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9icmFuZHNcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL2JyYW5kc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfSBlbHNlIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSBcImNsaWVudFwiKSB7XHJcbiAgICBicmVhZGNydW1icz0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N1bW1hcnlcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N1bW1hcnlcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzKTtcclxufVxyXG4gbmdPbkluaXQoKSB7XHJcbiAgdGhpcy51c2VySW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcclxuICBcclxuICAgdGhpcy5ncz8uZGF0YVJhbmdlVmFsdWU/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKT8uc3Vic2NyaWJlKHtcclxuICAgICBuZXh0OihkYXRhOmFueSk9PntcclxuICAgICAgIGlmKGRhdGEgPT09IG51bGwgKSB7XHJcbiAgICAgICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcclxuICAgICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gdXNlckRhdGE7XHJcbiAgICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgPSB1c2VyRGF0YS5jbGllbnRJZFxyXG4gICAgICAgIHRoaXMudXNlckRhdGEgPSBcImNsaWVudFwiO1xyXG4gICAgICAgICAgIHRoaXMudXNlclR5cGUgPSBcImNsaWVudFwiO1xyXG4gICAgICAgICAgIGlmKHVzZXJEYXRhPy5jbGllbnRJZCl7XHJcbiAgICAgICAgICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgICAgICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICAgICAgICAgZXhwb3J0OmZhbHNlXHJcbiAgICAgICAgICAgfTtcclxuICAgICAgICAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gICAgICAgICAgLy8gIHRoaXMuZ2V0Um9sZXMoKTtcclxuICAgICAgICAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgICAgICAgICB0aGlzLnVzZXJEYXRhID0gXCJjbGllbnRcIjtcclxuICAgICAgICAgICB0aGlzLnVzZXJUeXBlID0gXCJjbGllbnRcIjtcclxuICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0gMTtcclxuICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ubGltaXQgPSAxMDtcclxuICAgICAgICAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgICAgICAgIGxpbWl0OiAxMCxcclxuICAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICAgICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgICAgICAgICBleHBvcnQ6ZmFsc2VcclxuICAgICAgICAgICB9O1xyXG4gICAgICAgICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgICAgICAgICAvLyAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgICAgICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgICAgIH0gXHJcbiAgICAgfVxyXG4gICB9KTtcclxuXHJcbiBcclxuICB9XHJcbiAgZ2V0TWFza2VkVmFsdWUodmFsdWU6IHN0cmluZywgcm9sZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChyb2xlID09PSAnc3VwZXJhZG1pbicpIHJldHVybiB2YWx1ZTtcclxuICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmluY2x1ZGVzKCdAJykpIHJldHVybiAnJztcclxuXHJcbiAgICBjb25zdCBbbG9jYWwsIGRvbWFpbl0gPSB2YWx1ZS5zcGxpdCgnQCcpO1xyXG4gICAgY29uc3QgdmlzaWJsZUxlbmd0aCA9IE1hdGgubWluKDUsIGxvY2FsLmxlbmd0aCk7XHJcbiAgICBjb25zdCB2aXNpYmxlUGFydCA9IGxvY2FsLnNsaWNlKDAsIHZpc2libGVMZW5ndGgpO1xyXG4gICAgY29uc3QgbWFza2VkUGFydCA9ICcqJy5yZXBlYXQobG9jYWwubGVuZ3RoIC0gdmlzaWJsZUxlbmd0aCk7XHJcblxyXG4gICAgcmV0dXJuIGAke3Zpc2libGVQYXJ0fSR7bWFza2VkUGFydH1AJHtkb21haW59YDtcclxuICB9XHJcbiAgZ2V0TWFza2VkTW9iaWxlKHZhbHVlOiBzdHJpbmcsIHJvbGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAocm9sZSA9PT0gJ3N1cGVyYWRtaW4nKSByZXR1cm4gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8PSA0KSByZXR1cm4gJyonLnJlcGVhdCh2YWx1ZS5sZW5ndGgpO1xyXG4gIFxyXG4gICAgY29uc3QgZmlyc3QyID0gdmFsdWUuc2xpY2UoMCwgMik7XHJcbiAgICBjb25zdCBsYXN0MiA9IHZhbHVlLnNsaWNlKC0yKTtcclxuICAgIGNvbnN0IG1hc2tlZE1pZGRsZSA9ICcqJy5yZXBlYXQodmFsdWUubGVuZ3RoIC0gNCk7XHJcbiAgXHJcbiAgICByZXR1cm4gYCR7Zmlyc3QyfSR7bWFza2VkTWlkZGxlfSR7bGFzdDJ9YDtcclxuICB9XHJcbiBcclxuIHNlYXJjaERhdGEoKSB7XHJcbiAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9MTtcclxuICB0aGlzLnBhZ2luYXRpb24ubGltaXQgPTEwO1xyXG4gIGlmKHRoaXMuc2VhcmNoVmFsdWUgPT09Jycpe1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICB9IGVsc2Uge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgbGltaXQ6IDEwLFxyXG4gICAgIG9mZnNldDogMSxcclxuICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICBleHBvcnQ6ZmFsc2VcclxuICAgfTtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gIH1cclxuIH1cclxuIHVzZXJzKHR5cGU6IGFueSx1c2VyPzogYW55KSB7XHJcbiAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRVc2VyUG9wdXBDb21wb25lbnQsIHtcclxuICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcclxuICAgfSk7XHJcbiAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB1c2VyO1xyXG4gICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlclR5cGUgPSdjbGllbnQnO1xyXG4gICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZihyZXN1bHQgPT09J3N1Ym1pdCcpe1xyXG4gICAgICB0aGlzLnNlYXJjaFZhbHVlID0nJztcclxuICAgICAgdGhpcy51c2VyTGlzdF9yZXEubGltaXQgPSAxMDtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IDE7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICAgIHRoaXMudXNlclNlcnZpY2UuZGF0YVN1YmplY3QubmV4dCh0aGlzLnVzZXJEYXRhKTtcclxuICAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgICAvLyAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgfVxyXG4gICB9KTtcclxuIH1cclxuICBWaWV3dXNlcnModHlwZTogYW55LCB1c2VyPzogYW55KSB7XHJcbiAgICBsZXQgbW9kYWxPcHRpb25zOiBhbnkgPSB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiAnbGcnXHJcbiAgICB9O1xyXG4gICAgaWYgKHVzZXIucm9sZSAhPT0gJ3N1cGVyYWRtaW4nKSB7XHJcbiAgICAgIG1vZGFsT3B0aW9ucy5iYWNrZHJvcCA9ICdzdGF0aWMnO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkVXNlcnNDb21wb25lbnQsIG1vZGFsT3B0aW9ucyk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdXNlcjtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0eXBlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlclR5cGUgPSdjbGllbnQnO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICB9KVxyXG4gfVxyXG4gLy8gc2VhcmNoRGF0YSgpIHtcclxuIC8vICAgdGhpcy5sb2FkVGFibGUoKTtcclxuIC8vIH1cclxuXHJcbiBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogbnVtYmVyKSB7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSBwYWdlT2Zmc2V0O1xyXG4gICBpZih0aGlzLnNlYXJjaFZhbHVlID09PScnKXtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLCAgXHJcbiAgICAgIGV4cG9ydDpmYWxzZSxcclxuICAgICAgc29ydENvbHVtTmFtZSA6dGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSxcclxuICAgIHNvcnRCeSA6IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeVxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IHRoaXMudXNlckxpc3RfcmVxLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2UsXHJcbiAgICAgIHNvcnRDb2x1bU5hbWUgOnRoaXMudXNlckxpc3RfcmVxLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0QnkgOiB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnlcclxuICAgIH07XHJcbiAgfVxyXG4gIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gIHRoaXMuY3JlYXRlVGVhbSA9IGZhbHNlO1xyXG4gIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9ZmFsc2U7XHJcbiAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiB9XHJcblxyXG4gb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLmxpbWl0ID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0ID0gMTtcclxuICAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9IDE7XHJcbiAgIGlmKHRoaXMuc2VhcmNoVmFsdWUgPT09Jycpe1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IHRoaXMudXNlckxpc3RfcmVxLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsICBcclxuICAgICAgZXhwb3J0OmZhbHNlLFxyXG4gICAgICBzb3J0Q29sdW1OYW1lIDp0aGlzLnVzZXJMaXN0X3JlcS5zb3J0Q29sdW1OYW1lLFxyXG4gICAgc29ydEJ5IDogdGhpcy51c2VyTGlzdF9yZXEuc29ydEJ5XHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogdGhpcy51c2VyTGlzdF9yZXEubGltaXQsXHJcbiAgICAgIG9mZnNldDogdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0LFxyXG4gICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZSxcclxuICAgICAgc29ydENvbHVtTmFtZSA6dGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSxcclxuICAgIHNvcnRCeSA6IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeVxyXG4gICAgfTtcclxuICB9XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiAgdGhpcy5jcmVhdGVUZWFtID0gZmFsc2U7XHJcbiAgdGhpcy5zZWxlY3RlZFVzZXJzID0gW107XHJcbiAgdGhpcy5zZWxlY3RBbGxDaGVja2VkID1mYWxzZTtcclxuICAgdGhpcy5sb2FkVGFibGUoKTtcclxuIH1cclxuXHJcbiBhc3NpZ25TdG9yZSh1c2VyOiBhbnkpIHtcclxuICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFzc2lnblN0b3JlUG9wdXBDb21wb25lbnQsIHtcclxuICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICBiYWNrZHJvcDonc3RhdGljJyxcclxuICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcclxuICAgfSk7XHJcbiAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB1c2VyO1xyXG4gICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZihyZXN1bHQgPT09J3N1Ym1pdCcpe1xyXG4gICAgICB0aGlzLnNlYXJjaFZhbHVlID0nJztcclxuICAgICAgdGhpcy51c2VyTGlzdF9yZXEubGltaXQgPSAxMDtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IDE7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICAgIHRoaXMudXNlclNlcnZpY2UuZGF0YVN1YmplY3QubmV4dCh0aGlzLnVzZXJEYXRhKTtcclxuICAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZVxyXG4gICAgfTtcclxuICAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gICAgfVxyXG4gICB9KTtcclxuIH1cclxuXHJcbiBsb2FkVGFibGUoKSB7XHJcbiAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgLy8gIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQ9MTtcclxuICAvLyAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0xMDtcclxuICAgdGhpcy5wYWdpbmF0aW9uLnRvdGFsQ291bnQgPTA7XHJcbiAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckxpc3QodGhpcy51c2VyTGlzdF9yZXEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoXHJcbiAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgdGhpcy51c2VyTGlzdCA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICBcclxuICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgICAgIG9mZnNldDogdGhpcy5wYWdpbmF0aW9uLm9mZnNldCxcclxuICAgICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uLmxpbWl0LFxyXG4gICAgICAgICAgIHRvdGFsQ291bnQ6IHJlcy5kYXRhLmNvdW50LFxyXG4gICAgICAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICAgICB9O1xyXG4gICAgICAgICB0aGlzLmRhdGFUb1BhcmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50KTtcclxuICAgICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VNZXNzYWdlKHRoaXMucGFnaW5hdGlvbi5saW1pdCk7XHJcbiAgICAgICAgIGlmIChyZXMuZGF0YS5jb3VudCA8IDEwKSB7XHJcbiAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbcmVzLmRhdGEuY291bnRdO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgfSBlbHNlIHsgICAgICBcclxuXHJcbiAgICAgICAgIHRoaXMudXNlckxpc3QgPSBbXTtcclxuICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICAgdG90YWxDb3VudDogMCxcclxuICAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRhdGFUb1BhcmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50KTtcclxuICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgIH1cclxuICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgIH0sXHJcbiAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgIHRoaXMudXNlckxpc3QgPSBbXTtcclxuICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgIHRvdGFsQ291bnQ6IDAsXHJcbiAgICAgICB9O1xyXG4gICAgICAgdGhpcy5kYXRhVG9QYXJlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCk7XHJcbiAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICk7XHJcbiB9XHJcblxyXG4gcGFnaW5hdGlvblNpemUoKTogbnVtYmVyIHtcclxuICAgaWYgKHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50IDwgMTApIHtcclxuICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uLnRvdGFsQ291bnQ7XHJcbiAgIH0gZWxzZSB7XHJcbiAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbi5saW1pdDtcclxuICAgfVxyXG4gfVxyXG5cclxuIGV4cG9ydFhMU1goKSB7XHJcbiAgaWYodGhpcy5zZWFyY2hWYWx1ZSA9PT0nJyl7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAwMDAsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIGV4cG9ydDp0cnVlXHJcbiAgICB9O1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5U3RhdHVzID0gdGhpcy5maWx0ZXJCeVN0YXR1cztcclxuICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgLmdldFVzZXJMaXN0RXhwb3J0KHRoaXMudXNlckxpc3RfcmVxKVxyXG4gIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmV4Y2VsU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCAnVXNlcnMnKVxyXG5cclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgIG9mZnNldDogMSxcclxuICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICBleHBvcnQ6dHJ1ZVxyXG4gICB9O1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAuZ2V0VXNlckxpc3RFeHBvcnQodGhpcy51c2VyTGlzdF9yZXEpXHJcbiAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAuc3Vic2NyaWJlKHtcclxuICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgdGhpcy5leGNlbFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ1VzZXJzJylcclxuXHJcbiAgIH0sXHJcbiAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH0sXHJcbiAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuIH0pO1xyXG4gIH1cclxuXHJcbiBcclxuICBcclxuXHJcbiAgfVxyXG4gIFxyXG4gIGJ1bGtBc3NpZ25hc3hsc3goKSB7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYnVsa1VwbG9hZCx7Y2VudGVyZWQ6IHRydWUsYmFja2Ryb3A6J3N0YXRpYyd9KVxyXG4gIH1cclxuXHJcbiAgYWRkU2luZ2xlVXNlcigpIHtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICBleGNlbEVycm9yOiBhbnk7XHJcbiAgZXhjZWxEYXRhOiBhbnkgPSBbXVxyXG4gIHZhbGlkYXRlZE91dHB1dDogYW55ID0gW107XHJcblxyXG4gIGdldFN0b3JlQ291bnRzKGRhdGE6IGFueSkge1xyXG5cclxuICAgIGNvbnN0IHVuaXF1ZVVzZXJOYW1lcyA9IG5ldyBTZXQoZGF0YT8ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSkpO1xyXG4gICAgcmV0dXJuIHVuaXF1ZVVzZXJOYW1lcy5zaXplO1xyXG5cclxuICB9XHJcblxyXG4gIG9uVXBsb2FkMShlOiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnlbXTtcclxuICAgIGxldCBlcnJvcjogYW55ID0gW107XHJcbiAgICBsZXQgc3RvcmVOYW1lOiBhbnkgPSAnJztcclxuXHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZS50YXJnZXQuZmlsZXNbMF07XHJcbiAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbnMgPSAvXFwuKHhsc3x4bHN4fGNzdikkL2k7XHJcbiAgY29uc3QgYWxsb3dlZFR5cGVzID0gW1xyXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiLCBcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcInRleHQvY3N2XCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcImFwcGxpY2F0aW9uL2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gIF07XHJcblxyXG4gIGlmICghYWxsb3dlZEV4dGVuc2lvbnMudGVzdChmaWxlLm5hbWUpIHx8ICFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIk9ubHkgLnhsc3gsIG9yIC5jc3YgZmlsZXMgYXJlIGFsbG93ZWQuXCIpO1xyXG4gICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IDxEYXRhVHJhbnNmZXI+ZS50YXJnZXQ7XHJcbiAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhdGFyZ2V0LmZpbGVzWzBdLm5hbWUubWF0Y2goLygueGxzfC54bHN4KS8pKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IHdiOiBXb3JrQm9vayA9IHJlYWQoYnN0ciwgeyB0eXBlOiBcImJpbmFyeVwiIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3czogV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgZGF0YSA9IHV0aWxzLnNoZWV0X3RvX2pzb24od3MpO1xyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhID0gZGF0YTtcclxuICAgICAgICBzdG9yZU5hbWUgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyAoZSkgPT4ge1xyXG5cclxuICAgICAgICAgaWYgKHN0b3JlTmFtZSAhPT0gXCJVc2Vyc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiQ2FuIHlvdSBjb25maXJtIHdoZXRoZXIgdGhlIHNoZWV0IG5hbWUgaXMgVXNlcnMgP1wiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJQbGVhc2UgdXBsb2FkIGEgdmFsaWQgZmlsZS5cIik7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXF1aXJlZEtleXMgPSBbJ1N0b3JlIE5hbWUvU3RvcmUgSWQnLCdFbWFpbCddIC8vIE11c3QgYWx3YXlzIGJlIHByZXNlbnRcclxuICAgICAgICAvLyBjb25zdCBvcHRpb25hbEtleXMgPSBbJ3VzZXJQaG9uZScsICdjaXR5J10gOiBbJ2NpdHknXTtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gZGF0YS5zb21lKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpdGVtKTtcclxuICAgICAgICAgIGNvbnN0IGhhc1JlcXVpcmVkS2V5cyA9IHJlcXVpcmVkS2V5cy5ldmVyeShrZXkgPT4ga2V5cy5pbmNsdWRlcyhrZXkpKTtcclxuICAgICAgICAgIGNvbnN0IGFsbEtleXNBcmVBbGxvd2VkID0ga2V5cy5ldmVyeShrZXkgPT4gXHJcbiAgICAgICAgICAgIHJlcXVpcmVkS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICAgIC8vIHx8IG9wdGlvbmFsS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIGhhc1JlcXVpcmVkS2V5cyAmJiBhbGxLZXlzQXJlQWxsb3dlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdQbGVhc2UgdXBsb2FkIGEgdmFsaWQgZmlsZS4nKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQ/LkVtYWlsKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuRW1haWwgPSBlbGVtZW50Py5FbWFpbC5yZXBsYWNlKC9cXHMvZywgJycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCAhZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gfHwgZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gPT0gJycgfHwgZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIFN0b3JlIE5hbWUvU3RvcmUgSWQgLSBCJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghZWxlbWVudD8uRW1haWwgfHwgZWxlbWVudD8uRW1haWw/LnRyaW0oKSA9PSAnJyB8fCBlbGVtZW50LkVtYWlsID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBFbWFpbCAtIEEke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQ/LkVtYWlsICYmICFlbGVtZW50LkVtYWlsLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKSkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIEVtYWlsIC0gQSR7aW5kZXggKyAyfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQocG9wdXBjb250ZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBhcGlEYXRhID0gdGhpcy5leGNlbERhdGEubWFwKChlbDogYW55KSA9PntcclxuICAgICAgICAgIHJldHVybiB7c3RvcmUgOiBlbD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10sXHJcbiAgICAgICAgICBlbWFpbCA6IGVsPy5FbWFpbH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgICAgICAuYnVsa1VzZXJBc3NpZ24oe1xyXG4gICAgICAgICAgICBkYXRhOiBhcGlEYXRhXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzPT09J2Vycm9yJyYmcmVzLmVycm9yLmVycm9yLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOiByZXMuZXJyb3IuZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKCk7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlZE91dHB1dCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnI6YW55KT0+IHtcclxuICAgICAgICBpZiAoZXJyLmVycm9yLmNvZGUgPT09IDQwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOmVyci5lcnJvci5lcnJvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQocG9wdXBjb250ZW50KVxyXG4gICAgICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmlucHV0RmlsZTEubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIC8vICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIik/LnZhbChcIlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFJldXBsb2FkKCkge1xyXG5cclxuICB9XHJcblxyXG4gICBwcm9jZWVkU3VibWl0KCkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7ZGF0YTp0aGlzLnZhbGlkYXRlZE91dHB1dH0gXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5hc3NpZ25EYXRhKHBheWxvYWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGBTdG9yZXMgQXNzaWduZWQgdG8gVXNlciBTdWNjZXNzZnVsbHkhYCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGBVbmFibGUgdG8gYXNzaWduIFN0b3JlcyB0byB1c2VyIWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCdzdWJtaXQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIEFzc2lnbiBTdG9yZXMgdG8gVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlYWN0aXZlcG9wdXAoKSB7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgfVxyXG5cclxuICBhZnRlclVwbGxvYWQoZGF0YT86IGFueSkge1xyXG4gICAgdGhpcy5leGNlbEVycm9yID0gZGF0YTtcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5hZnRlclZhbGlkYXRpb24sIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJyB9KVxyXG4gIH1cclxuXHJcbiAgdXNlclN0YXR1c0NoYW5nZSh1c2VyOiBhbnksIGk6IG51bWJlcikge1xyXG4gIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBbGVydFBvcHVwQ29tcG9uZW50LHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsYmFja2Ryb3A6XCJzdGF0aWNcIiB9KTsgICBcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB1c2VyO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gIGlmIChyZXN1bHQpIHtcclxuICAgIGlmIChyZXN1bHQgPT09J3N1Ym1pdCcpIHtcclxuICAgdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VyKHsgZW1haWw6IHVzZXI/LmVtYWlsLCBpc0FjdGl2ZTogdXNlci5pc0FjdGl2ZX0pLnN1YnNjcmliZSh7XHJcbiAgICAgbmV4dDoocmVzOmFueSk9PiB7XHJcbiAgICAgICBpZihyZXMgJiYgcmVzLmNvZGU9PTIwMCkge1xyXG4gICAgICAgICBpZih1c2VyLmlzQWN0aXZlKSB7XHJcbiAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KCdVc2VyIFN0YXR1cyBBY3RpdmF0ZWQhJyk7XHJcbiAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KCdVc2VyIFN0YXR1cyBEZWFjdGl2YXRlZCEnKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnVW5hYmxlIHRvIENoYW5nZSBVc2VyIFN0YXR1cyEnKTtcclxuICAgICAgICAgdGhpcy51c2VyTGlzdFtpXS5pc0FjdGl2ZT0hdXNlci5pc0FjdGl2ZTtcclxuICAgICAgIH1cclxuICAgICB9LFxyXG4gICAgIGVycm9yOigpPT57XHJcbiAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdVbmFibGUgdG8gQ2hhbmdlIFVzZXIgU3RhdHVzIScpO1xyXG4gICAgICAgdGhpcy51c2VyTGlzdFtpXS5pc0FjdGl2ZT0hdXNlci5pc0FjdGl2ZTtcclxuICAgICB9LFxyXG4gICAgIGNvbXBsZXRlOigpPT57fVxyXG4gICB9KVxyXG4gIH0gZWxzZSBpZihyZXN1bHQgPT09J2Nsb3NlJykge1xyXG4gICAgdGhpcy51c2VyTGlzdFtpXS5pc0FjdGl2ZT0hdXNlci5pc0FjdGl2ZTtcclxuICB9XHJcbn1cclxufSlcclxuIH1cclxuIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuIH1cclxuIGdldFJvbGVzKCkge1xyXG4gIHZhciBkYXRhID0geyBcclxuICAgICAgdXNlclR5cGU6ICdjbGllbnQnLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycz8uY2xpZW50XHJcbiAgICB9XHJcbiAgdGhpcy51c2VyU2VydmljZS5nZXRSb2xlcyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMucm9sZXMgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5yb2xlc0NvdW50ID0gcmVzLmRhdGEuY291bnQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb2xlcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZXMgPSBbXTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LFxyXG4gICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gIH0pO1xyXG59XHJcbnVzZXJEZXRpYWxzKHJvbGU6IGFueSkge1xyXG4gIGxldCBvYmogPXtcclxuICAgIHJvbGU6cm9sZSxcclxuICAgIHVzZXJUeXBlIDonQnJhbmQgVXNlcicsXHJcbiAgICByZWNlaXZlZERhdGE6XCJSb2xlIFZhbHVlXCJcclxuICB9XHJcbiAgdGhpcy51c2VyU2VydmljZS5yb2xlc0NvbW1zLm5leHQob2JqKTtcclxuICB0aGlzLnJlY2VpdmVkRGF0YSA9J1JvbGUgVmFsdWUnO1xyXG59XHJcbnJlY2VpdmVEYXRhKGRhdGE6IHN0cmluZykge1xyXG4gIHRoaXMucmVjZWl2ZWREYXRhID0gZGF0YTtcclxuICB0aGlzLnVzZXJTZXJ2aWNlLmRhdGFTdWJqZWN0Lm5leHQodGhpcy51c2VyRGF0YSk7XHJcbn1cclxuXHJcbm9uU29ydChjb2x1bW46IHN0cmluZykge1xyXG4gIHRoaXMudXNlckxpc3RfcmVxLmV4cG9ydCA9IGZhbHNlO1xyXG4gIGlmICh0aGlzLnVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gY29sdW1uKSB7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnkgPSB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnkgPT09IDEgPyAtMSA6IDE7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnkgPSAxO1xyXG4gIH1cclxuICB0aGlzLmxvYWRUYWJsZSgpXHJcbn1cclxuXHJcbmFwcGx5RmlsdGVycyhldmVudDphbnkpe1xyXG4gIGlmIChldmVudD8ubGVuZ3RoKSB7XHJcbiAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiUm9sZXNcIikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQnlSb2xlcyA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSBcIlN0YXR1c1wiKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJCeVN0YXR1cyA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdD0xMDtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5U3RhdHVzID0gdGhpcy5maWx0ZXJCeVN0YXR1cztcclxuICAgIHRoaXMubG9hZFRhYmxlKClcclxufVxyXG5zZWxlY3RBbGxDaGVja2VkOiBib29sZWFuID0gZmFsc2U7XHJcbnNlbGVjdGVkVXNlcnM6IGFueVtdID0gW107IFxyXG5jcmVhdGVUZWFtOiBib29sZWFuID0gZmFsc2U7XHJcbm9uU2VsZWN0QWxsKCkge1xyXG4gIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9ICF0aGlzLnNlbGVjdEFsbENoZWNrZWQ7IFxyXG5cclxuICB0aGlzLnVzZXJMaXN0LmZvckVhY2godXNlciA9PiB7XHJcbiAgICB1c2VyLmNoZWNrZWQgPSB0aGlzLnNlbGVjdEFsbENoZWNrZWQ7IFxyXG4gIH0pO1xyXG4gIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrZWQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFsuLi50aGlzLnVzZXJMaXN0XTtcclxuICAgIHRoaXMuY3JlYXRlVGVhbSA9IHRydWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xyXG4gICAgdGhpcy5jcmVhdGVUZWFtID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5cclxub25TZWxlY3RlZFRlYW1zKHVzZXI6IGFueSxpbmRleDphbnkpIHtcclxuICAgIHVzZXIuY2hlY2tlZCA9ICF1c2VyLmNoZWNrZWQ7XHJcbiAgICBpZiAodXNlci5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vycy5wdXNoKHVzZXIpO1xyXG4gICAgfSBlbHNlIGlmKHVzZXIuY2hlY2tlZCA9PT1mYWxzZSkge1xyXG4gICAgICAgY29uc3Qgc3RvcmVJbmRleCA9IHRoaXMuc2VsZWN0ZWRVc2Vycy5maW5kSW5kZXgoc2VsZWN0ZWRVc2VyID0+IHNlbGVjdGVkVXNlci5faWQgPT09IHVzZXIuX2lkKTtcclxuICAgICAgaWYgKHN0b3JlSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzLnNwbGljZShzdG9yZUluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RBbGxDaGVja2VkID0gdGhpcy51c2VyTGlzdC5ldmVyeShzdG9yZSA9PiBzdG9yZS5jaGVja2VkKTtcclxuICAgIHRoaXMuY3JlYXRlVGVhbSA9IHRoaXMuc2VsZWN0ZWRVc2Vycy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVGVhbXMoKXtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUZWFtc0NyZWF0aW9uQ29tcG9uZW50LHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZycsYmFja2Ryb3A6J3N0YXRpYycgfSk7ICAgIFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGVhbXNVc2VycyA9IHRoaXMuc2VsZWN0ZWRVc2VycztcclxuICAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrZWQgPWZhbHNlO1xyXG4gICAgICAgdGhpcy5jcmVhdGVUZWFtID0gZmFsc2U7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbXVxyXG4gICAgICB9KVxyXG4gIH1cclxufSIsIjxkaXYgKm5nSWY9XCJyZWNlaXZlZERhdGEgIT09J1JvbGUgVmFsdWUnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+VXNlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7cGFnaW5hdGlvbj8udG90YWxDb3VudCA/IHBhZ2luYXRpb24/LnRvdGFsQ291bnQgOicwJ319IHRvdGFsIHVzZXJzPC9zcGFuPiAtLT5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgcmlnaHRjb3JuZXIgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY3JlYXRlVGVhbVwiIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaWItZmlsdGVycyBbZGF0YU9iamVjdF09XCJkYXRhT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGFcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydFhMU1goKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgcC00IGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+RXhwb3J0PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJidWxrQXNzaWduYXN4bHN4KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBwLTQgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzcGFuIGNsYXNzPVwibXMtMlwiPkJ1bGsgQXNzaWduPC9zcGFuPiA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHxhc3luYyk/Lkdsb2JhbF9Vc2VyX2lzQWRkXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ1c2VycygnYWRkJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0yIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAwMSA0LjE2NjYzVjE1LjgzMzNNNC4xNjY3NSA5Ljk5OTk2SDE1LjgzMzRcIiBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMiB0ZXh0LXdoaXRlXCI+QWRkIFVzZXI8L3NwYW4+IDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjcmVhdGVUZWFtXCIgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY3JlYXRlVGVhbXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTIgcm91bmRlZC0zIHRleHQtbm93cmFwXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDAxIDQuMTY2NjNWMTUuODMzM000LjE2Njc1IDkuOTk5OTZIMTUuODMzNFwiIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yIHRleHQtd2hpdGVcIj5DcmVhdGUgVGVhbTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIW5vRGF0YVwiIGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXAgXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0FkZFwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRjaGVja1wiPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAoY2xpY2spPVwib25TZWxlY3RBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0QWxsQ2hlY2tlZFwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3VzZXJOYW1lJylcIj5OYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ3VzZXJOYW1lJyAmJiB1c2VyTGlzdF9yZXE/LnNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAndXNlck5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdlbWFpbCcpXCI+RW1haWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAnZW1haWwnICYmIHVzZXJMaXN0X3JlcT8uc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdlbWFpbCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ21vYmlsZU51bWJlcicpXCI+Q29udGFjdCBOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAnbW9iaWxlTnVtYmVyJyAmJiB1c2VyTGlzdF9yZXE/LnNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAnbW9iaWxlTnVtYmVyJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgncm9sZScpXCI+Um9sZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAncm9sZScgJiYgdXNlckxpc3RfcmVxPy5zb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ3JvbGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMXB4ICFpbXBvcnRhbnQ7XCI+QXNzaWduZWQgVG8gPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMXB4ICFpbXBvcnRhbnQ7XCI+QXMgYSBMZWFkIFRvIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMXB4ICFpbXBvcnRhbnQ7XCI+QWN0aW9uczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlckxpc3Q7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIihncy51c2VyQWNjZXNzIHxhc3luYyk/Lkdsb2JhbF9Vc2VyX2lzQWRkXCI+PHNwYW4gY2xhc3M9XCJpbnB1dGNoZWNrXCI+PGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIG10LTJcIiBbKG5nTW9kZWwpXT1cInVzZXIuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RlZFRlYW1zKHVzZXIsaSlcIj48L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3VzZXI/LnVzZXJOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGdldE1hc2tlZFZhbHVlKHVzZXI/LmVtYWlsLCB1c2VySW5mbz8ucm9sZSkgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGdldE1hc2tlZE1vYmlsZSh1c2VyPy5tb2JpbGVOdW1iZXIsIHVzZXJJbmZvPy5yb2xlKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ1c2VyPy5yb2xlID09PSdzdXBlcmFkbWluJ1wiPlN1cGVyIEFkbWluPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInVzZXI/LnJvbGUgIT09J3N1cGVyYWRtaW4nXCI+e3t1c2VyPy5yb2xlIHwgdGl0bGVjYXNlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7dXNlcj8uYXNzaWduZWRTdG9yZXN8fDB9fSBTdG9yZXM8L3NwYW4+IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtaW5mb1wiPnt7dXNlcj8udGVhbUNvdW50fHwwfX0gVGVhbXM8L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXB1cnBsZVwiPnt7dXNlcj8uY2x1c3RlckNvdW50fHwwfX0gQ2x1c3RlcnM8L3NwYW4+IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtaW5mb1wiPnt7dXNlcj8udGVhbWxlYWR8fDB9fSBUZWFtczwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGQ+e3t1c2VyPy50ZWFtQ291bnR8fDB9fTwvdGQ+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQGlmICgoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8ubWFuYWdlX3VzZXJzX2lzRWRpdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInVzZXJzKCdlZGl0Jyx1c2VyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjY2Njc1IDMuMzMzMzNIMy44MzM0MUMzLjM5MTM5IDMuMzMzMzMgMi45Njc0NiAzLjUwODkzIDIuNjU0OSAzLjgyMTQ5QzIuMzQyMzQgNC4xMzQwNSAyLjE2Njc1IDQuNTU3OTcgMi4xNjY3NSA1VjE2LjY2NjdDMi4xNjY3NSAxNy4xMDg3IDIuMzQyMzQgMTcuNTMyNiAyLjY1NDkgMTcuODQ1MkMyLjk2NzQ2IDE4LjE1NzcgMy4zOTEzOSAxOC4zMzMzIDMuODMzNDEgMTguMzMzM0gxNS41MDAxQzE1Ljk0MjEgMTguMzMzMyAxNi4zNjYgMTguMTU3NyAxNi42Nzg2IDE3Ljg0NTJDMTYuOTkxMiAxNy41MzI2IDE3LjE2NjcgMTcuMTA4NyAxNy4xNjY3IDE2LjY2NjdWMTAuODMzM00xNS45MTY3IDIuMDgzMzNDMTYuMjQ4MyAxLjc1MTgxIDE2LjY5NzkgMS41NjU1NyAxNy4xNjY3IDEuNTY1NTdDMTcuNjM1NiAxLjU2NTU3IDE4LjA4NTIgMS43NTE4MSAxOC40MTY3IDIuMDgzMzNDMTguNzQ4MyAyLjQxNDg1IDE4LjkzNDUgMi44NjQ0OSAxOC45MzQ1IDMuMzMzMzNDMTguOTM0NSAzLjgwMjE3IDE4Ljc0ODMgNC4yNTE4MSAxOC40MTY3IDQuNTgzMzNMMTAuNTAwMSAxMi41TDcuMTY2NzUgMTMuMzMzM0w4LjAwMDA4IDEwTDE1LjkxNjcgMi4wODMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTMgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiVmlld3VzZXJzKCd2aWV3Jyx1c2VyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE5OTVfMTY0MDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuMzMzMjUgMTBDMS4zMzMyNSAxMCA0LjY2NjU4IDMuMzMzMzcgMTAuNDk5OSAzLjMzMzM3QzE2LjMzMzMgMy4zMzMzNyAxOS42NjY2IDEwIDE5LjY2NjYgMTBDMTkuNjY2NiAxMCAxNi4zMzMzIDE2LjY2NjcgMTAuNDk5OSAxNi42NjY3QzQuNjY2NTggMTYuNjY2NyAxLjMzMzI1IDEwIDEuMzMzMjUgMTBaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjQ5OTkgMTIuNUMxMS44ODA2IDEyLjUgMTIuOTk5OSAxMS4zODA4IDEyLjk5OTkgMTBDMTIuOTk5OSA4LjYxOTMzIDExLjg4MDYgNy41MDAwNCAxMC40OTk5IDcuNTAwMDRDOS4xMTkyMSA3LjUwMDA0IDcuOTk5OTIgOC42MTkzMyA3Ljk5OTkyIDEwQzcuOTk5OTIgMTEuMzgwOCA5LjExOTIxIDEyLjUgMTAuNDk5OSAxMi41WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTk5NV8xNjQwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5HbG9iYWxfVXNlcl9pc0VkaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0zIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJ1c2VySW5mby5yb2xlIT09J3VzZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYXNzaWduU3RvcmUodXNlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdXNlcj8uaXNBY3RpdmUgfHwgdXNlcj8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPkFzc2lnbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCIgKm5nSWY9XCJ1c2VySW5mby5yb2xlIT09J3VzZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG10LTNcIiB0eXBlPVwiY2hlY2tib3hcIiByb2xlPVwic3dpdGNoXCIgaWQ9XCJzdXBwb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISgoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNFZGl0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1c2VyU3RhdHVzQ2hhbmdlKHVzZXIsaSlcIiBbKG5nTW9kZWwpXT1cInVzZXJMaXN0W2ldLmlzQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHVzZXJMaXN0W2ldLmlzQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhY3RpdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIW5vRGF0YVwiIGNsYXNzPVwiY29sLXh4bC0xMiBjb2wtbWQtMTIgY29sLXhsLTEyIGNvbC1sZy0xMiBteS0zXCI+XHJcbiAgICAgICAgPGxpYi1wYWdpbmF0aW9uICpuZ0lmPVwidXNlckxpc3QubGVuZ3RoIT09MFwiIFtpdGVtc1BlclBhZ2VdPVwicGFnaW5hdGlvbi5saW1pdFwiIFtjdXJyZW50UGFnZV09XCJwYWdpbmF0aW9uLm9mZnNldFwiXHJcbiAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInBhZ2luYXRpb24udG90YWxDb3VudFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2luYXRpb25TaXplKClcIlxyXG4gICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lciBtYi0xMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIDxkaXYgKm5nSWY9XCJyZWNlaXZlZERhdGEgIT09J1JvbGUgVmFsdWUnXCIgY2xhc3M9XCJjb2wteHhsLTEyIGNvbC1tZC0xMiBjb2wteGwtMTIgY29sLWxnLTEyIG15LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0aXRsZSBmdy1ib2xkXCI+Um9sZXMgJiBQZXJtaXNzaW9uPC9oMz5cclxuICAgICAgICAgICAgPGg2IGNsYXNzPVwic3ViLXRpdGxlIGZ3LW5vcm1hbFwiPnt7cm9sZXNDb3VudCB8fCAwfX0gdG90YWwgcm9sZXM8L2g2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgYm9yZGVyLXZhbCBteC0zIG1iLTcgcHktN1wiICpuZ0Zvcj1cImxldCBvYmogb2Ygcm9sZXNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib2JqLnJvbGVOYW1lID09PSdzdXBlcmFkbWluJ1wiIGNsYXNzPVwicm9sZS10aXRsZSBteS0yIGN1cnNvci1wb2ludGVyXCIgPlN1cGVyIEFkbWluPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJvYmoucm9sZU5hbWUgIT09J3N1cGVyYWRtaW4nXCIgY2xhc3M9XCJyb2xlLXRpdGxlIG15LTIgY3Vyc29yLXBvaW50ZXJcIj57e29iai5yb2xlTmFtZSB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZWNhc2V9fTwvYT4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmoucm9sZU5hbWUgPT09J3N1cGVyYWRtaW4nXCIgY2xhc3M9XCJzdWItdGl0bGUgZnctc2VtaWJvbGQgbXktNVwiPk92ZXJzZWVzIGFsbCB0aGUgb3BlcmF0aW9ucyBhbmQgY29udHJvbHMgdGhlIGVudGlyZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkYXNoYm9hcmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmoucm9sZU5hbWUgPT09J2FkbWluJ1wiIGNsYXNzPVwic3ViLXRpdGxlIGZ3LXNlbWlib2xkIG15LTVcIj5NYW5hZ2VzIHNwZWNpZmljIG9wZXJhdGlvbnMsIHBlcm1pc3Npb25zLCBhbmQgY2FuIGNoYW5nZSBzZXR0aW5nIGZvciBhc3NpZ25lZCBsb2NhdGlvbnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmoucm9sZU5hbWUgPT09J3VzZXInXCIgY2xhc3M9XCJzdWItdGl0bGUgZnctc2VtaWJvbGQgbXktNVwiPkFjY2VzcyB0byBzcGVjaWZpYyBsb2NhdGlvbiBhbmQgd2lsbCBiZSBhYmxlIHRvIHZpZXcgZGFzaGJvYXJkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gY2xhc3M9XCJtZS01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNSAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTk3M18xNDMwOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDIxVjE5QzE3LjUgMTcuOTM5MSAxNy4wNzg2IDE2LjkyMTcgMTYuMzI4NCAxNi4xNzE2QzE1LjU3ODMgMTUuNDIxNCAxNC41NjA5IDE1IDEzLjUgMTVINS41QzQuNDM5MTMgMTUgMy40MjE3MiAxNS40MjE0IDIuNjcxNTcgMTYuMTcxNkMxLjkyMTQzIDE2LjkyMTcgMS41IDE3LjkzOTEgMS41IDE5VjIxTTIzLjUgMjFWMTlDMjMuNDk5MyAxOC4xMTM3IDIzLjIwNDQgMTcuMjUyOCAyMi42NjE0IDE2LjU1MjNDMjIuMTE4NCAxNS44NTE5IDIxLjM1ODEgMTUuMzUxNiAyMC41IDE1LjEzTTE2LjUgMy4xM0MxNy4zNjA0IDMuMzUwMyAxOC4xMjMgMy44NTA3IDE4LjY2NzYgNC41NTIzMUMxOS4yMTIyIDUuMjUzOTIgMTkuNTA3OCA2LjExNjgzIDE5LjUwNzggNy4wMDVDMTkuNTA3OCA3Ljg5MzE3IDE5LjIxMjIgOC43NTYwOCAxOC42Njc2IDkuNDU3NjlDMTguMTIzIDEwLjE1OTMgMTcuMzYwNCAxMC42NTk3IDE2LjUgMTAuODhNMTMuNSA3QzEzLjUgOS4yMDkxNCAxMS43MDkxIDExIDkuNSAxMUM3LjI5MDg2IDExIDUuNSA5LjIwOTE0IDUuNSA3QzUuNSA0Ljc5MDg2IDcuMjkwODYgMyA5LjUgM0MxMS43MDkxIDMgMTMuNSA0Ljc5MDg2IDEzLjUgN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTk3M18xNDMwOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXMtbGlzdCBmdy1zZW1pYm9sZFwiPnt7b2JqPy5jb3VudCB8fCAwfX0gTWVtYmVyczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG5cclxuPCEtLWJlZ2luOjpSb3ctLT5cclxuPGRpdiAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0nUm9sZSBWYWx1ZSdcIiBjbGFzcz1cInJvdyBneC01IGd4LXhsLTEwXCI+XHJcbiAgICA8IS0tYmVnaW46OkNvbC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14eGwtMTIgY29sLW1kLTEyIGNvbC14bC0xMiBjb2wtbGctMTJcIj5cclxuICAgICAgICA8bGliLXJvbGVzLXBlcm1pc3Npb24tdGFibGUgKGRhdGFFdmVudCk9XCJyZWNlaXZlRGF0YSgkZXZlbnQpXCI+PC9saWItcm9sZXMtcGVybWlzc2lvbi10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLWVuZDo6Q29sLS0+XHJcbjwvZGl2PlxyXG48IS0tZW5kOjpSb3ctLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnVsa1VwbG9hZCBsZXQtbW9kYWw+XHJcbiAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZmxleC1jb2x1bW4gcC05XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+QnVsayBBc3NpZ248L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS01MDAgbXQtNlwiPlxyXG4gICAgICAgIDxvbCBjbGFzcz1cImN1c3RvbS1vcmRlcmVkLWxpc3QgdGV4dC1ncmF5LTQwMCBmdy1ib2xkIHB4LTUgZnMtNlwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHRcIj5Vc2UgdGhlIHRlbXBsYXRlIGJlbG93IHRvIGFzc2lnbiBtdWx0aXBsZSB1c2VycyB0byBtdWx0aXBsZSBzdG9yZXMgYXQgb25jZS48L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPjxzcGFuIGNsYXNzPVwidXNlci10ZXh0XCI+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGhlcmUgLSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1zLTFcIiBocmVmPVwiLi4vLi4vLi4vYXNzZXRzL2ZpbGVzL0J1bGtBc3NpZ25UZW1wbGF0ZS54bHN4XCIgZG93bmxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVtcGxhdGUgbXMtMlwiPkRvd25sb2FkIFRlbXBsYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPkFkZCB5b3VyIGRhdGEgdG8gdGhlIFRlbXBsYXRlIEZpbGU8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPlVwbG9hZCBpdCBiZWxvdyBmb3IgcHJvY2Vzc2luZzwvbGk+ICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8L29sPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiIHctMTAwIHJpZ2h0LWJhciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiA+XHJcbiAgICAgICAgPGlucHV0IG5hbWU9XCJhY2NvdW50VHlwZVwiIHR5cGU9XCJyYWRpb1wiIGlkPVwia3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWwxXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIgdmFsdWU9XCJwZXJzb25hbDFcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrXCJcclxuICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkMSgkZXZlbnQpXCJcclxuICAgICAgICBuZy1yZWZsZWN0LXZhbHVlPVwicGVyc29uYWxcIiB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUxIC8+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsMVwiIGNsYXNzPVwiIHctMS0wIHAtNFwiPjxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWNlbnRlciB3LTEwMCBmcy00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgc3Ryb2tlPVwiI0Y5RkFGQlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwNDdfNDA1NjYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNi4zMzMzIDI2LjMzMzRMMjMgMjNNMjMgMjNMMTkuNjY2NiAyNi4zMzM0TTIzIDIzVjMwLjVNMjkuOTkxNiAyOC4zMjVDMzAuODA0NCAyNy44ODE5IDMxLjQ0NjUgMjcuMTgwOCAzMS44MTY1IDI2LjMzMjJDMzIuMTg2NiAyNS40ODM3IDMyLjI2MzUgMjQuNTM2MSAzMi4wMzUxIDIzLjYzODlDMzEuODA2OCAyMi43NDE4IDMxLjI4NjIgMjEuOTQ2MyAzMC41NTU1IDIxLjM3NzlDMjkuODI0OCAyMC44MDk1IDI4LjkyNTcgMjAuNTAwNiAyOCAyMC41SDI2Ljk1QzI2LjY5NzcgMTkuNTI0NCAyNi4yMjc2IDE4LjYxODYgMjUuNTc0OSAxNy44NTA5QzI0LjkyMjIgMTcuMDgzMSAyNC4xMDQgMTYuNDczMiAyMy4xODE3IDE2LjA2NzJDMjIuMjU5NCAxNS42NjEyIDIxLjI1NzEgMTUuNDY5NSAyMC4yNTAxIDE1LjUwNjZDMTkuMjQzIDE1LjU0MzcgMTguMjU3NSAxNS44MDg2IDE3LjM2NzYgMTYuMjgxNEMxNi40Nzc3IDE2Ljc1NDIgMTUuNzA2NiAxNy40MjI2IDE1LjExMjIgMTguMjM2M0MxNC41MTc3IDE5LjA1MDEgMTQuMTE1NSAxOS45ODggMTMuOTM1OCAyMC45Nzk1QzEzLjc1NiAyMS45NzExIDEzLjgwMzQgMjIuOTkwNSAxNC4wNzQzIDIzLjk2MTFDMTQuMzQ1MiAyNC45MzE3IDE0LjgzMjcgMjUuODI4MiAxNS41IDI2LjU4MzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDQ3XzQwNTY2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTMgMTMpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBtYi0zXCI+PHNwYW4gY2xhc3M9XCJjbGljay11cGxvYWQgY3Vyc29yLXBvaW50ZXJcIj5DbGljayB0b1xyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMlwiPm9yIGRyYWcgYW5kIGRyb3A8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+dGhlIGRhdGEgYWRkZWQgdGVtcGxhdGUgZmlsZSBmb3IgcHJvY2Vzc2luZy48L2Rpdj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJtb2RhbC5jbG9zZSgpXCI+IENhbmNlbFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cIm1vZGFsLmNsb3NlKClcIj4gU3VibWl0XHJcbiAgICAgICAgPC9idXR0b24+ICAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FmdGVyVmFsaWRhdGlvbiBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBtdC0wXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBtdC0zXCI+PHNwYW4gY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1zZW1pYm9sZCB3LWF1dG9cIj5CdWxrIEFzc2lnbjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTAgcG9wdXAtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7Z2V0U3RvcmVDb3VudHMoZXhjZWxEYXRhKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlRvdGFsIFJlY29yZHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRGF0YT8ubGVuZ3RofX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5Sb3dzIHByb2Nlc3NlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yID8gJ2Vycm9yLWhlYWRpbmcnOicnXCIgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxFcnJvcj8uZXJyb3I/Lmxlbmd0aCB8fCAwfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yID8gJ2V4Y2VsLWVycm9yJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPkVycm9yPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiBjbGFzcz1cInRhYmxlLWhlYWRlciBtdC01XCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiA+WW91J3JlIGFib3V0IHRvIGFzc2lnbiB7e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSl9fSB7e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSkgPiAxID8gJ1N0b3JlcycgOiAnU3RvcmUnfX0uIEFyZSB5b3Ugc3VyZSB3YW50IHRvIHByb2NlZWQ/PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImV4Y2VsRXJyb3JcIiBjbGFzcz1cImZsZXgtY29sdW1uIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1ib2xkXCI+SW52YWxpZCBEZXRhaWxzICE8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZSBtdC01XCI+UGxlYXNlIHByb3ZpZGUgY29ycmVjdCBpbmZvcm1hdGlvbi48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTUgdy0xMDAgcm91bmRlZC0zIGJvcmRlci1lcnJvciBtdC01IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXhjZWxFcnJvcj8uZXJyb3I7IGxldCBpID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdFwiIFtuZ0NsYXNzXT1cIiFsYXN0ID8gJ21iLTInIDogJydcIiBjbGFzcz1cInRleHQtZXJyb3JcIj57e2kgKyAxfX0pIHt7ZXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTAgdGV4dC1lbmQgcHQtMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZWFjdGl2ZXBvcHVwKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gYnRuLW1kIHB5LTMgYnRuLWRlZmF1bHQgbXMtMyBidG4tcHJpbWFyeVwiIChjbGljayk9XCJwcm9jZWVkU3VibWl0KClcIj5Qcm9jZWVkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gcHktMyBidG4tbWQgYnRuLWRlZmF1bHQgbXMtMyBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImZpbGUxLmNsaWNrKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIiBhY2NlcHQgPSBcIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25VcGxvYWQxKCRldmVudClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|