@tsi-developpement/tsi-shared-ui 1.8.7 → 1.8.8
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.
|
@@ -409,7 +409,7 @@ export class TsiFormComponent {
|
|
|
409
409
|
if (data.entityStatus && Array.isArray(data.entityStatus)) {
|
|
410
410
|
this.entityStatusList = data.entityStatus;
|
|
411
411
|
}
|
|
412
|
-
if (this.mode === Modes.create) {
|
|
412
|
+
if (this.mode === Modes.create && isNullOrEmpty(this.status) && !isNullOrEmpty(data.defaultStatus)) {
|
|
413
413
|
this.status = data.defaultStatus;
|
|
414
414
|
}
|
|
415
415
|
},
|
|
@@ -638,4 +638,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
638
638
|
type: ViewChildren,
|
|
639
639
|
args: ['dynamicFooterContainer', { read: ViewContainerRef }]
|
|
640
640
|
}] } });
|
|
641
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1mb3JtL3RzaS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZm9ybS90c2ktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGNBQWMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUE0QixPQUFPLEVBQW1DLCtCQUErQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hLLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUMsTUFBTSxpREFBaUQsQ0FBQztBQUVoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFVdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixF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MUMsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR3VCLGtCQUFrQjtzQkFBL0MsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ1csZUFBZTtzQkFBckQsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBRUUsZUFBZTtzQkFBckQsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBR3JDLHdCQUF3QjtzQkFEdkIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFJbkUsd0JBQXdCO3NCQUR2QixZQUFZO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZm9ybVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdHMvZm9ybS10eXBlJztcclxuaW1wb3J0IHsgQWRtaW5pc3RyYXRpb25FbmRwb2ludHMgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzL2VuZHBvaW50cyc7XHJcbmltcG9ydCB7IE1vZGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBJTW9kYWxTaXplIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEVudGl0eVByb3BlcnRpZXNSZXNwb25zZSwgRmljaGllciwgS2V5VmFsdWVQYWlyLCBPcHRpb25hbEVuZHBvaW50cywgdXBkYXRlRW50aXR5V29ya2Zsb3dJbmZvcm1hdGlvbiwgd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb2xvbm5lUGVyc29ubmFsaXNlZURhdGEsIENvbG9ubmVQZXJzb25uYWxpc2VlR3JvdXBlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R5bmFtaWMtZm9ybS9jb2xvbm5lLXBlcnNvbm5hbGlzZWUnO1xyXG5pbXBvcnQgeyBTdGF0dXNNZXRhZGF0YVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0YXR1cy9jb2xvci1zdGF0dXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgQ29sb25uZVBlcnNvbm5hbGlzZWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtL2NvbG9ubmUtcGVyc29ubmFsaXNlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmljaGllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWNoaWVyL2ZpY2hpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dEhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQvbGF5b3V0LWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLWNvbmZpcm1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRpdHlTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdHVzL2VudGl0eVN0YXR1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RhdHVzQ29sb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdHVzL3N0YXR1cy1jb2xvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dvcmtmbG93L3dvcmtmbG93LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFJlcG9ydGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL3JlcG9ydGluZy9yZXBvcnRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktbW9kYWwtZm9vdGVyL3RzaS1tb2RhbC1mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktbW9kYWwtaGVhZGVyL3RzaS1tb2RhbC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXVsYWlyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0vZm9ybXVsYWlyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNOdWxsT3JFbXB0eSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlndXJhdGlvbi9lbnRpdHktY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdFRyYWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVxdWVzdC1tYW5hZ2VtZW50L3JlcXVlc3QtdHJhY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHNpLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gIHB1YmxpYyBsb2NhbGl6ZT8gPSBpbmplY3QoTG9jYWxpemVQaXBlKVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBmaWVsZHNcclxuICBwcml2YXRlIF9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gcHJvcGVydGllc1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmPzogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoXCJyZXBvcnRpbmdBcHBcIikgcmVwb3J0aW5nQXBwPzogUmVwb3J0aW5nQ29tcG9uZW50XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBpbnB1dHNcclxuICBASW5wdXQoKSBjbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9ICdvZmYnO1xyXG4gIC8vIEBJbnB1dCgpIGZvcm1OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gQElucHV0KCkgZm9ybUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIG9wdGlvbmFsRW5kcG9pbnRzPzogT3B0aW9uYWxFbmRwb2ludHM7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb2RhbFNpemU/OiBJTW9kYWxTaXplO1xyXG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzY3JpbWluYXRvclZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgZ2V0IGRlc2NyaW1pbmF0b3JWYWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZGVzY3JpbWluYXRvclZhbHVlOyB9XHJcbiAgc2V0IGRlc2NyaW1pbmF0b3JWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9kZXNjcmltaW5hdG9yVmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuaXNEZXNjcmltaW5hdG9yVmFsdWVTZXQgPSB0cnVlO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGb3Jtc0luZm9zKCk7XHJcbiAgfVxyXG5cclxuICBlbnRpdHlTdGF0dXNMaXN0OiBLZXlWYWx1ZVBhaXI8c3RyaW5nLCBzdHJpbmc+W10gPSBbXTtcclxuICBzdGF0dXNDb2x1bW5OYW1lOiBzdHJpbmcgPSAnJ1xyXG5cclxuICBub21icmVEb2N1bWVudHM6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICBpc0RyYWdPdmVyID0gZmFsc2U7XHJcbiAgbWVzc2FnZVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcbiAgcHJpdmF0ZSBkcmFnRW50ZXJDb3VudCA9IDA7XHJcbiAgcHJpdmF0ZSBfZm9ybU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZm9ybUVuZHBvaW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybUVuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgc2V0IGZvcm1FbmRwb2ludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9mb3JtRW5kcG9pbnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBmb3JtTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1OYW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0IGZvcm1OYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2Zvcm1OYW1lID0gdmFsdWU7XHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYnVzaW5lc3NDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfbW9kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2Zvcm1FbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX3N0YXR1czogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBHZXR0ZXIgZm9yIGJ1c2luZXNzQ2xhc3NcclxuICBnZXQgYnVzaW5lc3NDbGFzcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1c2luZXNzQ2xhc3M7XHJcbiAgfVxyXG5cclxuICAvLyBTZXR0ZXIgZm9yIGJ1c2luZXNzQ2xhc3NcclxuICBzZXQgYnVzaW5lc3NDbGFzcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9idXNpbmVzc0NsYXNzID0gdmFsdWU7XHJcbiAgICB0aGlzLmlzQnVzaW5lc3NDbGFzc1NldCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5nZXRDb2xvbm5lUGVyc29ubmFsaXNlZSgpO1xyXG4gICAgdGhpcy5nZXRFbnRpdHlTdGF0dXMoKTtcclxuICAgIHRoaXMuZ2V0U3RhdHVzTWV0YUZvckNvbWJvKCk7XHJcbiAgICB0aGlzLmNoZWNrRW50aXR5SW5mbygpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGb3Jtc0luZm9zKCk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXR0ZXIgZm9yIGlkXHJcbiAgZ2V0IGlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG5cclxuICAvLyBTZXR0ZXIgZm9yIGlkXHJcbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2lkID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldENvbG9ubmVQZXJzb25uYWxpc2VlKCk7XHJcbiAgICB0aGlzLmdldE5vbWJyZUZpY2hpZXIoKTtcclxuICB9XHJcblxyXG4gIC8vIEdldHRlciBmb3Igc3RhdHVzXHJcbiAgZ2V0IHN0YXR1cygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcclxuICB9XHJcblxyXG4gIC8vIFNldHRlciBmb3Igc3RhdHVzXHJcbiAgc2V0IHN0YXR1cyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9zdGF0dXMgPSB2YWx1ZTtcclxuICAgIHRoaXMub25TdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLl9zdGF0dXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0IG1vZGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fbW9kZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5nZXRDb2xvbm5lUGVyc29ubmFsaXNlZSgpO1xyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUZvcm1zVmlzaWJpbGl0eSgpO1xyXG4gICAgdGhpcy51cGRhdGVNb2RlSW5Uc2lNb2RhbEZvb3RlcigpXHJcbiAgfVxyXG5cclxuICBnZXQgbW9kZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHNldCBpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGlzQ3JlYXRlT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG91dHB1dHNcclxuICBAT3V0cHV0KCkgb25TdWJtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uU3VibWl0Rm9ybVdvcmtmbG93Q29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZm9ybVJlZkNoYW5nZTogRXZlbnRFbWl0dGVyPE5nRm9ybT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5nRm9ybT4oKTtcclxuICBAT3V0cHV0KCkgb25TdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJUZW1wbGF0ZScpIHRvb2xiYXJUZW1wbGF0ZVJlZiAhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBDb250ZW50Q2hpbGQoVHNpTW9kYWxIZWFkZXJDb21wb25lbnQpIG1vZGFsSGVhZGVyQ29tcD86IFRzaU1vZGFsSGVhZGVyQ29tcG9uZW50O1xyXG5cclxuICBAQ29udGVudENoaWxkKFRzaU1vZGFsRm9vdGVyQ29tcG9uZW50KSBtb2RhbEZvb3RlckNvbXA/OiBUc2lNb2RhbEZvb3RlckNvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignZHluYW1pY1Rvb2xiYXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBkeW5hbWljVG9vbGJhckNvbnRhaW5lcnMhOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2R5bmFtaWNGb290ZXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBkeW5hbWljRm9vdGVyc0NvbnRhaW5lcnMhOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHByaXZhdGUgX2lucHV0VGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZ2V0IGlucHV0VGl0bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGFsSGVhZGVyQ29tcD8uaW5wdXRUaXRsZVxyXG4gIH1cclxuXHJcbiAgc2V0IGlucHV0VGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5faW5wdXRUaXRsZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29sb25uZXNQZXJzb25uYWxpc2VlR3JvdXBlZDogQ29sb25uZVBlcnNvbm5hbGlzZWVHcm91cGVkUmVzcG9uc2VbXSA9IFtdO1xyXG4gIGNhblNob3dGb3JtczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1zT2ZCdXNpbmVzc0NsYXNzOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgX2RvZXNIYXZlRm9ybXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnZXQgZG9lc0hhdmVGb3JtcygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2RvZXNIYXZlRm9ybXM7IH1cclxuICBzZXQgZG9lc0hhdmVGb3Jtcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZG9lc0hhdmVGb3JtcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUZvcm1zVmlzaWJpbGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgaXNEZXNjcmltaW5hdG9yVmFsdWVTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0J1c2luZXNzQ2xhc3NTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Zvcm1zSW5mb3NDYWxjdWxhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaWdub3JlRGVzY3JpbWluYXRvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhc0FjdGl2ZVJlcXVlc3RzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZXF1ZXN0VHJhY2tlclN0YXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBkeW5hbWljRm9ybVNlcnZpY2UgPSBpbmplY3QoRHluYW1pY0Zvcm1TZXJ2aWNlKTtcclxuICBmb3JtdWxhaXJlU2VydmljZSA6IEZvcm11bGFpcmVTZXJ2aWNlID0gaW5qZWN0KEZvcm11bGFpcmVTZXJ2aWNlKTtcclxuICBlbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSA6IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0KEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcclxuICByZXF1ZXN0VHJhY2tlclNlcnZpY2UgOiBSZXF1ZXN0VHJhY2tlclNlcnZpY2UgPSBpbmplY3QoUmVxdWVzdFRyYWNrZXJTZXJ2aWNlKTtcclxuXHJcbiAgLy8jcmVnaW9uIGN0b3JcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZW50aXR5U3RhdHVzU2VydmljZTogRW50aXR5U3RhdHVzU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RhdHVzQ29sb3JTZXJ2aWNlOiBTdGF0dXNDb2xvclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgX2ZpY2hpZXJTZXJ2aWNlOiBGaWNoaWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHNpQ29uZmlybVNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90c2lOb3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2xheW91dEhlbHBlclNlcnZpY2U6IExheW91dEhlbHBlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZTogV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHB1YmxpYyBfY29sb25uZVBlcnNvbm5hbGlzZWVTZXJ2aWNlOiBDb2xvbm5lUGVyc29ubmFsaXNlZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mb3JtU3RhdGVTZXJ2aWNlIDogRm9ybVN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyByZWY/OiBEeW5hbWljRGlhbG9nUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZz86IER5bmFtaWNEaWFsb2dDb25maWcsXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5yZXBvcnRpbmdBcHApIHtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSAmJiB0aGlzLnJlcG9ydGluZ0FwcC5zaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b24pIHtcclxuICAgICAgICB0aGlzLnJlcG9ydGluZ0FwcC5zaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b24gPSBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNhdmVkRGF0YVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnNhdmVkRGF0YVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5yZXF1ZXN0VHJhY2tlclN0YXRlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVxdWVzdFRyYWNrZXJTdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIHZhcmlhYmxlc1xyXG4gIHByaXZhdGUgX3dvcmtmbG93SW5mb3JtYXRpb246IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlID0gbmV3IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlKCk7XHJcbiAgc2V0IHdvcmtmbG93SW5mb3JtYXRpb24odmFsdWU6IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlKSB7XHJcbiAgICB0aGlzLl93b3JrZmxvd0luZm9ybWF0aW9uID0gdmFsdWVcclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIGlmICh0aGlzLm1vZGUgIT0gTW9kZXMuY3JlYXRlICYmIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbj8ud29ya2Zsb3dFdGF0KSB7XHJcbiAgICAgIHRoaXMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEFzS2V5VmFsdWVQYWlyID0gQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEJ5V29ya2Zsb3dFdGF0KHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd0V0YXQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBhc3luYyBnZXRXb3JrZmxvd0VudGl0eUluZm9ybWF0aW9uKGJ1c2luZXNzQ2xhc3M6IHN0cmluZywgdWlkT2JqZWN0Pzogc3RyaW5nLCBkaXNjcmltaW5hdG9yQ2xhc3NOYW1lID86IHN0cmluZywgXHJcbiAgLy8gZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSA/OiBzdHJpbmdcclxuICAvLyApIHtcclxuICAvLyAgIGlmICh0aGlzLm1vZGUgIT0gTW9kZXMuY3JlYXRlKSB7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIHRyeSB7XHJcbiAgLy8gICAgIGxldCByZXF1ZXN0OiBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0ID0gbmV3IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QoKTtcclxuICAvLyAgICAgcmVxdWVzdC5jbGFzc05hbWUgPSBidXNpbmVzc0NsYXNzXHJcbiAgLy8gICAgIHJlcXVlc3QudWlkT2JqZXQgPSB1aWRPYmplY3Q7XHJcbiAgLy8gICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvckNsYXNzTmFtZSA9IGRpc2NyaW1pbmF0b3JDbGFzc05hbWVcclxuICAvLyAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yUHJvcGVydHlOYW1lID0gZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZVxyXG4gIC8vICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JWYWx1ZSA9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgLy8gICAgIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0RW50aXR5V29ya2xmb3dJbnN0YW5jZUluZm9ybWF0aW9uKHJlcXVlc3QpKVxyXG4gIC8vICAgICBjb25zb2xlLmxvZyhcInRoaXMud29ya2Zsb3dJbmZvcm1hdGlvblwiLCB0aGlzLndvcmtmbG93SW5mb3JtYXRpb24pXHJcbiAgLy8gICAgIGlmICh0aGlzLndvcmtmbG93SW5mb3JtYXRpb24pIHtcclxuICAvLyAgICAgICBsZXQgd29ya2Zsb3dFdGF0Rm9ybSA9IHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2Uud29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRGb3JtXHJcbiAgLy8gICAgICAgICA/LmZpbmQoeCA9PiB4LnVpZCA9PSB0aGlzLndvcmtmbG93SW5mb3JtYXRpb24/LndvcmtmbG93RXRhdClcclxuICAvLyAgICAgICBpZiAod29ya2Zsb3dFdGF0Rm9ybSkge1xyXG4gIC8vICAgICAgICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JGb3JDdXJyZW50RW50aXR5Rm9ybSA9XHJcbiAgLy8gICAgICAgICAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UubWFwV29ya2Zsb3dFdGF0Rm9ybVRvUHJlc2VudGF0aW9uU2V0dGluZyh3b3JrZmxvd0V0YXRGb3JtLndvcmtmbG93RXRhdHNGb3JtcylcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGNhdGNoIChlcnJvcikge1xyXG4gIC8vICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0IHdvcmtmbG93SW5mb3JtYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya2Zsb3dJbmZvcm1hdGlvblxyXG4gIH1cclxuICBnZXRXb3JrZmxvd0V0YXRBc0tleVZhbHVlUGFpciA9XHJcbiAgICBBZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRXb3JrZmxvd0V0YXRBc0tleVZhbHVlUGFpcigpO1xyXG4gIGdldFdvcmtmbG93RXRhdFN1aXZhbnRBc0tleVZhbHVlUGFpciA9ICcnO1xyXG4gIHNlbGVjdGVkV29ya2Zsb3dFdGF0VWlkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIGlzQ29tYm9EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1Nb2RlcyA9IE1vZGVzO1xyXG5cclxuICBjb25maWdNb2RlQnV0dG9uSWQgPSBcImNvbmZnLW1vZGUtYnV0dG9uLWZyb20tZm9ybVwiO1xyXG4gIGN1ZENvbXBvbmVudDogYW55XHJcbiAgY29uZmlnRGF0YTogYW55XHJcbiAgc2F2ZWREYXRhU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gaGFuZGxlIExpZmVjeWNsZSBIb29rc1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdWRDb21wb25lbnQgPSB0aGlzLmNvbmZpZz8uZGF0YT8uY3VkQ29tcG9uZW50O1xyXG4gICAgdGhpcy5jb25maWdEYXRhID0gdGhpcy5jb25maWdcclxuICAgIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbiA9IHRoaXMuY29uZmlnPy5kYXRhPy53b3JrZmxvd0luZm9ybWF0aW9uID8/IG5ldyB3b3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXNwb25zZSgpXHJcbiAgICBjb25zb2xlLmxvZyhcIndvcmtmbG93SW5mb3JtYXRpb24gPT4gXCIsIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbilcclxuICAgIGlmICh0aGlzLm1vZGUgIT0gTW9kZXMuY3JlYXRlICYmIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbj8ud29ya2Zsb3dFdGF0KSB7XHJcbiAgICAgIHRoaXMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEFzS2V5VmFsdWVQYWlyID0gQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEJ5V29ya2Zsb3dFdGF0KHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd0V0YXQpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbml0Rm9ybVNhdmVTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgICB0aGlzLl9pbml0aWFsaXplUmVxdWVzdFRyYWNrZXJTdGF0ZVN1YnNjcmlwdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEZvcm1TYXZlU3Vic2NyaXB0aW9uKCkge1xyXG4gICAgdGhpcy5zYXZlZERhdGFTdWJzY3JpcHRpb24gPSB0aGlzLl9mb3JtU3RhdGVTZXJ2aWNlXHJcbiAgICAgIC5kYXRhU2F2ZWRPYnNlcnZhYmxlLnN1YnNjcmliZShcclxuICAgICAgICBhc3luYyAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29sb25uZXNQZXJzb25uYWxpc2VlRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmNvbG9ubmVzUGVyc29ubmFsaXNlZURhdGFcclxuICAgICAgICAgICAgICAuZm9yRWFjaCh4ID0+IHgub2NjdXJlbmNlID0gZGF0YSlcclxuICAgICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fY29sb25uZVBlcnNvbm5hbGlzZWVTZXJ2aWNlLmFkZE9yVXBkYXRlRm9ybXVsYWlyZURhdGEodGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29sb25uZXNQZXJzb25uYWxpc2VlRGF0YSkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgfVxyXG5cclxuICBmb3JtVHlwZSA9IGZvcm1UeXBlO1xyXG4gIHByaXZhdGUgZ2V0Q29sb25uZVBlcnNvbm5hbGlzZWUoKSB7XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzICYmIHRoaXMubW9kZSA9PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fZ2V0Q29sb25uZVBlcnNvbm5hbGlzZSh0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgdGhpcy5tb2RlICE9IE1vZGVzLmNyZWF0ZSAmJiB0aGlzLmlkKSB7XHJcbiAgICAgIHRoaXMuX2dldENvbG9ubmVQZXJzb25uYWxpc2UodGhpcy5idXNpbmVzc0NsYXNzLCB0aGlzLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Q29sb25uZVBlcnNvbm5hbGlzZShidXNpbmVzc0NsYXNzOiBzdHJpbmcsIGlkPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jb2xvbm5lUGVyc29ubmFsaXNlZVNlcnZpY2UuZ2V0Q29sb25uZXNQZXJzb25uYWxpc2VlKGJ1c2luZXNzQ2xhc3MsIHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICByZXMuZm9yRWFjaChjcGcgPT4ge1xyXG4gICAgICAgICAgY3BnLmNvbG9ubmVzLmZvckVhY2goY3AgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNwLmRhdGEpIHtcclxuICAgICAgICAgICAgICBjcC5kYXRhID0gbmV3IENvbG9ubmVQZXJzb25uYWxpc2VlRGF0YShcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHRoaXMuaWQsIGNwLnVpZCxcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY29sb25uZXNQZXJzb25uYWxpc2VlR3JvdXBlZCA9IHJlcztcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcm9jZXNzRHluYW1pY1RhYnMoKVxyXG4gICAgICAgIH0sIDApO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIHdoZW4gZ2V0dGluZyBsaXN0IG9mIGNvbG9ubmUgcGVyc29ubmFsaXNlZVwiLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRGVzaWduTW9kZShldmVudDogYW55KSB7XHJcbiAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuZGF0YS5jdWRDb21wb25lbnQgPSB1bmRlZmluZWRcclxuICAgIC8vIHRoaXMuY29uZmlnRGF0YS5kYXRhLndvcmtmbG93SW5mb3JtYXRpb24gPSB1bmRlZmluZWRcclxuXHJcbiAgICAvLyB0aGlzLnJlZj8uY2xvc2UoKTtcclxuICAgIC8vIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuaXNEZXNpZ25Nb2RlID0gdHJ1ZVxyXG4gICAgLy8gdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5jdXJyZW50Rm9ybU5hbWUgPSB0aGlzLmdldENvbXBvbmVudElkZW50aWZpZXIoKVxyXG5cclxuICAgIC8vIHRoaXMucmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuY3VkQ29tcG9uZW50LCB0aGlzLmNvbmZpZ0RhdGEpO1xyXG4gICAgLy8gdGhpcy5yZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgLy8gICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSA9IGZhbHNlXHJcbiAgICAvLyAgIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuY3VycmVudEZvcm1OYW1lID0gdW5kZWZpbmVkXHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Byb2Nlc3NEeW5hbWljVGFicygpIHtcclxuICAgIHRoaXMuZHluYW1pY1Rvb2xiYXJDb250YWluZXJzLnRvQXJyYXkoKS5mb3JFYWNoKGNvbnRhaW5lciA9PiB7XHJcbiAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICBjb25zdCBjb21wUmVmOiBDb21wb25lbnRSZWY8VHNpTW9kYWxIZWFkZXJDb21wb25lbnQ+ID0gY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChUc2lNb2RhbEhlYWRlckNvbXBvbmVudCk7XHJcblxyXG4gICAgICBjb21wUmVmLmluc3RhbmNlLnRvb2xiYXJUZW1wbGF0ZUhlYWRlciA9IHRoaXMubW9kYWxIZWFkZXJDb21wIS50b29sYmFyVGVtcGxhdGVIZWFkZXI7XHJcbiAgICAgIGNvbXBSZWYuaW5zdGFuY2UuaW5wdXRUaXRsZSA9IHRoaXMubW9kYWxIZWFkZXJDb21wIS5pbnB1dFRpdGxlO1xyXG5cclxuICAgICAgY29tcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmR5bmFtaWNGb290ZXJzQ29udGFpbmVycy50b0FycmF5KCkuZm9yRWFjaChjb250YWluZXIgPT4ge1xyXG4gICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgY29uc3QgY29tcFJlZjogQ29tcG9uZW50UmVmPFRzaU1vZGFsRm9vdGVyQ29tcG9uZW50PiA9IGNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoVHNpTW9kYWxGb290ZXJDb21wb25lbnQpO1xyXG4gICAgICBjb21wUmVmLmluc3RhbmNlLmZvb3RlclRlbXBsYXRlUmVmID0gdGhpcy5tb2RhbEZvb3RlckNvbXA/LmZvb3RlclRlbXBsYXRlUmVmXHJcbiAgICAgIGNvbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRvb2xiYXJUZW1wbGF0ZVJlZiAmJiB0aGlzLm1vZGFsSGVhZGVyQ29tcCkge1xyXG4gICAgICB0aGlzLm1vZGFsSGVhZGVyQ29tcC50b29sYmFyVGVtcGxhdGVIZWFkZXIgPSB0aGlzLnRvb2xiYXJUZW1wbGF0ZVJlZjtcclxuICAgICAgdGhpcy5pbnB1dFRpdGxlID0gdGhpcy5tb2RhbEhlYWRlckNvbXAuaW5wdXRUaXRsZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxIZWFkZXJDb21wLnRvb2xiYXJUZW1wbGF0ZUhlYWRlciA9IHRoaXMudG9vbGJhclRlbXBsYXRlUmVmO1xyXG4gICAgICB0aGlzLmlucHV0VGl0bGUgPSB0aGlzLm1vZGFsSGVhZGVyQ29tcC5pbnB1dFRpdGxlO1xyXG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybVJlZkNoYW5nZS5lbWl0KHRoaXMuZm9ybVJlZik7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gaGFuZGxlIGV2ZW50c1xyXG4gIGhhbmRsZUZvcm1TdWJtaXQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5oYXNBY3RpdmVSZXF1ZXN0cykgcmV0dXJuO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy53b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmlzRGVzZ2luTW9kZUZyb21Xb3JrZmxvdykge1xyXG4gICAgICB0aGlzLm9uU3VibWl0Rm9ybVdvcmtmbG93Q29uZmlndXJhdGlvbi5lbWl0KGV2ZW50KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc3luY0R5bmFtaWNDb2x1bW5EYXRhVG9EeW5hbWljRm9ybVNlcnZpY2UoKVxyXG4gICAgICB0aGlzLm9uU3VibWl0LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc3luY0R5bmFtaWNDb2x1bW5EYXRhVG9EeW5hbWljRm9ybVNlcnZpY2UoKSB7XHJcbiAgICBjb25zdCBleGlzdGluZ1VpZHMgPSBuZXcgU2V0KFxyXG4gICAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb2xvbm5lc1BlcnNvbm5hbGlzZWVEYXRhLm1hcCh4ID0+IHguY29sb25uZVBlcnNvbm5hbGlzZWVVaWQpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY29sb25uZXNQZXJzb25uYWxpc2VlR3JvdXBlZC5mb3JFYWNoKGNwZyA9PiB7XHJcbiAgICAgIGNwZy5jb2xvbm5lcy5mb3JFYWNoKGNwID0+IHtcclxuICAgICAgICBpZiAoIWV4aXN0aW5nVWlkcy5oYXMoY3AudWlkKSkge1xyXG4gICAgICAgICAgaWYgKCFjcC5kYXRhKSB7XHJcbiAgICAgICAgICAgIGNwLmRhdGEgPSBuZXcgQ29sb25uZVBlcnNvbm5hbGlzZWVEYXRhKFxyXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB0aGlzLmlkLCBjcC51aWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IENvbG9ubmVQZXJzb25uYWxpc2VlRGF0YShcclxuICAgICAgICAgICAgY3A/LmRhdGE/LnVpZCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGNwPy5kYXRhPy5vY2N1cmVuY2UgPz8gdGhpcy5pZCxcclxuICAgICAgICAgICAgY3AudWlkLFxyXG4gICAgICAgICAgICBjcC5kYXRhLnZhbGV1ckJvb2xlYW4sXHJcbiAgICAgICAgICAgIGNwLmRhdGEudmFsZXVySW50LFxyXG4gICAgICAgICAgICBjcC5kYXRhLnZhbGV1ckRlY2ltYWwsXHJcbiAgICAgICAgICAgIGNwLmRhdGEudmFsZXVyU3RyaW5nLFxyXG4gICAgICAgICAgICBjcC5kYXRhLnZhbGV1ckJpbmFyeSxcclxuICAgICAgICAgICAgY3Aub2JzZXJ2YXRpb25cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29sb25uZXNQZXJzb25uYWxpc2VlRGF0YS5wdXNoKG5ld0RhdGEpO1xyXG5cclxuICAgICAgICAgIGV4aXN0aW5nVWlkcy5hZGQoY3AudWlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb2xvbm5lc1BlcnNvbm5hbGlzZWVEYXRhID0+IFwiLFxyXG4gICAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb2xvbm5lc1BlcnNvbm5hbGlzZWVEYXRhXHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiB3b3JrZmxvd1xyXG5cclxuXHJcbiAgY29uZmlybVVwZGF0ZVdvcmtmbG93RXRhdChldmVudDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudClcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLl90c2lDb25maXJtU2VydmljZS5jb25maXJtKFwiYWRtaW5pc3RyYXRpb25fY29uZmlybV9zdGF0dXNfY2hhbmdlXCIsIFwiYWRtaW5pc3RyYXRpb25fY29uZmlybWF0aW9uX3RpdGxlXCIsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWVcclxuICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgdXBkYXRlRW50aXR5V29ya2Zsb3dJbmZvcm1hdGlvbigpXHJcbiAgICAgICAgICAgIHJlcXVlc3QuY2xhc3NOYW1lID0gdGhpcy5fYnVzaW5lc3NDbGFzcztcclxuICAgICAgICAgICAgcmVxdWVzdC51aWRPYmplY3QgPSB0aGlzLl9pZFxyXG4gICAgICAgICAgICByZXF1ZXN0Lm5ld1dvcmtmbG93U3RhdHVzID0gZXZlbnQ7XHJcbiAgICAgICAgICAgIHJlcXVlc3Qud29ya2Zsb3cgPSB0aGlzLndvcmtmbG93SW5mb3JtYXRpb24/LndvcmtmbG93VWlkO1xyXG4gICAgICAgICAgICByZXF1ZXN0LndvcmtmbG93RXRhdCA9IHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd0V0YXRcclxuICAgICAgICAgICAgcmVxdWVzdC53b3JrZmxvd0luc3RhbmNlVWlkID0gdGhpcy53b3JrZmxvd0luZm9ybWF0aW9uPy53b3JrZmxvd0luc3RhbmNlVWlkXHJcbiAgICAgICAgICAgIHJlcXVlc3Qud29ya2Zsb3dFdGF0ID0gdGhpcy53b3JrZmxvd0luZm9ybWF0aW9uPy53b3JrZmxvd0V0YXRcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocmVxdWVzdClcclxuICAgICAgICAgICAgdGhpcy53b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLnVwZGF0ZUVudGl0eVdvcmtmbG93SW5mb3JtYXRpb24ocmVxdWVzdCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpXHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnN0YXR1cyAhPSBudWxsICYmIGRhdGEuc3RhdHVzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gZGF0YS5zdGF0dXNcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dFdGF0VWlkID0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl90c2lOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yPy5lcnJvcilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd0V0YXRVaWQgPSBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBzdGF0dXNNZXRhZGF0YUNvbWJvU3RhdHVzPzogU3RhdHVzTWV0YWRhdGFSZXNwb25zZTtcclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGF0dXNNZXRhRm9yQ29tYm8oKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zdGF0dXNDb2xvclNlcnZpY2UuZ2V0U3RhdHVzQ29sb3JEZXRhaWxzQnlCdXNpbmVzc0NsYXNzTmFtZSh0aGlzLmJ1c2luZXNzQ2xhc3MhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogU3RhdHVzTWV0YWRhdGFSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzTWV0YWRhdGFDb21ib1N0YXR1cyA9IGRhdGE7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBFbnRpdHkgc3RhdHVzXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdHlTdGF0dXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudGl0eVN0YXR1c1NlcnZpY2UuZ2V0RW50aXR5U3RhdHVzKHRoaXMuYnVzaW5lc3NDbGFzcykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGRhdGE6IEVudGl0eVByb3BlcnRpZXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXR1c0NvbHVtbk5hbWUgPSBkYXRhLnN0YXR1c0NvbHVtbk5hbWUgPz8gXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKGRhdGEuZW50aXR5U3RhdHVzICYmIEFycmF5LmlzQXJyYXkoZGF0YS5lbnRpdHlTdGF0dXMpKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eVN0YXR1c0xpc3QgPSBkYXRhLmVudGl0eVN0YXR1cztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IE1vZGVzLmNyZWF0ZSkge1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBkYXRhLmRlZmF1bHRTdGF0dXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuc2V0TWVzc2FnZVBvc2l0aW9uKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzO1xyXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xyXG4gICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgICAgIHRoaXMuaXNEcmFnT3ZlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZSwgZmlsZUV4dGVuc2lvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwbG9hZEZpbGUoZmlsZTogRmlsZSwgZmlsZUV4dGVuc2lvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgcmVhZGVyLm9ubG9hZCA9IChlOiBQcm9ncmVzc0V2ZW50PEZpbGVSZWFkZXI+KSA9PiB7XHJcbiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgYmFzZTY0Q29udGVudCA9IHRoaXMuYXJyYXlCdWZmZXJUb0Jhc2U2NChhcnJheUJ1ZmZlcik7XHJcblxyXG4gICAgICBjb25zdCBmaWNoaWVyVG9TZW5kID0gbmV3IEZpY2hpZXIoKTtcclxuICAgICAgZmljaGllclRvU2VuZC5kYXRlRmljaGllciA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQubm9tID0gZmlsZS5uYW1lO1xyXG4gICAgICBmaWNoaWVyVG9TZW5kLm9iamV0ID0gJyc7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQubm9tRmljaGllckNvbXBsZXQgPSBmaWxlLm5hbWU7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQuZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgZmljaGllclRvU2VuZC5jb250ZW51ID0gYmFzZTY0Q29udGVudDtcclxuICAgICAgZmljaGllclRvU2VuZC50YWJsZUxpZWUgPSB0aGlzLmJ1c2luZXNzQ2xhc3M7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQucGtleSA9IHRoaXMuaWQ/LnRvU3RyaW5nKCk7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQuZXh0ZW5zaW9uID0gZmlsZUV4dGVuc2lvblxyXG5cclxuICAgICAgdGhpcy5fZmljaGllclNlcnZpY2UuY3JlYXRlKGZpY2hpZXJUb1NlbmQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXROb21icmVGaWNoaWVyKCk7XHJcbiAgICAgICAgICB0aGlzLl90c2lOb3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXCJmaWNoaWVyX2pvaW50XCIpO1xyXG4gICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBhcnJheUJ1ZmZlclRvQmFzZTY0KGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGJpbmFyeSA9ICcnO1xyXG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xyXG4gICAgY29uc3QgbGVuID0gYnl0ZXMuYnl0ZUxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ0b2EoYmluYXJ5KTtcclxuICB9XHJcblxyXG4gIGhpZGUodmFsPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5yZWYgIT0gbnVsbCAmJiB0aGlzLnJlZiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHZhbCA9PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMucmVmPy5kZXN0cm95KCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZWY/LmNsb3NlKHZhbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMubG9jYWxpemUgIT0gbnVsbFxyXG4gICAgICAmJiB0aGlzLmxvY2FsaXplICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXk7XHJcbiAgfVxyXG5cclxuICBnZXROb21icmVGaWNoaWVyKCkge1xyXG4gICAgaWYgKHRoaXMuaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9maWNoaWVyU2VydmljZVxyXG4gICAgICAgIC5HZXROb21icmVGaWNoaWVySm9pbnRCeUlkKHRoaXMuaWQgPz8gXCJcIilcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm9tYnJlRG9jdW1lbnRzID0gZGF0YTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB0byBnZXQgbnVtYmVyIG9mIGZpbGVzIG9uIHRoaXMgcmVjb3JkXCIsIHJlc3BvbnNlKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRHJhZ0VudGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmRyYWdFbnRlckNvdW50Kys7XHJcblxyXG4gICAgdGhpcy5pc0RyYWdPdmVyID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0TWVzc2FnZVBvc2l0aW9uKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0RyYWdPdmVyKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVBvc2l0aW9uID0ge1xyXG4gICAgICAgIHg6IGV2ZW50LmNsaWVudFggKyA1LFxyXG4gICAgICAgIHk6IGV2ZW50LmNsaWVudFkgKyA1XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5kcmFnRW50ZXJDb3VudC0tO1xyXG5cclxuICAgIGlmICh0aGlzLmRyYWdFbnRlckNvdW50IDw9IDApIHtcclxuICAgICAgdGhpcy5pc0RyYWdPdmVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZHJhZ0VudGVyQ291bnQgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNZXNzYWdlUG9zaXRpb24oZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXNzYWdlUG9zaXRpb24gPSB7XHJcbiAgICAgIHg6IGV2ZW50LmNsaWVudFggKyA1LFxyXG4gICAgICB5OiBldmVudC5jbGllbnRZICsgNSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNoZWNrRW50aXR5SW5mbygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5idXNpbmVzc0NsYXNzKSByZXR1cm47XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGVudGl0eUluZm8gPSBhd2FpdCB0aGlzLmVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEVudGl0eUluZm9Gcm9tQ2FjaGUodGhpcy5idXNpbmVzc0NsYXNzKTtcclxuXHJcbiAgICAgIGlmICghZW50aXR5SW5mbyB8fCAoIWVudGl0eUluZm8uZGlzY3JpbWluYXRvckNsYXNzTmFtZSAmJiAhZW50aXR5SW5mby5kaXNjcmltaW5hdG9yUHJvcGVydHlOYW1lKSkge1xyXG4gICAgICAgIHRoaXMuaWdub3JlRGVzY3JpbWluYXRvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVGb3Jtc0luZm9zKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWxsRm9ybXNPZkJ1c2luZXNzQ2xhc3MoKSB7XHJcbiAgICBpZiAoIXRoaXMuYnVzaW5lc3NDbGFzcykgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZm9ybXVsYWlyZVNlcnZpY2UuZ2V0QWxsRm9ybXNPZkJ1c2luZXNzQ2xhc3ModGhpcy5idXNpbmVzc0NsYXNzLCB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXZhbHVlIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggPCAxKSByZXR1cm47XHJcbiAgICAgICAgICB0aGlzLmZvcm1zT2ZCdXNpbmVzc0NsYXNzID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmRvZXNIYXZlRm9ybXMgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWNhbGN1bGF0ZUZvcm1zVmlzaWJpbGl0eSgpIHsgdGhpcy5jYW5TaG93Rm9ybXMgPSB0aGlzLmRvZXNIYXZlRm9ybXMgJiYgIWlzTnVsbE9yRW1wdHkodGhpcy5tb2RlKSAmJiB0aGlzLm1vZGUgIT0gTW9kZXMuY3JlYXRlOyB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlRm9ybXNJbmZvcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzRm9ybXNJbmZvc0NhbGN1bGF0ZWQpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5pc0J1c2luZXNzQ2xhc3NTZXQgfHwgIXRoaXMuaWdub3JlRGVzY3JpbWluYXRvciAmJiAhdGhpcy5pc0Rlc2NyaW1pbmF0b3JWYWx1ZVNldCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZ2V0QWxsRm9ybXNPZkJ1c2luZXNzQ2xhc3MoKTtcclxuICAgIHRoaXMuaXNGb3Jtc0luZm9zQ2FsY3VsYXRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0aWFsaXplUmVxdWVzdFRyYWNrZXJTdGF0ZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdFRyYWNrZXJTdGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucmVxdWVzdFRyYWNrZXJTZXJ2aWNlLnJlcXVlc3RTdGF0ZSQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmhhc0FjdGl2ZVJlcXVlc3RzID0gdmFsdWUuaGFzQWN0aXZlUmVxdWVzdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTW9kZUluVHNpTW9kYWxGb290ZXIoKXtcclxuICAgIGlmKHRoaXMubW9kYWxGb290ZXJDb21wKXtcclxuICAgICAgdGhpcy5tb2RhbEZvb3RlckNvbXAubW9kZSA9IHRoaXMubW9kZVxyXG4gICAgfVxyXG4gIH1cclxufSIsIjxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKG5nU3VibWl0KT1cImhhbmRsZUZvcm1TdWJtaXQoJGV2ZW50KVwiICNmb3JtUmVmPVwibmdGb3JtXCI+XHJcbiAgPG5nLXRlbXBsYXRlICN0b29sYmFyVGVtcGxhdGU+XHJcbiAgICA8cC10b29sYmFyICpuZ0lmPVwiZm9ybUVuZHBvaW50XCIgc3R5bGVDbGFzcz1cIm1iLTEgZ2FwLTJcIiBjbGFzcz1cInctZnVsbFwiIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiIChkcmFnZW50ZXIpPVwib25EcmFnRW50ZXIoJGV2ZW50KVwiIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMSBtbC0yXCI+XHJcbiAgICAgICAgICB7eyBpbnB1dFRpdGxlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMSBtci0yXCI+XHJcbiAgICAgICAgICA8YXBwLXJlcG9ydGluZyAqbmdJZj1cImZvcm1FbmRwb2ludFwiIFtmcm9tVHNpRm9ybV09XCJ0cnVlXCIgW2lkXT1cInRoaXMuaWRcIiBbZm9ybUVuZHBvaW50XT1cImZvcm1FbmRwb2ludFwiXHJcbiAgICAgICAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiIFtyZXBvcnREaXNjcmltaW5hdG9yXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiIFtpc0Zvcm1FbmRwb2ludFBhZ2VkXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbbm9tYnJlRG9jdW1lbnRzSm9pbnRzXT1cIm5vbWJyZURvY3VtZW50c1wiIFtjb25maWdNb2RlQnV0dG9uSWRdPVwiY29uZmlnTW9kZUJ1dHRvbklkXCJcclxuICAgICAgICAgICAgW2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCIgKHRvZ2dsZURlc2lnbk1vZGUpPVwidG9nZ2xlRGVzaWduTW9kZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiIChjbG9zZWRNb2RhbEZpbGVVcGxvYWQpPVwiZ2V0Tm9tYnJlRmljaGllcigpXCJcclxuICAgICAgICAgICAgW3Nob3dJbXBvcnRFeHBvcnRCdXR0b25dPVwiZmFsc2VcIiAjcmVwb3J0aW5nQXBwPlxyXG4gICAgICAgICAgPC9hcHAtcmVwb3J0aW5nPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzRHJhZ092ZXJcIiBbbmdTdHlsZV09XCJ7IGxlZnQ6IG1lc3NhZ2VQb3NpdGlvbi54ICsgJ3B4JywgdG9wOiBtZXNzYWdlUG9zaXRpb24ueSArICdweCcgfVwiXHJcbiAgICAgICAgY2xhc3M9XCJkcmFnLW1lc3NhZ2UgY3Vyc29yLWZvbGxvd1wiPlxyXG4gICAgICAgIHt7IFwiSm9pbnR1cmVcIiB8IGxvY2FsaXplIH19XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvcC10b29sYmFyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxkaXYgKmJ1c3k9XCJpc0xvYWRpbmcgfHwgaGFzQWN0aXZlUmVxdWVzdHNcIj48L2Rpdj5cclxuXHJcbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgbXJcIj5cclxuICAgICAgPHAtdGFiVmlldz5cclxuXHJcbiAgICAgICAgPHAtdGFiUGFuZWwgaGVhZGVyPVwiXCIgXHJcbiAgICAgICAgW2hlYWRlclN0eWxlXT1cImNvbG9ubmVzUGVyc29ubmFsaXNlZUdyb3VwZWQubGVuZ3RoID09PSAwICYmICFjYW5TaG93Rm9ybXNcclxuICAgICAgPyB7IGRpc3BsYXk6ICdub25lJyB9IFxyXG4gICAgICA6IG51bGxcIj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1ob21lIG1yLTJcIj48L2k+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdGFiLXRleHRcIj57eyAnc2hhcmVkX2Zvcm1fbWFpbnRhYlRpdGxlJyB8IGxvY2FsaXplIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgICAgICAgPCEtLSBEeW5hbWljIHRhYnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbG9ubmVzUGVyc29ubmFsaXNlZUdyb3VwZWQubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPHAtdGFiUGFuZWwgKm5nRm9yPVwibGV0IGdycCBvZiBjb2xvbm5lc1BlcnNvbm5hbGlzZWVHcm91cGVkXCIgW2hlYWRlcl09XCJncnAuZ3JvdXBlXCI+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2R5bmFtaWNUb29sYmFyQ29udGFpbmVyPjwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ3JpZCBmb3JtLXJvd1wiICpuZ0Zvcj1cImxldCBjb2wgb2YgZ3JwLmNvbG9ubmVzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cImNvbC5ub21cIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gU3RyaW5nIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5zdHJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFsoaW5wdXRGaWVsZCldPVwiY29sLmRhdGEudmFsZXVyU3RyaW5nXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBJbnQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggZm9ybS1pbnB1dFwiICpuZ0lmPVwiY29sLnR5cGUgPT09IGZvcm1UeXBlLmludFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlciBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1ckludFwiPjwvVHNpLUludGVnZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBEZWNpbWFsIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5kZWNpbWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLUlucHV0IFsoaW5wdXRGaWVsZCldPVwiY29sLmRhdGEudmFsZXVyRGVjaW1hbFwiPjwvVHNpLURlY2ltYWwtSW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBCb29sZWFuIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5ib29sZWFuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DaGVja0JveCBbaXNCaW5hcnldPVwiZmFsc2VcIiBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1ckJvb2xlYW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIEJpbmFyeSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuYmluYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgIGJpbmFyeSBpbnB1dCAobm90IGhhbmRsZWQgeWV0KVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHluYW1pY0Zvb3RlckNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuU2hvd0Zvcm1zXCI+XHJcbiAgICAgICAgICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZm9ybV9keW5hbWljRm9ybXNUYWJfVGl0bGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICA8c2hhcmVkLWR5bmFtaWMtZm9ybS1saXN0XHJcbiAgICAgICAgICAgICAgW29jY3VyZW5jZV09XCJpZFwiXHJcbiAgICAgICAgICAgICAgW29jY3VyZW5jZUJ1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgW29jY3VyZW5jZURpc2NyaW1pbmF0b3JWYWx1ZV09XCJkZXNjcmltaW5hdG9yVmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtpZ25vcmVEaWFsb2dDb25maWddPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L3AtdGFiVmlldz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZmllbGRzZXQ+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIoYnVzaW5lc3NDbGFzcyAmJiBlbnRpdHlTdGF0dXNMaXN0Lmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgd29ya2Zsb3dJbmZvcm1hdGlvbj8ud29ya2Zsb3dVaWQgfHxcclxuICAgICAgICB3b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmlzRGVzZ2luTW9kZUZyb21Xb3JrZmxvd1wiIGNsYXNzPVwibXgtNCBweC0yIG15LTEgc2hhcmVkLWZvb3Rlci1iYXJcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiYnVzaW5lc3NDbGFzcyAmJiBlbnRpdHlTdGF0dXNMaXN0ICYmIGVudGl0eVN0YXR1c0xpc3QubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIiBwcmVzZW50YXRpb25EZXNpZ25lcj1cInNoYXJlZF9jcnVkX3N0YXR1c1wiPlxyXG4gICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9jcnVkX3N0YXR1cydcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbaWQtZmllbGRdPVwiJ2tleSdcIiBbbGFiZWwtZmllbGRdPVwiJ3ZhbHVlJ1wiIFtkYXRhc291cmNlXT1cImVudGl0eVN0YXR1c0xpc3RcIiBbKGJpbmQpXT1cInN0YXR1c1wiXHJcbiAgICAgICAgICBbY29tYm9UeXBlXT1cIidzdGF0dXMnXCIgW3N0YXR1c01ldGFkYXRhXT1cInN0YXR1c01ldGFkYXRhQ29tYm9TdGF0dXNcIiBbaW5wdXROYW1lXT1cInN0YXR1c0NvbHVtbk5hbWVcIlxyXG4gICAgICAgICAgW3Nob3dBZGRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiZmFsc2VcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwid29ya2Zsb3dJbmZvcm1hdGlvbj8ud29ya2Zsb3dVaWQgfHwgd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5pc0Rlc2dpbk1vZGVGcm9tV29ya2Zsb3dcIlxyXG4gICAgICBjbGFzcz1cImZsZXggY29sLTEwXCI+XHJcbiAgICAgIDxkaXYgcHJlc2VudGF0aW9uRGVzaWduZXI9XCJzaGFyZWRfd29ya2Zsb3dOYW1lXCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBjb2wtNFwiPlxyXG4gICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX3dvcmtmbG93X3dvcmtmbG93J3wgbG9jYWxpemVcIj5cclxuICAgICAgICA8L1RzaS1MYWJlbD5cclxuICAgICAgICA8VHNpLVRleHQtQm94IFtkaXNhYmxlZF09XCJ0cnVlXCIgW2lucHV0TmFtZV09XCInd29ya2Zsb3dOYW1lJ1wiIFsoaW5wdXRGaWVsZCldPVwid29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd05hbWVcIj5cclxuICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgcHJlc2VudGF0aW9uRGVzaWduZXI9XCJhZG1pbmlzdHJhdGlvbl93b3JrZmxvd193b3JrZmxvd19jdXJyZW50X3N0YXR1c1wiXHJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBjb2wtNFwiPlxyXG4gICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX3dvcmtmbG93X3dvcmtmbG93X2N1cnJlbnRfc3RhdHVzJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIGNsYXNzPVwidy03XCIgW2Rpc2FibGVkXT1cInRydWVcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgW2JpbmRdPVwid29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd0V0YXRcIiBbaXNGaWx0ZXJlZF09XCJ0cnVlXCIgW2lucHV0TmFtZV09XCInV29ya2Zsb3dFdGF0J1wiXHJcbiAgICAgICAgICBbZWxlbWVudFNvdXJjZVVybF09XCJnZXRXb3JrZmxvd0V0YXRBc0tleVZhbHVlUGFpclwiIFtsaXN0U291cmNlVXJsXT1cImdldFdvcmtmbG93RXRhdFN1aXZhbnRBc0tleVZhbHVlUGFpclwiXHJcbiAgICAgICAgICBbc2hvd0FkZEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd1NlYXJjaEJ1dHRvbl09XCJmYWxzZVwiPlxyXG4gICAgICAgIDwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlICE9IGZvcm1Nb2Rlcy5jcmVhdGUgfHwgd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5pc0Rlc2dpbk1vZGVGcm9tV29ya2Zsb3dcIlxyXG4gICAgICAgICAgcHJlc2VudGF0aW9uRGVzaWduZXI9XCJhZG1pbmlzdHJhdGlvbl93b3JrZmxvd193b3JrZmxvd19uZXh0X3N0YXR1c1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIG5vLWJvcmRlclwiPlxyXG4gICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fd29ya2Zsb3dfd29ya2Zsb3dfbmV4dF9zdGF0dXMnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cInctN1wiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiIFsoYmluZCldPVwic2VsZWN0ZWRXb3JrZmxvd0V0YXRVaWRcIlxyXG4gICAgICAgICAgICBbaXNGaWx0ZXJlZF09XCJ0cnVlXCIgW2VsZW1lbnRTb3VyY2VVcmxdPVwiZ2V0V29ya2Zsb3dFdGF0QXNLZXlWYWx1ZVBhaXJcIiBbaW5wdXROYW1lXT1cIidXb3JrZmxvd0V0YXQnXCJcclxuICAgICAgICAgICAgW2xpc3RTb3VyY2VVcmxdPVwiZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEFzS2V5VmFsdWVQYWlyXCIgKGJpbmRDaGFuZ2UpPVwiY29uZmlybVVwZGF0ZVdvcmtmbG93RXRhdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3Nob3dBZGRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd1NlYXJjaEJ1dHRvbl09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+Il19
|
|
641
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1mb3JtL3RzaS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZm9ybS90c2ktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGNBQWMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUE0QixPQUFPLEVBQW1DLCtCQUErQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hLLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUMsTUFBTSxpREFBaUQsQ0FBQztBQUVoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFVdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixF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c0JBRDdCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFLSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGlDQUFpQztzQkFBMUMsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR3VCLGtCQUFrQjtzQkFBL0MsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ1csZUFBZTtzQkFBckQsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBRUUsZUFBZTtzQkFBckQsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBR3JDLHdCQUF3QjtzQkFEdkIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFJbkUsd0JBQXdCO3NCQUR2QixZQUFZO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZm9ybVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdHMvZm9ybS10eXBlJztcclxuaW1wb3J0IHsgQWRtaW5pc3RyYXRpb25FbmRwb2ludHMgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzL2VuZHBvaW50cyc7XHJcbmltcG9ydCB7IE1vZGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBJTW9kYWxTaXplIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEVudGl0eVByb3BlcnRpZXNSZXNwb25zZSwgRmljaGllciwgS2V5VmFsdWVQYWlyLCBPcHRpb25hbEVuZHBvaW50cywgdXBkYXRlRW50aXR5V29ya2Zsb3dJbmZvcm1hdGlvbiwgd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb2xvbm5lUGVyc29ubmFsaXNlZURhdGEsIENvbG9ubmVQZXJzb25uYWxpc2VlR3JvdXBlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R5bmFtaWMtZm9ybS9jb2xvbm5lLXBlcnNvbm5hbGlzZWUnO1xyXG5pbXBvcnQgeyBTdGF0dXNNZXRhZGF0YVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0YXR1cy9jb2xvci1zdGF0dXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgQ29sb25uZVBlcnNvbm5hbGlzZWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtL2NvbG9ubmUtcGVyc29ubmFsaXNlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmljaGllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWNoaWVyL2ZpY2hpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dEhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQvbGF5b3V0LWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLWNvbmZpcm1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRpdHlTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdHVzL2VudGl0eVN0YXR1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RhdHVzQ29sb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdHVzL3N0YXR1cy1jb2xvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dvcmtmbG93L3dvcmtmbG93LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFJlcG9ydGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL3JlcG9ydGluZy9yZXBvcnRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktbW9kYWwtZm9vdGVyL3RzaS1tb2RhbC1mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktbW9kYWwtaGVhZGVyL3RzaS1tb2RhbC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXVsYWlyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0vZm9ybXVsYWlyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNOdWxsT3JFbXB0eSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlndXJhdGlvbi9lbnRpdHktY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdFRyYWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVxdWVzdC1tYW5hZ2VtZW50L3JlcXVlc3QtdHJhY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHNpLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gIHB1YmxpYyBsb2NhbGl6ZT8gPSBpbmplY3QoTG9jYWxpemVQaXBlKVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBmaWVsZHNcclxuICBwcml2YXRlIF9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gcHJvcGVydGllc1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmPzogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoXCJyZXBvcnRpbmdBcHBcIikgcmVwb3J0aW5nQXBwPzogUmVwb3J0aW5nQ29tcG9uZW50XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBpbnB1dHNcclxuICBASW5wdXQoKSBjbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9ICdvZmYnO1xyXG4gIC8vIEBJbnB1dCgpIGZvcm1OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gQElucHV0KCkgZm9ybUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIG9wdGlvbmFsRW5kcG9pbnRzPzogT3B0aW9uYWxFbmRwb2ludHM7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb2RhbFNpemU/OiBJTW9kYWxTaXplO1xyXG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzY3JpbWluYXRvclZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgZ2V0IGRlc2NyaW1pbmF0b3JWYWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZGVzY3JpbWluYXRvclZhbHVlOyB9XHJcbiAgc2V0IGRlc2NyaW1pbmF0b3JWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9kZXNjcmltaW5hdG9yVmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuaXNEZXNjcmltaW5hdG9yVmFsdWVTZXQgPSB0cnVlO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGb3Jtc0luZm9zKCk7XHJcbiAgfVxyXG5cclxuICBlbnRpdHlTdGF0dXNMaXN0OiBLZXlWYWx1ZVBhaXI8c3RyaW5nLCBzdHJpbmc+W10gPSBbXTtcclxuICBzdGF0dXNDb2x1bW5OYW1lOiBzdHJpbmcgPSAnJ1xyXG5cclxuICBub21icmVEb2N1bWVudHM6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICBpc0RyYWdPdmVyID0gZmFsc2U7XHJcbiAgbWVzc2FnZVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcbiAgcHJpdmF0ZSBkcmFnRW50ZXJDb3VudCA9IDA7XHJcbiAgcHJpdmF0ZSBfZm9ybU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZm9ybUVuZHBvaW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybUVuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgc2V0IGZvcm1FbmRwb2ludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9mb3JtRW5kcG9pbnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBmb3JtTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1OYW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0IGZvcm1OYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2Zvcm1OYW1lID0gdmFsdWU7XHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYnVzaW5lc3NDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfbW9kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2Zvcm1FbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX3N0YXR1czogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBHZXR0ZXIgZm9yIGJ1c2luZXNzQ2xhc3NcclxuICBnZXQgYnVzaW5lc3NDbGFzcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1c2luZXNzQ2xhc3M7XHJcbiAgfVxyXG5cclxuICAvLyBTZXR0ZXIgZm9yIGJ1c2luZXNzQ2xhc3NcclxuICBzZXQgYnVzaW5lc3NDbGFzcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9idXNpbmVzc0NsYXNzID0gdmFsdWU7XHJcbiAgICB0aGlzLmlzQnVzaW5lc3NDbGFzc1NldCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5nZXRDb2xvbm5lUGVyc29ubmFsaXNlZSgpO1xyXG4gICAgdGhpcy5nZXRFbnRpdHlTdGF0dXMoKTtcclxuICAgIHRoaXMuZ2V0U3RhdHVzTWV0YUZvckNvbWJvKCk7XHJcbiAgICB0aGlzLmNoZWNrRW50aXR5SW5mbygpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGb3Jtc0luZm9zKCk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXR0ZXIgZm9yIGlkXHJcbiAgZ2V0IGlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG5cclxuICAvLyBTZXR0ZXIgZm9yIGlkXHJcbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2lkID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldENvbG9ubmVQZXJzb25uYWxpc2VlKCk7XHJcbiAgICB0aGlzLmdldE5vbWJyZUZpY2hpZXIoKTtcclxuICB9XHJcblxyXG4gIC8vIEdldHRlciBmb3Igc3RhdHVzXHJcbiAgZ2V0IHN0YXR1cygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcclxuICB9XHJcblxyXG4gIC8vIFNldHRlciBmb3Igc3RhdHVzXHJcbiAgc2V0IHN0YXR1cyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9zdGF0dXMgPSB2YWx1ZTtcclxuICAgIHRoaXMub25TdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLl9zdGF0dXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0IG1vZGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fbW9kZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5nZXRDb2xvbm5lUGVyc29ubmFsaXNlZSgpO1xyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUZvcm1zVmlzaWJpbGl0eSgpO1xyXG4gICAgdGhpcy51cGRhdGVNb2RlSW5Uc2lNb2RhbEZvb3RlcigpXHJcbiAgfVxyXG5cclxuICBnZXQgbW9kZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHNldCBpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGlzQ3JlYXRlT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG91dHB1dHNcclxuICBAT3V0cHV0KCkgb25TdWJtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uU3VibWl0Rm9ybVdvcmtmbG93Q29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZm9ybVJlZkNoYW5nZTogRXZlbnRFbWl0dGVyPE5nRm9ybT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5nRm9ybT4oKTtcclxuICBAT3V0cHV0KCkgb25TdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJUZW1wbGF0ZScpIHRvb2xiYXJUZW1wbGF0ZVJlZiAhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBDb250ZW50Q2hpbGQoVHNpTW9kYWxIZWFkZXJDb21wb25lbnQpIG1vZGFsSGVhZGVyQ29tcD86IFRzaU1vZGFsSGVhZGVyQ29tcG9uZW50O1xyXG5cclxuICBAQ29udGVudENoaWxkKFRzaU1vZGFsRm9vdGVyQ29tcG9uZW50KSBtb2RhbEZvb3RlckNvbXA/OiBUc2lNb2RhbEZvb3RlckNvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignZHluYW1pY1Rvb2xiYXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBkeW5hbWljVG9vbGJhckNvbnRhaW5lcnMhOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2R5bmFtaWNGb290ZXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBkeW5hbWljRm9vdGVyc0NvbnRhaW5lcnMhOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHByaXZhdGUgX2lucHV0VGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZ2V0IGlucHV0VGl0bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGFsSGVhZGVyQ29tcD8uaW5wdXRUaXRsZVxyXG4gIH1cclxuXHJcbiAgc2V0IGlucHV0VGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5faW5wdXRUaXRsZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29sb25uZXNQZXJzb25uYWxpc2VlR3JvdXBlZDogQ29sb25uZVBlcnNvbm5hbGlzZWVHcm91cGVkUmVzcG9uc2VbXSA9IFtdO1xyXG4gIGNhblNob3dGb3JtczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1zT2ZCdXNpbmVzc0NsYXNzOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgX2RvZXNIYXZlRm9ybXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnZXQgZG9lc0hhdmVGb3JtcygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2RvZXNIYXZlRm9ybXM7IH1cclxuICBzZXQgZG9lc0hhdmVGb3Jtcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZG9lc0hhdmVGb3JtcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUZvcm1zVmlzaWJpbGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgaXNEZXNjcmltaW5hdG9yVmFsdWVTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0J1c2luZXNzQ2xhc3NTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Zvcm1zSW5mb3NDYWxjdWxhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaWdub3JlRGVzY3JpbWluYXRvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhc0FjdGl2ZVJlcXVlc3RzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZXF1ZXN0VHJhY2tlclN0YXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBkeW5hbWljRm9ybVNlcnZpY2UgPSBpbmplY3QoRHluYW1pY0Zvcm1TZXJ2aWNlKTtcclxuICBmb3JtdWxhaXJlU2VydmljZSA6IEZvcm11bGFpcmVTZXJ2aWNlID0gaW5qZWN0KEZvcm11bGFpcmVTZXJ2aWNlKTtcclxuICBlbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSA6IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0KEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcclxuICByZXF1ZXN0VHJhY2tlclNlcnZpY2UgOiBSZXF1ZXN0VHJhY2tlclNlcnZpY2UgPSBpbmplY3QoUmVxdWVzdFRyYWNrZXJTZXJ2aWNlKTtcclxuXHJcbiAgLy8jcmVnaW9uIGN0b3JcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZW50aXR5U3RhdHVzU2VydmljZTogRW50aXR5U3RhdHVzU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RhdHVzQ29sb3JTZXJ2aWNlOiBTdGF0dXNDb2xvclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgX2ZpY2hpZXJTZXJ2aWNlOiBGaWNoaWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHNpQ29uZmlybVNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90c2lOb3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2xheW91dEhlbHBlclNlcnZpY2U6IExheW91dEhlbHBlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZTogV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHB1YmxpYyBfY29sb25uZVBlcnNvbm5hbGlzZWVTZXJ2aWNlOiBDb2xvbm5lUGVyc29ubmFsaXNlZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mb3JtU3RhdGVTZXJ2aWNlIDogRm9ybVN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyByZWY/OiBEeW5hbWljRGlhbG9nUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZz86IER5bmFtaWNEaWFsb2dDb25maWcsXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5yZXBvcnRpbmdBcHApIHtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSAmJiB0aGlzLnJlcG9ydGluZ0FwcC5zaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b24pIHtcclxuICAgICAgICB0aGlzLnJlcG9ydGluZ0FwcC5zaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b24gPSBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNhdmVkRGF0YVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnNhdmVkRGF0YVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5yZXF1ZXN0VHJhY2tlclN0YXRlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVxdWVzdFRyYWNrZXJTdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIHZhcmlhYmxlc1xyXG4gIHByaXZhdGUgX3dvcmtmbG93SW5mb3JtYXRpb246IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlID0gbmV3IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlKCk7XHJcbiAgc2V0IHdvcmtmbG93SW5mb3JtYXRpb24odmFsdWU6IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlKSB7XHJcbiAgICB0aGlzLl93b3JrZmxvd0luZm9ybWF0aW9uID0gdmFsdWVcclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIGlmICh0aGlzLm1vZGUgIT0gTW9kZXMuY3JlYXRlICYmIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbj8ud29ya2Zsb3dFdGF0KSB7XHJcbiAgICAgIHRoaXMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEFzS2V5VmFsdWVQYWlyID0gQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEJ5V29ya2Zsb3dFdGF0KHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd0V0YXQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBhc3luYyBnZXRXb3JrZmxvd0VudGl0eUluZm9ybWF0aW9uKGJ1c2luZXNzQ2xhc3M6IHN0cmluZywgdWlkT2JqZWN0Pzogc3RyaW5nLCBkaXNjcmltaW5hdG9yQ2xhc3NOYW1lID86IHN0cmluZywgXHJcbiAgLy8gZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSA/OiBzdHJpbmdcclxuICAvLyApIHtcclxuICAvLyAgIGlmICh0aGlzLm1vZGUgIT0gTW9kZXMuY3JlYXRlKSB7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIHRyeSB7XHJcbiAgLy8gICAgIGxldCByZXF1ZXN0OiBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0ID0gbmV3IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QoKTtcclxuICAvLyAgICAgcmVxdWVzdC5jbGFzc05hbWUgPSBidXNpbmVzc0NsYXNzXHJcbiAgLy8gICAgIHJlcXVlc3QudWlkT2JqZXQgPSB1aWRPYmplY3Q7XHJcbiAgLy8gICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvckNsYXNzTmFtZSA9IGRpc2NyaW1pbmF0b3JDbGFzc05hbWVcclxuICAvLyAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yUHJvcGVydHlOYW1lID0gZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZVxyXG4gIC8vICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JWYWx1ZSA9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgLy8gICAgIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0RW50aXR5V29ya2xmb3dJbnN0YW5jZUluZm9ybWF0aW9uKHJlcXVlc3QpKVxyXG4gIC8vICAgICBjb25zb2xlLmxvZyhcInRoaXMud29ya2Zsb3dJbmZvcm1hdGlvblwiLCB0aGlzLndvcmtmbG93SW5mb3JtYXRpb24pXHJcbiAgLy8gICAgIGlmICh0aGlzLndvcmtmbG93SW5mb3JtYXRpb24pIHtcclxuICAvLyAgICAgICBsZXQgd29ya2Zsb3dFdGF0Rm9ybSA9IHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2Uud29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRGb3JtXHJcbiAgLy8gICAgICAgICA/LmZpbmQoeCA9PiB4LnVpZCA9PSB0aGlzLndvcmtmbG93SW5mb3JtYXRpb24/LndvcmtmbG93RXRhdClcclxuICAvLyAgICAgICBpZiAod29ya2Zsb3dFdGF0Rm9ybSkge1xyXG4gIC8vICAgICAgICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JGb3JDdXJyZW50RW50aXR5Rm9ybSA9XHJcbiAgLy8gICAgICAgICAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UubWFwV29ya2Zsb3dFdGF0Rm9ybVRvUHJlc2VudGF0aW9uU2V0dGluZyh3b3JrZmxvd0V0YXRGb3JtLndvcmtmbG93RXRhdHNGb3JtcylcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGNhdGNoIChlcnJvcikge1xyXG4gIC8vICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0IHdvcmtmbG93SW5mb3JtYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya2Zsb3dJbmZvcm1hdGlvblxyXG4gIH1cclxuICBnZXRXb3JrZmxvd0V0YXRBc0tleVZhbHVlUGFpciA9XHJcbiAgICBBZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRXb3JrZmxvd0V0YXRBc0tleVZhbHVlUGFpcigpO1xyXG4gIGdldFdvcmtmbG93RXRhdFN1aXZhbnRBc0tleVZhbHVlUGFpciA9ICcnO1xyXG4gIHNlbGVjdGVkV29ya2Zsb3dFdGF0VWlkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIGlzQ29tYm9EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1Nb2RlcyA9IE1vZGVzO1xyXG5cclxuICBjb25maWdNb2RlQnV0dG9uSWQgPSBcImNvbmZnLW1vZGUtYnV0dG9uLWZyb20tZm9ybVwiO1xyXG4gIGN1ZENvbXBvbmVudDogYW55XHJcbiAgY29uZmlnRGF0YTogYW55XHJcbiAgc2F2ZWREYXRhU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gaGFuZGxlIExpZmVjeWNsZSBIb29rc1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdWRDb21wb25lbnQgPSB0aGlzLmNvbmZpZz8uZGF0YT8uY3VkQ29tcG9uZW50O1xyXG4gICAgdGhpcy5jb25maWdEYXRhID0gdGhpcy5jb25maWdcclxuICAgIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbiA9IHRoaXMuY29uZmlnPy5kYXRhPy53b3JrZmxvd0luZm9ybWF0aW9uID8/IG5ldyB3b3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXNwb25zZSgpXHJcbiAgICBjb25zb2xlLmxvZyhcIndvcmtmbG93SW5mb3JtYXRpb24gPT4gXCIsIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbilcclxuICAgIGlmICh0aGlzLm1vZGUgIT0gTW9kZXMuY3JlYXRlICYmIHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbj8ud29ya2Zsb3dFdGF0KSB7XHJcbiAgICAgIHRoaXMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEFzS2V5VmFsdWVQYWlyID0gQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0V29ya2Zsb3dFdGF0U3VpdmFudEJ5V29ya2Zsb3dFdGF0KHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd0V0YXQpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbml0Rm9ybVNhdmVTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgICB0aGlzLl9pbml0aWFsaXplUmVxdWVzdFRyYWNrZXJTdGF0ZVN1YnNjcmlwdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEZvcm1TYXZlU3Vic2NyaXB0aW9uKCkge1xyXG4gICAgdGhpcy5zYXZlZERhdGFTdWJzY3JpcHRpb24gPSB0aGlzLl9mb3JtU3RhdGVTZXJ2aWNlXHJcbiAgICAgIC5kYXRhU2F2ZWRPYnNlcnZhYmxlLnN1YnNjcmliZShcclxuICAgICAgICBhc3luYyAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29sb25uZXNQZXJzb25uYWxpc2VlRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmNvbG9ubmVzUGVyc29ubmFsaXNlZURhdGFcclxuICAgICAgICAgICAgICAuZm9yRWFjaCh4ID0+IHgub2NjdXJlbmNlID0gZGF0YSlcclxuICAgICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fY29sb25uZVBlcnNvbm5hbGlzZWVTZXJ2aWNlLmFkZE9yVXBkYXRlRm9ybXVsYWlyZURhdGEodGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29sb25uZXNQZXJzb25uYWxpc2VlRGF0YSkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgfVxyXG5cclxuICBmb3JtVHlwZSA9IGZvcm1UeXBlO1xyXG4gIHByaXZhdGUgZ2V0Q29sb25uZVBlcnNvbm5hbGlzZWUoKSB7XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzICYmIHRoaXMubW9kZSA9PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fZ2V0Q29sb25uZVBlcnNvbm5hbGlzZSh0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgdGhpcy5tb2RlICE9IE1vZGVzLmNyZWF0ZSAmJiB0aGlzLmlkKSB7XHJcbiAgICAgIHRoaXMuX2dldENvbG9ubmVQZXJzb25uYWxpc2UodGhpcy5idXNpbmVzc0NsYXNzLCB0aGlzLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Q29sb25uZVBlcnNvbm5hbGlzZShidXNpbmVzc0NsYXNzOiBzdHJpbmcsIGlkPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jb2xvbm5lUGVyc29ubmFsaXNlZVNlcnZpY2UuZ2V0Q29sb25uZXNQZXJzb25uYWxpc2VlKGJ1c2luZXNzQ2xhc3MsIHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICByZXMuZm9yRWFjaChjcGcgPT4ge1xyXG4gICAgICAgICAgY3BnLmNvbG9ubmVzLmZvckVhY2goY3AgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNwLmRhdGEpIHtcclxuICAgICAgICAgICAgICBjcC5kYXRhID0gbmV3IENvbG9ubmVQZXJzb25uYWxpc2VlRGF0YShcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHRoaXMuaWQsIGNwLnVpZCxcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY29sb25uZXNQZXJzb25uYWxpc2VlR3JvdXBlZCA9IHJlcztcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcm9jZXNzRHluYW1pY1RhYnMoKVxyXG4gICAgICAgIH0sIDApO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIHdoZW4gZ2V0dGluZyBsaXN0IG9mIGNvbG9ubmUgcGVyc29ubmFsaXNlZVwiLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRGVzaWduTW9kZShldmVudDogYW55KSB7XHJcbiAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuZGF0YS5jdWRDb21wb25lbnQgPSB1bmRlZmluZWRcclxuICAgIC8vIHRoaXMuY29uZmlnRGF0YS5kYXRhLndvcmtmbG93SW5mb3JtYXRpb24gPSB1bmRlZmluZWRcclxuXHJcbiAgICAvLyB0aGlzLnJlZj8uY2xvc2UoKTtcclxuICAgIC8vIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuaXNEZXNpZ25Nb2RlID0gdHJ1ZVxyXG4gICAgLy8gdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5jdXJyZW50Rm9ybU5hbWUgPSB0aGlzLmdldENvbXBvbmVudElkZW50aWZpZXIoKVxyXG5cclxuICAgIC8vIHRoaXMucmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuY3VkQ29tcG9uZW50LCB0aGlzLmNvbmZpZ0RhdGEpO1xyXG4gICAgLy8gdGhpcy5yZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgLy8gICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSA9IGZhbHNlXHJcbiAgICAvLyAgIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuY3VycmVudEZvcm1OYW1lID0gdW5kZWZpbmVkXHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Byb2Nlc3NEeW5hbWljVGFicygpIHtcclxuICAgIHRoaXMuZHluYW1pY1Rvb2xiYXJDb250YWluZXJzLnRvQXJyYXkoKS5mb3JFYWNoKGNvbnRhaW5lciA9PiB7XHJcbiAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICBjb25zdCBjb21wUmVmOiBDb21wb25lbnRSZWY8VHNpTW9kYWxIZWFkZXJDb21wb25lbnQ+ID0gY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChUc2lNb2RhbEhlYWRlckNvbXBvbmVudCk7XHJcblxyXG4gICAgICBjb21wUmVmLmluc3RhbmNlLnRvb2xiYXJUZW1wbGF0ZUhlYWRlciA9IHRoaXMubW9kYWxIZWFkZXJDb21wIS50b29sYmFyVGVtcGxhdGVIZWFkZXI7XHJcbiAgICAgIGNvbXBSZWYuaW5zdGFuY2UuaW5wdXRUaXRsZSA9IHRoaXMubW9kYWxIZWFkZXJDb21wIS5pbnB1dFRpdGxlO1xyXG5cclxuICAgICAgY29tcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmR5bmFtaWNGb290ZXJzQ29udGFpbmVycy50b0FycmF5KCkuZm9yRWFjaChjb250YWluZXIgPT4ge1xyXG4gICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgY29uc3QgY29tcFJlZjogQ29tcG9uZW50UmVmPFRzaU1vZGFsRm9vdGVyQ29tcG9uZW50PiA9IGNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoVHNpTW9kYWxGb290ZXJDb21wb25lbnQpO1xyXG4gICAgICBjb21wUmVmLmluc3RhbmNlLmZvb3RlclRlbXBsYXRlUmVmID0gdGhpcy5tb2RhbEZvb3RlckNvbXA/LmZvb3RlclRlbXBsYXRlUmVmXHJcbiAgICAgIGNvbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRvb2xiYXJUZW1wbGF0ZVJlZiAmJiB0aGlzLm1vZGFsSGVhZGVyQ29tcCkge1xyXG4gICAgICB0aGlzLm1vZGFsSGVhZGVyQ29tcC50b29sYmFyVGVtcGxhdGVIZWFkZXIgPSB0aGlzLnRvb2xiYXJUZW1wbGF0ZVJlZjtcclxuICAgICAgdGhpcy5pbnB1dFRpdGxlID0gdGhpcy5tb2RhbEhlYWRlckNvbXAuaW5wdXRUaXRsZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxIZWFkZXJDb21wLnRvb2xiYXJUZW1wbGF0ZUhlYWRlciA9IHRoaXMudG9vbGJhclRlbXBsYXRlUmVmO1xyXG4gICAgICB0aGlzLmlucHV0VGl0bGUgPSB0aGlzLm1vZGFsSGVhZGVyQ29tcC5pbnB1dFRpdGxlO1xyXG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybVJlZkNoYW5nZS5lbWl0KHRoaXMuZm9ybVJlZik7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gaGFuZGxlIGV2ZW50c1xyXG4gIGhhbmRsZUZvcm1TdWJtaXQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5oYXNBY3RpdmVSZXF1ZXN0cykgcmV0dXJuO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy53b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmlzRGVzZ2luTW9kZUZyb21Xb3JrZmxvdykge1xyXG4gICAgICB0aGlzLm9uU3VibWl0Rm9ybVdvcmtmbG93Q29uZmlndXJhdGlvbi5lbWl0KGV2ZW50KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc3luY0R5bmFtaWNDb2x1bW5EYXRhVG9EeW5hbWljRm9ybVNlcnZpY2UoKVxyXG4gICAgICB0aGlzLm9uU3VibWl0LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc3luY0R5bmFtaWNDb2x1bW5EYXRhVG9EeW5hbWljRm9ybVNlcnZpY2UoKSB7XHJcbiAgICBjb25zdCBleGlzdGluZ1VpZHMgPSBuZXcgU2V0KFxyXG4gICAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb2xvbm5lc1BlcnNvbm5hbGlzZWVEYXRhLm1hcCh4ID0+IHguY29sb25uZVBlcnNvbm5hbGlzZWVVaWQpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY29sb25uZXNQZXJzb25uYWxpc2VlR3JvdXBlZC5mb3JFYWNoKGNwZyA9PiB7XHJcbiAgICAgIGNwZy5jb2xvbm5lcy5mb3JFYWNoKGNwID0+IHtcclxuICAgICAgICBpZiAoIWV4aXN0aW5nVWlkcy5oYXMoY3AudWlkKSkge1xyXG4gICAgICAgICAgaWYgKCFjcC5kYXRhKSB7XHJcbiAgICAgICAgICAgIGNwLmRhdGEgPSBuZXcgQ29sb25uZVBlcnNvbm5hbGlzZWVEYXRhKFxyXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB0aGlzLmlkLCBjcC51aWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IENvbG9ubmVQZXJzb25uYWxpc2VlRGF0YShcclxuICAgICAgICAgICAgY3A/LmRhdGE/LnVpZCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGNwPy5kYXRhPy5vY2N1cmVuY2UgPz8gdGhpcy5pZCxcclxuICAgICAgICAgICAgY3AudWlkLFxyXG4gICAgICAgICAgICBjcC5kYXRhLnZhbGV1ckJvb2xlYW4sXHJcbiAgICAgICAgICAgIGNwLmRhdGEudmFsZXVySW50LFxyXG4gICAgICAgICAgICBjcC5kYXRhLnZhbGV1ckRlY2ltYWwsXHJcbiAgICAgICAgICAgIGNwLmRhdGEudmFsZXVyU3RyaW5nLFxyXG4gICAgICAgICAgICBjcC5kYXRhLnZhbGV1ckJpbmFyeSxcclxuICAgICAgICAgICAgY3Aub2JzZXJ2YXRpb25cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29sb25uZXNQZXJzb25uYWxpc2VlRGF0YS5wdXNoKG5ld0RhdGEpO1xyXG5cclxuICAgICAgICAgIGV4aXN0aW5nVWlkcy5hZGQoY3AudWlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb2xvbm5lc1BlcnNvbm5hbGlzZWVEYXRhID0+IFwiLFxyXG4gICAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb2xvbm5lc1BlcnNvbm5hbGlzZWVEYXRhXHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiB3b3JrZmxvd1xyXG5cclxuXHJcbiAgY29uZmlybVVwZGF0ZVdvcmtmbG93RXRhdChldmVudDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudClcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLl90c2lDb25maXJtU2VydmljZS5jb25maXJtKFwiYWRtaW5pc3RyYXRpb25fY29uZmlybV9zdGF0dXNfY2hhbmdlXCIsIFwiYWRtaW5pc3RyYXRpb25fY29uZmlybWF0aW9uX3RpdGxlXCIsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWVcclxuICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgdXBkYXRlRW50aXR5V29ya2Zsb3dJbmZvcm1hdGlvbigpXHJcbiAgICAgICAgICAgIHJlcXVlc3QuY2xhc3NOYW1lID0gdGhpcy5fYnVzaW5lc3NDbGFzcztcclxuICAgICAgICAgICAgcmVxdWVzdC51aWRPYmplY3QgPSB0aGlzLl9pZFxyXG4gICAgICAgICAgICByZXF1ZXN0Lm5ld1dvcmtmbG93U3RhdHVzID0gZXZlbnQ7XHJcbiAgICAgICAgICAgIHJlcXVlc3Qud29ya2Zsb3cgPSB0aGlzLndvcmtmbG93SW5mb3JtYXRpb24/LndvcmtmbG93VWlkO1xyXG4gICAgICAgICAgICByZXF1ZXN0LndvcmtmbG93RXRhdCA9IHRoaXMud29ya2Zsb3dJbmZvcm1hdGlvbi53b3JrZmxvd0V0YXRcclxuICAgICAgICAgICAgcmVxdWVzdC53b3JrZmxvd0luc3RhbmNlVWlkID0gdGhpcy53b3JrZmxvd0luZm9ybWF0aW9uPy53b3JrZmxvd0luc3RhbmNlVWlkXHJcbiAgICAgICAgICAgIHJlcXVlc3Qud29ya2Zsb3dFdGF0ID0gdGhpcy53b3JrZmxvd0luZm9ybWF0aW9uPy53b3JrZmxvd0V0YXRcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocmVxdWVzdClcclxuICAgICAgICAgICAgdGhpcy53b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLnVwZGF0ZUVudGl0eVdvcmtmbG93SW5mb3JtYXRpb24ocmVxdWVzdCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpXHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnN0YXR1cyAhPSBudWxsICYmIGRhdGEuc3RhdHVzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gZGF0YS5zdGF0dXNcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dFdGF0VWlkID0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl90c2lOb3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yPy5lcnJvcilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd0V0YXRVaWQgPSBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBzdGF0dXNNZXRhZGF0YUNvbWJvU3RhdHVzPzogU3RhdHVzTWV0YWRhdGFSZXNwb25zZTtcclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGF0dXNNZXRhRm9yQ29tYm8oKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zdGF0dXNDb2xvclNlcnZpY2UuZ2V0U3RhdHVzQ29sb3JEZXRhaWxzQnlCdXNpbmVzc0NsYXNzTmFtZSh0aGlzLmJ1c2luZXNzQ2xhc3MhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogU3RhdHVzTWV0YWRhdGFSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzTWV0YWRhdGFDb21ib1N0YXR1cyA9IGRhdGE7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBFbnRpdHkgc3RhdHVzXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdHlTdGF0dXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudGl0eVN0YXR1c1NlcnZpY2UuZ2V0RW50aXR5U3RhdHVzKHRoaXMuYnVzaW5lc3NDbGFzcykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGRhdGE6IEVudGl0eVByb3BlcnRpZXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXR1c0NvbHVtbk5hbWUgPSBkYXRhLnN0YXR1c0NvbHVtbk5hbWUgPz8gXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKGRhdGEuZW50aXR5U3RhdHVzICYmIEFycmF5LmlzQXJyYXkoZGF0YS5lbnRpdHlTdGF0dXMpKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eVN0YXR1c0xpc3QgPSBkYXRhLmVudGl0eVN0YXR1cztcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gTW9kZXMuY3JlYXRlICYmIGlzTnVsbE9yRW1wdHkodGhpcy5zdGF0dXMpICYmICFpc051bGxPckVtcHR5KGRhdGEuZGVmYXVsdFN0YXR1cykpIHtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzID0gZGF0YS5kZWZhdWx0U3RhdHVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnNldE1lc3NhZ2VQb3NpdGlvbihldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gICAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGUsIGZpbGVFeHRlbnNpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRGaWxlKGZpbGU6IEZpbGUsIGZpbGVFeHRlbnNpb246IHN0cmluZykge1xyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xyXG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGUudGFyZ2V0Py5yZXN1bHQgYXMgQXJyYXlCdWZmZXI7XHJcbiAgICAgIGlmICghYXJyYXlCdWZmZXIpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGJhc2U2NENvbnRlbnQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoYXJyYXlCdWZmZXIpO1xyXG5cclxuICAgICAgY29uc3QgZmljaGllclRvU2VuZCA9IG5ldyBGaWNoaWVyKCk7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQuZGF0ZUZpY2hpZXIgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBmaWNoaWVyVG9TZW5kLm5vbSA9IGZpbGUubmFtZTtcclxuICAgICAgZmljaGllclRvU2VuZC5vYmpldCA9ICcnO1xyXG4gICAgICBmaWNoaWVyVG9TZW5kLm5vbUZpY2hpZXJDb21wbGV0ID0gZmlsZS5uYW1lO1xyXG4gICAgICBmaWNoaWVyVG9TZW5kLmRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQuY29udGVudSA9IGJhc2U2NENvbnRlbnQ7XHJcbiAgICAgIGZpY2hpZXJUb1NlbmQudGFibGVMaWVlID0gdGhpcy5idXNpbmVzc0NsYXNzO1xyXG4gICAgICBmaWNoaWVyVG9TZW5kLnBrZXkgPSB0aGlzLmlkPy50b1N0cmluZygpO1xyXG4gICAgICBmaWNoaWVyVG9TZW5kLmV4dGVuc2lvbiA9IGZpbGVFeHRlbnNpb25cclxuXHJcbiAgICAgIHRoaXMuX2ZpY2hpZXJTZXJ2aWNlLmNyZWF0ZShmaWNoaWVyVG9TZW5kKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0Tm9tYnJlRmljaGllcigpO1xyXG4gICAgICAgICAgdGhpcy5fdHNpTm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKFwiZmljaGllcl9qb2ludFwiKTtcclxuICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgYXJyYXlCdWZmZXJUb0Jhc2U2NChidWZmZXI6IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBiaW5hcnkgPSAnJztcclxuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcclxuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBidG9hKGJpbmFyeSk7XHJcbiAgfVxyXG5cclxuICBoaWRlKHZhbD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMucmVmICE9IG51bGwgJiYgdGhpcy5yZWYgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh2YWwgPT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLnJlZj8uZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVmPy5jbG9zZSh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmxvY2FsaXplICE9IG51bGxcclxuICAgICAgJiYgdGhpcy5sb2NhbGl6ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemUudHJhbnNmb3JtKGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9tYnJlRmljaGllcigpIHtcclxuICAgIGlmICh0aGlzLmlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5fZmljaGllclNlcnZpY2VcclxuICAgICAgICAuR2V0Tm9tYnJlRmljaGllckpvaW50QnlJZCh0aGlzLmlkID8/IFwiXCIpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5vbWJyZURvY3VtZW50cyA9IGRhdGE7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgLy8gdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgdG8gZ2V0IG51bWJlciBvZiBmaWxlcyBvbiB0aGlzIHJlY29yZFwiLCByZXNwb25zZSlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5kcmFnRW50ZXJDb3VudCsrO1xyXG5cclxuICAgIHRoaXMuaXNEcmFnT3ZlciA9IHRydWU7XHJcbiAgICB0aGlzLnNldE1lc3NhZ2VQb3NpdGlvbihldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEcmFnT3Zlcikge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VQb3NpdGlvbiA9IHtcclxuICAgICAgICB4OiBldmVudC5jbGllbnRYICsgNSxcclxuICAgICAgICB5OiBldmVudC5jbGllbnRZICsgNVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuZHJhZ0VudGVyQ291bnQtLTtcclxuXHJcbiAgICBpZiAodGhpcy5kcmFnRW50ZXJDb3VudCA8PSAwKSB7XHJcbiAgICAgIHRoaXMuaXNEcmFnT3ZlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRyYWdFbnRlckNvdW50ID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TWVzc2FnZVBvc2l0aW9uKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMubWVzc2FnZVBvc2l0aW9uID0ge1xyXG4gICAgICB4OiBldmVudC5jbGllbnRYICsgNSxcclxuICAgICAgeTogZXZlbnQuY2xpZW50WSArIDUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjaGVja0VudGl0eUluZm8oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuYnVzaW5lc3NDbGFzcykgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBlbnRpdHlJbmZvID0gYXdhaXQgdGhpcy5lbnRpdHlDb25maWd1cmF0aW9uU2VydmljZS5nZXRFbnRpdHlJbmZvRnJvbUNhY2hlKHRoaXMuYnVzaW5lc3NDbGFzcyk7XHJcblxyXG4gICAgICBpZiAoIWVudGl0eUluZm8gfHwgKCFlbnRpdHlJbmZvLmRpc2NyaW1pbmF0b3JDbGFzc05hbWUgJiYgIWVudGl0eUluZm8uZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSkpIHtcclxuICAgICAgICB0aGlzLmlnbm9yZURlc2NyaW1pbmF0b3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRm9ybXNJbmZvcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFsbEZvcm1zT2ZCdXNpbmVzc0NsYXNzKCkge1xyXG4gICAgaWYgKCF0aGlzLmJ1c2luZXNzQ2xhc3MpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmZvcm11bGFpcmVTZXJ2aWNlLmdldEFsbEZvcm1zT2ZCdXNpbmVzc0NsYXNzKHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWUpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdmFsdWUubGVuZ3RoIDwgMSkgcmV0dXJuO1xyXG4gICAgICAgICAgdGhpcy5mb3Jtc09mQnVzaW5lc3NDbGFzcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5kb2VzSGF2ZUZvcm1zID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVjYWxjdWxhdGVGb3Jtc1Zpc2liaWxpdHkoKSB7IHRoaXMuY2FuU2hvd0Zvcm1zID0gdGhpcy5kb2VzSGF2ZUZvcm1zICYmICFpc051bGxPckVtcHR5KHRoaXMubW9kZSkgJiYgdGhpcy5tb2RlICE9IE1vZGVzLmNyZWF0ZTsgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZUZvcm1zSW5mb3MoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0Zvcm1zSW5mb3NDYWxjdWxhdGVkKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMuaXNCdXNpbmVzc0NsYXNzU2V0IHx8ICF0aGlzLmlnbm9yZURlc2NyaW1pbmF0b3IgJiYgIXRoaXMuaXNEZXNjcmltaW5hdG9yVmFsdWVTZXQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmdldEFsbEZvcm1zT2ZCdXNpbmVzc0NsYXNzKCk7XHJcbiAgICB0aGlzLmlzRm9ybXNJbmZvc0NhbGN1bGF0ZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVJlcXVlc3RUcmFja2VyU3RhdGVTdWJzY3JpcHRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RUcmFja2VyU3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnJlcXVlc3RUcmFja2VyU2VydmljZS5yZXF1ZXN0U3RhdGUkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5oYXNBY3RpdmVSZXF1ZXN0cyA9IHZhbHVlLmhhc0FjdGl2ZVJlcXVlc3Q7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU1vZGVJblRzaU1vZGFsRm9vdGVyKCl7XHJcbiAgICBpZih0aGlzLm1vZGFsRm9vdGVyQ29tcCl7XHJcbiAgICAgIHRoaXMubW9kYWxGb290ZXJDb21wLm1vZGUgPSB0aGlzLm1vZGVcclxuICAgIH1cclxuICB9XHJcbn0iLCI8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChuZ1N1Ym1pdCk9XCJoYW5kbGVGb3JtU3VibWl0KCRldmVudClcIiAjZm9ybVJlZj1cIm5nRm9ybVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjdG9vbGJhclRlbXBsYXRlPlxyXG4gICAgPHAtdG9vbGJhciAqbmdJZj1cImZvcm1FbmRwb2ludFwiIHN0eWxlQ2xhc3M9XCJtYi0xIGdhcC0yXCIgY2xhc3M9XCJ3LWZ1bGxcIiAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIiAoZHJhZ2VudGVyKT1cIm9uRHJhZ0VudGVyKCRldmVudClcIiAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgbWwtMlwiPlxyXG4gICAgICAgICAge3sgaW5wdXRUaXRsZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgbXItMlwiPlxyXG4gICAgICAgICAgPGFwcC1yZXBvcnRpbmcgKm5nSWY9XCJmb3JtRW5kcG9pbnRcIiBbZnJvbVRzaUZvcm1dPVwidHJ1ZVwiIFtpZF09XCJ0aGlzLmlkXCIgW2Zvcm1FbmRwb2ludF09XCJmb3JtRW5kcG9pbnRcIlxyXG4gICAgICAgICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIiBbcmVwb3J0RGlzY3JpbWluYXRvcl09XCJkZXNjcmltaW5hdG9yVmFsdWVcIiBbaXNGb3JtRW5kcG9pbnRQYWdlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW25vbWJyZURvY3VtZW50c0pvaW50c109XCJub21icmVEb2N1bWVudHNcIiBbY29uZmlnTW9kZUJ1dHRvbklkXT1cImNvbmZpZ01vZGVCdXR0b25JZFwiXHJcbiAgICAgICAgICAgIFtpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiICh0b2dnbGVEZXNpZ25Nb2RlKT1cInRvZ2dsZURlc2lnbk1vZGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIiAoY2xvc2VkTW9kYWxGaWxlVXBsb2FkKT1cImdldE5vbWJyZUZpY2hpZXIoKVwiXHJcbiAgICAgICAgICAgIFtzaG93SW1wb3J0RXhwb3J0QnV0dG9uXT1cImZhbHNlXCIgI3JlcG9ydGluZ0FwcD5cclxuICAgICAgICAgIDwvYXBwLXJlcG9ydGluZz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJpc0RyYWdPdmVyXCIgW25nU3R5bGVdPVwieyBsZWZ0OiBtZXNzYWdlUG9zaXRpb24ueCArICdweCcsIHRvcDogbWVzc2FnZVBvc2l0aW9uLnkgKyAncHgnIH1cIlxyXG4gICAgICAgIGNsYXNzPVwiZHJhZy1tZXNzYWdlIGN1cnNvci1mb2xsb3dcIj5cclxuICAgICAgICB7eyBcIkpvaW50dXJlXCIgfCBsb2NhbGl6ZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L3AtdG9vbGJhcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8ZGl2ICpidXN5PVwiaXNMb2FkaW5nIHx8IGhhc0FjdGl2ZVJlcXVlc3RzXCI+PC9kaXY+XHJcblxyXG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1yXCI+XHJcbiAgICAgIDxwLXRhYlZpZXc+XHJcblxyXG4gICAgICAgIDxwLXRhYlBhbmVsIGhlYWRlcj1cIlwiIFxyXG4gICAgICAgIFtoZWFkZXJTdHlsZV09XCJjb2xvbm5lc1BlcnNvbm5hbGlzZWVHcm91cGVkLmxlbmd0aCA9PT0gMCAmJiAhY2FuU2hvd0Zvcm1zXHJcbiAgICAgID8geyBkaXNwbGF5OiAnbm9uZScgfSBcclxuICAgICAgOiBudWxsXCI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaG9tZSBtci0yXCI+PC9pPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXRhYi10ZXh0XCI+e3sgJ3NoYXJlZF9mb3JtX21haW50YWJUaXRsZScgfCBsb2NhbGl6ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L3AtdGFiUGFuZWw+XHJcblxyXG4gICAgICAgIDwhLS0gRHluYW1pYyB0YWJzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2xvbm5lc1BlcnNvbm5hbGlzZWVHcm91cGVkLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxwLXRhYlBhbmVsICpuZ0Zvcj1cImxldCBncnAgb2YgY29sb25uZXNQZXJzb25uYWxpc2VlR3JvdXBlZFwiIFtoZWFkZXJdPVwiZ3JwLmdyb3VwZVwiPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkeW5hbWljVG9vbGJhckNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdyaWQgZm9ybS1yb3dcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGdycC5jb2xvbm5lc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCJjb2wubm9tXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFN0cmluZyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuc3RyaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1clN0cmluZ1wiPjwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW50IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5pbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgWyhpbnB1dEZpZWxkKV09XCJjb2wuZGF0YS52YWxldXJJbnRcIj48L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRGVjaW1hbCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuZGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1JbnB1dCBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1ckRlY2ltYWxcIj48L1RzaS1EZWNpbWFsLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQm9vbGVhbiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuYm9vbGVhblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ2hlY2tCb3ggW2lzQmluYXJ5XT1cImZhbHNlXCIgWyhpbnB1dEZpZWxkKV09XCJjb2wuZGF0YS52YWxldXJCb29sZWFuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBCaW5hcnkgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggZm9ybS1pbnB1dFwiICpuZ0lmPVwiY29sLnR5cGUgPT09IGZvcm1UeXBlLmJpbmFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICBiaW5hcnkgaW5wdXQgKG5vdCBoYW5kbGVkIHlldClcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2R5bmFtaWNGb290ZXJDb250YWluZXI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvcC10YWJQYW5lbD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNob3dGb3Jtc1wiPlxyXG4gICAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2Zvcm1fZHluYW1pY0Zvcm1zVGFiX1RpdGxlJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgPHNoYXJlZC1keW5hbWljLWZvcm0tbGlzdFxyXG4gICAgICAgICAgICAgIFtvY2N1cmVuY2VdPVwiaWRcIlxyXG4gICAgICAgICAgICAgIFtvY2N1cmVuY2VCdXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgIFtvY2N1cmVuY2VEaXNjcmltaW5hdG9yVmFsdWVdPVwiZGVzY3JpbWluYXRvclZhbHVlXCJcclxuICAgICAgICAgICAgICBbaWdub3JlRGlhbG9nQ29uZmlnXT1cInRydWVcIiAvPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPC9wLXRhYlZpZXc+XHJcbiAgICA8L2Rpdj5cclxuICA8L2ZpZWxkc2V0PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiKGJ1c2luZXNzQ2xhc3MgJiYgZW50aXR5U3RhdHVzTGlzdC5sZW5ndGggPiAwKSB8fFxyXG4gICAgICAgIHdvcmtmbG93SW5mb3JtYXRpb24/LndvcmtmbG93VWlkIHx8XHJcbiAgICAgICAgd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5pc0Rlc2dpbk1vZGVGcm9tV29ya2Zsb3dcIiBjbGFzcz1cIm14LTQgcHgtMiBteS0xIHNoYXJlZC1mb290ZXItYmFyXCI+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImJ1c2luZXNzQ2xhc3MgJiYgZW50aXR5U3RhdHVzTGlzdCAmJiBlbnRpdHlTdGF0dXNMaXN0Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCIgcHJlc2VudGF0aW9uRGVzaWduZXI9XCJzaGFyZWRfY3J1ZF9zdGF0dXNcIj5cclxuICAgICAgICA8VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfY3J1ZF9zdGF0dXMnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2lkLWZpZWxkXT1cIidrZXknXCIgW2xhYmVsLWZpZWxkXT1cIid2YWx1ZSdcIiBbZGF0YXNvdXJjZV09XCJlbnRpdHlTdGF0dXNMaXN0XCIgWyhiaW5kKV09XCJzdGF0dXNcIlxyXG4gICAgICAgICAgW2NvbWJvVHlwZV09XCInc3RhdHVzJ1wiIFtzdGF0dXNNZXRhZGF0YV09XCJzdGF0dXNNZXRhZGF0YUNvbWJvU3RhdHVzXCIgW2lucHV0TmFtZV09XCJzdGF0dXNDb2x1bW5OYW1lXCJcclxuICAgICAgICAgIFtzaG93QWRkQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImZhbHNlXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIndvcmtmbG93SW5mb3JtYXRpb24/LndvcmtmbG93VWlkIHx8IHdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuaXNEZXNnaW5Nb2RlRnJvbVdvcmtmbG93XCJcclxuICAgICAgY2xhc3M9XCJmbGV4IGNvbC0xMFwiPlxyXG4gICAgICA8ZGl2IHByZXNlbnRhdGlvbkRlc2lnbmVyPVwic2hhcmVkX3dvcmtmbG93TmFtZVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgY29sLTRcIj5cclxuICAgICAgICA8VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl93b3JrZmxvd193b3JrZmxvdyd8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgPC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgPFRzaS1UZXh0LUJveCBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtpbnB1dE5hbWVdPVwiJ3dvcmtmbG93TmFtZSdcIiBbKGlucHV0RmllbGQpXT1cIndvcmtmbG93SW5mb3JtYXRpb24ud29ya2Zsb3dOYW1lXCI+XHJcbiAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHByZXNlbnRhdGlvbkRlc2lnbmVyPVwiYWRtaW5pc3RyYXRpb25fd29ya2Zsb3dfd29ya2Zsb3dfY3VycmVudF9zdGF0dXNcIlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgY29sLTRcIj5cclxuICAgICAgICA8VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl93b3JrZmxvd193b3JrZmxvd19jdXJyZW50X3N0YXR1cydcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cInctN1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgIFtiaW5kXT1cIndvcmtmbG93SW5mb3JtYXRpb24ud29ya2Zsb3dFdGF0XCIgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiIFtpbnB1dE5hbWVdPVwiJ1dvcmtmbG93RXRhdCdcIlxyXG4gICAgICAgICAgW2VsZW1lbnRTb3VyY2VVcmxdPVwiZ2V0V29ya2Zsb3dFdGF0QXNLZXlWYWx1ZVBhaXJcIiBbbGlzdFNvdXJjZVVybF09XCJnZXRXb3JrZmxvd0V0YXRTdWl2YW50QXNLZXlWYWx1ZVBhaXJcIlxyXG4gICAgICAgICAgW3Nob3dBZGRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiZmFsc2VcIj5cclxuICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSAhPSBmb3JtTW9kZXMuY3JlYXRlIHx8IHdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuaXNEZXNnaW5Nb2RlRnJvbVdvcmtmbG93XCJcclxuICAgICAgICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyPVwiYWRtaW5pc3RyYXRpb25fd29ya2Zsb3dfd29ya2Zsb3dfbmV4dF9zdGF0dXNcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciBuby1ib3JkZXJcIj5cclxuICAgICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX3dvcmtmbG93X3dvcmtmbG93X25leHRfc3RhdHVzJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gY2xhc3M9XCJ3LTdcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIiBbKGJpbmQpXT1cInNlbGVjdGVkV29ya2Zsb3dFdGF0VWlkXCJcclxuICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiIFtlbGVtZW50U291cmNlVXJsXT1cImdldFdvcmtmbG93RXRhdEFzS2V5VmFsdWVQYWlyXCIgW2lucHV0TmFtZV09XCInV29ya2Zsb3dFdGF0J1wiXHJcbiAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImdldFdvcmtmbG93RXRhdFN1aXZhbnRBc0tleVZhbHVlUGFpclwiIChiaW5kQ2hhbmdlKT1cImNvbmZpcm1VcGRhdGVXb3JrZmxvd0V0YXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtzaG93QWRkQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiZmFsc2VcIj5cclxuICAgICAgICAgIDwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPiJdfQ==
|
|
@@ -14984,7 +14984,7 @@ class TsiFormComponent {
|
|
|
14984
14984
|
if (data.entityStatus && Array.isArray(data.entityStatus)) {
|
|
14985
14985
|
this.entityStatusList = data.entityStatus;
|
|
14986
14986
|
}
|
|
14987
|
-
if (this.mode === Modes.create) {
|
|
14987
|
+
if (this.mode === Modes.create && isNullOrEmpty(this.status) && !isNullOrEmpty(data.defaultStatus)) {
|
|
14988
14988
|
this.status = data.defaultStatus;
|
|
14989
14989
|
}
|
|
14990
14990
|
},
|