@eo-sdk/client 11.12.0-rc.1 → 11.12.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts +1 -1
- package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +2 -0
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +2 -0
- package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.module.d.ts +3 -2
- package/app/eo-framework/result-list/result-list.module.d.ts.map +1 -1
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/settings/settings.component.mjs +3 -10
- package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +1 -1
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +39 -4
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +2 -2
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +55 -4
- package/esm2022/app/eo-framework/result-list/result-list.module.mjs +5 -1
- package/fesm2022/eo-sdk-client.mjs +405 -325
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -508,7 +508,7 @@ let FormElementTableComponent = class FormElementTableComponent {
|
|
|
508
508
|
this.overlayGrid.api.ensureNodeVisible(rowNode);
|
|
509
509
|
}
|
|
510
510
|
onCellClicked($event) {
|
|
511
|
-
if ($event.colDef.cellClass === 'router-link-cell' && $event.rowIndex !== null
|
|
511
|
+
if ($event.colDef.cellClass === 'router-link-cell' && $event.rowIndex !== null) {
|
|
512
512
|
if (!$event.node.group && $event.data) {
|
|
513
513
|
this.gridApi.openRouterLink($event.event, 'ag-row');
|
|
514
514
|
}
|
|
@@ -629,4 +629,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
629
629
|
type: HostListener,
|
|
630
630
|
args: ['keydown.control.c', ['$event']]
|
|
631
631
|
}] } });
|
|
632
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFFbEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBdUIsYUFBYSxFQUFFLGlCQUFpQixFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBNkUsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9HLE9BQU8sRUFBQyxjQUFjLEVBQUUsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFjLE1BQU0sZ0RBQWdELENBQUM7QUFJekYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUF1QnhELElBQU0seUJBQXlC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QW9DTixlQUFlO3NCQUpkLFlBQVk7dUJBQUMsNkJBQTZCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDbEQsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ2hELFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsaWVudFNpZGVSb3dNb2RlbE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NsaWVudC1zaWRlLXJvdy1tb2RlbCc7XG5pbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnMsIE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtDc3ZFeHBvcnRNb2R1bGV9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jc3YtZXhwb3J0JztcbmltcG9ydCB7Q29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZSwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFN5c3RlbVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbSwgZm9ya0pvaW59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge0NlbGxSZW5kZXJlciwgR3JpZFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4vLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7RWRpdFJvdywgVGFibGVDb21wb25lbnRQYXJhbXN9IGZyb20gJy4vZm9ybS1lbGVtZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1Jvd0VkaXRDb21wb25lbnR9IGZyb20gJy4vcm93LWVkaXQvcm93LWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSBcIi4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlXCI7XG5pbXBvcnQge0FnR3JpZEFuZ3VsYXJ9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnNjc3MnXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQge1xuXG4gIHByaXZhdGUgX2NhY2hlZENvbHVtbnM6IGFueVtdO1xuICBwcml2YXRlIF9jYWNoZWRDb2x1bW5zT3ZlcmxheTogYW55W107XG5cbiAgcHVibGljIG1vZHVsZXM6IE1vZHVsZVtdID0gW0NsaWVudFNpZGVSb3dNb2RlbE1vZHVsZSwgQ3N2RXhwb3J0TW9kdWxlXTtcblxuICBCQVNFX0NBQ0hFX0xBWU9VVF9LRVkgPSAndGFibGUuc3RhdGUnO1xuICBjYWNoZUxheW91dEtleSA9IHRoaXMuQkFTRV9DQUNIRV9MQVlPVVRfS0VZO1xuXG4gIEBWaWV3Q2hpbGQoJ2FnR3JpZCcpIGFnR3JpZCE6IEFnR3JpZEFuZ3VsYXI7XG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlHcmlkJykgb3ZlcmxheUdyaWQhOiBBZ0dyaWRBbmd1bGFyO1xuICBAVmlld0NoaWxkKCdyb3dFZGl0Jykgcm93RWRpdDogUm93RWRpdENvbXBvbmVudDtcbiAgLy8gQFZpZXdDaGlsZCgnc3BsaXRWaWV3Jykgc3BsaXRWaWV3OiBTcGxpdENvbXBvbmVudDtcblxuICBASW5wdXQoKSBsaW1pdDogbnVtYmVyO1xuICBASW5wdXQoKSBoYXNQcmV2aWV3RmlsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgbWluV2lkdGggPSAnOTd2dyc7XG4gIEBJbnB1dCgpIGhlaWdodCA9ICc5NXZoJztcblxuICBfcGFyYW1zOiBUYWJsZUNvbXBvbmVudFBhcmFtcztcbiAgcHJpdmF0ZSBfZWxlbWVudHM6IGFueVtdO1xuICBncmlkUmVhZHkgPSBmYWxzZTtcbiAgdmFsdWU6IGFueVtdO1xuICBpbm5lclZhbHVlOiBhbnlbXTtcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBvdmVybGF5R3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBlZGl0aW5nUm93OiBFZGl0Um93O1xuICBzaG93RGlhbG9nID0gZmFsc2U7XG4gIHNob3dQcmV2aWV3ID0gZmFsc2U7XG4gIHNob3dJbXBvcnRSZXBvcnREaWFsb2cgPSBmYWxzZTtcbiAgbWFwcGVkUm93cyA9IFtdO1xuICBtYXBwaW5nRXJyb3JGaWVsZHMgPSBbXTtcbiAgbGF5b3V0U2V0dGluZ3M7XG5cbiAgQElucHV0KClcbiAgc2V0IHBhcmFtcyhwOiBUYWJsZUNvbXBvbmVudFBhcmFtcykge1xuICAgIHRoaXMuY2FjaGVMYXlvdXRLZXkgPSBwID8gYCR7dGhpcy5CQVNFX0NBQ0hFX0xBWU9VVF9LRVl9LiR7cC5lbGVtZW50Lm5hbWV9YCA6IHRoaXMuQkFTRV9DQUNIRV9MQVlPVVRfS0VZO1xuICAgIGlmIChwKSB7XG4gICAgICB0aGlzLl9wYXJhbXMgPSBwO1xuICAgICAgdGhpcy5fY2FjaGVkQ29sdW1ucyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5jb2xEZWYnKSB8fCBbXTtcbiAgICAgIHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5ID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZk92ZXJsYXknKSB8fCBbXTtcbiAgICAgIHRoaXMuc2hvd1ByZXZpZXcgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSArICcuc2hvd1ByZXZpZXcnKTtcblxuXG4gICAgICBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID0gdGhpcy5fcGFyYW1zLnNpdHVhdGlvbjtcbiAgICAgIGlmICh0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgICB0aGlzLl9wYXJhbXMuc2l6ZSA9ICdzdXBlcnNtYWxsJztcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3BhcmFtcy5zaXplKSB7XG4gICAgICAgIHRoaXMuX3BhcmFtcy5zaXplID0gJ3NtYWxsJztcbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JpZFJlYWR5ID0gZmFsc2U7XG4gICAgICB0aGlzLl9lbGVtZW50cyA9IHAuZWxlbWVudC5lbGVtZW50cztcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuY3JlYXRlQ29sdW1uRGVmaW5pdGlvbigpO1xuICAgICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcy5wdXNoKHtoZWFkZXJOYW1lOiAnJywgY29sSWQ6ICdhY3Rpb25zJywgd2lkdGg6IDM0LCBtaW5XaWR0aDogMzQsIHBpbm5lZDogJ3JpZ2h0JywgY2VsbFJlbmRlcmVyOiB0aGlzLmFjdGlvbnNDZWxsUmVuZGVyZXJ9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSB0aGlzLmNyZWF0ZUNvbHVtbkRlZmluaXRpb24odHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ3JpZFJlYWR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgZ2V0IHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLmFsdC5zaGlmdC5jJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLnNoaWZ0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYWx0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYycsIFsnJGV2ZW50J10pXG4gIGNvcHlDZWxsSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuZ3JpZEFwaS5jb3B5VG9DbGlwYm9hcmQoZXZlbnQsIHRoaXMuYWdHcmlkLCB0aGlzLmdyaWRPcHRpb25zKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZEFwaTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdDogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPntcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ3JpZEFwaS5nZXRDb250ZXh0KCksXG4gICAgICBoZWFkZXJIZWlnaHQ6IDMwLFxuICAgICAgcm93SGVpZ2h0OiAzMCxcbiAgICAgIHJvd0J1ZmZlcjogMjAsXG4gICAgICBtdWx0aVNvcnRLZXk6ICdjdHJsJyxcbiAgICAgIGFjY2VudGVkU29ydDogdHJ1ZSxcbiAgICAgIC8vIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgICBzdXBwcmVzc01vdmFibGVDb2x1bW5zOiB0cnVlLFxuICAgICAgc3VwcHJlc3NOb1Jvd3NPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NMb2FkaW5nT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzQ29udGV4dE1lbnU6IHRydWVcbiAgICB9O1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC50YWJsZUNvbXBvbmVudCA9IHRoaXM7XG5cbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XG4gICAgICBjb250ZXh0OiB0aGlzLmdyaWRBcGkuZ2V0Q29udGV4dCgpLFxuICAgICAgaGVhZGVySGVpZ2h0OiAzMCxcbiAgICAgIHJvd0hlaWdodDogMzAsXG4gICAgICByb3dCdWZmZXI6IDIwLFxuICAgICAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gICAgICBhY2NlbnRlZFNvcnQ6IHRydWUsXG4gICAgICAvLyBzdXBwcmVzc0NlbGxTZWxlY3Rpb246IHRydWUsXG4gICAgICByb3dTZWxlY3Rpb246ICdzaW5nbGUnLFxuICAgICAgc3VwcHJlc3NNb3ZhYmxlQ29sdW1uczogdHJ1ZSxcbiAgICAgIHN1cHByZXNzTm9Sb3dzT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzTG9hZGluZ092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0NvbnRleHRNZW51OiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5jb250ZXh0LnRhYmxlQ29tcG9uZW50ID0gdGhpcztcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5yb3dDbGFzc1J1bGVzID0ge1xuICAgICAgJ25ldy1yb3cnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbXMuZGF0YS5pc05ld1Jvdykge1xuICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuZGF0YS5pc05ld1JvdztcbiAgICAgICAgICBkZWxldGUgcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuaW5uZXJWYWx1ZVtwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5pbm5lclZhbHVlLmxlbmd0aCAtIDFdLmlzTmV3Um93O1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLnRhc2tzJC5waXBlKGRlYm91bmNlVGltZSgxMCksIHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHRhc2tzKSA9PiB7XG4gICAgICBjb25zdCBzID0gdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9ICEhdGhpcy5yb3dFZGl0ICYmICEhdGFza3MuZmluZCgodGFzaykgPT4gdGFzayA9PT0gdGhpcy5yb3dFZGl0LnBlbmRpbmdUYXNrSWQpO1xuICAgICAgdGhpcy5vdmVybGF5R3JpZD8uYXBpLnVwZGF0ZUdyaWRPcHRpb25zKHsgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbjogcywgc3VwcHJlc3NDZWxsRm9jdXM6IHMgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhY3Rpb25zQ2VsbFJlbmRlcmVyKHBhcmFtcykge1xuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmIChwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgZGl2LmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwiYWN0aW9uLWljb25cIiBpZD1cImFjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9XCI+XG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PmA7XG4gICAgICBsZXQgY2xlYXJJY29uID0gZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoYCNhY3Rpb25JY29uLSR7cGFyYW1zLnJvd0luZGV4fWApWzBdO1xuICAgICAgY2xlYXJJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuY2xlYXJSb3cocGFyYW1zLnJvd0luZGV4KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpdi5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz1cImFjdGlvbi1pY29uXCIgaWQ9XCJhY3Rpb25JY29uLSR7cGFyYW1zLnJvd0luZGV4fVwiPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgPHBhdGggZD1cIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIvPlxuICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5gO1xuICAgICAgbGV0IGRlbGV0ZUljb24gPSBkaXYucXVlcnlTZWxlY3RvckFsbChgI2FjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9YClbMF07XG4gICAgICBkZWxldGVJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuZGVsZXRlUm93KHBhcmFtcy5yb3dJbmRleCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXY7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xuXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgLy8gZm9yIHNlYXJjaCByb3cgZGF0YSB3aWxsIGFsd2F5cyBiZSBvbmUgZW1wdHkgcm93XG4gICAgICAvLyB0b2RvOiByZS1lbmFibGUgYWdhaW4gd2hlbiBzZWFyY2ggaW4gdGFibGVzIGlzIHN1cHBvcnRlZFxuICAgICAgdmFsdWUgPSBbe31dO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IHZhbHVlIDogW107XG4gICAgLy8gY3JlYXRlIGEgY2xvbmUgb2YgdGhlIGFjdHVhbCB2YWx1ZSBmb3IgaW50ZXJuYWwgdXNhZ2VcbiAgICB0aGlzLmlubmVyVmFsdWUgPSBVdGlscy5mb3JtRGF0YVBhcnNlKFV0aWxzLmZvcm1EYXRhU3RyaW5naWZ5KHRoaXMudmFsdWUpKTtcblxuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZShmYWxzZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdEVkaXRSb3coKSwgMCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBjb2x1bW4gZGVmaW5pdGlvbiBmcm9tIGZvcm0gZWxlbWVudC5cbiAgICogQHJldHVybnMgY29sdW1uIGRlZmluaXRpb24gdG8gYmUgYWRkZWQgdG8gdGhlIGdyaWRPcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNvbHVtbkRlZmluaXRpb24ob3ZlcmxheT86IGJvb2xlYW4pOiBDb2xEZWZbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRzLm1hcCgoZWwpID0+IHtcbiAgICAgIGxldCBjb2w6IENvbERlZiA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZpbml0aW9uKGVsKTtcbiAgICAgIE9iamVjdC5hc3NpZ24oY29sLCB7XG4gICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICBzdXBwcmVzc0hlYWRlck1lbnVCdXR0b246IHRydWUsXG4gICAgICAgIGZpbHRlcjogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgIGZpZWxkOiBlbC5uYW1lLFxuICAgICAgICByZWZEYXRhOiB7XG4gICAgICAgICAgLi4uY29sLnJlZkRhdGEsXG4gICAgICAgICAgX2VvRm9ybUVsZW1lbnQ6IGVsLFxuICAgICAgICAgIF9zaXR1YXRpb246IHRoaXMuX3BhcmFtcy5zaXR1YXRpb25cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsZXQgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnM7XG4gICAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICBjYWNoZWRDb2x1bW5zID0gdGhpcy5fY2FjaGVkQ29sdW1uc092ZXJsYXk7XG4gICAgICB9XG4gICAgICBsZXQgY2FjaGVkQ29sdW1uID0gY2FjaGVkQ29sdW1ucy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gZWwucW5hbWUpO1xuICAgICAgaWYgKGNhY2hlZENvbHVtbikge1xuICAgICAgICBjb2wud2lkdGggPSBjYWNoZWRDb2x1bW4ud2lkdGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkUm93KCkge1xuICAgIGNvbnN0IHJvd0RhdGEgPSB7fTtcbiAgICBjb25zdCBhc3luY0ZldGNoZXMgPSBbXTtcbiAgICB0aGlzLl9lbGVtZW50c1xuICAgICAgLmZvckVhY2goZWwgPT4ge1xuICAgICAgICBpZiAoZWwuZGVmYXVsdHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByb3dEYXRhW2VsLm5hbWVdID0gZWwuZGVmYXVsdHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGVsLmRlZmF1bHR2YWx1ZWZ1bmN0aW9uKSB7XG4gICAgICAgICAgcm93RGF0YVtlbC5uYW1lXSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXREZWZhdWx0VmFsdWUoZWwuZGVmYXVsdHZhbHVlZnVuY3Rpb24pO1xuICAgICAgICAgIGlmIChlbC5kZWZhdWx0dmFsdWVmdW5jdGlvbiA9PT0gJ0NVUlJFTlRfVVNFUicpIHtcbiAgICAgICAgICAgIGFzeW5jRmV0Y2hlcy5wdXNoKHRoaXMucmVzb2x2ZU9yZ0RhdGFNZXRhKGVsLm5hbWUsIHJvd0RhdGFbZWwubmFtZV0pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgaWYgKGFzeW5jRmV0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3JrSm9pbihhc3luY0ZldGNoZXMpLnN1YnNjcmliZSgocmVzOiB7a2V5OiBzdHJpbmcsIHZhbHVlOiBhbnl9W10pID0+IHtcbiAgICAgICAgcmVzLmZvckVhY2gociA9PiB7XG4gICAgICAgICAgcm93RGF0YVtyLmtleV0gPSByLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRFZGl0Um93KC0xLCByb3dEYXRhKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3coLTEsIHJvd0RhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU9yZ0RhdGFNZXRhKGVsZW1lbnROYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdCh2YWx1ZSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gKHtcbiAgICAgICAga2V5OiBgJHtlbGVtZW50TmFtZX1fbWV0YWAsXG4gICAgICAgIHZhbHVlOiByZXNcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICBlZGl0Um93KGV2ZW50KSB7XG4gICAgdGhpcy5zZXRFZGl0Um93KGV2ZW50Lm5vZGUuaWQsIGV2ZW50Lm5vZGUuZGF0YSk7XG4gIH1cblxuICBvbkVkaXRDb21wbGV0ZShldmVudCkge1xuICAgIC8vdG9kbzogaXMgaXQgb2Jzb2xldGU/XG4gIH1cblxuICBwcml2YXRlIHNldEVkaXRSb3coaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XG4gICAgLy8gc2V0dXAgdGhlIHJvdyB0byBiZSBlZGl0ZWQuIEJlc2lkZSBzb21lIHByb3BlcnRpZXMsIHRoZVxuICAgIC8vIHJvdyBjb250YWlucyBhIGZvcm0gbW9kZWwgYW5kIGZvcm0gZGF0YS4gSWYgdGhlIHBhcmVudCBmb3JtIG1vZGVsXG4gICAgLy8gcHJvdmlkZWQgYSBzY3JpcHQsIHRoaXMgd2lsbCBiZSBhZGRlZCBhcyB3ZWxsLCBzbyBlZGl0aW5nIGEgcm93IHdpbGxcbiAgICAvLyByZXNwZWN0IHRoZSBmb3JtIHNjcmlwdC5cbiAgICB0aGlzLmVkaXRpbmdSb3cgPSB7XG4gICAgICBzaXR1YXRpb246IHRoaXMuX3BhcmFtcy5zaXR1YXRpb24sXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICB0YWJsZUVsZW1lbnQ6IHRoaXMuX3BhcmFtcy5lbGVtZW50LFxuICAgICAgZm9ybToge1xuICAgICAgICBlbGVtZW50czogdGhpcy5fZWxlbWVudHMsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLl9wYXJhbXMuZWxlbWVudC5yZWFkb25seSxcbiAgICAgICAgZGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgLy8gd2UgbmVlZCB0aGlzIGxpbmUgdG8gcmVsb2FkIHRoZSBjYWNoZWQgY29sdW1ucyBpbiBjYXNlIG9mIHJlb3BlbmluZyB0aGUgZGlhbG9nIHdpdGhvdXQgcmVmcmVzaGluZyB0aGUgcGFnZVxuICAgIHRoaXMucGFyYW1zID0gdGhpcy5fcGFyYW1zO1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdEVkaXRSb3coKSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEVkaXRSb3coKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheUdyaWQpIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWQuYXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgICBpZiAodGhpcy5lZGl0aW5nUm93ICYmIHRoaXMuZWRpdGluZ1Jvdy5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGV0IHJvd05vZGUgPSB0aGlzLm92ZXJsYXlHcmlkLmFwaS5nZXRSb3dOb2RlKCcnICsgdGhpcy5lZGl0aW5nUm93LmluZGV4KTtcbiAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZCh0cnVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZC5hcGkuZW5zdXJlTm9kZVZpc2libGUocm93Tm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJsZVZhbHVlKHByb3BhZ2F0ZUNoYW5nZSA9IHRydWUpIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5uZXJWYWx1ZTtcblxuICAgIHRoaXMuYWdHcmlkPy5hcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgdGhpcy5vdmVybGF5R3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCB0aGlzLmlubmVyVmFsdWUpO1xuXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy52YWx1ZS5pbmNsdWRlcygnaXNOZXdSb3cnKSkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnZhbHVlWydpc05ld1JvdyddO1xuICAgIH1cbiAgICBwcm9wYWdhdGVDaGFuZ2UgJiYgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBjYW5jZWxSb3dFZGl0KCkge1xuICAgIGlmICh0aGlzLnJvd0VkaXQpIHtcbiAgICAgIHRoaXMucm93RWRpdC5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICAgIHRoaXMuZWRpdGluZ1JvdyA9IG51bGw7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuZWRpdGluZ1JvdyA9IG51bGw7XG4gICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWxJbXBvcnRSZXBvcnQoKSB7XG4gICAgdGhpcy5zaG93SW1wb3J0UmVwb3J0RGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5tYXBwZWRSb3dzID0gW107XG4gICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMgPSBbXTtcbiAgfVxuXG4gIHVwZGF0ZVJvdyhyb3dSZXN1bHQ6IGFueSkge1xuICAgIGNvbnN0IGlzTmV3Um93ID0gcm93UmVzdWx0LmluZGV4ID09PSAtMTtcbiAgICBpZiAoaXNOZXdSb3cpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZS5wdXNoKHsuLi5yb3dSZXN1bHQucm93RGF0YSwgLi4ue2lzTmV3Um93OiB0cnVlfX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgLy8gdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF0gPSB7Li4udGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF0sIC4uLnJvd1Jlc3VsdC5yb3dEYXRhfTtcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF1bZWwubmFtZV0gPSByb3dSZXN1bHQucm93RGF0YVtlbC5uYW1lXTtcbiAgICAgICAgaWYgKHJvd1Jlc3VsdC5yb3dEYXRhW2VsLm5hbWUgKyAnX21ldGEnXSAmJiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uICE9PSAnU0VBUkNIJykge1xuICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdW2VsLm5hbWUgKyAnX21ldGEnXSA9IHJvd1Jlc3VsdC5yb3dEYXRhW2VsLm5hbWUgKyAnX21ldGEnXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgIGlmICh0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChpc05ld1JvdyAmJiAhcm93UmVzdWx0LmNyZWF0ZU5ld1Jvdykge1xuICAgICAgdGhpcy5zZXRFZGl0Um93KHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxLCB0aGlzLmlubmVyVmFsdWVbdGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDFdKTtcbiAgICB9IGVsc2UgaWYgKHJvd1Jlc3VsdC5jcmVhdGVOZXdSb3cpIHtcbiAgICAgIHRoaXMuYWRkUm93KCk7XG4gICAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWQuYXBpLmdldFJvd05vZGUoJycgKyAodGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEpKTtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWQuYXBpLmVuc3VyZU5vZGVWaXNpYmxlKHJvd05vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3cocm93UmVzdWx0LmluZGV4LCB0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgY29weVJvdyhyb3dSZXN1bHQ6IGFueSkge1xuICAgIHJvd1Jlc3VsdC5pbmRleCA9IC0xO1xuICAgIHRoaXMuaW5uZXJWYWx1ZS5wdXNoKHsuLi5yb3dSZXN1bHQucm93RGF0YSwgLi4ue2lzTmV3Um93OiB0cnVlfX0pO1xuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgIGlmIChyb3dSZXN1bHQuY3JlYXRlTmV3Um93KSB7XG4gICAgICB0aGlzLmFkZFJvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3codGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm93UmVzdWx0LnJvd0RhdGEpKSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlUm93KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5pbm5lclZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgICAgIGlmICh0aGlzLmlubmVyVmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IGluZGV4ID09IHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggPyB0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSA6IGluZGV4O1xuICAgICAgICB0aGlzLnNldEVkaXRSb3cobmV4dEluZGV4LCB0aGlzLmlubmVyVmFsdWVbbmV4dEluZGV4XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhbmNlbFJvd0VkaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbGVhclJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5pbm5lclZhbHVlW2luZGV4XSA9IHt9O1xuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICB9XG5cbiAgZXhwb3J0Q1NWKCkge1xuICAgIHRoaXMuYWdHcmlkLmFwaS5leHBvcnREYXRhQXNDc3Yoe1xuICAgICAgLi4udGhpcy5ncmlkQXBpLmNzdkV4cG9ydFBhcmFtcyxcbiAgICAgIGZpbGVOYW1lOiB0aGlzLl9wYXJhbXMuZWxlbWVudC5sYWJlbFxuICAgIH0pO1xuICB9XG5cbiAgaW1wb3J0Q1NWKGV2ZW50KSB7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5fcGFyYW1zLmVsZW1lbnQuZWxlbWVudHM7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LmZpbGVzWzBdO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGUgPT4ge1xuICAgICAgbGV0IHBhcnNlZGF0YSA9IFtdO1xuICAgICAgaWYgKHR5cGVvZiBlLnRhcmdldC5yZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGxldCBuZXdMaW5lQnJlYWsgPSBlLnRhcmdldC5yZXN1bHQuc3BsaXQoJ1xcbicpLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0ICE9PSAnJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3TGluZUJyZWFrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcGFyc2VkYXRhLnB1c2gobmV3TGluZUJyZWFrW2ldLnNwbGl0KCc7JykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnNlZGF0YS5sZW5ndGggPiA1MDAwKSB7XG4gICAgICAgICAgdGhpcy50b2FzdC5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLnVwbG9hZC5lcnJvcicpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VkYXRhID0gcGFyc2VkYXRhLm1hcChkYXRhID0+IGRhdGEubWFwKGQgPT4gZC5yZXBsYWNlKC9cIi9naSwgJycpLnJlcGxhY2UoJ1xcbicsICcnKS5yZXBsYWNlKC9bXi0uOixhLXpBLVowLTkoKSBdL2csICcnKS50cmltKCkpKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzLm1hcChjb2x1bW4gPT4gY29sdW1uWydmaWVsZCddKTtcbiAgICAgICAgY29uc3QgY29sdW1uc1VwbG9hZGVkID0gcGFyc2VkYXRhWzBdO1xuICAgICAgICBwYXJzZWRhdGEuc2hpZnQoKTtcbiAgICAgICAgY29uc3Qgcm93c1VwbG9hZGVkID0gcGFyc2VkYXRhO1xuXG4gICAgICAgIGNvbnN0IG1ldGFGaWVsZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd3NVcGxvYWRlZC5sZW5ndGg7IHJvd0luZGV4KyspIHtcbiAgICAgICAgICBjb25zdCBtYXBwZWRSb3cgPSB7fTtcbiAgICAgICAgICBsZXQgY3VycmVudFJvdyA9IHJvd3NVcGxvYWRlZFtyb3dJbmRleF07XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50Um93Lmxlbmd0aCAmJiBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3dbaV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09IGNvbHVtbnNbaV0pO1xuICAgICAgICAgICAgICBpZiAoY3VycmVudEZpZWxkLnR5cGUgPT09ICdPUkdBTklaQVRJT04nKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9yZ09iaiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3QoY3VycmVudFJvd1tpXSkpO1xuICAgICAgICAgICAgICAgIGlmIChvcmdPYmouYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBjdXJyZW50Um93W2ldO1xuICAgICAgICAgICAgICAgICAgbWV0YUZpZWxkcy5wdXNoKHtjb2x1bW46IGNvbHVtbnNbaV0sIHJvd0luZGV4OiByb3dJbmRleCwgdmFsdWU6IG9yZ09ian0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSAnJztcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcGluZ0Vycm9yRmllbGRzLnB1c2goe3RlY2huaWNhbE5hbWU6IGNvbHVtbnNbaV0sIHVwbG9hZGVkTmFtZTogY29sdW1uc1VwbG9hZGVkW2ldLCByb3c6IHJvd0luZGV4LCB2YWx1ZTogY3VycmVudFJvd1tpXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RmllbGQudHlwZSA9PT0gJ0NPREVTWVNURU0nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29kZXN5c3RlbSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGN1cnJlbnRGaWVsZC5jb2Rlc3lzdGVtLmlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2Rlc3lzdGVtRW50cnkgPSBjb2Rlc3lzdGVtLmVudHJpZXMuZmluZChlbnRyeSA9PiBlbnRyeS5kYXRhID09PSBjdXJyZW50Um93W2ldIHx8IGVudHJ5LmRlZmF1bHRyZXByZXNlbnRhdGlvbiA9PT0gY3VycmVudFJvd1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGVzeXN0ZW1FbnRyeSkge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gY3VycmVudFJvd1tpXTtcbiAgICAgICAgICAgICAgICAgIG1ldGFGaWVsZHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uc1tpXSxcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtpZDogY29kZXN5c3RlbUVudHJ5LmlkLCBkZWZhdWx0cmVwcmVzZW50YXRpb246IGNvZGVzeXN0ZW1FbnRyeS5kZWZhdWx0cmVwcmVzZW50YXRpb24sIGxhYmVsOiBjb2Rlc3lzdGVtRW50cnkubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRGaWVsZC50eXBlID09PSAnUkVGRVJFTkNFJykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Um93W2ldLmxlbmd0aCA9PT0gMzIpIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IGN1cnJlbnRSb3dbaV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRGaWVsZC50eXBlID09PSAnREFURVRJTUUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ldyBEYXRlKGN1cnJlbnRSb3dbaV0pLnRvU3RyaW5nKCkgPT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSAnJztcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcGluZ0Vycm9yRmllbGRzLnB1c2goe3RlY2huaWNhbE5hbWU6IGNvbHVtbnNbaV0sIHVwbG9hZGVkTmFtZTogY29sdW1uc1VwbG9hZGVkW2ldLCByb3c6IHJvd0luZGV4LCB2YWx1ZTogY3VycmVudFJvd1tpXX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBjdXJyZW50Um93W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RmllbGQudHlwZSA9PT0gJ05VTUJFUicpIHtcbiAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBuZXcgTG9jYWxlTnVtYmVyUGlwZSh0aGlzLnRyYW5zbGF0ZSkuc3RyaW5nVG9OdW1iZXIoY3VycmVudFJvd1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKG1hcHBlZFJvd1tjb2x1bW5zW2ldXSkpIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IGN1cnJlbnRSb3dbaV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tYXBwZWRSb3dzLnB1c2gobWFwcGVkUm93KTtcbiAgICAgICAgfVxuICAgICAgICBtZXRhRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRoaXMubWFwcGVkUm93c1tmaWVsZC5yb3dJbmRleF1bZmllbGQuY29sdW1uICsgJ19tZXRhJ10gPSBmaWVsZC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3BlbkltcG9ydFJlcG9ydERpYWxvZygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbiAgfVxuXG4gIGFkZEltcG9ydFZhbHVlc1RvVGFibGUoKSB7XG4gICAgdGhpcy5zaG93SW1wb3J0UmVwb3J0RGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuRGlhbG9nKCk7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gWy4uLnRoaXMuaW5uZXJWYWx1ZSwgLi4udGhpcy5tYXBwZWRSb3dzXTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgfVxuXG4gIHNpemVUb0ZpdChvdmVybGF5PzogYm9vbGVhbikge1xuICAgIGlmIChvdmVybGF5KSB7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWdHcmlkLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRpYWxvZygpIHtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgbGluZSB0byByZWxvYWQgdGhlIGNhY2hlZCBjb2x1bW5zIGluIGNhc2Ugb2YgcmVvcGVuaW5nIHRoZSBkaWFsb2cgd2l0aG91dCByZWZyZXNoaW5nIHRoZSBwYWdlXG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLl9wYXJhbXM7XG4gICAgdGhpcy5zaG93RGlhbG9nID0gdHJ1ZTtcbiAgfVxuXG4gIG9wZW5JbXBvcnRSZXBvcnREaWFsb2coKSB7XG4gICAgdGhpcy5zaG93SW1wb3J0UmVwb3J0RGlhbG9nID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUYWJsZURhdGEoKTogYm9vbGVhbiB7XG4gICAgLy8gdG9kbzogaW1wbGVtZW50XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZShjOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVRhYmxlRGF0YSgpID8gbnVsbCA6IHtcbiAgICAgIHRhYmxlOiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBvbk1vdXNlRG93bigkZXZlbnQ6IGFueSkge1xuICAgIGlmICgkZXZlbnQuYnV0dG9uID09PSAwICYmIHRoaXMub3ZlcmxheUdyaWQ/LmFwaS5nZXRHcmlkT3B0aW9uKCdzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uJykpIHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5jaGVja0ZvclBlbmRpbmdUYXNrcyh0aGlzLnJvd0VkaXQucGVuZGluZ1Rhc2tJZCkpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZD8uYXBpLnVwZGF0ZUdyaWRPcHRpb25zKHsgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbjogZmFsc2UsIHN1cHByZXNzQ2VsbEZvY3VzOiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5yb3dFZGl0LmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RFdmVudCgkZXZlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEV2ZW50KCRldmVudDogTW91c2VFdmVudCB8IGFueSkge1xuICAgIGNvbnN0IGNvbElkID0gJGV2ZW50LmNvbXBvc2VkUGF0aD8uKCkuZmluZCgoZWwpID0+IGVsPy5nZXRBdHRyaWJ1dGUoJ2NvbC1pZCcpKT8uZ2V0QXR0cmlidXRlKCdjb2wtaWQnKTtcbiAgICBjb25zdCByb3dJZCA9ICRldmVudC5jb21wb3NlZFBhdGg/LigpLmZpbmQoKGVsKSA9PiBlbD8uZ2V0QXR0cmlidXRlKCdyb3ctaWQnKSk/LmdldEF0dHJpYnV0ZSgncm93LWlkJyk7XG4gICAgaWYgKGNvbElkKSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLm92ZXJsYXlHcmlkLmFwaS5nZXRSb3dOb2RlKHJvd0lkKTtcbiAgICAgIHJvdy5zZXRTZWxlY3RlZCh0cnVlLCB0cnVlKTtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWQuYXBpLnNldEZvY3VzZWRDZWxsKHJvdy5yb3dJbmRleCwgY29sSWQpO1xuICAgIH1cbiAgfVxuXG4gIG9uU29ydENoYW5nZWQoKSB7XG4gICAgbGV0IHJvd05vZGUgPSB0aGlzLm92ZXJsYXlHcmlkLmFwaS5nZXRSb3dOb2RlKCcnICsgdGhpcy5lZGl0aW5nUm93LmluZGV4KTtcbiAgICB0aGlzLm92ZXJsYXlHcmlkLmFwaS5lbnN1cmVOb2RlVmlzaWJsZShyb3dOb2RlKTtcbiAgfVxuXG4gIG9uQ2VsbENsaWNrZWQoJGV2ZW50KSB7XG4gICAgaWYgKCRldmVudC5jb2xEZWYuY2VsbENsYXNzID09PSAncm91dGVyLWxpbmstY2VsbCcgJiYgJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsICYmICF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrKCkpIHtcbiAgICAgIGlmICghJGV2ZW50Lm5vZGUuZ3JvdXAgJiYgJGV2ZW50LmRhdGEpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKCRldmVudC5ldmVudCwgJ2FnLXJvdycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2VsbENsaWNrZWRSb3dFZGl0KCRldmVudCkge1xuICAgIGlmICgkZXZlbnQucm93SW5kZXggIT09IG51bGwgJiYgIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2tGb3JQZW5kaW5nVGFza3ModGhpcy5yb3dFZGl0ID8gdGhpcy5yb3dFZGl0LnBlbmRpbmdUYXNrSWQgOiB1bmRlZmluZWQpKSB7XG4gICAgICBpZiAoISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICAgIGlmICgkZXZlbnQuY29sRGVmLmNlbGxDbGFzcyA9PT0gJ3JvdXRlci1saW5rLWNlbGwnKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKCRldmVudC5ldmVudCwgJ2FnLXJvdycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZWRpdFJvdygkZXZlbnQpO1xuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55LCBvdmVybGF5PzogYm9vbGVhbikge1xuICAgIGxldCBjb2x1bW5zRGVmaW5pdGlvbiA9IHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZic7XG4gICAgbGV0IGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zO1xuICAgIGlmIChvdmVybGF5KSB7XG4gICAgICBjb2x1bW5zRGVmaW5pdGlvbiA9IHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZk92ZXJsYXknO1xuICAgICAgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5O1xuICAgIH1cbiAgICBsZXQgY29sID0gY2FjaGVkQ29sdW1ucy5maW5kKGMgPT4gYy5xbmFtZSA9PT0gY29sdW1uLmNvbERlZi5yZWZEYXRhLnFuYW1lKTtcbiAgICBpZiAoY29sKSB7XG4gICAgICBjb2wud2lkdGggPSBjb2x1bW4uYWN0dWFsV2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlZENvbHVtbnMucHVzaCh7cW5hbWU6IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSwgd2lkdGg6IGNvbHVtbi5hY3R1YWxXaWR0aH0pO1xuICAgIH1cbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oY29sdW1uc0RlZmluaXRpb24sIGNhY2hlZENvbHVtbnMpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBfdXBkYXRlU3BsaXRWaWV3TGF5b3V0Q2FjaGUoKSB7XG4gIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XG4gIC8vICAgICB0aGlzLnNwbGl0Vmlldz8udXBkYXRlTGF5b3V0Q2FjaGUoKTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHRvZ2dsZVByZXZpZXcoKSB7XG4gICAgdGhpcy5zaG93UHJldmlldyA9ICF0aGlzLnNob3dQcmV2aWV3O1xuICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBsYXlvdXQgb2YgdGhlIHNwbGl0IHZpZXcgaXMgdXBkYXRlZCBhZnRlciB0aGUgcHJldmlldyBwYW5lbHNcbiAgICAvLyB2aXNpYmlsaXR5IGNoYW5nZWRcbiAgICAvLyB0aGlzLl91cGRhdGVTcGxpdFZpZXdMYXlvdXRDYWNoZSgpO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5zaG93UHJldmlldycsIHRoaXMuc2hvd1ByZXZpZXcpO1xuICB9XG5cbiAgLy8gbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAvLyAgIHRoaXMuX3VwZGF0ZVNwbGl0Vmlld0xheW91dENhY2hlKCk7XG4gIC8vIH1cblxuICBvbkxheW91dFNldHRpbmdzQ2hhbmdlKGxheW91dCkge1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5LCBsYXlvdXQpO1xuICAgIHRoaXMubGF5b3V0U2V0dGluZ3MgPSBsYXlvdXQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmhhc1ByZXZpZXdGaWxlID0gdGhpcy5oYXNQcmV2aWV3RmlsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5oYXNQcmV2aWV3RmlsZSA6ICEhdGhpcy5wYXJhbXMub2JqZWN0Py5jb250ZW50O1xuICAgIHRoaXMubGF5b3V0U2V0dGluZ3MgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSlcbiAgICAgID8gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuY2FjaGVMYXlvdXRLZXkpXG4gICAgICA6IHtkaXNhYmxlZDogZmFsc2UsIGFyZWFzOiBbe3Zpc2libGU6IHRydWUsIHNpemU6IDQwfSwge3Zpc2libGU6IHRydWUsIHNpemU6IDIwfSwge3Zpc2libGU6IGZhbHNlLCBzaXplOiA0MH1dfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlXCIgW25nQ2xhc3NdPVwie21lZGl1bTogX3BhcmFtcy5zaXplID09PSAnbWVkaXVtJywgbGFyZ2U6IF9wYXJhbXMuc2l6ZSA9PT0gJ2xhcmdlJ31cIj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlLWhlYWRlclwiPlxuICAgIDxzcGFuPnt7X3BhcmFtcy5lbGVtZW50LmxhYmVsfX08L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9wYXJhbXMuc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiPlxuXG4gICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2V4cGFuZC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4ub3Blbid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwib3BlbkRpYWxvZygpXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGZcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaXplX3RvX2ZpdC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uZml0J3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJzaXplVG9GaXQoKVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgKm5nSWY9XCJncmlkT3B0aW9ucy5yb3dEYXRhPy5sZW5ndGhcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19leHBvcnQuc3ZnJ1wiXG4gICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNzdid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZXhwb3J0Q1NWKClcIj48L2VvLWljb24+XG4gICAgICA8ZW8taWNvbiAqbmdJZj1cIiFfcGFyYW1zLmVsZW1lbnQucmVhZG9ubHlcIiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ltcG9ydC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4udXBsb2FkJ3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJmaWxlLmNsaWNrKClcIj48L2VvLWljb24+XG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuY3N2XCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCIgI2ZpbGUgKGNoYW5nZSk9XCJpbXBvcnRDU1YoJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnRhcmdldC52YWx1ZSA9IG51bGxcIj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmIGFkZC1yb3dcIiAqbmdJZj1cIiFfcGFyYW1zLmVsZW1lbnQucmVhZG9ubHlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hZGQuc3ZnJ1wiXG4gICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmFkZCd8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiYWRkUm93KClcIj48L2VvLWljb24+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJncmlkLWJvZHkgc2l6ZS17eyBwYXJhbXMuc2l6ZSB9fVwiPlxuICAgIDxhZy1ncmlkLWFuZ3VsYXIgI2FnR3JpZCAqbmdJZj1cImdyaWRSZWFkeVwiIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCIgW21vZHVsZXNdPVwibW9kdWxlc1wiIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXG4gICAgICAocm93RG91YmxlQ2xpY2tlZCk9XCJlZGl0Um93KCRldmVudClcIiAoY2VsbENsaWNrZWQpPVwib25DZWxsQ2xpY2tlZCgkZXZlbnQpXCIgKHNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWQoKVwiXG4gICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJvbkVkaXRDb21wbGV0ZSgkZXZlbnQpXCIgKGNvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudC5jb2x1bW4pXCI+XG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwicGFyYW1zLmVsZW1lbnQubGFiZWxcIiBbdmlzaWJsZV09XCJzaG93RGlhbG9nXCIgW2RpcnR5Q2hlY2tdPVwicm93RWRpdD8ucGVuZGluZ1Rhc2tJZFwiXG4gIFttaW5XaWR0aF09XCJfcGFyYW1zLnNpdHVhdGlvbiAhPT0gJ1NFQVJDSCcgPyBtaW5XaWR0aCA6IDIwMFwiIFt3aWR0aF09XCJfcGFyYW1zLnNpdHVhdGlvbiAhPT0gJ1NFQVJDSCcgPyAnOTV2dycgOiA1MDBcIlxuICBbaGVpZ2h0XT1cImhlaWdodFwiIFtzdHlsZUNsYXNzXT1cIidvYmplY3QtZm9ybS10YWJsZS1kaWFsb2cnXCIgKGhpZGUpPVwib25DbG9zZSgpXCIgW2lzRm9ybVRhYmxlXT1cInRydWVcIlxuICBbaGFzUHJldmlld0ZpbGVdPVwiaGFzUHJldmlld0ZpbGVcIiBbc2hvd1ByZXZpZXddPVwic2hvd1ByZXZpZXdcIiAob25Ub2dnbGVQcmV2aWV3KT1cInRvZ2dsZVByZXZpZXcoKVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJzaG93RGlhbG9nXCI+XG4gICAgPHl2Yy1zcGxpdC12aWV3IChsYXlvdXRTZXR0aW5nc0NoYW5nZSk9XCJvbkxheW91dFNldHRpbmdzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwhLS0gdGhlIHRhYmxlIGl0c2VsZi0tPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCJsYXlvdXRTZXR0aW5ncy5hcmVhc1swXS5zaXplXCIgW3Zpc2libGVdPVwiX3BhcmFtcy5zaXR1YXRpb24gIT09ICdTRUFSQ0gnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWZvcm0tdGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NpemVfdG9fZml0LnN2ZydcIlxuICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uZml0J3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJzaXplVG9GaXQodHJ1ZSlcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGYgYWRkLXJvd1wiICpuZ0lmPVwiIV9wYXJhbXMuZWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hZGQuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5hZGQnfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImFkZFJvdygpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtYm9keVwiPlxuICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyICNvdmVybGF5R3JpZCAqbmdJZj1cImdyaWRSZWFkeVwiIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCIgW21vZHVsZXNdPVwibW9kdWxlc1wiXG4gICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cIm92ZXJsYXlHcmlkT3B0aW9uc1wiIChjZWxsQ2xpY2tlZCk9XCJvbkNlbGxDbGlja2VkUm93RWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIiAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJvbkVkaXRDb21wbGV0ZSgkZXZlbnQpXCIgKGNvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudC5jb2x1bW4sIHRydWUpXCI+XG4gICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSB0YWJsZSBlZGl0IGNvbXBvbmVudC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCJsYXlvdXRTZXR0aW5ncy5hcmVhc1sxXS5zaXplXCIgW3Zpc2libGVdPVwiISFlZGl0aW5nUm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWJvZHlcIj5cbiAgICAgICAgICA8ZW8tcm93LWVkaXQgW3Jvd109XCJlZGl0aW5nUm93XCIgW2xpbWl0UmVhY2hlZF09XCJsaW1pdCA8PSBvdmVybGF5R3JpZE9wdGlvbnM/LnJvd0RhdGE/Lmxlbmd0aFwiICNyb3dFZGl0XG4gICAgICAgICAgICAob25TYXZlKT1cInVwZGF0ZVJvdygkZXZlbnQpXCIgKG9uU2F2ZUNvcHkpPVwiY29weVJvdygkZXZlbnQpXCIgKG9uRGVsZXRlKT1cImRlbGV0ZVJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkNhbmNlbCk9XCJjYW5jZWxSb3dFZGl0KClcIj48L2VvLXJvdy1lZGl0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gdmlld2VyLS0+XG4gICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cImxheW91dFNldHRpbmdzLmFyZWFzWzJdLnNpemVcIiBbdmlzaWJsZV09XCJzaG93UHJldmlldyAmJiBoYXNQcmV2aWV3RmlsZVwiPlxuICAgICAgICA8ZW8tbWVkaWEgKm5nSWY9XCJoYXNQcmV2aWV3RmlsZVwiIFt1bmRvY2tEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbdXNlVmVyc2lvbl09XCJwYXJhbXMub2JqZWN0Py5pZCA9PT0gcGFyYW1zLm9iamVjdD8uY29udGVudD8uaWRcIiBbZG1zT2JqZWN0XT1cInBhcmFtcy5vYmplY3RcIj48L2VvLW1lZGlhPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3l2Yy1zcGxpdC12aWV3PlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuXG48ZW8tZGlhbG9nIFt0aXRsZV09XCIoJ2VvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQudGl0bGUnIHwgdHJhbnNsYXRlKVwiIFt2aXNpYmxlXT1cInNob3dJbXBvcnRSZXBvcnREaWFsb2dcIlxuICAoaGlkZSk9XCJjYW5jZWxJbXBvcnRSZXBvcnQoKVwiIFtzdHlsZUNsYXNzXT1cIidpbXBvcnQtcmVwb3J0X19kaWFsb2cnXCI+XG4gIDxkaXYgY2xhc3M9XCJib2R5XCI+XG4gICAgPGg0IHRyYW5zbGF0ZSBbdHJhbnNsYXRlUGFyYW1zXT1cIntyZWFkUm93czogbWFwcGVkUm93cy5sZW5ndGh9XCI+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5yZWFkUm93czwvaDQ+XG4gICAgPGRpdiAqbmdJZj1cIm1hcHBpbmdFcnJvckZpZWxkcy5sZW5ndGggIT09IDBcIiBjbGFzcz1cImZsZXgtY29sXCI+XG4gICAgICA8aDQgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQuZXJyb3JzPC9oND5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMucm93PC90aD5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMuY3N2Q29sdW1uPC90aD5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMudGFibGVDb2x1bW48L3RoPlxuICAgICAgICAgICAgPHRoIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LmVycm9ycy52YWx1ZTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVycm9yIG9mIG1hcHBpbmdFcnJvckZpZWxkczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQ+e3tlcnJvci5yb3cgKyAxfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3tlcnJvci51cGxvYWRlZE5hbWV9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnRlY2huaWNhbE5hbWV9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnZhbHVlfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImNhbmNlbEltcG9ydFJlcG9ydCgpXCIgY2xhc3M9XCJidXR0b24tY2FuY2VsXCIgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkSW1wb3J0VmFsdWVzVG9UYWJsZSgpXCIgY2xhc3M9XCJwcmltYXJ5XCIgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQuaW1wb3J0PC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG4iXX0=
|
|
632
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFFbEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBdUIsYUFBYSxFQUFFLGlCQUFpQixFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBNkUsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9HLE9BQU8sRUFBQyxjQUFjLEVBQUUsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFjLE1BQU0sZ0RBQWdELENBQUM7QUFJekYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUF1QnhELElBQU0seUJBQXlC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QUFDLFFBQVEsQ0FBQzs7c0JBQ3RELFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNsRCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEQsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2xpZW50U2lkZVJvd01vZGVsTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsJztcbmltcG9ydCB7Q29sRGVmLCBHcmlkT3B0aW9ucywgTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0NzdkV4cG9ydE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2Nzdi1leHBvcnQnO1xuaW1wb3J0IHtDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBmb3J3YXJkUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBOb3RpZmljYXRpb25zU2VydmljZSwgU3lzdGVtU2VydmljZSwgVHJhbnNsYXRlU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tLCBmb3JrSm9pbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7Q2VsbFJlbmRlcmVyLCBHcmlkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi8uLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtFZGl0Um93LCBUYWJsZUNvbXBvbmVudFBhcmFtc30gZnJvbSAnLi9mb3JtLWVsZW1lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7Um93RWRpdENvbXBvbmVudH0gZnJvbSAnLi9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHtMb2NhbGVOdW1iZXJQaXBlfSBmcm9tIFwiLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmVcIjtcbmltcG9ydCB7QWdHcmlkQW5ndWxhcn0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2FuZ3VsYXInO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuc2NzcydcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCB7XG5cbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uczogYW55W107XG4gIHByaXZhdGUgX2NhY2hlZENvbHVtbnNPdmVybGF5OiBhbnlbXTtcblxuICBwdWJsaWMgbW9kdWxlczogTW9kdWxlW10gPSBbQ2xpZW50U2lkZVJvd01vZGVsTW9kdWxlLCBDc3ZFeHBvcnRNb2R1bGVdO1xuXG4gIEJBU0VfQ0FDSEVfTEFZT1VUX0tFWSA9ICd0YWJsZS5zdGF0ZSc7XG4gIGNhY2hlTGF5b3V0S2V5ID0gdGhpcy5CQVNFX0NBQ0hFX0xBWU9VVF9LRVk7XG5cbiAgQFZpZXdDaGlsZCgnYWdHcmlkJykgYWdHcmlkITogQWdHcmlkQW5ndWxhcjtcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheUdyaWQnKSBvdmVybGF5R3JpZCE6IEFnR3JpZEFuZ3VsYXI7XG4gIEBWaWV3Q2hpbGQoJ3Jvd0VkaXQnKSByb3dFZGl0OiBSb3dFZGl0Q29tcG9uZW50O1xuICAvLyBAVmlld0NoaWxkKCdzcGxpdFZpZXcnKSBzcGxpdFZpZXc6IFNwbGl0Q29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXI7XG4gIEBJbnB1dCgpIGhhc1ByZXZpZXdGaWxlOiBib29sZWFuO1xuICBASW5wdXQoKSBtaW5XaWR0aCA9ICc5N3Z3JztcbiAgQElucHV0KCkgaGVpZ2h0ID0gJzk1dmgnO1xuXG4gIF9wYXJhbXM6IFRhYmxlQ29tcG9uZW50UGFyYW1zO1xuICBwcml2YXRlIF9lbGVtZW50czogYW55W107XG4gIGdyaWRSZWFkeSA9IGZhbHNlO1xuICB2YWx1ZTogYW55W107XG4gIGlubmVyVmFsdWU6IGFueVtdO1xuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIG92ZXJsYXlHcmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIGVkaXRpbmdSb3c6IEVkaXRSb3c7XG4gIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgc2hvd0ltcG9ydFJlcG9ydERpYWxvZyA9IGZhbHNlO1xuICBtYXBwZWRSb3dzID0gW107XG4gIG1hcHBpbmdFcnJvckZpZWxkcyA9IFtdO1xuICBsYXlvdXRTZXR0aW5ncztcblxuICBASW5wdXQoKVxuICBzZXQgcGFyYW1zKHA6IFRhYmxlQ29tcG9uZW50UGFyYW1zKSB7XG4gICAgdGhpcy5jYWNoZUxheW91dEtleSA9IHAgPyBgJHt0aGlzLkJBU0VfQ0FDSEVfTEFZT1VUX0tFWX0uJHtwLmVsZW1lbnQubmFtZX1gIDogdGhpcy5CQVNFX0NBQ0hFX0xBWU9VVF9LRVk7XG4gICAgaWYgKHApIHtcbiAgICAgIHRoaXMuX3BhcmFtcyA9IHA7XG4gICAgICB0aGlzLl9jYWNoZWRDb2x1bW5zID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZicpIHx8IFtdO1xuICAgICAgdGhpcy5fY2FjaGVkQ29sdW1uc092ZXJsYXkgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSArICcuY29sRGVmT3ZlcmxheScpIHx8IFtdO1xuICAgICAgdGhpcy5zaG93UHJldmlldyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5zaG93UHJldmlldycpO1xuXG5cbiAgICAgIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPSB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uO1xuICAgICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAgIHRoaXMuX3BhcmFtcy5zaXplID0gJ3N1cGVyc21hbGwnO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5fcGFyYW1zLnNpemUpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1zLnNpemUgPSAnc21hbGwnO1xuICAgICAgfVxuICAgICAgdGhpcy5ncmlkUmVhZHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2VsZW1lbnRzID0gcC5lbGVtZW50LmVsZW1lbnRzO1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gdGhpcy5jcmVhdGVDb2x1bW5EZWZpbml0aW9uKCk7XG4gICAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzLnB1c2goe2hlYWRlck5hbWU6ICcnLCBjb2xJZDogJ2FjdGlvbnMnLCB3aWR0aDogMzQsIG1pbldpZHRoOiAzNCwgcGlubmVkOiAncmlnaHQnLCBjZWxsUmVuZGVyZXI6IHRoaXMuYWN0aW9uc0NlbGxSZW5kZXJlcn0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuY3JlYXRlQ29sdW1uRGVmaW5pdGlvbih0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ncmlkUmVhZHkgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYWx0LnNoaWZ0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuc2hpZnQuYycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5hbHQuYycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5jJywgWyckZXZlbnQnXSlcbiAgY29weUNlbGxIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5ncmlkQXBpLmNvcHlUb0NsaXBib2FyZChldmVudCwgdGhpcy5hZ0dyaWQsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkQXBpOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0OiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSA8R3JpZE9wdGlvbnM+e1xuICAgICAgY29udGV4dDogdGhpcy5ncmlkQXBpLmdldENvbnRleHQoKSxcbiAgICAgIGhlYWRlckhlaWdodDogMzAsXG4gICAgICByb3dIZWlnaHQ6IDMwLFxuICAgICAgcm93QnVmZmVyOiAyMCxcbiAgICAgIG11bHRpU29ydEtleTogJ2N0cmwnLFxuICAgICAgYWNjZW50ZWRTb3J0OiB0cnVlLFxuICAgICAgLy8gc3VwcHJlc3NDZWxsU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgcm93U2VsZWN0aW9uOiAnc2luZ2xlJyxcbiAgICAgIHN1cHByZXNzTW92YWJsZUNvbHVtbnM6IHRydWUsXG4gICAgICBzdXBwcmVzc05vUm93c092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0xvYWRpbmdPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NDb250ZXh0TWVudTogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LnRhYmxlQ29tcG9uZW50ID0gdGhpcztcblxuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPntcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ3JpZEFwaS5nZXRDb250ZXh0KCksXG4gICAgICBoZWFkZXJIZWlnaHQ6IDMwLFxuICAgICAgcm93SGVpZ2h0OiAzMCxcbiAgICAgIHJvd0J1ZmZlcjogMjAsXG4gICAgICBtdWx0aVNvcnRLZXk6ICdjdHJsJyxcbiAgICAgIGFjY2VudGVkU29ydDogdHJ1ZSxcbiAgICAgIC8vIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgICBzdXBwcmVzc01vdmFibGVDb2x1bW5zOiB0cnVlLFxuICAgICAgc3VwcHJlc3NOb1Jvd3NPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NMb2FkaW5nT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzQ29udGV4dE1lbnU6IHRydWVcbiAgICB9O1xuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmNvbnRleHQudGFibGVDb21wb25lbnQgPSB0aGlzO1xuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnJvd0NsYXNzUnVsZXMgPSB7XG4gICAgICAnbmV3LXJvdyc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5kYXRhLmlzTmV3Um93KSB7XG4gICAgICAgICAgZGVsZXRlIHBhcmFtcy5kYXRhLmlzTmV3Um93O1xuICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5pbm5lclZhbHVlW3BhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LmlubmVyVmFsdWUubGVuZ3RoIC0gMV0uaXNOZXdSb3c7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMudGFza3MkLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgodGFza3MpID0+IHtcbiAgICAgIGNvbnN0IHMgPSB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5zdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gISF0aGlzLnJvd0VkaXQgJiYgISF0YXNrcy5maW5kKCh0YXNrKSA9PiB0YXNrID09PSB0aGlzLnJvd0VkaXQucGVuZGluZ1Rhc2tJZCk7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkPy5hcGkudXBkYXRlR3JpZE9wdGlvbnMoeyBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uOiBzLCBzdXBwcmVzc0NlbGxGb2N1czogcyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFjdGlvbnNDZWxsUmVuZGVyZXIocGFyYW1zKSB7XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgaWYgKHBhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LnBhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICBkaXYuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9XCJhY3Rpb24taWNvblwiIGlkPVwiYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1cIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+YDtcbiAgICAgIGxldCBjbGVhckljb24gPSBkaXYucXVlcnlTZWxlY3RvckFsbChgI2FjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9YClbMF07XG4gICAgICBjbGVhckljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5jbGVhclJvdyhwYXJhbXMucm93SW5kZXgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGl2LmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwiYWN0aW9uLWljb25cIiBpZD1cImFjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9XCI+XG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PmA7XG4gICAgICBsZXQgZGVsZXRlSWNvbiA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKGAjYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1gKVswXTtcbiAgICAgIGRlbGV0ZUljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5kZWxldGVSb3cocGFyYW1zLnJvd0luZGV4KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpdjtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG5cbiAgICBpZiAoIXZhbHVlICYmIHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAvLyBmb3Igc2VhcmNoIHJvdyBkYXRhIHdpbGwgYWx3YXlzIGJlIG9uZSBlbXB0eSByb3dcbiAgICAgIC8vIHRvZG86IHJlLWVuYWJsZSBhZ2FpbiB3aGVuIHNlYXJjaCBpbiB0YWJsZXMgaXMgc3VwcG9ydGVkXG4gICAgICB2YWx1ZSA9IFt7fV07XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gdmFsdWUgOiBbXTtcbiAgICAvLyBjcmVhdGUgYSBjbG9uZSBvZiB0aGUgYWN0dWFsIHZhbHVlIGZvciBpbnRlcm5hbCB1c2FnZVxuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFV0aWxzLmZvcm1EYXRhUGFyc2UoVXRpbHMuZm9ybURhdGFTdHJpbmdpZnkodGhpcy52YWx1ZSkpO1xuXG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKGZhbHNlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RWRpdFJvdygpLCAwKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGNvbHVtbiBkZWZpbml0aW9uIGZyb20gZm9ybSBlbGVtZW50LlxuICAgKiBAcmV0dXJucyBjb2x1bW4gZGVmaW5pdGlvbiB0byBiZSBhZGRlZCB0byB0aGUgZ3JpZE9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ29sdW1uRGVmaW5pdGlvbihvdmVybGF5PzogYm9vbGVhbik6IENvbERlZltdIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHMubWFwKChlbCkgPT4ge1xuICAgICAgbGV0IGNvbDogQ29sRGVmID0gdGhpcy5ncmlkQXBpLmdldENvbHVtbkRlZmluaXRpb24oZWwpO1xuICAgICAgT2JqZWN0LmFzc2lnbihjb2wsIHtcbiAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgIHN1cHByZXNzSGVhZGVyTWVudUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgZmllbGQ6IGVsLm5hbWUsXG4gICAgICAgIHJlZkRhdGE6IHtcbiAgICAgICAgICAuLi5jb2wucmVmRGF0YSxcbiAgICAgICAgICBfZW9Gb3JtRWxlbWVudDogZWwsXG4gICAgICAgICAgX3NpdHVhdGlvbjogdGhpcy5fcGFyYW1zLnNpdHVhdGlvblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxldCBjYWNoZWRDb2x1bW5zID0gdGhpcy5fY2FjaGVkQ29sdW1ucztcbiAgICAgIGlmIChvdmVybGF5KSB7XG4gICAgICAgIGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zT3ZlcmxheTtcbiAgICAgIH1cbiAgICAgIGxldCBjYWNoZWRDb2x1bW4gPSBjYWNoZWRDb2x1bW5zLmZpbmQoZiA9PiBmLnFuYW1lID09PSBlbC5xbmFtZSk7XG4gICAgICBpZiAoY2FjaGVkQ29sdW1uKSB7XG4gICAgICAgIGNvbC53aWR0aCA9IGNhY2hlZENvbHVtbi53aWR0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2w7XG4gICAgfSk7XG4gIH1cblxuICBhZGRSb3coKSB7XG4gICAgY29uc3Qgcm93RGF0YSA9IHt9O1xuICAgIGNvbnN0IGFzeW5jRmV0Y2hlcyA9IFtdO1xuICAgIHRoaXMuX2VsZW1lbnRzXG4gICAgICAuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIGlmIChlbC5kZWZhdWx0dmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJvd0RhdGFbZWwubmFtZV0gPSBlbC5kZWZhdWx0dmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZWwuZGVmYXVsdHZhbHVlZnVuY3Rpb24pIHtcbiAgICAgICAgICByb3dEYXRhW2VsLm5hbWVdID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldERlZmF1bHRWYWx1ZShlbC5kZWZhdWx0dmFsdWVmdW5jdGlvbik7XG4gICAgICAgICAgaWYgKGVsLmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnQ1VSUkVOVF9VU0VSJykge1xuICAgICAgICAgICAgYXN5bmNGZXRjaGVzLnB1c2godGhpcy5yZXNvbHZlT3JnRGF0YU1ldGEoZWwubmFtZSwgcm93RGF0YVtlbC5uYW1lXSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBpZiAoYXN5bmNGZXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcmtKb2luKGFzeW5jRmV0Y2hlcykuc3Vic2NyaWJlKChyZXM6IHtrZXk6IHN0cmluZywgdmFsdWU6IGFueX1bXSkgPT4ge1xuICAgICAgICByZXMuZm9yRWFjaChyID0+IHtcbiAgICAgICAgICByb3dEYXRhW3Iua2V5XSA9IHIudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldEVkaXRSb3coLTEsIHJvd0RhdGEpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdygtMSwgcm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlT3JnRGF0YU1ldGEoZWxlbWVudE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0KHZhbHVlKS5waXBlKFxuICAgICAgbWFwKHJlcyA9PiAoe1xuICAgICAgICBrZXk6IGAke2VsZW1lbnROYW1lfV9tZXRhYCxcbiAgICAgICAgdmFsdWU6IHJlc1xuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIGVkaXRSb3coZXZlbnQpIHtcbiAgICB0aGlzLnNldEVkaXRSb3coZXZlbnQubm9kZS5pZCwgZXZlbnQubm9kZS5kYXRhKTtcbiAgfVxuXG4gIG9uRWRpdENvbXBsZXRlKGV2ZW50KSB7XG4gICAgLy90b2RvOiBpcyBpdCBvYnNvbGV0ZT9cbiAgfVxuXG4gIHByaXZhdGUgc2V0RWRpdFJvdyhpbmRleDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcbiAgICAvLyBzZXR1cCB0aGUgcm93IHRvIGJlIGVkaXRlZC4gQmVzaWRlIHNvbWUgcHJvcGVydGllcywgdGhlXG4gICAgLy8gcm93IGNvbnRhaW5zIGEgZm9ybSBtb2RlbCBhbmQgZm9ybSBkYXRhLiBJZiB0aGUgcGFyZW50IGZvcm0gbW9kZWxcbiAgICAvLyBwcm92aWRlZCBhIHNjcmlwdCwgdGhpcyB3aWxsIGJlIGFkZGVkIGFzIHdlbGwsIHNvIGVkaXRpbmcgYSByb3cgd2lsbFxuICAgIC8vIHJlc3BlY3QgdGhlIGZvcm0gc2NyaXB0LlxuICAgIHRoaXMuZWRpdGluZ1JvdyA9IHtcbiAgICAgIHNpdHVhdGlvbjogdGhpcy5fcGFyYW1zLnNpdHVhdGlvbixcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIHRhYmxlRWxlbWVudDogdGhpcy5fcGFyYW1zLmVsZW1lbnQsXG4gICAgICBmb3JtOiB7XG4gICAgICAgIGVsZW1lbnRzOiB0aGlzLl9lbGVtZW50cyxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuX3BhcmFtcy5lbGVtZW50LnJlYWRvbmx5LFxuICAgICAgICBkYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgbGluZSB0byByZWxvYWQgdGhlIGNhY2hlZCBjb2x1bW5zIGluIGNhc2Ugb2YgcmVvcGVuaW5nIHRoZSBkaWFsb2cgd2l0aG91dCByZWZyZXNoaW5nIHRoZSBwYWdlXG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLl9wYXJhbXM7XG4gICAgdGhpcy5zaG93RGlhbG9nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RWRpdFJvdygpLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0RWRpdFJvdygpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5R3JpZCkge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZC5hcGkuZGVzZWxlY3RBbGwoKTtcbiAgICAgIGlmICh0aGlzLmVkaXRpbmdSb3cgJiYgdGhpcy5lZGl0aW5nUm93LmluZGV4ICE9PSAtMSkge1xuICAgICAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWQuYXBpLmdldFJvd05vZGUoJycgKyB0aGlzLmVkaXRpbmdSb3cuaW5kZXgpO1xuICAgICAgICByb3dOb2RlLnNldFNlbGVjdGVkKHRydWUsIHRydWUpO1xuICAgICAgICB0aGlzLm92ZXJsYXlHcmlkLmFwaS5lbnN1cmVOb2RlVmlzaWJsZShyb3dOb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlVmFsdWUocHJvcGFnYXRlQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5yb3dEYXRhID0gdGhpcy5pbm5lclZhbHVlO1xuXG4gICAgdGhpcy5hZ0dyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgdGhpcy5pbm5lclZhbHVlKTtcbiAgICB0aGlzLm92ZXJsYXlHcmlkPy5hcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIHRoaXMuaW5uZXJWYWx1ZSk7XG5cbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlO1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnZhbHVlLmluY2x1ZGVzKCdpc05ld1JvdycpKSkge1xuICAgICAgZGVsZXRlIHRoaXMudmFsdWVbJ2lzTmV3Um93J107XG4gICAgfVxuICAgIHByb3BhZ2F0ZUNoYW5nZSAmJiB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGNhbmNlbFJvd0VkaXQoKSB7XG4gICAgaWYgKHRoaXMucm93RWRpdCkge1xuICAgICAgdGhpcy5yb3dFZGl0LmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0aW5nUm93ID0gbnVsbDtcbiAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5lZGl0aW5nUm93ID0gbnVsbDtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIGNhbmNlbEltcG9ydFJlcG9ydCgpIHtcbiAgICB0aGlzLnNob3dJbXBvcnRSZXBvcnREaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLm1hcHBlZFJvd3MgPSBbXTtcbiAgICB0aGlzLm1hcHBpbmdFcnJvckZpZWxkcyA9IFtdO1xuICB9XG5cbiAgdXBkYXRlUm93KHJvd1Jlc3VsdDogYW55KSB7XG4gICAgY29uc3QgaXNOZXdSb3cgPSByb3dSZXN1bHQuaW5kZXggPT09IC0xO1xuICAgIGlmIChpc05ld1Jvdykge1xuICAgICAgdGhpcy5pbm5lclZhbHVlLnB1c2goey4uLnJvd1Jlc3VsdC5yb3dEYXRhLCAuLi57aXNOZXdSb3c6IHRydWV9fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAvLyB0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XSA9IHsuLi50aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XSwgLi4ucm93UmVzdWx0LnJvd0RhdGF9O1xuICAgICAgICB0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XVtlbC5uYW1lXSA9IHJvd1Jlc3VsdC5yb3dEYXRhW2VsLm5hbWVdO1xuICAgICAgICBpZiAocm93UmVzdWx0LnJvd0RhdGFbZWwubmFtZSArICdfbWV0YSddICYmIHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gIT09ICdTRUFSQ0gnKSB7XG4gICAgICAgICAgdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF1bZWwubmFtZSArICdfbWV0YSddID0gcm93UmVzdWx0LnJvd0RhdGFbZWwubmFtZSArICdfbWV0YSddO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGlzTmV3Um93ICYmICFyb3dSZXN1bHQuY3JlYXRlTmV3Um93KSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3codGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEsIHRoaXMuaW5uZXJWYWx1ZVt0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMV0pO1xuICAgIH0gZWxzZSBpZiAocm93UmVzdWx0LmNyZWF0ZU5ld1Jvdykge1xuICAgICAgdGhpcy5hZGRSb3coKTtcbiAgICAgIGxldCByb3dOb2RlID0gdGhpcy5vdmVybGF5R3JpZC5hcGkuZ2V0Um93Tm9kZSgnJyArICh0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSkpO1xuICAgICAgdGhpcy5vdmVybGF5R3JpZC5hcGkuZW5zdXJlTm9kZVZpc2libGUocm93Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdyhyb3dSZXN1bHQuaW5kZXgsIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBjb3B5Um93KHJvd1Jlc3VsdDogYW55KSB7XG4gICAgcm93UmVzdWx0LmluZGV4ID0gLTE7XG4gICAgdGhpcy5pbm5lclZhbHVlLnB1c2goey4uLnJvd1Jlc3VsdC5yb3dEYXRhLCAuLi57aXNOZXdSb3c6IHRydWV9fSk7XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gICAgaWYgKHJvd1Jlc3VsdC5jcmVhdGVOZXdSb3cpIHtcbiAgICAgIHRoaXMuYWRkUm93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdyh0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyb3dSZXN1bHQucm93RGF0YSkpKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVSb3coaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gaW5kZXggPT0gdGhpcy5pbm5lclZhbHVlLmxlbmd0aCA/IHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxIDogaW5kZXg7XG4gICAgICAgIHRoaXMuc2V0RWRpdFJvdyhuZXh0SW5kZXgsIHRoaXMuaW5uZXJWYWx1ZVtuZXh0SW5kZXhdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FuY2VsUm93RWRpdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyUm93KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmlubmVyVmFsdWVbaW5kZXhdID0ge307XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gIH1cblxuICBleHBvcnRDU1YoKSB7XG4gICAgdGhpcy5hZ0dyaWQuYXBpLmV4cG9ydERhdGFBc0Nzdih7XG4gICAgICAuLi50aGlzLmdyaWRBcGkuY3N2RXhwb3J0UGFyYW1zLFxuICAgICAgZmlsZU5hbWU6IHRoaXMuX3BhcmFtcy5lbGVtZW50LmxhYmVsXG4gICAgfSk7XG4gIH1cblxuICBpbXBvcnRDU1YoZXZlbnQpIHtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLl9wYXJhbXMuZWxlbWVudC5lbGVtZW50cztcbiAgICBjb25zdCBmaWxlID0gZXZlbnQuZmlsZXNbMF07XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZSA9PiB7XG4gICAgICBsZXQgcGFyc2VkYXRhID0gW107XG4gICAgICBpZiAodHlwZW9mIGUudGFyZ2V0LnJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbGV0IG5ld0xpbmVCcmVhayA9IGUudGFyZ2V0LnJlc3VsdC5zcGxpdCgnXFxuJykuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQgIT09ICcnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdMaW5lQnJlYWsubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBwYXJzZWRhdGEucHVzaChuZXdMaW5lQnJlYWtbaV0uc3BsaXQoJzsnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyc2VkYXRhLmxlbmd0aCA+IDUwMDApIHtcbiAgICAgICAgICB0aGlzLnRvYXN0LmVycm9yKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4udXBsb2FkLmVycm9yJykpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZWRhdGEgPSBwYXJzZWRhdGEubWFwKGRhdGEgPT4gZGF0YS5tYXAoZCA9PiBkLnJlcGxhY2UoL1wiL2dpLCAnJykucmVwbGFjZSgnXFxuJywgJycpLnJlcGxhY2UoL1teLS46LGEtekEtWjAtOSgpIF0vZywgJycpLnRyaW0oKSkpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdyaWRPcHRpb25zLmNvbHVtbkRlZnMubWFwKGNvbHVtbiA9PiBjb2x1bW5bJ2ZpZWxkJ10pO1xuICAgICAgICBjb25zdCBjb2x1bW5zVXBsb2FkZWQgPSBwYXJzZWRhdGFbMF07XG4gICAgICAgIHBhcnNlZGF0YS5zaGlmdCgpO1xuICAgICAgICBjb25zdCByb3dzVXBsb2FkZWQgPSBwYXJzZWRhdGE7XG5cbiAgICAgICAgY29uc3QgbWV0YUZpZWxkcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93c1VwbG9hZGVkLmxlbmd0aDsgcm93SW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IG1hcHBlZFJvdyA9IHt9O1xuICAgICAgICAgIGxldCBjdXJyZW50Um93ID0gcm93c1VwbG9hZGVkW3Jvd0luZGV4XTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbnRSb3cubGVuZ3RoICYmIGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFJvd1tpXSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudEZpZWxkID0gZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gY29sdW1uc1tpXSk7XG4gICAgICAgICAgICAgIGlmIChjdXJyZW50RmllbGQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicpIHtcbiAgICAgICAgICAgICAgICBsZXQgb3JnT2JqID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdChjdXJyZW50Um93W2ldKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9yZ09iai5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IGN1cnJlbnRSb3dbaV07XG4gICAgICAgICAgICAgICAgICBtZXRhRmllbGRzLnB1c2goe2NvbHVtbjogY29sdW1uc1tpXSwgcm93SW5kZXg6IHJvd0luZGV4LCB2YWx1ZTogb3JnT2JqfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRGaWVsZC50eXBlID09PSAnQ09ERVNZU1RFTScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2Rlc3lzdGVtID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0oY3VycmVudEZpZWxkLmNvZGVzeXN0ZW0uaWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVzeXN0ZW1FbnRyeSA9IGNvZGVzeXN0ZW0uZW50cmllcy5maW5kKGVudHJ5ID0+IGVudHJ5LmRhdGEgPT09IGN1cnJlbnRSb3dbaV0gfHwgZW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uID09PSBjdXJyZW50Um93W2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoY29kZXN5c3RlbUVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBjdXJyZW50Um93W2ldO1xuICAgICAgICAgICAgICAgICAgbWV0YUZpZWxkcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5zW2ldLFxuICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge2lkOiBjb2Rlc3lzdGVtRW50cnkuaWQsIGRlZmF1bHRyZXByZXNlbnRhdGlvbjogY29kZXN5c3RlbUVudHJ5LmRlZmF1bHRyZXByZXNlbnRhdGlvbiwgbGFiZWw6IGNvZGVzeXN0ZW1FbnRyeS5sYWJlbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gJyc7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1hcHBpbmdFcnJvckZpZWxkcy5wdXNoKHt0ZWNobmljYWxOYW1lOiBjb2x1bW5zW2ldLCB1cGxvYWRlZE5hbWU6IGNvbHVtbnNVcGxvYWRlZFtpXSwgcm93OiByb3dJbmRleCwgdmFsdWU6IGN1cnJlbnRSb3dbaV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEZpZWxkLnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3dbaV0ubGVuZ3RoID09PSAzMikge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gY3VycmVudFJvd1tpXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gJyc7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1hcHBpbmdFcnJvckZpZWxkcy5wdXNoKHt0ZWNobmljYWxOYW1lOiBjb2x1bW5zW2ldLCB1cGxvYWRlZE5hbWU6IGNvbHVtbnNVcGxvYWRlZFtpXSwgcm93OiByb3dJbmRleCwgdmFsdWU6IGN1cnJlbnRSb3dbaV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEZpZWxkLnR5cGUgPT09ICdEQVRFVElNRScpIHtcbiAgICAgICAgICAgICAgICBpZiAobmV3IERhdGUoY3VycmVudFJvd1tpXSkudG9TdHJpbmcoKSA9PT0gJ0ludmFsaWQgRGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IGN1cnJlbnRSb3dbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRGaWVsZC50eXBlID09PSAnTlVNQkVSJykge1xuICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IG5ldyBMb2NhbGVOdW1iZXJQaXBlKHRoaXMudHJhbnNsYXRlKS5zdHJpbmdUb051bWJlcihjdXJyZW50Um93W2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4obWFwcGVkUm93W2NvbHVtbnNbaV1dKSkge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gJyc7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1hcHBpbmdFcnJvckZpZWxkcy5wdXNoKHt0ZWNobmljYWxOYW1lOiBjb2x1bW5zW2ldLCB1cGxvYWRlZE5hbWU6IGNvbHVtbnNVcGxvYWRlZFtpXSwgcm93OiByb3dJbmRleCwgdmFsdWU6IGN1cnJlbnRSb3dbaV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gY3VycmVudFJvd1tpXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1hcHBlZFJvd3MucHVzaChtYXBwZWRSb3cpO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgdGhpcy5tYXBwZWRSb3dzW2ZpZWxkLnJvd0luZGV4XVtmaWVsZC5jb2x1bW4gKyAnX21ldGEnXSA9IGZpZWxkLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcGVuSW1wb3J0UmVwb3J0RGlhbG9nKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xuICB9XG5cbiAgYWRkSW1wb3J0VmFsdWVzVG9UYWJsZSgpIHtcbiAgICB0aGlzLnNob3dJbXBvcnRSZXBvcnREaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLm9wZW5EaWFsb2coKTtcbiAgICB0aGlzLmlubmVyVmFsdWUgPSBbLi4udGhpcy5pbm5lclZhbHVlLCAuLi50aGlzLm1hcHBlZFJvd3NdO1xuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICB9XG5cbiAgc2l6ZVRvRml0KG92ZXJsYXk/OiBib29sZWFuKSB7XG4gICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZ0dyaWQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRGlhbG9nKCkge1xuICAgIC8vIHdlIG5lZWQgdGhpcyBsaW5lIHRvIHJlbG9hZCB0aGUgY2FjaGVkIGNvbHVtbnMgaW4gY2FzZSBvZiByZW9wZW5pbmcgdGhlIGRpYWxvZyB3aXRob3V0IHJlZnJlc2hpbmcgdGhlIHBhZ2VcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuX3BhcmFtcztcbiAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgb3BlbkltcG9ydFJlcG9ydERpYWxvZygpIHtcbiAgICB0aGlzLnNob3dJbXBvcnRSZXBvcnREaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRhYmxlRGF0YSgpOiBib29sZWFuIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlVGFibGVEYXRhKCkgPyBudWxsIDoge1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIG9uTW91c2VEb3duKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudC5idXR0b24gPT09IDAgJiYgdGhpcy5vdmVybGF5R3JpZD8uYXBpLmdldEdyaWRPcHRpb24oJ3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24nKSkge1xuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrRm9yUGVuZGluZ1Rhc2tzKHRoaXMucm93RWRpdC5wZW5kaW5nVGFza0lkKSkge1xuICAgICAgICB0aGlzLm92ZXJsYXlHcmlkPy5hcGkudXBkYXRlR3JpZE9wdGlvbnMoeyBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uOiBmYWxzZSwgc3VwcHJlc3NDZWxsRm9jdXM6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnJvd0VkaXQuZmluaXNoUGVuZGluZygpO1xuICAgICAgICB0aGlzLnNlbGVjdEV2ZW50KCRldmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0RXZlbnQoJGV2ZW50OiBNb3VzZUV2ZW50IHwgYW55KSB7XG4gICAgY29uc3QgY29sSWQgPSAkZXZlbnQuY29tcG9zZWRQYXRoPy4oKS5maW5kKChlbCkgPT4gZWw/LmdldEF0dHJpYnV0ZSgnY29sLWlkJykpPy5nZXRBdHRyaWJ1dGUoJ2NvbC1pZCcpO1xuICAgIGNvbnN0IHJvd0lkID0gJGV2ZW50LmNvbXBvc2VkUGF0aD8uKCkuZmluZCgoZWwpID0+IGVsPy5nZXRBdHRyaWJ1dGUoJ3Jvdy1pZCcpKT8uZ2V0QXR0cmlidXRlKCdyb3ctaWQnKTtcbiAgICBpZiAoY29sSWQpIHtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMub3ZlcmxheUdyaWQuYXBpLmdldFJvd05vZGUocm93SWQpO1xuICAgICAgcm93LnNldFNlbGVjdGVkKHRydWUsIHRydWUpO1xuICAgICAgdGhpcy5vdmVybGF5R3JpZC5hcGkuc2V0Rm9jdXNlZENlbGwocm93LnJvd0luZGV4LCBjb2xJZCk7XG4gICAgfVxuICB9XG5cbiAgb25Tb3J0Q2hhbmdlZCgpIHtcbiAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWQuYXBpLmdldFJvd05vZGUoJycgKyB0aGlzLmVkaXRpbmdSb3cuaW5kZXgpO1xuICAgIHRoaXMub3ZlcmxheUdyaWQuYXBpLmVuc3VyZU5vZGVWaXNpYmxlKHJvd05vZGUpO1xuICB9XG5cbiAgb25DZWxsQ2xpY2tlZCgkZXZlbnQpIHtcbiAgICBpZiAoJGV2ZW50LmNvbERlZi5jZWxsQ2xhc3MgPT09ICdyb3V0ZXItbGluay1jZWxsJyAmJiAkZXZlbnQucm93SW5kZXggIT09IG51bGwpIHtcbiAgICAgIGlmICghJGV2ZW50Lm5vZGUuZ3JvdXAgJiYgJGV2ZW50LmRhdGEpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKCRldmVudC5ldmVudCwgJ2FnLXJvdycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2VsbENsaWNrZWRSb3dFZGl0KCRldmVudCkge1xuICAgIGlmICgkZXZlbnQucm93SW5kZXggIT09IG51bGwgJiYgIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2tGb3JQZW5kaW5nVGFza3ModGhpcy5yb3dFZGl0ID8gdGhpcy5yb3dFZGl0LnBlbmRpbmdUYXNrSWQgOiB1bmRlZmluZWQpKSB7XG4gICAgICBpZiAoISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICAgIGlmICgkZXZlbnQuY29sRGVmLmNlbGxDbGFzcyA9PT0gJ3JvdXRlci1saW5rLWNlbGwnKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKCRldmVudC5ldmVudCwgJ2FnLXJvdycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZWRpdFJvdygkZXZlbnQpO1xuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55LCBvdmVybGF5PzogYm9vbGVhbikge1xuICAgIGxldCBjb2x1bW5zRGVmaW5pdGlvbiA9IHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZic7XG4gICAgbGV0IGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zO1xuICAgIGlmIChvdmVybGF5KSB7XG4gICAgICBjb2x1bW5zRGVmaW5pdGlvbiA9IHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZk92ZXJsYXknO1xuICAgICAgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5O1xuICAgIH1cbiAgICBsZXQgY29sID0gY2FjaGVkQ29sdW1ucy5maW5kKGMgPT4gYy5xbmFtZSA9PT0gY29sdW1uLmNvbERlZi5yZWZEYXRhLnFuYW1lKTtcbiAgICBpZiAoY29sKSB7XG4gICAgICBjb2wud2lkdGggPSBjb2x1bW4uYWN0dWFsV2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlZENvbHVtbnMucHVzaCh7cW5hbWU6IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSwgd2lkdGg6IGNvbHVtbi5hY3R1YWxXaWR0aH0pO1xuICAgIH1cbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oY29sdW1uc0RlZmluaXRpb24sIGNhY2hlZENvbHVtbnMpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBfdXBkYXRlU3BsaXRWaWV3TGF5b3V0Q2FjaGUoKSB7XG4gIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XG4gIC8vICAgICB0aGlzLnNwbGl0Vmlldz8udXBkYXRlTGF5b3V0Q2FjaGUoKTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHRvZ2dsZVByZXZpZXcoKSB7XG4gICAgdGhpcy5zaG93UHJldmlldyA9ICF0aGlzLnNob3dQcmV2aWV3O1xuICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBsYXlvdXQgb2YgdGhlIHNwbGl0IHZpZXcgaXMgdXBkYXRlZCBhZnRlciB0aGUgcHJldmlldyBwYW5lbHNcbiAgICAvLyB2aXNpYmlsaXR5IGNoYW5nZWRcbiAgICAvLyB0aGlzLl91cGRhdGVTcGxpdFZpZXdMYXlvdXRDYWNoZSgpO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5zaG93UHJldmlldycsIHRoaXMuc2hvd1ByZXZpZXcpO1xuICB9XG5cbiAgLy8gbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAvLyAgIHRoaXMuX3VwZGF0ZVNwbGl0Vmlld0xheW91dENhY2hlKCk7XG4gIC8vIH1cblxuICBvbkxheW91dFNldHRpbmdzQ2hhbmdlKGxheW91dCkge1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5LCBsYXlvdXQpO1xuICAgIHRoaXMubGF5b3V0U2V0dGluZ3MgPSBsYXlvdXQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmhhc1ByZXZpZXdGaWxlID0gdGhpcy5oYXNQcmV2aWV3RmlsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5oYXNQcmV2aWV3RmlsZSA6ICEhdGhpcy5wYXJhbXMub2JqZWN0Py5jb250ZW50O1xuICAgIHRoaXMubGF5b3V0U2V0dGluZ3MgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSlcbiAgICAgID8gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuY2FjaGVMYXlvdXRLZXkpXG4gICAgICA6IHtkaXNhYmxlZDogZmFsc2UsIGFyZWFzOiBbe3Zpc2libGU6IHRydWUsIHNpemU6IDQwfSwge3Zpc2libGU6IHRydWUsIHNpemU6IDIwfSwge3Zpc2libGU6IGZhbHNlLCBzaXplOiA0MH1dfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlXCIgW25nQ2xhc3NdPVwie21lZGl1bTogX3BhcmFtcy5zaXplID09PSAnbWVkaXVtJywgbGFyZ2U6IF9wYXJhbXMuc2l6ZSA9PT0gJ2xhcmdlJ31cIj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlLWhlYWRlclwiPlxuICAgIDxzcGFuPnt7X3BhcmFtcy5lbGVtZW50LmxhYmVsfX08L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9wYXJhbXMuc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiPlxuXG4gICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2V4cGFuZC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4ub3Blbid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwib3BlbkRpYWxvZygpXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGZcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaXplX3RvX2ZpdC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uZml0J3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJzaXplVG9GaXQoKVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgKm5nSWY9XCJncmlkT3B0aW9ucy5yb3dEYXRhPy5sZW5ndGhcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19leHBvcnQuc3ZnJ1wiXG4gICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNzdid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZXhwb3J0Q1NWKClcIj48L2VvLWljb24+XG4gICAgICA8ZW8taWNvbiAqbmdJZj1cIiFfcGFyYW1zLmVsZW1lbnQucmVhZG9ubHlcIiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ltcG9ydC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4udXBsb2FkJ3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJmaWxlLmNsaWNrKClcIj48L2VvLWljb24+XG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuY3N2XCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCIgI2ZpbGUgKGNoYW5nZSk9XCJpbXBvcnRDU1YoJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnRhcmdldC52YWx1ZSA9IG51bGxcIj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmIGFkZC1yb3dcIiAqbmdJZj1cIiFfcGFyYW1zLmVsZW1lbnQucmVhZG9ubHlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hZGQuc3ZnJ1wiXG4gICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmFkZCd8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiYWRkUm93KClcIj48L2VvLWljb24+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJncmlkLWJvZHkgc2l6ZS17eyBwYXJhbXMuc2l6ZSB9fVwiPlxuICAgIDxhZy1ncmlkLWFuZ3VsYXIgI2FnR3JpZCAqbmdJZj1cImdyaWRSZWFkeVwiIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCIgW21vZHVsZXNdPVwibW9kdWxlc1wiIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXG4gICAgICAocm93RG91YmxlQ2xpY2tlZCk9XCJlZGl0Um93KCRldmVudClcIiAoY2VsbENsaWNrZWQpPVwib25DZWxsQ2xpY2tlZCgkZXZlbnQpXCIgKHNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWQoKVwiXG4gICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJvbkVkaXRDb21wbGV0ZSgkZXZlbnQpXCIgKGNvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudC5jb2x1bW4pXCI+XG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwicGFyYW1zLmVsZW1lbnQubGFiZWxcIiBbdmlzaWJsZV09XCJzaG93RGlhbG9nXCIgW2RpcnR5Q2hlY2tdPVwicm93RWRpdD8ucGVuZGluZ1Rhc2tJZFwiXG4gIFttaW5XaWR0aF09XCJfcGFyYW1zLnNpdHVhdGlvbiAhPT0gJ1NFQVJDSCcgPyBtaW5XaWR0aCA6IDIwMFwiIFt3aWR0aF09XCJfcGFyYW1zLnNpdHVhdGlvbiAhPT0gJ1NFQVJDSCcgPyAnOTV2dycgOiA1MDBcIlxuICBbaGVpZ2h0XT1cImhlaWdodFwiIFtzdHlsZUNsYXNzXT1cIidvYmplY3QtZm9ybS10YWJsZS1kaWFsb2cnXCIgKGhpZGUpPVwib25DbG9zZSgpXCIgW2lzRm9ybVRhYmxlXT1cInRydWVcIlxuICBbaGFzUHJldmlld0ZpbGVdPVwiaGFzUHJldmlld0ZpbGVcIiBbc2hvd1ByZXZpZXddPVwic2hvd1ByZXZpZXdcIiAob25Ub2dnbGVQcmV2aWV3KT1cInRvZ2dsZVByZXZpZXcoKVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJzaG93RGlhbG9nXCI+XG4gICAgPHl2Yy1zcGxpdC12aWV3IChsYXlvdXRTZXR0aW5nc0NoYW5nZSk9XCJvbkxheW91dFNldHRpbmdzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwhLS0gdGhlIHRhYmxlIGl0c2VsZi0tPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCJsYXlvdXRTZXR0aW5ncy5hcmVhc1swXS5zaXplXCIgW3Zpc2libGVdPVwiX3BhcmFtcy5zaXR1YXRpb24gIT09ICdTRUFSQ0gnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWZvcm0tdGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NpemVfdG9fZml0LnN2ZydcIlxuICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uZml0J3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJzaXplVG9GaXQodHJ1ZSlcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGYgYWRkLXJvd1wiICpuZ0lmPVwiIV9wYXJhbXMuZWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hZGQuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5hZGQnfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImFkZFJvdygpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtYm9keVwiPlxuICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyICNvdmVybGF5R3JpZCAqbmdJZj1cImdyaWRSZWFkeVwiIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCIgW21vZHVsZXNdPVwibW9kdWxlc1wiXG4gICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cIm92ZXJsYXlHcmlkT3B0aW9uc1wiIChjZWxsQ2xpY2tlZCk9XCJvbkNlbGxDbGlja2VkUm93RWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIiAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJvbkVkaXRDb21wbGV0ZSgkZXZlbnQpXCIgKGNvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudC5jb2x1bW4sIHRydWUpXCI+XG4gICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSB0YWJsZSBlZGl0IGNvbXBvbmVudC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCJsYXlvdXRTZXR0aW5ncy5hcmVhc1sxXS5zaXplXCIgW3Zpc2libGVdPVwiISFlZGl0aW5nUm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWJvZHlcIj5cbiAgICAgICAgICA8ZW8tcm93LWVkaXQgW3Jvd109XCJlZGl0aW5nUm93XCIgW2xpbWl0UmVhY2hlZF09XCJsaW1pdCA8PSBvdmVybGF5R3JpZE9wdGlvbnM/LnJvd0RhdGE/Lmxlbmd0aFwiICNyb3dFZGl0XG4gICAgICAgICAgICAob25TYXZlKT1cInVwZGF0ZVJvdygkZXZlbnQpXCIgKG9uU2F2ZUNvcHkpPVwiY29weVJvdygkZXZlbnQpXCIgKG9uRGVsZXRlKT1cImRlbGV0ZVJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkNhbmNlbCk9XCJjYW5jZWxSb3dFZGl0KClcIj48L2VvLXJvdy1lZGl0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gdmlld2VyLS0+XG4gICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cImxheW91dFNldHRpbmdzLmFyZWFzWzJdLnNpemVcIiBbdmlzaWJsZV09XCJzaG93UHJldmlldyAmJiBoYXNQcmV2aWV3RmlsZVwiPlxuICAgICAgICA8ZW8tbWVkaWEgKm5nSWY9XCJoYXNQcmV2aWV3RmlsZVwiIFt1bmRvY2tEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbdXNlVmVyc2lvbl09XCJwYXJhbXMub2JqZWN0Py5pZCA9PT0gcGFyYW1zLm9iamVjdD8uY29udGVudD8uaWRcIiBbZG1zT2JqZWN0XT1cInBhcmFtcy5vYmplY3RcIj48L2VvLW1lZGlhPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3l2Yy1zcGxpdC12aWV3PlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuXG48ZW8tZGlhbG9nIFt0aXRsZV09XCIoJ2VvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQudGl0bGUnIHwgdHJhbnNsYXRlKVwiIFt2aXNpYmxlXT1cInNob3dJbXBvcnRSZXBvcnREaWFsb2dcIlxuICAoaGlkZSk9XCJjYW5jZWxJbXBvcnRSZXBvcnQoKVwiIFtzdHlsZUNsYXNzXT1cIidpbXBvcnQtcmVwb3J0X19kaWFsb2cnXCI+XG4gIDxkaXYgY2xhc3M9XCJib2R5XCI+XG4gICAgPGg0IHRyYW5zbGF0ZSBbdHJhbnNsYXRlUGFyYW1zXT1cIntyZWFkUm93czogbWFwcGVkUm93cy5sZW5ndGh9XCI+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5yZWFkUm93czwvaDQ+XG4gICAgPGRpdiAqbmdJZj1cIm1hcHBpbmdFcnJvckZpZWxkcy5sZW5ndGggIT09IDBcIiBjbGFzcz1cImZsZXgtY29sXCI+XG4gICAgICA8aDQgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQuZXJyb3JzPC9oND5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMucm93PC90aD5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMuY3N2Q29sdW1uPC90aD5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMudGFibGVDb2x1bW48L3RoPlxuICAgICAgICAgICAgPHRoIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LmVycm9ycy52YWx1ZTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVycm9yIG9mIG1hcHBpbmdFcnJvckZpZWxkczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQ+e3tlcnJvci5yb3cgKyAxfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3tlcnJvci51cGxvYWRlZE5hbWV9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnRlY2huaWNhbE5hbWV9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnZhbHVlfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImNhbmNlbEltcG9ydFJlcG9ydCgpXCIgY2xhc3M9XCJidXR0b24tY2FuY2VsXCIgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkSW1wb3J0VmFsdWVzVG9UYWJsZSgpXCIgY2xhc3M9XCJwcmltYXJ5XCIgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQuaW1wb3J0PC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG4iXX0=
|