@provoly/dashboard 0.12.1 → 0.12.3
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/README.md +1 -1
- package/esm2022/admin/store/admin.service.mjs +2 -2
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
- package/esm2022/import/components/import.component.mjs +25 -9
- package/esm2022/import/i18n/en.translations.mjs +4 -2
- package/esm2022/import/i18n/fr.translations.mjs +4 -2
- package/esm2022/import/store/import.actions.mjs +1 -1
- package/esm2022/import/store/import.effects.mjs +5 -3
- package/esm2022/import/store/import.reducer.mjs +1 -1
- package/esm2022/import/store/import.selectors.mjs +3 -1
- package/esm2022/import/store/import.service.mjs +12 -5
- package/esm2022/lib/core/components/upload/upload.component.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -1
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +9 -5
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +4 -1
- package/esm2022/lib/dashboard/store/manifest.service.mjs +1 -1
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +1 -1
- package/esm2022/notification/style/css.component.mjs +2 -2
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +10 -11
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +2 -1
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +2 -1
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +2 -1
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -2
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -3
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +2 -1
- package/esm2022/toolbox/components/toolbox-action/toolbox-action.component.mjs +4 -1
- package/fesm2022/provoly-dashboard-admin.mjs +1 -1
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +2 -2
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +47 -16
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +2 -2
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +16 -8
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +102 -95
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/components/import.component.d.ts +11 -5
- package/import/i18n/en.translations.d.ts +3 -1
- package/import/i18n/fr.translations.d.ts +2 -0
- package/import/store/import.actions.d.ts +4 -2
- package/import/store/import.effects.d.ts +1 -1
- package/import/store/import.reducer.d.ts +1 -1
- package/import/store/import.selectors.d.ts +2 -1
- package/import/store/import.service.d.ts +1 -1
- package/lib/dashboard/store/dashboard.selectors.d.ts +8 -0
- package/lib/dashboard/store/manifest.service.d.ts +1 -1
- package/notification/style/_m-notifications.scss +1 -1
- package/package.json +25 -25
- package/toolbox/components/automate-refresh/automate-refresh.component.d.ts +3 -2
- package/toolbox/components/refresh-datasets/refresh-datasets.component.d.ts +1 -1
- package/toolbox/components/toolbox-action/toolbox-action.component.d.ts +1 -0
|
@@ -10,11 +10,18 @@ export class ImportService {
|
|
|
10
10
|
this.httpClient = httpClient;
|
|
11
11
|
this.store = store;
|
|
12
12
|
}
|
|
13
|
-
upload(file, datasetId) {
|
|
13
|
+
upload(file, datasetId, fileType) {
|
|
14
14
|
const formData = new FormData();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
let mimeType = '';
|
|
16
|
+
if (fileType === 'csv') {
|
|
17
|
+
mimeType = 'text/csv';
|
|
18
|
+
}
|
|
19
|
+
else if (fileType === 'zip') {
|
|
20
|
+
mimeType = 'application/shp';
|
|
21
|
+
}
|
|
22
|
+
formData.append('file', new Blob([file], { type: mimeType }), file.name);
|
|
23
|
+
return this.store.select(ConfigSelectors.dataUrl).pipe(mergeMap((url) => this.httpClient.post(`${url}/imports/dataset/id/${datasetId}`, formData, {
|
|
24
|
+
headers: new HttpHeaders({ 'File-Content-Type': mimeType })
|
|
18
25
|
})));
|
|
19
26
|
}
|
|
20
27
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ImportService, deps: [{ token: i1.HttpClient }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -26,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
26
33
|
providedIn: 'root'
|
|
27
34
|
}]
|
|
28
35
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Store }]; } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9pbXBvcnQvc3RvcmUvaW1wb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNaEMsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFBb0IsVUFBc0IsRUFBVSxLQUFpQjtRQUFqRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUFHLENBQUM7SUFFekUsTUFBTSxDQUFDLElBQVUsRUFBRSxTQUFpQixFQUFFLFFBQWdCO1FBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksUUFBUSxLQUFLLEtBQUssRUFBRTtZQUN0QixRQUFRLEdBQUcsVUFBVSxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFO1lBQzdCLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztTQUM5QjtRQUNELFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNwRCxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFpQixHQUFHLEdBQUcsdUJBQXVCLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRTtZQUN2RixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUM1RCxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs4R0FyQlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQ29uZmlnU2VsZWN0b3JzIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbXBvcnRSZXNwb25zZSB9IGZyb20gJy4vaW1wb3J0LmFjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbXBvcnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+KSB7fVxuXG4gIHVwbG9hZChmaWxlOiBGaWxlLCBkYXRhc2V0SWQ6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgbGV0IG1pbWVUeXBlID0gJyc7XG5cbiAgICBpZiAoZmlsZVR5cGUgPT09ICdjc3YnKSB7XG4gICAgICBtaW1lVHlwZSA9ICd0ZXh0L2Nzdic7XG4gICAgfSBlbHNlIGlmIChmaWxlVHlwZSA9PT0gJ3ppcCcpIHtcbiAgICAgIG1pbWVUeXBlID0gJ2FwcGxpY2F0aW9uL3NocCc7XG4gICAgfVxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIG5ldyBCbG9iKFtmaWxlXSwgeyB0eXBlOiBtaW1lVHlwZSB9KSwgZmlsZS5uYW1lKTtcblxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuZGF0YVVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+XG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0PEltcG9ydFJlc3BvbnNlPihgJHt1cmx9L2ltcG9ydHMvZGF0YXNldC9pZC8ke2RhdGFzZXRJZH1gLCBmb3JtRGF0YSwge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdGaWxlLUNvbnRlbnQtVHlwZSc6IG1pbWVUeXBlIH0pXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -39,7 +39,7 @@ export class PryUploadComponent {
|
|
|
39
39
|
}));
|
|
40
40
|
this.asyncEmit(files[0]);
|
|
41
41
|
break;
|
|
42
|
-
case '
|
|
42
|
+
case 'files':
|
|
43
43
|
this.uploaded.emit(files[0].name);
|
|
44
44
|
this.uploadedFile.emit(files[0]);
|
|
45
45
|
break;
|
|
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
85
85
|
type: ViewChild,
|
|
86
86
|
args: ['fileInput']
|
|
87
87
|
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL2NvbXBvbmVudHMvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9jb21wb25lbnRzL3VwbG9hZC91cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFPL0QsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixZQUNVLEtBQVksRUFDWixVQUFzQjtRQUR0QixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVR2QixTQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2QsV0FBTSxHQUFXLFNBQVMsQ0FBQztRQUMzQixtQkFBYyxHQUFXLG9CQUFvQixDQUFDO1FBQzdDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQU0vQyxDQUFDO0lBRUosWUFBWSxDQUFDLE1BQWE7UUFDeEIsYUFBYTtRQUNiLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO1FB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QUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbWFnZUFjdGlvbnMgfSBmcm9tICcuLi8uLi9zdG9yZS9pbWFnZS9pbWFnZS5hY3Rpb25zJztcbmltcG9ydCB7IEltYWdlc1NlbGVjdG9ycyB9IGZyb20gJy4uLy4uL3N0b3JlL2ltYWdlL2ltYWdlLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBMaWJyYXJ5VHlwZXMgfSBmcm9tICcuLi8uLi9zdG9yZS9pbWFnZS9pbWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJhd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9yZS9yYXcvcmF3LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5VXBsb2FkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbW9kZSA9ICdpY29uJztcbiAgQElucHV0KCkgYWNjZXB0OiBzdHJpbmcgPSAnaW1hZ2UvKic7XG4gIEBJbnB1dCgpIGxhYmVsVHJhbnNsYXRlOiBzdHJpbmcgPSAnQHByeS5hY3Rpb24udXBsb2FkJztcbiAgQE91dHB1dCgpIHVwbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRlZEZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSByYXdTZXJ2aWNlOiBSYXdTZXJ2aWNlXG4gICkge31cblxuICBvbkZpbGVTZWxlY3QoJGV2ZW50OiBFdmVudCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBmaWxlcyA9ICRldmVudD8udGFyZ2V0LmZpbGVzO1xuICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgICBjYXNlIExpYnJhcnlUeXBlcy5JQ09OOlxuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICBJbWFnZUFjdGlvbnMuYWRkKHtcbiAgICAgICAgICAgICAgZmlsZTogZmlsZXNbMF0sXG4gICAgICAgICAgICAgIG1lZGlhVHlwZTogZmlsZXNbMF0udHlwZSxcbiAgICAgICAgICAgICAgaW1hZ2VUeXBlOiBMaWJyYXJ5VHlwZXMuSUNPTlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuYXN5bmNFbWl0KGZpbGVzWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMaWJyYXJ5VHlwZXMuSUxMVVNUUkFUSU9OOlxuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICBJbWFnZUFjdGlvbnMuYWRkKHtcbiAgICAgICAgICAgICAgZmlsZTogZmlsZXNbMF0sXG4gICAgICAgICAgICAgIG1lZGlhVHlwZTogZmlsZXNbMF0udHlwZSxcbiAgICAgICAgICAgICAgaW1hZ2VUeXBlOiBMaWJyYXJ5VHlwZXMuSUxMVVNUUkFUSU9OXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5hc3luY0VtaXQoZmlsZXNbMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmaWxlcyc6XG4gICAgICAgICAgdGhpcy51cGxvYWRlZC5lbWl0KGZpbGVzWzBdLm5hbWUpO1xuICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlLmVtaXQoZmlsZXNbMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMucmF3U2VydmljZS51cGxvYWQoZmlsZXNbMF0sIGZpbGVzWzBdLm5hbWUsIGZpbGVzWzBdLnR5cGUpLnN1YnNjcmliZSgoaWQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWQuZW1pdChpZCk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZS5lbWl0KGZpbGVzWzBdKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBhc3luY0VtaXQoZmlsZTogRmlsZSkge1xuICAgIGNvbnN0IHRtcFN1YiA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoSW1hZ2VzU2VsZWN0b3JzLmxhc3RBZGRlZClcbiAgICAgIC5waXBlKGZpbHRlcigoaW1hZ2UpID0+ICEhaW1hZ2UpKVxuICAgICAgLnN1YnNjcmliZSgobmFtZSkgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZGVkLmVtaXQobmFtZSk7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlLmVtaXQoZmlsZSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRtcFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goSW1hZ2VBY3Rpb25zLmNsZWFyQWRkZWQoKSk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGlucHV0IHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3QoJGV2ZW50KVwiICNmaWxlSW5wdXQgaGlkZGVuIFthY2NlcHRdPVwiYWNjZXB0XCIgLz5cbjxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1zaXplLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICA8cHJ5LWljb24gW2hlaWdodF09XCIyMFwiIFt3aWR0aF09XCIyMFwiIGljb25Tdmc9XCJ1cGxvYWRcIj48L3ByeS1pY29uPlxuICA8c3Bhbj57eyBsYWJlbFRyYW5zbGF0ZSB8IGkxOG4gfX08L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -308,6 +308,7 @@ export class DashboardEffects {
|
|
|
308
308
|
return DashboardActions.addWmsFeatures({
|
|
309
309
|
features: json.features.map((feature) => {
|
|
310
310
|
const result = {
|
|
311
|
+
id: feature.id,
|
|
311
312
|
oClass: action.oClass,
|
|
312
313
|
coordinates: action.coordinates,
|
|
313
314
|
values: { properties: [] }
|
|
@@ -330,4 +331,4 @@ export class DashboardEffects {
|
|
|
330
331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardEffects, decorators: [{
|
|
331
332
|
type: Injectable
|
|
332
333
|
}], ctorParameters: function () { return [{ type: i1.DashboardInitService }, { type: i2.Actions }, { type: i3.Store }, { type: i4.ManifestService }, { type: i5.ItemService }, { type: i6.PryTitleService }, { type: i7.PryI18nService }, { type: i8.PrySnackbarService }, { type: i9.Router }, { type: i10.GeocodingService }, { type: i11.RefreshService }, { type: i12.ToolboxManifestService }, { type: i13.BusService }, { type: i14.SearchService }]; } });
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUlsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPM0QsTUFBTSxPQUFPLGdCQUFnQjtJQWdvQjNCLFlBQ1Usb0JBQTBDLEVBQzFDLFFBQWlCLEVBQ2pCLEtBQWlCLEVBQ2pCLGVBQWdD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QUM7SUFDekIsQ0FBQzs4R0FscEJVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcnlWaXNpYmlsaXR5VHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9zaGFyZS9zaGFyZS5tb2RlbCc7XG5pbXBvcnQgeyBQcnlTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkR3JpZExheW91dCwgR2xvYmFsTWFuaWZlc3QsIFdpZGdldE1hbmlmZXN0IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9tYW5pZmVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hhcnRXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtY2hhcnQtbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1hcFdpZGdldE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3dpZGdldC1tYXAtbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9pdGVtL2l0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9zZWFyY2gvc2VhcmNoLmFjdGlvbnMnO1xuaW1wb3J0IHsgRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5jb25zdGFudHMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Rvb2xib3gvdG9vbGJveC1tYW5pZmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1c1NlcnZpY2UgfSBmcm9tICcuLi9hY3Rpb24tYnVzL3NlcnZpY2UvYnVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2lkZ2V0UGxhY2VtZW50VXRpbHMgfSBmcm9tICcuLi9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LXBsYWNlbWVudC93aWRnZXQtcGxhY2VtZW50LnV0aWxzJztcbmltcG9ydCB7IFJlc3VsdHNldFV0aWxzIH0gZnJvbSAnLi4vcmVzdWx0c2V0LXV0aWxzJztcbmltcG9ydCB7IERhc2hib2FyZEluaXRTZXJ2aWNlIH0gZnJvbSAnLi9kYXNoYm9hcmQtaW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICcuL2Rhc2hib2FyZC5hY3Rpb25zJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycyB9IGZyb20gJy4vZGFzaGJvYXJkLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBHZW9jb2RpbmdTZXJ2aWNlIH0gZnJvbSAnLi9nZW9jb2Rpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBNYW5pZmVzdFNlcnZpY2UgfSBmcm9tICcuL21hbmlmZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFNlcnZpY2UgfSBmcm9tICcuL3JlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBQcnlUaXRsZVNlcnZpY2UgfSBmcm9tICcuL3RpdGxlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRWZmZWN0cyB7XG4gIGpvaW4kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuam9pbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgcmVzdWx0U2V0c10pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgc2VsZWN0ZWRJZHMsIHByZXNlbnRhdGlvbl0pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4oe1xuICAgICAgICAgIHRlbmFudHMsIC8vIHdlIGFscmVhZHkgaGF2ZSBhZGRlZCB0ZW5hbnQgaW4gdGhlIHJlZHVjZSBvZiB0aGUgXCJqb2luXCIgYWN0aW9uXG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICAgICAgd2luZG93czogbWFuaWZlc3Qud2luZG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0U2V0cyxcbiAgICAgICAgICBzZWxlY3RlZElkcyxcbiAgICAgICAgICBqb2luaW5nOiB0cnVlLFxuICAgICAgICAgIHByZXNlbnRhdGlvblxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsZWF2ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sZWF2ZSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHJhbmsgPT09IDAgfHwgKHRlbmFudHNbMF0gPT09IGFjdGlvbi5zZW5kZXIgJiYgcmFuayA9PT0gMSkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgc2VsZWN0ZWRJZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlYXZlclJhbmsgPSB0ZW5hbnRzLmluZGV4T2YoYWN0aW9uLnNlbmRlcik7XG4gICAgICAgIGNvbnN0IG5ld1RlbmFudHNMaXN0ID0gWy4uLnRlbmFudHNdO1xuICAgICAgICBjb25zdCBuZXdXaW5kb3dMaXN0ID0gWy4uLm1hbmlmZXN0LndpbmRvd3NdO1xuICAgICAgICBpZiAobGVhdmVyUmFuayA+IC0xKSB7XG4gICAgICAgICAgbmV3VGVuYW50c0xpc3Quc3BsaWNlKGxlYXZlclJhbmssIDEpO1xuICAgICAgICAgIG5ld1dpbmRvd0xpc3Quc3BsaWNlKGxlYXZlclJhbmssIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlKHtcbiAgICAgICAgICB0ZW5hbnRzOiBuZXdUZW5hbnRzTGlzdCxcbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgICAgICB3aW5kb3dzOiBuZXdXaW5kb3dMaXN0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxlY3RlZElkc1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuICBmZXRjaFN0YXRpY01hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuZ2V0KGFjdGlvbi5pZClcbiAgICAgICAgICAucGlwZShtYXAoKHN0YXRpY01hbmlmZXN0KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVN0YXRpY01hbmlmZXN0KHsgc3RhdGljTWFuaWZlc3QgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCwgRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rLCBzZWxlY3RlZElkc10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IERhc2hib2FyZEFjdGlvbnMubG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QudHlwZVxuICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6IGFjdGlvbi5pZCwgc2VsZWN0ZWRJZHMgfSksXG4gICAgICAgICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdFdpdGhvdXRBY3RpdmF0aW9uKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6IGFjdGlvbi5pZCwgc2VsZWN0ZWRJZHMgfSldO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY2xlYXJNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5jbGVhck1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2goeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogJycsIHNlbGVjdGVkSWRzIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRvd25sb2FkTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRvd25sb2FkTWFuaWZlc3QpLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT5cbiAgICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLmlkKS5zdWJzY3JpYmUoKG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9ICdkYXRhOnRleHQvanNvbjtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QpKTtcbiAgICAgICAgICAgIGNvbnN0IGRsQW5jaG9yRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkYXRhU3RyKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgYCR7YWN0aW9uLm5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5jbGljaygpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGZvbGxvd01hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgICBpZiAobWFuaWZlc3Qucm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobWFuaWZlc3Qucm91dGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHJlcXVlc3RNYW5pZmVzdFJvdXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RBbGxSb3V0ZXMpLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlUm91dGVNYW5pZmVzdCh7IHJvdXRlOiB0aGlzLnJvdXRlci51cmwgfSkpXG4gICAgKVxuICApO1xuXG4gIGFzc2VydFJlc3VsdFNldHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0c1BhcmFtcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5xdWlja09yZGVyKVxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgcmVzdWx0U2V0c1BhcmFtcywgcXVpY2tPcmRlcl0pID0+IHtcbiAgICAgICAgaWYgKCFhY3Rpb24uaWQpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgICAgIG1hbmlmZXN0LndpbmRvd3NcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgod2lkTWFuaWZlc3QpID0+IHdpZE1hbmlmZXN0LmRhdGFzb3VyY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdIGFzIChzdHJpbmcgfCBzdHJpbmdbXSlbXVxuICAgICAgICAgICAgKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi4oQXJyYXkuaXNBcnJheShjKSA/IGMgOiBbY10pXSwgW10pIGFzIHN0cmluZ1tdXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKHJlc3VsdFNldCkgPT5cbiAgICAgICAgICAgICAgICAhIXJlc3VsdFNldCAmJlxuICAgICAgICAgICAgICAgIHJlc3VsdFNldCAhPT0gJycgJiZcbiAgICAgICAgICAgICAgICAoIXJlc3VsdFNldHNbcmVzdWx0U2V0XSB8fFxuICAgICAgICAgICAgICAgICAgcmVzdWx0U2V0c1BhcmFtc1tyZXN1bHRTZXRdICE9PSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0SXRlbXNTZXJpYWxpemVkUGFyYW1zKHJlc3VsdFNldCwgcXVpY2tPcmRlcikpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChyZXN1bHRTZXQpID0+IFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHsgaWQ6IHJlc3VsdFNldCB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFyZXN1bHRTZXRzW2FjdGlvbi5pZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBbU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoeyBpZDogYWN0aW9uLmlkIGFzIHN0cmluZyB9KV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcmVzaXplJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIC8vIGZvcndhcmQgbmV3IG1hbmlmZXN0IGFmdGVyIGFueSBvZiB0aGVzZSB0eXBlcyBvZiBhY3Rpb25zXG4gICAgICBvZlR5cGUoXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGFzaGJvYXJkTWFuaWZlc3QsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMubW92ZVdpZGdldCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVXaWRnZXRNYW5pZmVzdFxuICAgICAgKSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiAhYWN0aW9uLnNlbmRlciksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbWFuaWZlc3QsIHRlbmFudHMsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgICAgc2VsZWN0ZWRJZHNcbiAgICAgICAgfSBhcyB7IG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdDsgdGVuYW50czogc3RyaW5nW107IHNlbGVjdGVkSWRzOiBzdHJpbmdbXSB9O1xuICAgICAgICBpZiAoISF0ZW5hbnRzICYmIHRlbmFudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHBhcmFtcy50ZW5hbnRzID0gdGVuYW50cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyUmVzaXplKHBhcmFtcyk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBzdGFydE1pc3NpbmdWaWV3QWZ0ZXJWaWV3VXBkYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2gsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclJlc2l6ZSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4sXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZXhwbG9yZSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kZXRhaWwsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMucmVzdG9yZUluaXRpYWxNYW5pZmVzdCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5jcmVhdGVUYWJcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBbXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc3RhcnRpbmdNaXNzaW5nVmlld3MoKSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzKHt9KSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zb2x2ZUNvbGxpc2lvbnMoKVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlVGl0bGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0LFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4sXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2gsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyUmVzaXplLFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZGVjbGFyZVNlbmRlcklkXG4gICAgICAgICksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICAgIHRhcCgoW2FjdGlvbiwgcmFua10pID0+IHtcbiAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZSgpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgb3Blbk90aGVyJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zdGFydGluZ01pc3NpbmdWaWV3cyksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KVxuICAgICAgICApLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiByYW5rID09PSAwKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgICBtYW5pZmVzdC53aW5kb3dzLmZvckVhY2goKHdpbmRvd01hbmlmZXN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0ZW5hbnRzW2luZGV4XSkge1xuICAgICAgICAgICAgICAvLyBJZiBubyB3aW5kb3cgaXMgb3BlbmVkIGZvciB0aGlzIHBhcnQsIHRoZW4gb3BlbiBvbmVcbiAgICAgICAgICAgICAgd2luZG93Lm9wZW4od2luZG93TWFuaWZlc3Qucm91dGUgPz8gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBzYXZlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2F2ZU1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIGN1cnJlbnRNYW5pZmVzdF0pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlXG4gICAgICAgICAgLnNhdmUoXG4gICAgICAgICAgICBhY3Rpb24ubmFtZSxcbiAgICAgICAgICAgIGFjdGlvbi5tYW5pZmVzdCA/PyBjdXJyZW50TWFuaWZlc3QsXG4gICAgICAgICAgICBhY3Rpb24udmlzaWJpbGl0eSA/PyB7IHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUgfSxcbiAgICAgICAgICAgIGFjdGlvbi5pZCxcbiAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFjdGlvbi5pbWFnZSxcbiAgICAgICAgICAgIGFjdGlvbi5jb3ZlclxuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PlxuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnRvb2xib3gubWFuaWZlc3Quc2F2ZWQnLCB7IHZpZXdJZDogYWN0aW9uLm5hbWUgfSksXG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKCgpID0+IGFjdGlvbi5tYW5pZmVzdCA/PyBjdXJyZW50TWFuaWZlc3QpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVFcnJvckNvZGUuJyArIGVycm9yLmVycm9yLmNvZGUsIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKG1hbmlmZXN0KSA9PiBbXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCksXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2V0SW5pdGlhbFByZXNlbnRhdGlvbih7IGluaXRpYWw6IG1hbmlmZXN0IH0pXG4gICAgICBdKVxuICAgIClcbiAgKTtcblxuICBkZWZhdWx0TWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVmYXVsdE1hbmlmZXN0KSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmRlZmF1bHQoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICByZXMgPyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmRlZmF1bHRlZCcgOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LnVuZGVmYXVsdGVkJyxcbiAgICAgICAgICAgICAgICB7IHZpZXdJZDogYWN0aW9uLm5hbWUgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSlcbiAgICApXG4gICk7XG5cbiAgbGlzdE1hbmlmZXN0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDAgfHwgcmFuayA9PT0gLTEpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJhbmtdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5saXN0KCkucGlwZShtYXAoKG1hbmlmZXN0cykgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdHNMaXN0KHsgbWFuaWZlc3RzIH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZGVsZXRlKGFjdGlvbi5pZCkucGlwZShtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGZldGNoT2JqZWN0c0RldGFpbHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hPYmplY3RzRGV0YWlscyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBtZXJnZSguLi5hY3Rpb24uaWRzLm1hcCgoaWQpID0+IHRoaXMuaXRlbVNlcnZpY2UuZ2V0KGlkKSkpKSxcbiAgICAgIG1hcCgoaXRlbSkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVPYmplY3RzRGV0YWlscyh7IGxpc3Q6IHsgW2l0ZW0uaWRdOiBpdGVtIH0gfSkpXG4gICAgKVxuICApO1xuXG4gIHByb3hpbWl0eVNlYXJjaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5wcm94aW1pdHkpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByZXN1bHRTZXRzXSkgPT5cbiAgICAgICAgdGhpcy5pdGVtU2VydmljZS5wcm94aW1pdHkoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1hcCgocHJveFJzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVSZXN1bHRTZXQoe1xuICAgICAgICAgICAgICBpZDogYWN0aW9uLnRhcmdldFJlc3VsdFNldCxcbiAgICAgICAgICAgICAgcmVzdWx0U2V0OiBSZXN1bHRzZXRVdGlscy5tZXJnZVJlc3VsdFNldHMocHJveFJzLCByZXN1bHRTZXRzW2FjdGlvbi50YXJnZXRSZXN1bHRTZXRdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBleHBsb3JlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW0Rhc2hib2FyZEFjdGlvbnMucHJveGltaXR5KHsgaWQ6IGFjdGlvbi5pZCwgdGFyZ2V0UmVzdWx0U2V0OiBFWFBMT1JFX05BTUVEX1FVRVJZX0lEIH0pXSlcbiAgICApXG4gICk7XG5cbiAgc2VhcmNoQWRkcmVzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZWFyY2hBZGRyZXNzRm9yUG9pbnQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5nZW9jb2RpbmdTZXJ2aWNlLmZyb21MYXRMb25nKGFjdGlvbi5jb29yZGluYXRlcykucGlwZShcbiAgICAgICAgICBtYXAoKGFkZHJlc3MpID0+IERhc2hib2FyZEFjdGlvbnMuZGlzcGxheUFkZHJlc3MoeyBhZGRyZXNzIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkuY29udGV4dC5lcnJvclNlYXJjaEFkZHJlc3MnKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZXRhaWxBc0xvYWRJbldpZGdldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kZXRhaWwpLFxuICAgICAgbWFwKChhY3Rpb24pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24oe1xuICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICB3aWRnZXRUeXBlOiAnZGV0YWlsJyxcbiAgICAgICAgICBhZGRpdGlvbmFsT3B0aW9uczoge1xuICAgICAgICAgICAgaXRlbUlkczogYWN0aW9uLmlkc1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24pLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGEgd2lkZ2V0IHdpdGggc2FtZSBkYXRhc291cmNlIGFuZCB0eXBlIGFscmVhZHkgZXhpc3QgaW4gY3VycmVudCBwcmVzZW50YXRpb25cbiAgICAgICAgY29uc3Qgd2lkZ2V0VG9NYXRjaCA9IHRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLndpZGdldFR5cGUpO1xuXG4gICAgICAgIGxldCBhZGRpdGlvbmFsTWF0Y2hpbmdGbjogKG9wdGlvbnNUb01hdGNoOiBhbnksIG9wdGlvbnM6IGFueSkgPT4gYm9vbGVhbjtcbiAgICAgICAgc3dpdGNoICh3aWRnZXRUb01hdGNoLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdjaGFydCc6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogQ2hhcnRXaWRnZXRPcHRpb25zLCBvcHRpb25zOiBDaGFydFdpZGdldE9wdGlvbnMpID0+XG4gICAgICAgICAgICAgIG9wdGlvbnNUb01hdGNoLnR5cGUgPT09IG9wdGlvbnMudHlwZSAmJiBvcHRpb25zVG9NYXRjaC5zdWJUeXBlID09PSBvcHRpb25zLnN1YlR5cGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtYXAnOlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IE1hcFdpZGdldE9wdGlvbnMsIG9wdGlvbnM6IE1hcFdpZGdldE9wdGlvbnMpID0+XG4gICAgICAgICAgICAgICEhb3B0aW9ucy5sYXllcnMhLmZpbmQoKGxheWVyKSA9PiBsYXllci50eXBlID09PSBvcHRpb25zVG9NYXRjaC5sYXllcnMhWzBdLnR5cGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBhbnksIG9wdGlvbnM6IGFueSkgPT4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nV2lkZ2V0cyA9IG1hbmlmZXN0LndpbmRvd3MubWFwKCh3aW5kb3cpID0+XG4gICAgICAgICAgd2luZG93LndpZGdldHNcbiAgICAgICAgICAgIC5maWx0ZXIoKHdpZGdldCkgPT4gd2lkZ2V0LnR5cGUgPT09IHdpZGdldFRvTWF0Y2gudHlwZSlcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICh3aWRnZXQpID0+XG4gICAgICAgICAgICAgICAgd2lkZ2V0LmRhdGFzb3VyY2UgPT09IGFjdGlvbi5pZCB8fFxuICAgICAgICAgICAgICAgICh3aWRnZXQuZGF0YXNvdXJjZSFbMF0gPT09IGFjdGlvbi5pZCAmJiB3aWRnZXQuZGF0YXNvdXJjZSEubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbmQoKHdpZGdldCkgPT4gYWRkaXRpb25hbE1hdGNoaW5nRm4od2lkZ2V0VG9NYXRjaC5vcHRpb25zLCB3aWRnZXQub3B0aW9ucykpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgYWxyZWFkeU1hdGNoZWRXaWRnZXQgPSBtYXRjaGluZ1dpZGdldHMuZmluZCgod2luZG93KSA9PiAhIXdpbmRvdyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGlmIChhbHJlYWR5TWF0Y2hlZFdpZGdldCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5tdWx0aVNuYWNrQmFyKHtcbiAgICAgICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS53aWRnZXQudXBkYXRlZEluVmlldycsIHtcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBtYXRjaGluZ1dpZGdldHMuZmluZEluZGV4KCh3aWRnZXQpID0+ICEhd2lkZ2V0KSArIDFcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goRGFzaGJvYXJkQWN0aW9ucy5hZGRXaWRnZXRUb1ByZXNlbnRhdGlvbih7IC4uLmFjdGlvbiB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24pLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5ncmlkTGF5b3V0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkQ2VsbFBhcmFtcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgbWFwKChbYWN0aW9uLCBsYXlvdXQsIF9nbG9iYWxNYW5pZmVzdCwgcmFuaywgcGFyYW1zLCBzZWxlY3RlZElkc10pID0+IHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3RHbG9iYWwgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9nbG9iYWxNYW5pZmVzdCkpIGFzIEdsb2JhbE1hbmlmZXN0O1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBuZXdPcHRpb25zID0gdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24ud2lkZ2V0VHlwZSkgPz8ge1xuICAgICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICAgIHR5cGU6IGFjdGlvbi53aWRnZXRUeXBlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld1dpZGdldE1hbmlmZXN0ID0ge1xuICAgICAgICAgIC4uLm5ld09wdGlvbnMsXG4gICAgICAgICAgbGF5b3V0OiB7fSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAuLi5uZXdPcHRpb25zLm9wdGlvbnMsXG4gICAgICAgICAgICAuLi5hY3Rpb24uYWRkaXRpb25hbE9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgV2lkZ2V0TWFuaWZlc3Q7XG4gICAgICAgIGlmICghdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmlzTW9kZWwoYWN0aW9uLndpZGdldFR5cGUpKSB7XG4gICAgICAgICAgbmV3V2lkZ2V0TWFuaWZlc3QuaGVhZGVyID0geyBkYXRhc291cmNlU2VsZWN0aW9uOiBmYWxzZSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhYWN0aW9uLmlkKSB7XG4gICAgICAgICAgbmV3V2lkZ2V0TWFuaWZlc3QuZGF0YXNvdXJjZSA9IGFjdGlvbi5pZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmb3VuZDogeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfSB8IG51bGwgPSBudWxsO1xuICAgICAgICAvLyBUcnkgdG8gZmluZCBhIHNwb3QgaW4gd2luZG93cyAoc3RhcnRpbmcgYnkgY3VycmVudCByYW5rLCB0aGVuIGluIG90aGVycylcbiAgICAgICAgY29uc3Qgc2VxdWVuY2UgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5zd2FwQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICBuZXcgQXJyYXkobWFuaWZlc3RHbG9iYWwud2luZG93cy5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpZHgsIGFycmF5KSA9PiBpZHgpLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgcmFua1xuICAgICAgICApO1xuICAgICAgICAvLyBUcnlpbmcgYWxsIHBsYWNlbWVudCBvcHRpb25zXG4gICAgICAgIGZvciAoY29uc3QgYWN0dWFsUmFuayBvZiBzZXF1ZW5jZSkge1xuICAgICAgICAgIGNvbnN0IHdpbmRvd0xheW91dCA9IG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbYWN0dWFsUmFua10uZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhuZXdXaWRnZXRNYW5pZmVzdCwgd2luZG93TGF5b3V0LCBwYXJhbXMpO1xuICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIEFyZSB3ZSBkaXNqb2ludCBmcm9tIGFsbCBvdGhlciB3aWRnZXRzID9cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW2FjdHVhbFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRnZXQpID0+IFdpZGdldFBsYWNlbWVudFV0aWxzLmFyZURpc2pvaW50KHdpZGdldCwgb3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAgJiYgYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIGRpc2pvaW50IHBsYWNlbWVudCAhXG4gICAgICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuaywgd2lkZ2V0OiBvcHRpb24gfSBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIWZvdW5kKSB7XG4gICAgICAgICAgY29uc3QgcGxhY2VXZUZvdW5kID0gZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFdpbmRvd0xheW91dCA9IG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10uZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcblxuICAgICAgICAgIC8vIHNpIG5vbiB0cm91dsOpIDogbm91dmVsbGUgcGFnZSwgcHJlbWnDqHJlIHBvc2l0aW9uIHN1Z2fDqXLDqWVcbiAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhcbiAgICAgICAgICAgIG5ld1dpZGdldE1hbmlmZXN0LFxuICAgICAgICAgICAgY3VycmVudFdpbmRvd0xheW91dCxcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgIClbMF07XG5cbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzLnB1c2goeyB3aWRnZXRzOiBbZmlyc3RQcm9wb3NlZExheW91dF0sIGdyaWQ6IHsgbGF5b3V0OiBjdXJyZW50V2luZG93TGF5b3V0IH0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aW9uLmFsZXJ0ID09PSB1bmRlZmluZWQgfHwgYWN0aW9uLmFsZXJ0ID09PSB0cnVlKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZUFjdGlvbiA9IERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0Jhcih7XG4gICAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LmFkZGVkSW5WaWV3Jywge1xuICAgICAgICAgICAgICAgIGluZGV4OiAhIWZvdW5kXG4gICAgICAgICAgICAgICAgICA/IChmb3VuZCBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9KS5hY3R1YWxSYW5rICsgMVxuICAgICAgICAgICAgICAgICAgOiBtYW5pZmVzdEdsb2JhbC53aW5kb3dzLmxlbmd0aFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobWVzc2FnZUFjdGlvbik7XG5cbiAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICB0aGlzLmJ1c1NlcnZpY2UuYnVmZmVyVW50aWxKb2luZWQobWVzc2FnZUFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QoeyBtYW5pZmVzdDogbWFuaWZlc3RHbG9iYWwsIHNlbGVjdGVkSWRzIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbXVsdGlTbmFja0JhciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0JhciksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnNuYWNrQmFyLm9wZW4oYWN0aW9uLm1lc3NhZ2UpKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgcmVsYXVuY2hBZnRlck9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnF1aWNrT3JkZXIpLFxuICAgICAgbWFwKChhY3Rpb24pID0+IFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHsgaWQ6IGFjdGlvbi5kYXRhc291cmNlSWQgfSkpXG4gICAgKVxuICApO1xuXG4gIHByb3BhZ2F0ZUdyaWRMYXlvdXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB3aW5kb3dNYW5pZmVzdF0pID0+IERhc2hib2FyZEFjdGlvbnMucHJvcGFnYXRlR3JpZExheW91dCh7IG1hbmlmZXN0OiB3aW5kb3dNYW5pZmVzdCwgcmFuayB9KSlcbiAgICApXG4gICk7XG5cbiAgdG9nZ2xlRWRpdGlvbk1vZGVJZk5vdE1hbnVhbCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KSxcbiAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24ubGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSlcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlVmlld0FmdGVyRmlsdGVyVmFsdWVVcGRhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRmlsdGVyVmFsdWUpLFxuICAgICAgbWFwKChhY3Rpb24pID0+IFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHsgaWQ6IGFjdGlvbi5kYXRhc291cmNlSWQgfSkpXG4gICAgKVxuICApO1xuXG4gIGdldFdtc0ZlYXR1cmVzID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZ2V0V21zRmVhdHVyZXMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gY29tYmluZUxhdGVzdChbb2YoYWN0aW9uKSwgdGhpcy5nZW9jb2RpbmdTZXJ2aWNlLmdldFdtc0ZlYXR1cmVzKGFjdGlvbi51cmwpXSkpLFxuICAgICAgbWFwKChbYWN0aW9uLCBqc29uXSkgPT4ge1xuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy5hZGRXbXNGZWF0dXJlcyh7XG4gICAgICAgICAgZmVhdHVyZXM6IGpzb24uZmVhdHVyZXMubWFwKChmZWF0dXJlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBhY3Rpb24uY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICAgIHZhbHVlczogeyBwcm9wZXJ0aWVzOiBbXSB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZmVhdHVyZS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC52YWx1ZXMucHJvcGVydGllcy5wdXNoKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGFzaGJvYXJkSW5pdFNlcnZpY2U6IERhc2hib2FyZEluaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIG1hbmlmZXN0U2VydmljZTogTWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQcnlUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGdlb2NvZGluZ1NlcnZpY2U6IEdlb2NvZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWZyZXNoU2VydmljZTogUmVmcmVzaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b29sYm94TWFuaWZlc3RTZXJ2aWNlOiBUb29sYm94TWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnVzU2VydmljZTogQnVzU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2VcbiAgKSB7XG4gICAgZGFzaGJvYXJkSW5pdFNlcnZpY2UuaW5pdCgpO1xuICAgIHJlZnJlc2hTZXJ2aWNlLnN0YXJ0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUlsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPM0QsTUFBTSxPQUFPLGdCQUFnQjtJQWlvQjNCLFlBQ1Usb0JBQTBDLEVBQzFDLFFBQWlCLEVBQ2pCLEtBQWlCLEVBQ2pCLGVBQWdD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QUM7UUFDNUIsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBbnBCVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtZXJnZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJ5VmlzaWJpbGl0eVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2NvbXBvbmVudHMvc2hhcmUvc2hhcmUubW9kZWwnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIEdsb2JhbE1hbmlmZXN0LCBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXJ0V2lkZ2V0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LWNoYXJ0LW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtbWFwLW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5hY3Rpb25zJztcbmltcG9ydCB7IEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYm94TWFuaWZlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYm94L3Rvb2xib3gtbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9uLWJ1cy9zZXJ2aWNlL2J1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldFBsYWNlbWVudFV0aWxzIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBSZXN1bHRzZXRVdGlscyB9IGZyb20gJy4uL3Jlc3VsdHNldC11dGlscyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRJbml0U2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWluaXQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zIH0gZnJvbSAnLi9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgR2VvY29kaW5nU2VydmljZSB9IGZyb20gJy4vZ2VvY29kaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFuaWZlc3RTZXJ2aWNlIH0gZnJvbSAnLi9tYW5pZmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXJ2aWNlIH0gZnJvbSAnLi9yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5VGl0bGVTZXJ2aWNlIH0gZnJvbSAnLi90aXRsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZEVmZmVjdHMge1xuICBqb2luJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmpvaW4pLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHJlc3VsdFNldHNdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHJlc3VsdFNldHMsIHNlbGVjdGVkSWRzLCBwcmVzZW50YXRpb25dKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luKHtcbiAgICAgICAgICB0ZW5hbnRzLCAvLyB3ZSBhbHJlYWR5IGhhdmUgYWRkZWQgdGVuYW50IGluIHRoZSByZWR1Y2Ugb2YgdGhlIFwiam9pblwiIGFjdGlvblxuICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAuLi5tYW5pZmVzdCxcbiAgICAgICAgICAgIHdpbmRvd3M6IG1hbmlmZXN0LndpbmRvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFNldHMsXG4gICAgICAgICAgc2VsZWN0ZWRJZHMsXG4gICAgICAgICAgam9pbmluZzogdHJ1ZSxcbiAgICAgICAgICBwcmVzZW50YXRpb25cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGVhdmUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubGVhdmUpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiByYW5rID09PSAwIHx8ICh0ZW5hbnRzWzBdID09PSBhY3Rpb24uc2VuZGVyICYmIHJhbmsgPT09IDEpKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBsZWF2ZXJSYW5rID0gdGVuYW50cy5pbmRleE9mKGFjdGlvbi5zZW5kZXIpO1xuICAgICAgICBjb25zdCBuZXdUZW5hbnRzTGlzdCA9IFsuLi50ZW5hbnRzXTtcbiAgICAgICAgY29uc3QgbmV3V2luZG93TGlzdCA9IFsuLi5tYW5pZmVzdC53aW5kb3dzXTtcbiAgICAgICAgaWYgKGxlYXZlclJhbmsgPiAtMSkge1xuICAgICAgICAgIG5ld1RlbmFudHNMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgICBuZXdXaW5kb3dMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSh7XG4gICAgICAgICAgdGVuYW50czogbmV3VGVuYW50c0xpc3QsXG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICAgICAgd2luZG93czogbmV3V2luZG93TGlzdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0ZWRJZHNcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbiAgZmV0Y2hTdGF0aWNNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mZXRjaFN0YXRpY01hbmlmZXN0KSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlXG4gICAgICAgICAgLmdldChhY3Rpb24uaWQpXG4gICAgICAgICAgLnBpcGUobWFwKChzdGF0aWNNYW5pZmVzdCkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVTdGF0aWNNYW5pZmVzdCh7IHN0YXRpY01hbmlmZXN0IH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QsIERhc2hib2FyZEFjdGlvbnMubG9hZE1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmFuaywgc2VsZWN0ZWRJZHNdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChtYW5pZmVzdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlID09PSBEYXNoYm9hcmRBY3Rpb25zLmxvYWRBbmRBY3RpdmF0ZU1hbmlmZXN0LnR5cGVcbiAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCh7IG1hbmlmZXN0LCBtYW5pZmVzdElkOiBhY3Rpb24uaWQsIHNlbGVjdGVkSWRzIH0pLFxuICAgICAgICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5mb2xsb3dNYW5pZmVzdFJvdXRlKClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIDogW0Rhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RXaXRob3V0QWN0aXZhdGlvbih7IG1hbmlmZXN0LCBtYW5pZmVzdElkOiBhY3Rpb24uaWQsIHNlbGVjdGVkSWRzIH0pXTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNsZWFyTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuY2xlYXJNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIG1hbmlmZXN0LCBzZWxlY3RlZElkc10pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6ICcnLCBzZWxlY3RlZElkcyB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkb3dubG9hZE1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kb3dubG9hZE1hbmlmZXN0KSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+XG4gICAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi5pZCkuc3Vic2NyaWJlKChtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSAnZGF0YTp0ZXh0L2pzb247Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0KSk7XG4gICAgICAgICAgICBjb25zdCBkbEFuY2hvckVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBkbEFuY2hvckVsZW0uc2V0QXR0cmlidXRlKCdocmVmJywgZGF0YVN0cik7XG4gICAgICAgICAgICBkbEFuY2hvckVsZW0uc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGAke2FjdGlvbi5uYW1lfS5qc29uYCk7XG4gICAgICAgICAgICBkbEFuY2hvckVsZW0uY2xpY2soKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBmb2xsb3dNYW5pZmVzdFJvdXRlJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mb2xsb3dNYW5pZmVzdFJvdXRlKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KSksXG4gICAgICAgIHRhcCgoW2FjdGlvbiwgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgICAgaWYgKG1hbmlmZXN0LnJvdXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG1hbmlmZXN0LnJvdXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICByZXF1ZXN0TWFuaWZlc3RSb3V0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5yZXF1ZXN0QWxsUm91dGVzKSxcbiAgICAgIG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVJvdXRlTWFuaWZlc3QoeyByb3V0ZTogdGhpcy5yb3V0ZXIudXJsIH0pKVxuICAgIClcbiAgKTtcblxuICBhc3NlcnRSZXN1bHRTZXRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmFzc2VydFJlc3VsdFNldHMpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHNQYXJhbXMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucXVpY2tPcmRlcilcbiAgICAgICksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgbWFuaWZlc3QsIHJlc3VsdFNldHMsIHJlc3VsdFNldHNQYXJhbXMsIHF1aWNrT3JkZXJdKSA9PiB7XG4gICAgICAgIGlmICghYWN0aW9uLmlkKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgICAgICBtYW5pZmVzdC53aW5kb3dzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHdpbk1hbmlmZXN0KSA9PiAod2luTWFuaWZlc3QgPz8ge30pLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHdpZE1hbmlmZXN0KSA9PiB3aWRNYW5pZmVzdC5kYXRhc291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSBhcyAoc3RyaW5nIHwgc3RyaW5nW10pW11cbiAgICAgICAgICAgICkucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uKEFycmF5LmlzQXJyYXkoYykgPyBjIDogW2NdKV0sIFtdKSBhcyBzdHJpbmdbXVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgIChyZXN1bHRTZXQpID0+XG4gICAgICAgICAgICAgICAgISFyZXN1bHRTZXQgJiZcbiAgICAgICAgICAgICAgICByZXN1bHRTZXQgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgKCFyZXN1bHRTZXRzW3Jlc3VsdFNldF0gfHxcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFNldHNQYXJhbXNbcmVzdWx0U2V0XSAhPT0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldEl0ZW1zU2VyaWFsaXplZFBhcmFtcyhyZXN1bHRTZXQsIHF1aWNrT3JkZXIpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLm1hcCgocmVzdWx0U2V0KSA9PiBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7IGlkOiByZXN1bHRTZXQgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghcmVzdWx0U2V0c1thY3Rpb24uaWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gW1NlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHsgaWQ6IGFjdGlvbi5pZCBhcyBzdHJpbmcgfSldO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHJlc2l6ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAvLyBmb3J3YXJkIG5ldyBtYW5pZmVzdCBhZnRlciBhbnkgb2YgdGhlc2UgdHlwZXMgb2YgYWN0aW9uc1xuICAgICAgb2ZUeXBlKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURhc2hib2FyZE1hbmlmZXN0LFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLm1vdmVXaWRnZXQsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0TWFuaWZlc3RcbiAgICAgICksXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmaWx0ZXIoKGFjdGlvbikgPT4gIWFjdGlvbi5zZW5kZXIpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy50ZW5hbnRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIG1hbmlmZXN0LCB0ZW5hbnRzLCBzZWxlY3RlZElkc10pID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIG1hbmlmZXN0LFxuICAgICAgICAgIHNlbGVjdGVkSWRzXG4gICAgICAgIH0gYXMgeyBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7IHRlbmFudHM6IHN0cmluZ1tdOyBzZWxlY3RlZElkczogc3RyaW5nW10gfTtcbiAgICAgICAgaWYgKCEhdGVuYW50cyAmJiB0ZW5hbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBwYXJhbXMudGVuYW50cyA9IHRlbmFudHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclJlc2l6ZShwYXJhbXMpO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgc3RhcnRNaXNzaW5nVmlld0FmdGVyVmlld1VwZGF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJSZXNpemUsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZGV0YWlsLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnJlc3RvcmVJbml0aWFsTWFuaWZlc3QsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuY3JlYXRlVGFiXG4gICAgICApLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW1xuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnN0YXJ0aW5nTWlzc2luZ1ZpZXdzKCksXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyh7fSksXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc29sdmVDb2xsaXNpb25zKClcbiAgICAgIF0pXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVRpdGxlJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCxcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luLFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlLFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoLFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclJlc2l6ZSxcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRlY2xhcmVTZW5kZXJJZFxuICAgICAgICApLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgICB0YXAoKFthY3Rpb24sIHJhbmtdKSA9PiB7XG4gICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoKTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIG9wZW5PdGhlciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc3RhcnRpbmdNaXNzaW5nVmlld3MpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdClcbiAgICAgICAgKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0XSkgPT4gcmFuayA9PT0gMCksXG4gICAgICAgIHRhcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgICAgbWFuaWZlc3Qud2luZG93cy5mb3JFYWNoKCh3aW5kb3dNYW5pZmVzdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGVuYW50c1tpbmRleF0pIHtcbiAgICAgICAgICAgICAgLy8gSWYgbm8gd2luZG93IGlzIG9wZW5lZCBmb3IgdGhpcyBwYXJ0LCB0aGVuIG9wZW4gb25lXG4gICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHdpbmRvd01hbmlmZXN0LnJvdXRlID8/IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSwgJ19ibGFuaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgc2F2ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCBjdXJyZW50TWFuaWZlc3RdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5zYXZlKFxuICAgICAgICAgICAgYWN0aW9uLm5hbWUsXG4gICAgICAgICAgICBhY3Rpb24ubWFuaWZlc3QgPz8gY3VycmVudE1hbmlmZXN0LFxuICAgICAgICAgICAgYWN0aW9uLnZpc2liaWxpdHkgPz8geyB0eXBlOiBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFIH0sXG4gICAgICAgICAgICBhY3Rpb24uaWQsXG4gICAgICAgICAgICBhY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhY3Rpb24uaW1hZ2UsXG4gICAgICAgICAgICBhY3Rpb24uY292ZXJcbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVkJywgeyB2aWV3SWQ6IGFjdGlvbi5uYW1lIH0pLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiBhY3Rpb24ubWFuaWZlc3QgPz8gY3VycmVudE1hbmlmZXN0KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlRXJyb3JDb2RlLicgKyBlcnJvci5lcnJvci5jb2RlLCB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBhY3Rpb24ubmFtZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKChtYW5pZmVzdCkgPT4gW1xuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oeyBpbml0aWFsOiBtYW5pZmVzdCB9KVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgZGVmYXVsdE1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRlZmF1bHRNYW5pZmVzdCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5kZWZhdWx0KGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICB0YXAoKHJlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgcmVzID8gJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5kZWZhdWx0ZWQnIDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC51bmRlZmF1bHRlZCcsXG4gICAgICAgICAgICAgICAgeyB2aWV3SWQ6IGFjdGlvbi5uYW1lIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpXG4gICAgKVxuICApO1xuXG4gIGxpc3RNYW5pZmVzdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwIHx8IHJhbmsgPT09IC0xKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UubGlzdCgpLnBpcGUobWFwKChtYW5pZmVzdHMpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RzTGlzdCh7IG1hbmlmZXN0cyB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0KSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmRlbGV0ZShhY3Rpb24uaWQpLnBpcGUobWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBmZXRjaE9iamVjdHNEZXRhaWxzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoT2JqZWN0c0RldGFpbHMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gbWVyZ2UoLi4uYWN0aW9uLmlkcy5tYXAoKGlkKSA9PiB0aGlzLml0ZW1TZXJ2aWNlLmdldChpZCkpKSksXG4gICAgICBtYXAoKGl0ZW0pID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlT2JqZWN0c0RldGFpbHMoeyBsaXN0OiB7IFtpdGVtLmlkXTogaXRlbSB9IH0pKVxuICAgIClcbiAgKTtcblxuICBwcm94aW1pdHlTZWFyY2gkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMucHJveGltaXR5KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmVzdWx0U2V0c10pID0+XG4gICAgICAgIHRoaXMuaXRlbVNlcnZpY2UucHJveGltaXR5KGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKHByb3hScykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlUmVzdWx0U2V0KHtcbiAgICAgICAgICAgICAgaWQ6IGFjdGlvbi50YXJnZXRSZXN1bHRTZXQsXG4gICAgICAgICAgICAgIHJlc3VsdFNldDogUmVzdWx0c2V0VXRpbHMubWVyZ2VSZXN1bHRTZXRzKHByb3hScywgcmVzdWx0U2V0c1thY3Rpb24udGFyZ2V0UmVzdWx0U2V0XSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZXhwbG9yZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5leHBsb3JlKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IFtEYXNoYm9hcmRBY3Rpb25zLnByb3hpbWl0eSh7IGlkOiBhY3Rpb24uaWQsIHRhcmdldFJlc3VsdFNldDogRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCB9KV0pXG4gICAgKVxuICApO1xuXG4gIHNlYXJjaEFkZHJlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2VhcmNoQWRkcmVzc0ZvclBvaW50KSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZ2VvY29kaW5nU2VydmljZS5mcm9tTGF0TG9uZyhhY3Rpb24uY29vcmRpbmF0ZXMpLnBpcGUoXG4gICAgICAgICAgbWFwKChhZGRyZXNzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmRpc3BsYXlBZGRyZXNzKHsgYWRkcmVzcyB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LmNvbnRleHQuZXJyb3JTZWFyY2hBZGRyZXNzJylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGV0YWlsQXNMb2FkSW5XaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGV0YWlsKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgd2lkZ2V0VHlwZTogJ2RldGFpbCcsXG4gICAgICAgICAgYWRkaXRpb25hbE9wdGlvbnM6IHtcbiAgICAgICAgICAgIGl0ZW1JZHM6IGFjdGlvbi5pZHNcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiBhIHdpZGdldCB3aXRoIHNhbWUgZGF0YXNvdXJjZSBhbmQgdHlwZSBhbHJlYWR5IGV4aXN0IGluIGN1cnJlbnQgcHJlc2VudGF0aW9uXG4gICAgICAgIGNvbnN0IHdpZGdldFRvTWF0Y2ggPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKTtcblxuICAgICAgICBsZXQgYWRkaXRpb25hbE1hdGNoaW5nRm46IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IGJvb2xlYW47XG4gICAgICAgIHN3aXRjaCAod2lkZ2V0VG9NYXRjaC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnY2hhcnQnOlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IENoYXJ0V2lkZ2V0T3B0aW9ucywgb3B0aW9uczogQ2hhcnRXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICBvcHRpb25zVG9NYXRjaC50eXBlID09PSBvcHRpb25zLnR5cGUgJiYgb3B0aW9uc1RvTWF0Y2guc3ViVHlwZSA9PT0gb3B0aW9ucy5zdWJUeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBNYXBXaWRnZXRPcHRpb25zLCBvcHRpb25zOiBNYXBXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICAhIW9wdGlvbnMubGF5ZXJzIS5maW5kKChsYXllcikgPT4gbGF5ZXIudHlwZSA9PT0gb3B0aW9uc1RvTWF0Y2gubGF5ZXJzIVswXS50eXBlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRjaGluZ1dpZGdldHMgPSBtYW5pZmVzdC53aW5kb3dzLm1hcCgod2luZG93KSA9PlxuICAgICAgICAgIHdpbmRvdy53aWRnZXRzXG4gICAgICAgICAgICAuZmlsdGVyKCh3aWRnZXQpID0+IHdpZGdldC50eXBlID09PSB3aWRnZXRUb01hdGNoLnR5cGUpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAod2lkZ2V0KSA9PlxuICAgICAgICAgICAgICAgIHdpZGdldC5kYXRhc291cmNlID09PSBhY3Rpb24uaWQgfHxcbiAgICAgICAgICAgICAgICAod2lkZ2V0LmRhdGFzb3VyY2UhWzBdID09PSBhY3Rpb24uaWQgJiYgd2lkZ2V0LmRhdGFzb3VyY2UhLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maW5kKCh3aWRnZXQpID0+IGFkZGl0aW9uYWxNYXRjaGluZ0ZuKHdpZGdldFRvTWF0Y2gub3B0aW9ucywgd2lkZ2V0Lm9wdGlvbnMpKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGFscmVhZHlNYXRjaGVkV2lkZ2V0ID0gbWF0Y2hpbmdXaWRnZXRzLmZpbmQoKHdpbmRvdykgPT4gISF3aW5kb3cpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAoYWxyZWFkeU1hdGNoZWRXaWRnZXQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0Jhcih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LnVwZGF0ZWRJblZpZXcnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogbWF0Y2hpbmdXaWRnZXRzLmZpbmRJbmRleCgod2lkZ2V0KSA9PiAhIXdpZGdldCkgKyAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24oeyAuLi5hY3Rpb24gfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGFkZFdpZGdldFRvUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRhc2hib2FyZENlbGxQYXJhbXMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbGF5b3V0LCBfZ2xvYmFsTWFuaWZlc3QsIHJhbmssIHBhcmFtcywgc2VsZWN0ZWRJZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hbmlmZXN0R2xvYmFsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfZ2xvYmFsTWFuaWZlc3QpKSBhcyBHbG9iYWxNYW5pZmVzdDtcblxuICAgICAgICAvLyBDcmVhdGUgbmV3IGNvbmZpZ3VyYXRpb25cbiAgICAgICAgY29uc3QgbmV3T3B0aW9ucyA9IHRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLndpZGdldFR5cGUpID8/IHtcbiAgICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgICAgICB0eXBlOiBhY3Rpb24ud2lkZ2V0VHlwZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdXaWRnZXRNYW5pZmVzdCA9IHtcbiAgICAgICAgICAuLi5uZXdPcHRpb25zLFxuICAgICAgICAgIGxheW91dDoge30sXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLi4ubmV3T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICAgICAgLi4uYWN0aW9uLmFkZGl0aW9uYWxPcHRpb25zXG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIFdpZGdldE1hbmlmZXN0O1xuICAgICAgICBpZiAoIXRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5pc01vZGVsKGFjdGlvbi53aWRnZXRUeXBlKSkge1xuICAgICAgICAgIG5ld1dpZGdldE1hbmlmZXN0LmhlYWRlciA9IHsgZGF0YXNvdXJjZVNlbGVjdGlvbjogZmFsc2UgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIWFjdGlvbi5pZCkge1xuICAgICAgICAgIG5ld1dpZGdldE1hbmlmZXN0LmRhdGFzb3VyY2UgPSBhY3Rpb24uaWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZm91bmQ6IHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH0gfCBudWxsID0gbnVsbDtcbiAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYSBzcG90IGluIHdpbmRvd3MgKHN0YXJ0aW5nIGJ5IGN1cnJlbnQgcmFuaywgdGhlbiBpbiBvdGhlcnMpXG4gICAgICAgIGNvbnN0IHNlcXVlbmNlID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMuc3dhcEFycmF5RWxlbWVudHMoXG4gICAgICAgICAgbmV3IEFycmF5KG1hbmlmZXN0R2xvYmFsLndpbmRvd3MubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaWR4LCBhcnJheSkgPT4gaWR4KSxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHJhbmtcbiAgICAgICAgKTtcbiAgICAgICAgLy8gVHJ5aW5nIGFsbCBwbGFjZW1lbnQgb3B0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGFjdHVhbFJhbmsgb2Ygc2VxdWVuY2UpIHtcbiAgICAgICAgICBjb25zdCB3aW5kb3dMYXlvdXQgPSBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW2FjdHVhbFJhbmtdLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlbWVudE9wdGlvbnMobmV3V2lkZ2V0TWFuaWZlc3QsIHdpbmRvd0xheW91dCwgcGFyYW1zKTtcbiAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAvLyBBcmUgd2UgZGlzam9pbnQgZnJvbSBhbGwgb3RoZXIgd2lkZ2V0cyA/XG4gICAgICAgICAgICAgICAgY29uc3QgaXNEaXNqb2ludEZyb21BbGwgPSAobWFuaWZlc3RHbG9iYWwud2luZG93c1thY3R1YWxSYW5rXS53aWRnZXRzID8/IFtdKVxuICAgICAgICAgICAgICAgICAgLm1hcCgod2lkZ2V0KSA9PiBXaWRnZXRQbGFjZW1lbnRVdGlscy5hcmVEaXNqb2ludCh3aWRnZXQsIG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwICYmIGMsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmIChpc0Rpc2pvaW50RnJvbUFsbCkge1xuICAgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBkaXNqb2ludCBwbGFjZW1lbnQgIVxuICAgICAgICAgICAgICAgICAgZm91bmQgPSB7IGFjdHVhbFJhbmssIHdpZGdldDogb3B0aW9uIH0gYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISFmb3VuZCkge1xuICAgICAgICAgIGNvbnN0IHBsYWNlV2VGb3VuZCA9IGZvdW5kIGFzIHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH07XG4gICAgICAgICAgbWFuaWZlc3RHbG9iYWwud2luZG93c1twbGFjZVdlRm91bmQuYWN0dWFsUmFua10ud2lkZ2V0cy5wdXNoKHBsYWNlV2VGb3VuZC53aWRnZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaW5kb3dMYXlvdXQgPSBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3JhbmtdLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG5cbiAgICAgICAgICAvLyBzaSBub24gdHJvdXbDqSA6IG5vdXZlbGxlIHBhZ2UsIHByZW1pw6hyZSBwb3NpdGlvbiBzdWdnw6lyw6llXG4gICAgICAgICAgY29uc3QgZmlyc3RQcm9wb3NlZExheW91dCA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlbWVudE9wdGlvbnMoXG4gICAgICAgICAgICBuZXdXaWRnZXRNYW5pZmVzdCxcbiAgICAgICAgICAgIGN1cnJlbnRXaW5kb3dMYXlvdXQsXG4gICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICApWzBdO1xuXG4gICAgICAgICAgbWFuaWZlc3RHbG9iYWwud2luZG93cy5wdXNoKHsgd2lkZ2V0czogW2ZpcnN0UHJvcG9zZWRMYXlvdXRdLCBncmlkOiB7IGxheW91dDogY3VycmVudFdpbmRvd0xheW91dCB9IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGlvbi5hbGVydCA9PT0gdW5kZWZpbmVkIHx8IGFjdGlvbi5hbGVydCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VBY3Rpb24gPSBEYXNoYm9hcmRBY3Rpb25zLm11bHRpU25hY2tCYXIoe1xuICAgICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5hZGRlZEluVmlldycsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogISFmb3VuZFxuICAgICAgICAgICAgICAgICAgPyAoZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfSkuYWN0dWFsUmFuayArIDFcbiAgICAgICAgICAgICAgICAgIDogbWFuaWZlc3RHbG9iYWwud2luZG93cy5sZW5ndGhcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG1lc3NhZ2VBY3Rpb24pO1xuXG4gICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5idXNTZXJ2aWNlLmJ1ZmZlclVudGlsSm9pbmVkKG1lc3NhZ2VBY3Rpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IG1hbmlmZXN0R2xvYmFsLCBzZWxlY3RlZElkcyB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIG11bHRpU25hY2tCYXIkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLm11bHRpU25hY2tCYXIpLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4gdGhpcy5zbmFja0Jhci5vcGVuKGFjdGlvbi5tZXNzYWdlKSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHJlbGF1bmNoQWZ0ZXJPcmRlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5xdWlja09yZGVyKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PiBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7IGlkOiBhY3Rpb24uZGF0YXNvdXJjZUlkIH0pKVxuICAgIClcbiAgKTtcblxuICBwcm9wYWdhdGVHcmlkTGF5b3V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnNldEdyaWRMYXlvdXQpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgd2luZG93TWFuaWZlc3RdKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnByb3BhZ2F0ZUdyaWRMYXlvdXQoeyBtYW5pZmVzdDogd2luZG93TWFuaWZlc3QsIHJhbmsgfSkpXG4gICAgKVxuICApO1xuXG4gIHRvZ2dsZUVkaXRpb25Nb2RlSWZOb3RNYW51YWwkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCksXG4gICAgICBmaWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmxheW91dCAhPT0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMudG9nZ2xlRWRpdGlvbk1vZGUoeyBmb3JjZTogZmFsc2UgfSkpXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVZpZXdBZnRlckZpbHRlclZhbHVlVXBkYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUZpbHRlclZhbHVlKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PiBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7IGlkOiBhY3Rpb24uZGF0YXNvdXJjZUlkIH0pKVxuICAgIClcbiAgKTtcblxuICBnZXRXbXNGZWF0dXJlcyA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldFdtc0ZlYXR1cmVzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IGNvbWJpbmVMYXRlc3QoW29mKGFjdGlvbiksIHRoaXMuZ2VvY29kaW5nU2VydmljZS5nZXRXbXNGZWF0dXJlcyhhY3Rpb24udXJsKV0pKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwganNvbl0pID0+IHtcbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoe1xuICAgICAgICAgIGZlYXR1cmVzOiBqc29uLmZlYXR1cmVzLm1hcCgoZmVhdHVyZTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICAgIG9DbGFzczogYWN0aW9uLm9DbGFzcyxcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGFjdGlvbi5jb29yZGluYXRlcyxcbiAgICAgICAgICAgICAgdmFsdWVzOiB7IHByb3BlcnRpZXM6IFtdIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhmZWF0dXJlLnByb3BlcnRpZXMpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXNbcHJvcGVydHldICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlcy5wcm9wZXJ0aWVzLnB1c2goeyBrZXk6IHByb3BlcnR5LCB2YWx1ZTogZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRJbml0U2VydmljZTogRGFzaGJvYXJkSW5pdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgbWFuaWZlc3RTZXJ2aWNlOiBNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFByeVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZ2VvY29kaW5nU2VydmljZTogR2VvY29kaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlZnJlc2hTZXJ2aWNlOiBSZWZyZXNoU2VydmljZSxcbiAgICBwcml2YXRlIHRvb2xib3hNYW5pZmVzdFNlcnZpY2U6IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBidXNTZXJ2aWNlOiBCdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZVxuICApIHtcbiAgICBkYXNoYm9hcmRJbml0U2VydmljZS5pbml0KCk7XG4gICAgcmVmcmVzaFNlcnZpY2Uuc3RhcnQoKTtcbiAgfVxufVxuIl19
|