vcomply-workflow-engine 2.0.1 → 2.0.2
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/bundles/vcomply-workflow-engine.umd.js +7 -5
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/interfaces/confirmation-alert.js +1 -1
- package/esm2015/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.js +3 -1
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.js +6 -6
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.ngfactory.js +2 -2
- package/fesm2015/vcomply-workflow-engine.js +7 -5
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/lib/interfaces/confirmation-alert.d.ts +1 -0
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -1
- package/package.json +1 -1
- package/vcomply-workflow-engine.metadata.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWFsZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybWF0aW9uQWxlcnQge1xyXG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcclxuICBhY3Rpb24gPzogc3RyaW5nO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgZGF0YSA/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWFsZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybWF0aW9uQWxlcnQge1xyXG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcclxuICBhY3Rpb24gPzogc3RyaW5nO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgZGF0YSA/OiBhbnk7XHJcbiAgaXNDaGVja3BvaW50Q2hlY2tlZD86IGJvb2xlYW47XHJcbiAgaXNEYXRhUmVtb3ZlZD86IGJvb2xlYW47XHJcbn1cclxuIl19
|
|
@@ -73,6 +73,7 @@ export class CreateAssessmentContainerComponent {
|
|
|
73
73
|
background: 'black',
|
|
74
74
|
});
|
|
75
75
|
ref.afterClosed.subscribe((data) => {
|
|
76
|
+
console.log("data ====>", data, this.editorService.stepIdentifier, this.editorService.showAddPageOption, this.editorService.showPageDetails);
|
|
76
77
|
this.generatePageDropdown();
|
|
77
78
|
});
|
|
78
79
|
}
|
|
@@ -283,6 +284,7 @@ export class CreateAssessmentContainerComponent {
|
|
|
283
284
|
this.getPageName(this.editorService.currentPageNumber);
|
|
284
285
|
}
|
|
285
286
|
getPageName(pageNumber) {
|
|
287
|
+
console.log("called 11");
|
|
286
288
|
this.editorService.currentPageDetails = { pageName: '', pageNumber: 0, pageDescription: '' };
|
|
287
289
|
this.editorService.formsPage.pageDetailsList.forEach((pageDetail) => {
|
|
288
290
|
if (pageDetail.pageNumber === pageNumber) {
|
|
@@ -432,4 +434,4 @@ CreateAssessmentContainerComponent.propDecorators = {
|
|
|
432
434
|
assessmentData: [{ type: Input, args: ['assessmentJSON',] }],
|
|
433
435
|
checkpointData: [{ type: Input, args: ['checkpointJSON',] }]
|
|
434
436
|
};
|
|
435
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvYXNzZXNzbWVudC1lZGl0b3IvY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUU5RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFReEYsTUFBTSxPQUFPLGtDQUFrQztJQXNCN0MsWUFDVSxNQUFxQixFQUN0QixhQUE0QjtJQUNuQyx5Q0FBeUM7SUFDakMsS0FBcUIsRUFDckIsUUFBeUIsRUFDekIsTUFBYztRQUxkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFM0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsYUFBUSxHQUFS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Q0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztTQUUxRjtJQUNILENBQUM7OztZQXpjRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlDQUFpQztnQkFDM0MsNHBaQUEyRDtnQkFFM0QsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDOzthQUMzQjs7O1lBVlEsYUFBYTtZQUhiLGFBQWE7WUFFYixjQUFjO1lBRWQsZUFBZTtZQUZDLE1BQU07Ozt5QkF1QjVCLEtBQUs7NEJBQ0wsTUFBTTs2QkFDTixNQUFNOzZCQUVOLEtBQUssU0FBQyxnQkFBZ0I7NkJBR3RCLEtBQUssU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFkZFBhZ2VEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hZGQtcGFnZS1kZXRhaWxzL2FkZC1wYWdlLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3Nlc3NtZW50LXNldHRpbmdzL2Fzc2Vzc21lbnQtc2V0dGluZ3MuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L2FjdGlvbi1kaWFsb2cvZGVsZXRlL2RlbGV0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvYWN0aW9uLWRpYWxvZy9hY3RpdmUvYWN0aXZlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci5jb21wb25lbnQubGVzcyddLFxyXG4gIHByb3ZpZGVyczogW0VkaXRvclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVBc3Nlc3NtZW50Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzaG93Q29sbGFwc2UgPSBmYWxzZTtcclxuICBleHBhbmRQYWdlID0gZmFsc2U7XHJcbiAgaGlkZVF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgYXNzZXNzbWVudElkID0gJyc7XHJcbiAgYXNzZXNzbWVudE5hbWUgPSAnJztcclxuICBhc3Nlc3NtZW50Q2F0ZWdvcnkgPSAnJztcclxuICBhc3Nlc3NtZW50Q29udHJvbElkID0gJyc7XHJcbiAgYXNzZXNzbWVudEN1cnJlbnRTdGF0ZSA9ICdEUkFGVCc7XHJcbiAgcGFnZU1vZGU6ICdFRElUJyB8ICdQUkVWSUVXJyA9ICdFRElUJztcclxuICBpc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9wZW5Qb3J0YWwgOidBU1NFU1NNRU5UX0lNUE9SVCcgfCAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCd8JycgPSAnJztcclxuICBAT3V0cHV0KCkgc2V0SXNVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9zdEFzc2Vzc21lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBJbnB1dCgnYXNzZXNzbWVudEpTT04nKSBzZXQgYXNzZXNzbWVudERhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplQXNzZXNzbWVudCh2YWx1ZSlcclxuICB9XHJcbiAgQElucHV0KCdjaGVja3BvaW50SlNPTicpIHNldCBjaGVja3BvaW50RGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDaGVja3BvaW50KHZhbHVlKVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSAgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBzbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFkZFBhZ2UoKTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5udW1iZXJPZlBhZ2VzKCk7XHJcbiAgICAvLyB0aGlzLmluaXRpYWxpemVBc3Nlc3NtZW50KCk7XHJcbiAgfVxyXG50cmlnZ2VyUHJldmlld1dpdGhWYWxpZGF0aW9uKCl7XHJcbiAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dCgtMTApO1xyXG4gIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxufVxyXG4gIGluaXRpYWxpemVBc3Nlc3NtZW50KGFzc2Vzc21lbnREYXRhOiBhbnkpIHtcclxuICAgIGlmIChhc3Nlc3NtZW50RGF0YSkge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlID0gYXNzZXNzbWVudERhdGEuYXNzZXNzbWVudERhdGE7XHJcbiAgICAgIHRoaXMuYXNzZXNzbWVudE5hbWUgPSBhc3Nlc3NtZW50RGF0YS5tZXRhZGF0YS5hc3Nlc3NtZW50X25hbWU7XHJcbiAgICAgIHRoaXMuYXNzZXNzbWVudENhdGVnb3J5ID0gYXNzZXNzbWVudERhdGEubWV0YWRhdGEuY2F0ZWdvcnlfYXJyO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVDaGVja3BvaW50KGNoZWNrcG9pbnREYXRhOmFueSl7XHJcbiAgICBjb25zb2xlLmxvZyhcImluaXRpYWxpemVDaGVja3BvaW50ID09PlwiLCBjaGVja3BvaW50RGF0YSlcclxuICAgIGlmKGNoZWNrcG9pbnREYXRhICYmIE9iamVjdC5rZXlzKGNoZWNrcG9pbnREYXRhKT8ubGVuZ3RoID4gMCl7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UgPSBjaGVja3BvaW50RGF0YTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEFsbFBhZ2VzKCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzID0gWy4uLm5ldyBTZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5tYXAoKGVsZTogYW55KSA9PiBlbGUucGFnZSkpXTtcclxuICAgIHRoaXMuZ2V0UGFnZU5hbWUoMSk7XHJcbiAgfVxyXG5cclxuICBhZGRQYWdlRGV0YWlscygpIHtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWRkUGFnZURldGFpbHNDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogeyBwYWdlOiB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIsIHBhZ2VEZXRhaWxzOiB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLCByZWY6IHRoaXMuZWRpdG9yU2VydmljZSB9LFxyXG4gICAgICBwb3NpdGlvbjogJ1JJR0hUJyxcclxuICAgICAgYmFja2dyb3VuZDogJ2JsYWNrJyxcclxuICAgIH0pO1xyXG4gICAgcmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVQYWdlRHJvcGRvd24oKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW50aXR5U2V0dGluZ3M6IGFueSA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICcnXHJcbiAgfTtcclxuXHJcbiAgYXNzZXNzbWVudFNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5lbnRpdHlTZXR0aW5ncyA9IHRoaXMuZ2V0U2V0dGluZ3NEYXRhKCk7XHJcbiAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFzc2Vzc21lbnRTZXR0aW5nc0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7IHNldHRpbmdzOiB0aGlzLmVudGl0eVNldHRpbmdzLCBzZXJ2aWNlOiB0aGlzLmVkaXRvclNlcnZpY2UgfSxcclxuICAgICAgcG9zaXRpb246ICdSSUdIVCcsXHJcbiAgICAgIGJhY2tncm91bmQ6ICdibGFjaycsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNldHRpbmdzRGF0YSgpIHtcclxuICAgIGxldCBzZXR0aW5nczogYW55ID0ge1xyXG4gICAgICBwYW5lbFRpdGxlOiBgQXNzZXNzbWVudCBzZXR0aW5nc2AsXHJcblxyXG4gICAgICBzZXR0aW5nc0VsZW1lbnRzOiBbXVxyXG4gICAgfVxyXG4gICAgc2V0dGluZ3Muc2V0dGluZ3NFbGVtZW50cy5wdXNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ0FTU0VTU01FTlQnLFxyXG4gICAgICAgIGVudGl0eVR5cGU6ICdBU1NFU1NNRU5UJyxcclxuICAgICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgICAgaXNFbmFibGVkOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLmFzc2Vzc21lbnRNb2RlLFxyXG4gICAgICAgIGhlbHBpbmdUZXh0OiAnWW91IGNhbiBjb25maWd1cmUgc2NvcmVzIGZvciB0aGUgcXVlc3Rpb25zIGFuZCBhbmFseXplIHRoZSByZXNwb25zZXMgc3VibWl0dGVkIGJ5IHRoZSByZXNwb25kZW50IGJhc2VkIG9uIHRoZXNlIHNjb3Jlcy4nLFxyXG4gICAgICAgIGRlZmF1bHRTY29yZTogdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5zZXR0aW5ncy5kZWZhdWx0U2NvcmUsXHJcbiAgICAgICAgbmVnYXRpdmVTY29yZUNyaXRlcmlhOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLm5lZ2F0aXZlU2NvcmVDcml0ZXJpYSxcclxuICAgICAgICBuZWdhdGl2ZVNjb3JlOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLm5lZ2F0aXZlU2NvcmUsXHJcbiAgICAgICAgd2VpZ2h0YWdlRW5hYmxlZDogdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5zZXR0aW5ncy53ZWlnaHRhZ2VFbmFibGVkLFxyXG4gICAgICAgIHNldHRpbmdUaXRsZTogJ0FTU0VTU01FTlQgTU9ERScsXHJcbiAgICAgICAgc2V0dGluZ0VuYWJsZVRleHQ6IGBFbmFibGUgYXNzZXNzbWVudCBtb2RlIGZvciB0aGlzIGFzc2Vzc21lbnRgLFxyXG4gICAgICAgIHVwZGF0ZVR5cGU6ICdMQVpZJ1xyXG4gICAgICB9XHJcblxyXG4gICAgKVxyXG4gICAgc2V0dGluZ3Muc2V0dGluZ3NFbGVtZW50cy5wdXNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ1JFU1BPTlNFX1NFR01FTlQnLFxyXG4gICAgICAgIGVudGl0eVR5cGU6ICdBU1NFU1NNRU5UJyxcclxuICAgICAgICBoZWxwaW5nVGV4dDogJ1Jlc3BvbnNlIHNlZ21lbnRzIGxldCB5b3UgZGl2aWRlIHRoZSByZXNwb25zZXMgaW50byBzZXBhcmF0ZSBwYXJ0cyBvciBzZWN0aW9ucyBmb3IgZWFzaWVyIGFuYWx5c2lzIG9mIGRhdGEgYW5kIGFzc2lzdCBpbiBkZWNpc2lvbiBtYWtpbmcuJyxcclxuICAgICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgICAgaXNFbmFibGVkOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnJlc3BvbnNlU2VnbWVudFsnaXNFbmFibGVkJ10gPz8gZmFsc2UsXHJcbiAgICAgICAgc2V0dGluZ1RpdGxlOiAnUkVTUE9OU0UgU0VHTUVOVFMnLFxyXG4gICAgICAgIHNldHRpbmdFbmFibGVUZXh0OiBgQ29uZmlndXJlIFJlc3BvbnNlIFNlZ21lbnRzIGZvciB0aGlzIGFzc2Vzc21lbnRgLFxyXG4gICAgICAgIHVwZGF0ZVR5cGU6ICdMQVpZJyxcclxuICAgICAgICBzZWdtZW50RGF0YTogdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5yZXNwb25zZVNlZ21lbnRcclxuICAgICAgfVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIHNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tDb2xsYXBzZSgpIHtcclxuICAgIHRoaXMuc2hvd0NvbGxhcHNlID0gIXRoaXMuc2hvd0NvbGxhcHNlO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tFeHBhbmQoKSB7XHJcbiAgICB0aGlzLmV4cGFuZFBhZ2UgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VFeHBhbmQoKSB7XHJcbiAgICB0aGlzLmV4cGFuZFBhZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVBhZ2UoKSB7XHJcbiAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZUNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7IG1lc3NhZ2U6IGBUaGlzIGFjdGlvbiB3aWxsIDxzdHJvbmc+cmVtb3ZlPC9zdHJvbmc+IHRoaXMgcGFnZS5gIH0sXHJcbiAgICAgIHBvc2l0aW9uOiAnQ0VOVEVSJyxcclxuICAgICAgYmFja2dyb3VuZDogJ2JsYWNrJyxcclxuICAgIH0pO1xyXG4gICAgcmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblxyXG4gICAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlUGFnZUNvbmZpcm0odHJ1ZSlcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZWxldGVQYWdlQ29uZmlybShjb25maXJtRGVsZXRlOiBhbnkpIHtcclxuICAgIGlmIChjb25maXJtRGVsZXRlKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hbGxQYWdlcyA9IHRoaXMuZWRpdG9yU2VydmljZS5hbGxQYWdlcy5maWx0ZXIoKHBhZ2VOdW06IGFueSkgPT4gcGFnZU51bSAhPT0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzID0gdGhpcy51cGRhdGVQYWdlTnVtYmVyc0ZvckFsbFBhZ2VzKHRoaXMuZWRpdG9yU2VydmljZS5hbGxQYWdlcyk7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucGFnZURldGFpbHNMaXN0ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QuZmlsdGVyKChwYWdlRGV0YWlsOiBhbnkpID0+XHJcbiAgICAgICAgcGFnZURldGFpbC5wYWdlTnVtYmVyICE9PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdCA9IHRoaXMudXBkYXRlUGFnZU51bWJlckZvclBhZ2VEZXRhaWxzKHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucGFnZURldGFpbHNMaXN0KTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cyA9IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMuZmlsdGVyKFxyXG4gICAgICAgIChlbGVtZW50RGV0YWlsOiBhbnkpID0+IGVsZW1lbnREZXRhaWwucGFnZSAhPT0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cyA9IHRoaXMudXBkYXRlUGFnZU51bWJlckZvclF1ZXN0aW9ucyh0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzKTtcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA+IDEpIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgLT0gMTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldFBhZ2VOYW1lKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgICAgIHRoaXMuY2hlY2tGb3JQYWdlRGV0YWlscygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBhZ2VOdW1iZXJzRm9yQWxsUGFnZXMoYXJyYXlUb0JlVXBkYXRlZDogYW55KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5VG9CZVVwZGF0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgPj0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyIC0gMSkge1xyXG4gICAgICAgIGFycmF5VG9CZVVwZGF0ZWRbaV0gLT0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFycmF5VG9CZVVwZGF0ZWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQYWdlTnVtYmVyRm9yUGFnZURldGFpbHMoYXJyYXlUb0JlVXBkYXRlZDogYW55KSB7XHJcbiAgICBhcnJheVRvQmVVcGRhdGVkLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5wYWdlTnVtYmVyID49IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcikge1xyXG4gICAgICAgIGVsZW1lbnQucGFnZU51bWJlciAtPSAxO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnJheVRvQmVVcGRhdGVkO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGFnZU51bWJlckZvclF1ZXN0aW9ucyhhcnJheVRvQmVVcGRhdGVkOiBhbnkpIHtcclxuICAgIGFycmF5VG9CZVVwZGF0ZWQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LnBhZ2UgPj0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKSB7XHJcbiAgICAgICAgZWxlbWVudC5wYWdlIC09IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFycmF5VG9CZVVwZGF0ZWQ7XHJcbiAgfVxyXG5cclxuICBvcGVuUXVlc3Rpb24oKSB7XHJcbiAgICB0aGlzLmhpZGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZVF1ZXN0aW9uKCkge1xyXG4gICAgdGhpcy5oaWRlUXVlc3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVF1ZXN0aW9uV2l0aFZhbGlkYXRpb24oaW5kZXg6IGFueSkge1xyXG4gICAgaWYgKGluZGV4ID09PSAnd2VsY29tZScpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNXZWxjb21lID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgIH1cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5kZWxldGVRdWVzdGlvbihpbmRleCk7XHJcbiAgfVxyXG5cclxuICBjaGVja2ZvckVycm9yKG1vZGU/OiBhbnkpIHtcclxuICAgIC8vIHRoaXMubW9yZU9wdGlvbnMgPSBmYWxzZTtcclxuICAgIGNvbnN0IGVycm9yUXVlc3Rpb25JbmRleCA9IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiAoZWxlbWVudC5lcnJvckFycmF5ICYmIGVsZW1lbnQuZXJyb3JBcnJheSAhPT0ge30gJiYgT2JqZWN0LnZhbHVlcyhlbGVtZW50LmVycm9yQXJyYXkpLmxlbmd0aCA+IDApKTtcclxuICAgIGlmIChlcnJvclF1ZXN0aW9uSW5kZXggPj0gMCkge1xyXG4gICAgICBpZiAobW9kZSA9PT0gJ2Z1bGwnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50c1tlcnJvclF1ZXN0aW9uSW5kZXhdLnBhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1vZGUgIT09ICdwYXJ0aWFsJykge1xyXG4gICAgICAgIC8vIHRoaXMuZ2V0UGFnZU5hbWUodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gZXJyb3JRdWVzdGlvbkluZGV4O1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoZXJyb3JRdWVzdGlvbkluZGV4KTtcclxuXHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzW2Vycm9yUXVlc3Rpb25JbmRleF0ubmFtZSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAocXVlc3Rpb24pIHtcclxuICAgICAgICAgICAgcXVlc3Rpb24uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1vZGUgPT09ICdzYXZlJykge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG1vZGUgPT09ICdzYXZlJykge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVQYWdlRHJvcGRvd24oKSB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNXZWxjb21lID09PSB0cnVlKSB7XHJcbiAgICAgIGxpc3QucHVzaCh7IHZhbHVlOiAtMSwgdGVtcGxhdGU6IGA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyXCI+V2VsY29tZSBTY3JlZW48L3NwYW4+YCB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1RoYW5rcyA9PT0gdHJ1ZSkge1xyXG4gICAgICBsaXN0LnB1c2goeyB2YWx1ZTogLTIsIHRlbXBsYXRlOiBgPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlclwiPlRoYW5rIHlvdSBTY3JlZW48L3NwYW4+YCB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGxpc3QucHVzaCh7IHZhbHVlOiBlbGVtZW50LCB0ZW1wbGF0ZTogdGhpcy5nZXRQYWdlTmFtZUZvckRyb3Bkb3duKGVsZW1lbnQpIH0pO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnZU5hbWVGb3JEcm9wZG93bihwYWdlTnVtYmVyOiBhbnkpIHtcclxuICAgIGxldCBwYWdlVmFsdWUgPSBgPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlclwiPlBhZ2UgJHtwYWdlTnVtYmVyfTwvc3Bhbj5gO1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QuZm9yRWFjaCgocGFnZURldGFpbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChwYWdlRGV0YWlsLnBhZ2VOdW1iZXIgPT09IHBhZ2VOdW1iZXIgJiYgcGFnZURldGFpbC5wYWdlTmFtZSAhPT0gJycpIHtcclxuICAgICAgICBwYWdlVmFsdWUgPSBgPHNwYW4gY2xhc3M9XCJwYWdlLWxhYmVsIHZ4LWZzLTkgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbXItMiB2eC1saC0zXCI+UEFHRTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyIHZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHRcIj4ke3BhZ2VEZXRhaWwucGFnZU51bWJlcn08L3NwYW4+YFxyXG4gICAgICAgIC8vcGFnZVZhbHVlID0gYDxzcGFuIGNsYXNzPVwicGFnZS1sYWJlbCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1yLTIgdngtbGgtM1wiPlBhZ2UgPC9zcGFuPiA8c3BhbiAke3BhZ2VEZXRhaWwucGFnZU51bWJlcn08L3NwYW4+IDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXIgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiPiAke3BhZ2VEZXRhaWwucGFnZU5hbWV9PC9zcGFuPmA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHBhZ2VWYWx1ZTtcclxuICB9XHJcblxyXG4gIHBhZ2VDaGFuZ2VkKGV2dDogYW55KSB7XHJcblxyXG4gICAgaWYgKGV2dC52YWx1ZSA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5zZXRJZGVudGlmaWVyKCd3ZWxjb21lc2NyZWVuJyk7XHJcbiAgICB9IGVsc2UgaWYgKGV2dC52YWx1ZSA9PT0gLTIpIHtcclxuICAgICAgdGhpcy5zZXRJZGVudGlmaWVyKCd0aGFua3lvdXNjcmVlbicpO1xyXG4gICAgfSBlbHNlIGlmIChldnQudmFsdWUgPj0gMCkge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPSBldnQ/LnZhbHVlO1xyXG4gICAgICB0aGlzLnNldElkZW50aWZpZXIoJ3BhZ2VzY3JlZW4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldElkZW50aWZpZXIoc2NyZWVuOiBhbnkpIHtcclxuICAgIHRoaXMuY2hhbmdlVG9JbmFjdGl2ZSgpO1xyXG4gICAgaWYgKHNjcmVlbiA9PT0gJ3dlbGNvbWVzY3JlZW4nKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICd3ZWxjb21lc2NyZWVuJztcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gLTE7XHJcbiAgICB9XHJcbiAgICBpZiAoc2NyZWVuID09PSAndGhhbmt5b3VzY3JlZW4nKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICd0aGFua3lvdXNjcmVlbic7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IC0yO1xyXG4gICAgfVxyXG4gICAgaWYgKHNjcmVlbiA9PT0gJ3BhZ2VzY3JlZW4nKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5hbGxQYWdlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWRkUGFnZSgpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID09PSAtMSB8fCB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPT09IC0yKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzLmxlbmd0aDtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHRoaXMuZ2V0UGFnZU5hbWUodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuICB9XHJcblxyXG4gIGdldFBhZ2VOYW1lKHBhZ2VOdW1iZXI6IGFueSkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscyA9IHsgcGFnZU5hbWU6ICcnLCBwYWdlTnVtYmVyOiAwLCBwYWdlRGVzY3JpcHRpb246ICcnIH07XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5mb3JFYWNoKChwYWdlRGV0YWlsOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhZ2VEZXRhaWwucGFnZU51bWJlciA9PT0gcGFnZU51bWJlcikge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMucGFnZU51bWJlciA9IHBhZ2VEZXRhaWwucGFnZU51bWJlcjtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VOYW1lID0gcGFnZURldGFpbC5wYWdlTmFtZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VEZXNjcmlwdGlvbiA9IHBhZ2VEZXRhaWwucGFnZURlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tGb3JQYWdlRGV0YWlscygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JQYWdlRGV0YWlscygpIHtcclxuICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzID09PSB1bmRlZmluZWQgfHwgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlTmFtZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dQYWdlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zaG93UGFnZURldGFpbHMgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVG9JbmFjdGl2ZSgpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC01O1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dCgtNSk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdQYWdlKCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFkZFBhZ2UoKTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMgPSB7IHBhZ2VOYW1lOiAnJywgcGFnZU51bWJlcjogdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyLCBwYWdlRGVzY3JpcHRpb246ICcnIH07XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2hvd1BhZ2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2hvd0FkZFBhZ2VPcHRpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBhZ2VEcm9wZG93bigpO1xyXG4gIH1cclxuXHJcbiAgY2FwaXRhbGl6ZVN0cmluZyhzdHJpbmdWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gc3RyaW5nVmFsdWVbMF0udG9VcHBlckNhc2UoKSArIHN0cmluZ1ZhbHVlLnNsaWNlKDEpO1xyXG4gIH1cclxuXHJcbiAgb25EZWxldGVQYWdlQ2xpY2soKSB7XHJcbiAgICAvLyB0aGlzLnNob3dEZWxldGVQb3B1cCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc1BhZ2VFbXB0eSgpIHtcclxuICAgIGlmICghWy4uLm5ldyBTZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5tYXAoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5wYWdlKSldLmluY2x1ZGVzKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcikpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdWJtaXRBZnRlckVycm9yQ2hlY2sobW9kZTogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb24gPSAtMTA7XHJcbiAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09PSAnd2VsY29tZXNjcmVlbicgfHwgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09PSAndGhhbmt5b3VzY3JlZW4nKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgIH1cclxuICAgIC8vdGhpcy5wYWdlTW9kZSA9ICdFRElUJztcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlV2VsY29tZVRoYW5rWW91KCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2ZvckVycm9yKCdmdWxsJykpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMpIHtcclxuICAgICAgICAgIGlmICghWydjaGVja2JveCcsICdkcm9wZG93bicsICdtdWx0aXBsZS1jaG9pY2UnXS5pbmNsdWRlcyhxdWVzdGlvbi50eXBlKSkge1xyXG4gICAgICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcykge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uLmNob2ljZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNvbG9yID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zY29yZSA9IDE7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmlzRmFpbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcXVlc3Rpb24ub3RoZXJDb25maWcgPSB7IGNvbG9yOiAnJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogMCB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNhdmUobW9kZSlcclxuICAgICAgfVxyXG4gICAgfSwgMjAwKTtcclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVdlbGNvbWVUaGFua1lvdSgpIHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZTtcclxuICAgIGlmIChxdWVzdGlvbi5oYXNXZWxjb21lID09PSB0cnVlKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5oYXNXZWxjb21lRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24ud2VsY29tZURlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChxdWVzdGlvbi5oYXNXZWxjb21lSW1hZ2UgPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24ud2VsY29tZUltYWdlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVJbWFnZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lRGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLndlbGNvbWVUZXh0KS5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lSW1hZ2UpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZURlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVJbWFnZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNUaGFua3MgPT09IHRydWUpIHtcclxuICAgICAgaWYgKHF1ZXN0aW9uLmhhc1RoYW5reW91RGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VEZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdURlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHF1ZXN0aW9uLmhhc1RoYW5reW91SW1hZ2UgPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VJbWFnZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdUltYWdlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLnRoYW5reW91RGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLnRoYW5reW91VGV4dCkubGVuZ3RoID09PSAwICYmXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VJbWFnZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1RoYW5reW91RGVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmt5b3VJbWFnZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUobW9kZTogJ0RSQUZUJyB8ICdBQ1RJVkUnKSB7XHJcbiAgICBpZiAobW9kZSA9PT0gJ0FDVElWRScgJiYgdGhpcy5vcGVuUG9ydGFsICE9PSAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCcpIHtcclxuICAgICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihBY3RpdmVDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBtZXNzYWdlOiBgT25jZSBwdWJsaXNoZWQsIHRoaXMgYXNzZXNzbWVudCB3aWxsIGJlIGFjdGl2ZSBhbmQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbXBsaWFuY2UgcmVzcG9uc2liaWxpdHkuYFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9zaXRpb246ICdDRU5URVInLFxyXG4gICAgICAgIGJhY2tncm91bmQ6ICdibGFjaycsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudC5lbWl0KHsgbW9kZTogbW9kZSwgYXNzZXNzbWVudERldGFpbHM6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudC5lbWl0KHsgbW9kZTogbW9kZSwgYXNzZXNzbWVudERldGFpbHM6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2V9KTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
437
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvYXNzZXNzbWVudC1lZGl0b3IvY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUU5RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFReEYsTUFBTSxPQUFPLGtDQUFrQztJQXNCN0MsWUFDVSxNQUFxQixFQUN0QixhQUE0QjtJQUNuQyx5Q0FBeUM7SUFDakMsS0FBcUIsRUFDckIsUUFBeUIsRUFDekIsTUFBYztRQUxkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFM0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsYUFBUSxHQUFS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SUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO3dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO3FCQUMzRjtnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7U0FFMUY7SUFDSCxDQUFDOzs7WUE3Y0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQ0FBaUM7Z0JBQzNDLDRwWkFBMkQ7Z0JBRTNELFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQzs7YUFDM0I7OztZQVZRLGFBQWE7WUFIYixhQUFhO1lBRWIsY0FBYztZQUVkLGVBQWU7WUFGQyxNQUFNOzs7eUJBdUI1QixLQUFLOzRCQUNMLE1BQU07NkJBQ04sTUFBTTs2QkFFTixLQUFLLFNBQUMsZ0JBQWdCOzZCQUd0QixLQUFLLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZGRQYWdlRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWRkLXBhZ2UtZGV0YWlscy9hZGQtcGFnZS1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXNzZXNzbWVudC1zZXR0aW5ncy9hc3Nlc3NtZW50LXNldHRpbmdzLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERlbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9hY3Rpb24tZGlhbG9nL2RlbGV0ZS9kZWxldGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aXZlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L2FjdGlvbi1kaWFsb2cvYWN0aXZlL2FjdGl2ZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBwcm92aWRlcnM6IFtFZGl0b3JTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlQXNzZXNzbWVudENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2hvd0NvbGxhcHNlID0gZmFsc2U7XHJcbiAgZXhwYW5kUGFnZSA9IGZhbHNlO1xyXG4gIGhpZGVRdWVzdGlvbiA9IGZhbHNlO1xyXG4gIGFzc2Vzc21lbnRJZCA9ICcnO1xyXG4gIGFzc2Vzc21lbnROYW1lID0gJyc7XHJcbiAgYXNzZXNzbWVudENhdGVnb3J5ID0gJyc7XHJcbiAgYXNzZXNzbWVudENvbnRyb2xJZCA9ICcnO1xyXG4gIGFzc2Vzc21lbnRDdXJyZW50U3RhdGUgPSAnRFJBRlQnO1xyXG4gIHBhZ2VNb2RlOiAnRURJVCcgfCAnUFJFVklFVycgPSAnRURJVCc7XHJcbiAgaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBvcGVuUG9ydGFsIDonQVNTRVNTTUVOVF9JTVBPUlQnIHwgJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnfCcnID0gJyc7XHJcbiAgQE91dHB1dCgpIHNldElzVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvc3RBc3Nlc3NtZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoJ2Fzc2Vzc21lbnRKU09OJykgc2V0IGFzc2Vzc21lbnREYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUFzc2Vzc21lbnQodmFsdWUpXHJcbiAgfVxyXG4gIEBJbnB1dCgnY2hlY2twb2ludEpTT04nKSBzZXQgY2hlY2twb2ludERhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ2hlY2twb2ludCh2YWx1ZSlcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hZGRQYWdlKCk7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UubnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgLy8gdGhpcy5pbml0aWFsaXplQXNzZXNzbWVudCgpO1xyXG4gIH1cclxudHJpZ2dlclByZXZpZXdXaXRoVmFsaWRhdGlvbigpe1xyXG4gIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb24gPSAtMTA7XHJcbn1cclxuICBpbml0aWFsaXplQXNzZXNzbWVudChhc3Nlc3NtZW50RGF0YTogYW55KSB7XHJcbiAgICBpZiAoYXNzZXNzbWVudERhdGEpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZSA9IGFzc2Vzc21lbnREYXRhLmFzc2Vzc21lbnREYXRhO1xyXG4gICAgICB0aGlzLmFzc2Vzc21lbnROYW1lID0gYXNzZXNzbWVudERhdGEubWV0YWRhdGEuYXNzZXNzbWVudF9uYW1lO1xyXG4gICAgICB0aGlzLmFzc2Vzc21lbnRDYXRlZ29yeSA9IGFzc2Vzc21lbnREYXRhLm1ldGFkYXRhLmNhdGVnb3J5X2FycjtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplQ2hlY2twb2ludChjaGVja3BvaW50RGF0YTphbnkpe1xyXG4gICAgY29uc29sZS5sb2coXCJpbml0aWFsaXplQ2hlY2twb2ludCA9PT5cIiwgY2hlY2twb2ludERhdGEpXHJcbiAgICBpZihjaGVja3BvaW50RGF0YSAmJiBPYmplY3Qua2V5cyhjaGVja3BvaW50RGF0YSk/Lmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlID0gY2hlY2twb2ludERhdGE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBbGxQYWdlcygpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hbGxQYWdlcyA9IFsuLi5uZXcgU2V0KHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMubWFwKChlbGU6IGFueSkgPT4gZWxlLnBhZ2UpKV07XHJcbiAgICB0aGlzLmdldFBhZ2VOYW1lKDEpO1xyXG4gIH1cclxuXHJcbiAgYWRkUGFnZURldGFpbHMoKSB7XHJcblxyXG4gICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihBZGRQYWdlRGV0YWlsc0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7IHBhZ2U6IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciwgcGFnZURldGFpbHM6IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMsIHJlZjogdGhpcy5lZGl0b3JTZXJ2aWNlIH0sXHJcbiAgICAgIHBvc2l0aW9uOiAnUklHSFQnLFxyXG4gICAgICBiYWNrZ3JvdW5kOiAnYmxhY2snLFxyXG4gICAgfSk7XHJcbiAgICByZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJkYXRhID09PT0+XCIsIGRhdGEsIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciwgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uLHRoaXMuZWRpdG9yU2VydmljZS5zaG93UGFnZURldGFpbHMpO1xyXG5cclxuICAgICAgdGhpcy5nZW5lcmF0ZVBhZ2VEcm9wZG93bigpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbnRpdHlTZXR0aW5nczogYW55ID0ge1xyXG4gICAgcGFuZWxUaXRsZTogJydcclxuICB9O1xyXG5cclxuICBhc3Nlc3NtZW50U2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLmVudGl0eVNldHRpbmdzID0gdGhpcy5nZXRTZXR0aW5nc0RhdGEoKTtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQXNzZXNzbWVudFNldHRpbmdzQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgc2V0dGluZ3M6IHRoaXMuZW50aXR5U2V0dGluZ3MsIHNlcnZpY2U6IHRoaXMuZWRpdG9yU2VydmljZSB9LFxyXG4gICAgICBwb3NpdGlvbjogJ1JJR0hUJyxcclxuICAgICAgYmFja2dyb3VuZDogJ2JsYWNrJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2V0dGluZ3NEYXRhKCkge1xyXG4gICAgbGV0IHNldHRpbmdzOiBhbnkgPSB7XHJcbiAgICAgIHBhbmVsVGl0bGU6IGBBc3Nlc3NtZW50IHNldHRpbmdzYCxcclxuXHJcbiAgICAgIHNldHRpbmdzRWxlbWVudHM6IFtdXHJcbiAgICB9XHJcbiAgICBzZXR0aW5ncy5zZXR0aW5nc0VsZW1lbnRzLnB1c2goXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAnQVNTRVNTTUVOVCcsXHJcbiAgICAgICAgZW50aXR5VHlwZTogJ0FTU0VTU01FTlQnLFxyXG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBpc0VuYWJsZWQ6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MuYXNzZXNzbWVudE1vZGUsXHJcbiAgICAgICAgaGVscGluZ1RleHQ6ICdZb3UgY2FuIGNvbmZpZ3VyZSBzY29yZXMgZm9yIHRoZSBxdWVzdGlvbnMgYW5kIGFuYWx5emUgdGhlIHJlc3BvbnNlcyBzdWJtaXR0ZWQgYnkgdGhlIHJlc3BvbmRlbnQgYmFzZWQgb24gdGhlc2Ugc2NvcmVzLicsXHJcbiAgICAgICAgZGVmYXVsdFNjb3JlOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLmRlZmF1bHRTY29yZSxcclxuICAgICAgICBuZWdhdGl2ZVNjb3JlQ3JpdGVyaWE6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MubmVnYXRpdmVTY29yZUNyaXRlcmlhLFxyXG4gICAgICAgIG5lZ2F0aXZlU2NvcmU6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MubmVnYXRpdmVTY29yZSxcclxuICAgICAgICB3ZWlnaHRhZ2VFbmFibGVkOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLndlaWdodGFnZUVuYWJsZWQsXHJcbiAgICAgICAgc2V0dGluZ1RpdGxlOiAnQVNTRVNTTUVOVCBNT0RFJyxcclxuICAgICAgICBzZXR0aW5nRW5hYmxlVGV4dDogYEVuYWJsZSBhc3Nlc3NtZW50IG1vZGUgZm9yIHRoaXMgYXNzZXNzbWVudGAsXHJcbiAgICAgICAgdXBkYXRlVHlwZTogJ0xBWlknXHJcbiAgICAgIH1cclxuXHJcbiAgICApXHJcbiAgICBzZXR0aW5ncy5zZXR0aW5nc0VsZW1lbnRzLnB1c2goXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAnUkVTUE9OU0VfU0VHTUVOVCcsXHJcbiAgICAgICAgZW50aXR5VHlwZTogJ0FTU0VTU01FTlQnLFxyXG4gICAgICAgIGhlbHBpbmdUZXh0OiAnUmVzcG9uc2Ugc2VnbWVudHMgbGV0IHlvdSBkaXZpZGUgdGhlIHJlc3BvbnNlcyBpbnRvIHNlcGFyYXRlIHBhcnRzIG9yIHNlY3Rpb25zIGZvciBlYXNpZXIgYW5hbHlzaXMgb2YgZGF0YSBhbmQgYXNzaXN0IGluIGRlY2lzaW9uIG1ha2luZy4nLFxyXG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBpc0VuYWJsZWQ6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucmVzcG9uc2VTZWdtZW50Wydpc0VuYWJsZWQnXSA/PyBmYWxzZSxcclxuICAgICAgICBzZXR0aW5nVGl0bGU6ICdSRVNQT05TRSBTRUdNRU5UUycsXHJcbiAgICAgICAgc2V0dGluZ0VuYWJsZVRleHQ6IGBDb25maWd1cmUgUmVzcG9uc2UgU2VnbWVudHMgZm9yIHRoaXMgYXNzZXNzbWVudGAsXHJcbiAgICAgICAgdXBkYXRlVHlwZTogJ0xBWlknLFxyXG4gICAgICAgIHNlZ21lbnREYXRhOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnJlc3BvbnNlU2VnbWVudFxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgICByZXR1cm4gc2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBjbGlja0NvbGxhcHNlKCkge1xyXG4gICAgdGhpcy5zaG93Q29sbGFwc2UgPSAhdGhpcy5zaG93Q29sbGFwc2U7XHJcbiAgfVxyXG5cclxuICBjbGlja0V4cGFuZCgpIHtcclxuICAgIHRoaXMuZXhwYW5kUGFnZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZUV4cGFuZCgpIHtcclxuICAgIHRoaXMuZXhwYW5kUGFnZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUGFnZSgpIHtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgbWVzc2FnZTogYFRoaXMgYWN0aW9uIHdpbGwgPHN0cm9uZz5yZW1vdmU8L3N0cm9uZz4gdGhpcyBwYWdlLmAgfSxcclxuICAgICAgcG9zaXRpb246ICdDRU5URVInLFxyXG4gICAgICBiYWNrZ3JvdW5kOiAnYmxhY2snLFxyXG4gICAgfSk7XHJcbiAgICByZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIGlmIChkYXRhID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVQYWdlQ29uZmlybSh0cnVlKVxyXG4gICAgICB9XHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGRlbGV0ZVBhZ2VDb25maXJtKGNvbmZpcm1EZWxldGU6IGFueSkge1xyXG4gICAgaWYgKGNvbmZpcm1EZWxldGUpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzLmZpbHRlcigocGFnZU51bTogYW55KSA9PiBwYWdlTnVtICE9PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMgPSB0aGlzLnVwZGF0ZVBhZ2VOdW1iZXJzRm9yQWxsUGFnZXModGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzKTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QgPSB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5maWx0ZXIoKHBhZ2VEZXRhaWw6IGFueSkgPT5cclxuICAgICAgICBwYWdlRGV0YWlsLnBhZ2VOdW1iZXIgIT09IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucGFnZURldGFpbHNMaXN0ID0gdGhpcy51cGRhdGVQYWdlTnVtYmVyRm9yUGFnZURldGFpbHModGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QpO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5maWx0ZXIoXHJcbiAgICAgICAgKGVsZW1lbnREZXRhaWw6IGFueSkgPT4gZWxlbWVudERldGFpbC5wYWdlICE9PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzID0gdGhpcy51cGRhdGVQYWdlTnVtYmVyRm9yUXVlc3Rpb25zKHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMpO1xyXG4gICAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID4gMSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciAtPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0UGFnZU5hbWUodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuICAgICAgdGhpcy5jaGVja0ZvclBhZ2VEZXRhaWxzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTEwO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGFnZU51bWJlcnNGb3JBbGxQYWdlcyhhcnJheVRvQmVVcGRhdGVkOiBhbnkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXlUb0JlVXBkYXRlZC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaSA+PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgLSAxKSB7XHJcbiAgICAgICAgYXJyYXlUb0JlVXBkYXRlZFtpXSAtPSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXlUb0JlVXBkYXRlZDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBhZ2VOdW1iZXJGb3JQYWdlRGV0YWlscyhhcnJheVRvQmVVcGRhdGVkOiBhbnkpIHtcclxuICAgIGFycmF5VG9CZVVwZGF0ZWQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LnBhZ2VOdW1iZXIgPj0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKSB7XHJcbiAgICAgICAgZWxlbWVudC5wYWdlTnVtYmVyIC09IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFycmF5VG9CZVVwZGF0ZWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQYWdlTnVtYmVyRm9yUXVlc3Rpb25zKGFycmF5VG9CZVVwZGF0ZWQ6IGFueSkge1xyXG4gICAgYXJyYXlUb0JlVXBkYXRlZC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQucGFnZSA+PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpIHtcclxuICAgICAgICBlbGVtZW50LnBhZ2UgLT0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYXJyYXlUb0JlVXBkYXRlZDtcclxuICB9XHJcblxyXG4gIG9wZW5RdWVzdGlvbigpIHtcclxuICAgIHRoaXMuaGlkZVF1ZXN0aW9uID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlUXVlc3Rpb24oKSB7XHJcbiAgICB0aGlzLmhpZGVRdWVzdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUXVlc3Rpb25XaXRoVmFsaWRhdGlvbihpbmRleDogYW55KSB7XHJcbiAgICBpZiAoaW5kZXggPT09ICd3ZWxjb21lJykge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gMTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmRlbGV0ZVF1ZXN0aW9uKGluZGV4KTtcclxuICB9XHJcblxyXG4gIGNoZWNrZm9yRXJyb3IobW9kZT86IGFueSkge1xyXG4gICAgLy8gdGhpcy5tb3JlT3B0aW9ucyA9IGZhbHNlO1xyXG4gICAgY29uc3QgZXJyb3JRdWVzdGlvbkluZGV4ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IChlbGVtZW50LmVycm9yQXJyYXkgJiYgZWxlbWVudC5lcnJvckFycmF5ICE9PSB7fSAmJiBPYmplY3QudmFsdWVzKGVsZW1lbnQuZXJyb3JBcnJheSkubGVuZ3RoID4gMCkpO1xyXG4gICAgaWYgKGVycm9yUXVlc3Rpb25JbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmIChtb2RlID09PSAnZnVsbCcpIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzW2Vycm9yUXVlc3Rpb25JbmRleF0ucGFnZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobW9kZSAhPT0gJ3BhcnRpYWwnKSB7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRQYWdlTmFtZSh0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG5cclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb24gPSBlcnJvclF1ZXN0aW9uSW5kZXg7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dChlcnJvclF1ZXN0aW9uSW5kZXgpO1xyXG5cclxuICAgICAgICBjb25zdCBxdWVzdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHNbZXJyb3JRdWVzdGlvbkluZGV4XS5uYW1lKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGlmIChxdWVzdGlvbikge1xyXG4gICAgICAgICAgICBxdWVzdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobW9kZSA9PT0gJ3NhdmUnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTEwO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobW9kZSA9PT0gJ3NhdmUnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTEwO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVBhZ2VEcm9wZG93bigpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWUgPT09IHRydWUpIHtcclxuICAgICAgbGlzdC5wdXNoKHsgdmFsdWU6IC0xLCB0ZW1wbGF0ZTogYDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXJcIj5XZWxjb21lIFNjcmVlbjwvc3Bhbj5gIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmtzID09PSB0cnVlKSB7XHJcbiAgICAgIGxpc3QucHVzaCh7IHZhbHVlOiAtMiwgdGVtcGxhdGU6IGA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyXCI+VGhhbmsgeW91IFNjcmVlbjwvc3Bhbj5gIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hbGxQYWdlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgbGlzdC5wdXNoKHsgdmFsdWU6IGVsZW1lbnQsIHRlbXBsYXRlOiB0aGlzLmdldFBhZ2VOYW1lRm9yRHJvcGRvd24oZWxlbWVudCkgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlTmFtZUZvckRyb3Bkb3duKHBhZ2VOdW1iZXI6IGFueSkge1xyXG4gICAgbGV0IHBhZ2VWYWx1ZSA9IGA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyXCI+UGFnZSAke3BhZ2VOdW1iZXJ9PC9zcGFuPmA7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5mb3JFYWNoKChwYWdlRGV0YWlsOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhZ2VEZXRhaWwucGFnZU51bWJlciA9PT0gcGFnZU51bWJlciAmJiBwYWdlRGV0YWlsLnBhZ2VOYW1lICE9PSAnJykge1xyXG4gICAgICAgIHBhZ2VWYWx1ZSA9IGA8c3BhbiBjbGFzcz1cInBhZ2UtbGFiZWwgdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIj5QQUdFPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXIgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiPiR7cGFnZURldGFpbC5wYWdlTnVtYmVyfTwvc3Bhbj5gXHJcbiAgICAgICAgLy9wYWdlVmFsdWUgPSBgPHNwYW4gY2xhc3M9XCJwYWdlLWxhYmVsIHZ4LWZzLTkgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbXItMiB2eC1saC0zXCI+UGFnZSA8L3NwYW4+IDxzcGFuICR7cGFnZURldGFpbC5wYWdlTnVtYmVyfTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlciB2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0XCI+ICR7cGFnZURldGFpbC5wYWdlTmFtZX08L3NwYW4+YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcGFnZVZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcGFnZUNoYW5nZWQoZXZ0OiBhbnkpIHtcclxuXHJcbiAgICBpZiAoZXZ0LnZhbHVlID09PSAtMSkge1xyXG4gICAgICB0aGlzLnNldElkZW50aWZpZXIoJ3dlbGNvbWVzY3JlZW4nKTtcclxuICAgIH0gZWxzZSBpZiAoZXZ0LnZhbHVlID09PSAtMikge1xyXG4gICAgICB0aGlzLnNldElkZW50aWZpZXIoJ3RoYW5reW91c2NyZWVuJyk7XHJcbiAgICB9IGVsc2UgaWYgKGV2dC52YWx1ZSA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IGV2dD8udmFsdWU7XHJcbiAgICAgIHRoaXMuc2V0SWRlbnRpZmllcigncGFnZXNjcmVlbicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0SWRlbnRpZmllcihzY3JlZW46IGFueSkge1xyXG4gICAgdGhpcy5jaGFuZ2VUb0luYWN0aXZlKCk7XHJcbiAgICBpZiAoc2NyZWVuID09PSAnd2VsY29tZXNjcmVlbicpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3dlbGNvbWVzY3JlZW4nO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPSAtMTtcclxuICAgIH1cclxuICAgIGlmIChzY3JlZW4gPT09ICd0aGFua3lvdXNjcmVlbicpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3RoYW5reW91c2NyZWVuJztcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gLTI7XHJcbiAgICB9XHJcbiAgICBpZiAoc2NyZWVuID09PSAncGFnZXNjcmVlbicpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hZGRQYWdlKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gMTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPT09IC0xIHx8IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9PT0gLTIpIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRQYWdlTmFtZSh0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnZU5hbWUocGFnZU51bWJlcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImNhbGxlZCAxMVwiKVxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscyA9IHsgcGFnZU5hbWU6ICcnLCBwYWdlTnVtYmVyOiAwLCBwYWdlRGVzY3JpcHRpb246ICcnIH07XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5mb3JFYWNoKChwYWdlRGV0YWlsOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhZ2VEZXRhaWwucGFnZU51bWJlciA9PT0gcGFnZU51bWJlcikge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMucGFnZU51bWJlciA9IHBhZ2VEZXRhaWwucGFnZU51bWJlcjtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VOYW1lID0gcGFnZURldGFpbC5wYWdlTmFtZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VEZXNjcmlwdGlvbiA9IHBhZ2VEZXRhaWwucGFnZURlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tGb3JQYWdlRGV0YWlscygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JQYWdlRGV0YWlscygpIHtcclxuICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzID09PSB1bmRlZmluZWQgfHwgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlTmFtZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dQYWdlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zaG93UGFnZURldGFpbHMgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVG9JbmFjdGl2ZSgpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC01O1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dCgtNSk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdQYWdlKCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFkZFBhZ2UoKTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMgPSB7IHBhZ2VOYW1lOiAnJywgcGFnZU51bWJlcjogdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyLCBwYWdlRGVzY3JpcHRpb246ICcnIH07XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2hvd1BhZ2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2hvd0FkZFBhZ2VPcHRpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBhZ2VEcm9wZG93bigpO1xyXG4gIH1cclxuXHJcbiAgY2FwaXRhbGl6ZVN0cmluZyhzdHJpbmdWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gc3RyaW5nVmFsdWVbMF0udG9VcHBlckNhc2UoKSArIHN0cmluZ1ZhbHVlLnNsaWNlKDEpO1xyXG4gIH1cclxuXHJcbiAgb25EZWxldGVQYWdlQ2xpY2soKSB7XHJcbiAgICAvLyB0aGlzLnNob3dEZWxldGVQb3B1cCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc1BhZ2VFbXB0eSgpIHtcclxuICAgIGlmICghWy4uLm5ldyBTZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5tYXAoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5wYWdlKSldLmluY2x1ZGVzKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcikpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdWJtaXRBZnRlckVycm9yQ2hlY2sobW9kZTogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb24gPSAtMTA7XHJcbiAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09PSAnd2VsY29tZXNjcmVlbicgfHwgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09PSAndGhhbmt5b3VzY3JlZW4nKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgIH1cclxuICAgIC8vdGhpcy5wYWdlTW9kZSA9ICdFRElUJztcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlV2VsY29tZVRoYW5rWW91KCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2ZvckVycm9yKCdmdWxsJykpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMpIHtcclxuICAgICAgICAgIGlmICghWydjaGVja2JveCcsICdkcm9wZG93bicsICdtdWx0aXBsZS1jaG9pY2UnXS5pbmNsdWRlcyhxdWVzdGlvbi50eXBlKSkge1xyXG4gICAgICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcykge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uLmNob2ljZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNvbG9yID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zY29yZSA9IDE7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmlzRmFpbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcXVlc3Rpb24ub3RoZXJDb25maWcgPSB7IGNvbG9yOiAnJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogMCB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNhdmUobW9kZSlcclxuICAgICAgfVxyXG4gICAgfSwgMjAwKTtcclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVdlbGNvbWVUaGFua1lvdSgpIHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZTtcclxuICAgIGlmIChxdWVzdGlvbi5oYXNXZWxjb21lID09PSB0cnVlKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5oYXNXZWxjb21lRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24ud2VsY29tZURlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChxdWVzdGlvbi5oYXNXZWxjb21lSW1hZ2UgPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24ud2VsY29tZUltYWdlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVJbWFnZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lRGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLndlbGNvbWVUZXh0KS5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lSW1hZ2UpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZURlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVJbWFnZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNUaGFua3MgPT09IHRydWUpIHtcclxuICAgICAgaWYgKHF1ZXN0aW9uLmhhc1RoYW5reW91RGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VEZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdURlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHF1ZXN0aW9uLmhhc1RoYW5reW91SW1hZ2UgPT09IHRydWUgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VJbWFnZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdUltYWdlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLnRoYW5reW91RGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLnRoYW5reW91VGV4dCkubGVuZ3RoID09PSAwICYmXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VJbWFnZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1RoYW5reW91RGVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmt5b3VJbWFnZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUobW9kZTogJ0RSQUZUJyB8ICdBQ1RJVkUnKSB7XHJcbiAgICBpZiAobW9kZSA9PT0gJ0FDVElWRScgJiYgdGhpcy5vcGVuUG9ydGFsICE9PSAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCcpIHtcclxuICAgICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihBY3RpdmVDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBtZXNzYWdlOiBgT25jZSBwdWJsaXNoZWQsIHRoaXMgYXNzZXNzbWVudCB3aWxsIGJlIGFjdGl2ZSBhbmQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbXBsaWFuY2UgcmVzcG9uc2liaWxpdHkuYFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9zaXRpb246ICdDRU5URVInLFxyXG4gICAgICAgIGJhY2tncm91bmQ6ICdibGFjaycsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudC5lbWl0KHsgbW9kZTogbW9kZSwgYXNzZXNzbWVudERldGFpbHM6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudC5lbWl0KHsgbW9kZTogbW9kZSwgYXNzZXNzbWVudERldGFpbHM6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2V9KTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|