@eo-sdk/client 11.14.13 → 11.14.15

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.
Files changed (20) hide show
  1. package/app/eo-framework/accordion/simple-accordion/simple-accordion.component.d.ts +5 -3
  2. package/app/eo-framework/accordion/simple-accordion/simple-accordion.component.d.ts.map +1 -1
  3. package/app/eo-framework/actions/index.d.ts +40 -0
  4. package/app/eo-framework/actions/index.d.ts.map +1 -1
  5. package/app/eo-framework/list-container/list-container.component.d.ts.map +1 -1
  6. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  7. package/esm2022/app/eo-client/settings/settings.component.mjs +1 -1
  8. package/esm2022/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +11 -5
  9. package/esm2022/app/eo-framework/actions/index.mjs +41 -1
  10. package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +1 -1
  11. package/esm2022/app/eo-framework/list-container/list-container.component.mjs +6 -2
  12. package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +1 -1
  13. package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +2 -2
  14. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +1 -1
  15. package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +1 -1
  16. package/esm2022/app/eo-framework-core/api/grid.service.mjs +3 -3
  17. package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +2 -2
  18. package/fesm2022/eo-sdk-client.mjs +27 -17
  19. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  20. package/package.json +3 -3
@@ -76,7 +76,11 @@ export class ListContainerComponent {
76
76
  showActions(selectedData, target = 'DMS_OBJECT') {
77
77
  let selection = selectedData || this.selection.find(this.applySelection.out).get();
78
78
  let observables = selection.map(data => target === 'DMS_OBJECT' ? this.dmsService.getDmsObjectByParams(this.parseDmsParams(data)) : observableOf(data));
79
- observableForkJoin(observables).subscribe((res) => this.actionService.showActions(res, target));
79
+ this.loading = true;
80
+ observableForkJoin(observables).subscribe((res) => {
81
+ this.loading = false;
82
+ this.actionService.showActions(res, target);
83
+ });
80
84
  }
81
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ListContainerComponent, deps: [{ token: i1.SelectionService }, { token: i2.Router }, { token: i3.DmsService }, { token: i4.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
82
86
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ListContainerComponent, selector: "eo-list-container", inputs: { applySelection: "applySelection", applyVersion: "applyVersion", loading: "loading", tabs: "tabs", parseDmsParams: "parseDmsParams" }, queries: [{ propertyName: "contentGrid", first: true, predicate: GridComponent, descendants: true }], ngImport: i0, template: "<div class=\"eo-head\" [ngClass]=\"{'eo-head-tabs': tabs}\">\n <ng-content select=\".eo-header\"></ng-content>\n</div>\n<ng-content select=\".eo-body\">\n</ng-content>\n<div class=\"loading-container\" *ngIf=\"loading\"><eo-loading-spinner [size]=\"'medium'\"></eo-loading-spinner></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;width:100%;background:var(--color-white)}:host .loading-container{height:100%;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }] }); }
@@ -98,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
98
102
  }], parseDmsParams: [{
99
103
  type: Input
100
104
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBRSxZQUFZLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBU3JELE1BQU0sT0FBTyxzQkFBc0I7SUFNakMsSUFDSSxXQUFXLENBQUMsTUFBcUI7UUFDbkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBUUQsWUFBb0IsU0FBMkIsRUFDM0IsTUFBYyxFQUFVLFVBQXNCLEVBQVUsYUFBNEI7UUFEcEYsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FB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LElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDZWxsUmVuZGVyZXJ9IGZyb20gJy4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge2ZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBBc3luY1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtHcmlkQ29tcG9uZW50fSBmcm9tICcuLi9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7QWN0aW9uU2VydmljZX0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb24tc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgRG1zU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWxpc3QtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHVibGljIGdyaWRDb3VudDogYW55O1xuICBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG4gIGVvR3JpZFN1YmplY3QgPSBuZXcgQXN5bmNTdWJqZWN0PEdyaWRDb21wb25lbnQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChHcmlkQ29tcG9uZW50KVxuICBzZXQgY29udGVudEdyaWQoZW9HcmlkOiBHcmlkQ29tcG9uZW50KSB7XG4gICAgaWYgKGVvR3JpZCkge1xuICAgICAgdGhpcy5lb0dyaWQgPSBlb0dyaWQ7XG4gICAgICB0aGlzLmVvR3JpZFN1YmplY3QubmV4dCh0aGlzLmVvR3JpZCk7XG4gICAgICB0aGlzLmVvR3JpZFN1YmplY3QuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnID0ge307XG4gIEBJbnB1dCgpIGFwcGx5VmVyc2lvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgdGFicyA9IHRydWU7XG4gIEBJbnB1dCgpIHBhcnNlRG1zUGFyYW1zOiAoZGF0YSkgPT4gYW55ID0gKGRhdGE6IGFueSkgPT4gZGF0YTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLCBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIG9uQ291bnRDaGFuZ2VkKGRhdGE6IGFueSkge1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZ3JpZENvdW50ID0gZGF0YTtcbiAgfVxuXG4gIG9uRm9jdXNDaGFuZ2VkKGRhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dClcbiAgICAgIC5mb2N1cyhkYXRhKTtcbiAgfVxuXG4gIG9uRG91YmxlQ2xpY2soZXZlbnQ6IGFueSwgZm9yY2VPcGVuT2JqZWN0ID0gZmFsc2UpIHtcblxuICAgIGNvbnN0IHtpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50fSA9IHRoaXMucGFyc2VEbXNQYXJhbXMoZXZlbnQuZGF0YSk7XG4gICAgaWYgKGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcGVuT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQsIGV2ZW50LmV2ZW50LmN0cmxLZXksIGZvcmNlT3Blbk9iamVjdCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGVkRGF0YTogYW55W10pIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5zZXQoc2VsZWN0ZWREYXRhKTtcbiAgfVxuXG4gIG9uQ29udGV4dE1lbnUoc2VsZWN0ZWREYXRhPzogYW55W10sIHRhcmdldD86IHN0cmluZykge1xuICAgIHRoaXMuc2hvd0FjdGlvbnMoc2VsZWN0ZWREYXRhLCB0YXJnZXQpO1xuICB9XG5cbiAgb3Blbk9iamVjdChpZCwgX3R5cGU/LCB2ZXJzaW9uPywgaW50ZW50PywgbmV3VGFiID0gZmFsc2UsIGZvcmNlT3Blbk9iamVjdCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMucm91dGVyLnVybC5zdGFydHNXaXRoKCcvb2JqZWN0JykgJiYgIWZvcmNlT3Blbk9iamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2ZXJzaW9uID0gdGhpcy5hcHBseVZlcnNpb24gPyB2ZXJzaW9uIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3R5cGUnOiBfdHlwZSwgdmVyc2lvbiwgaW50ZW50fX07XG4gICAgaWYgKG5ld1RhYikge1xuICAgICAgd2luZG93Lm9wZW4oQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnb2JqZWN0JywgaWRdLCBxdWVyeVBhcmFtcykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgaWRdLCBxdWVyeVBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgbG9hZE9iamVjdChpZCwgX3R5cGU/LCB2ZXJzaW9uPywgaW50ZW50Pyk6IFN1YnNjcmlwdGlvbiB7XG4gICAgdmVyc2lvbiA9IHRoaXMuYXBwbHlWZXJzaW9uID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5kbXNTZXJ2aWNlXG4gICAgICAuZ2V0RG1zT2JqZWN0KGlkLCBfdHlwZSwgdmVyc2lvbiwgaW50ZW50KVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZm9jdXMocmVzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2hvd0FjdGlvbnMoc2VsZWN0ZWREYXRhPzogYW55W10sIHRhcmdldCA9ICdETVNfT0JKRUNUJykge1xuICAgIGxldCBzZWxlY3Rpb24gPSBzZWxlY3RlZERhdGEgfHwgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZ2V0KCk7XG4gICAgbGV0IG9ic2VydmFibGVzID0gc2VsZWN0aW9uLm1hcChkYXRhID0+IHRhcmdldCA9PT0gJ0RNU19PQkpFQ1QnID8gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdEJ5UGFyYW1zKHRoaXMucGFyc2VEbXNQYXJhbXMoZGF0YSkpIDogb2JzZXJ2YWJsZU9mKGRhdGEpKTtcbiAgICBvYnNlcnZhYmxlRm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4gdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKHJlcywgdGFyZ2V0KSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImVvLWhlYWRcIiBbbmdDbGFzc109XCJ7J2VvLWhlYWQtdGFicyc6IHRhYnN9XCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lby1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cIi5lby1ib2R5XCI+XG48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiAqbmdJZj1cImxvYWRpbmdcIj48ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+PC9kaXY+XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBRSxZQUFZLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBU3JELE1BQU0sT0FBTyxzQkFBc0I7SUFNakMsSUFDSSxXQUFXLENBQUMsTUFBcUI7UUFDbkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBUUQsWUFBb0IsU0FBMkIsRUFDM0IsTUFBYyxFQUFVLFVBQXNCLEVBQVUsYUFBNEI7UUFEcEYsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FB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QVk7dUJBQUMsYUFBYTtnQkFTbEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2VsbFJlbmRlcmVyfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sIG9mIGFzIG9ic2VydmFibGVPZiwgQXN5bmNTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIEFmdGVyVmlld0luaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1JvdXRlciwgTmF2aWdhdGlvbkV4dHJhc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQge0FjdGlvblNlcnZpY2V9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9uLXNlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtEbXNPYmplY3QsIERtc1NlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1saXN0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTGlzdENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHB1YmxpYyBncmlkQ291bnQ6IGFueTtcbiAgZW9HcmlkOiBHcmlkQ29tcG9uZW50O1xuICBlb0dyaWRTdWJqZWN0ID0gbmV3IEFzeW5jU3ViamVjdDxHcmlkQ29tcG9uZW50PigpO1xuXG4gIEBDb250ZW50Q2hpbGQoR3JpZENvbXBvbmVudClcbiAgc2V0IGNvbnRlbnRHcmlkKGVvR3JpZDogR3JpZENvbXBvbmVudCkge1xuICAgIGlmIChlb0dyaWQpIHtcbiAgICAgIHRoaXMuZW9HcmlkID0gZW9HcmlkO1xuICAgICAgdGhpcy5lb0dyaWRTdWJqZWN0Lm5leHQodGhpcy5lb0dyaWQpO1xuICAgICAgdGhpcy5lb0dyaWRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZyA9IHt9O1xuICBASW5wdXQoKSBhcHBseVZlcnNpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpIHRhYnMgPSB0cnVlO1xuICBASW5wdXQoKSBwYXJzZURtc1BhcmFtczogKGRhdGEpID0+IGFueSA9IChkYXRhOiBhbnkpID0+IGRhdGE7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSwgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cblxuICBvbkNvdW50Q2hhbmdlZChkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmdyaWRDb3VudCA9IGRhdGE7XG4gIH1cblxuICBvbkZvY3VzQ2hhbmdlZChkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpXG4gICAgICAuZm9jdXMoZGF0YSk7XG4gIH1cblxuICBvbkRvdWJsZUNsaWNrKGV2ZW50OiBhbnksIGZvcmNlT3Blbk9iamVjdCA9IGZhbHNlKSB7XG5cbiAgICBjb25zdCB7aWQsIHR5cGUsIHZlcnNpb24sIGludGVudH0gPSB0aGlzLnBhcnNlRG1zUGFyYW1zKGV2ZW50LmRhdGEpO1xuICAgIGlmIChpZCkge1xuICAgICAgcmV0dXJuIHRoaXMub3Blbk9iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50LCBldmVudC5ldmVudC5jdHJsS2V5LCBmb3JjZU9wZW5PYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZERhdGE6IGFueVtdKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuc2V0KHNlbGVjdGVkRGF0YSk7XG4gIH1cblxuICBvbkNvbnRleHRNZW51KHNlbGVjdGVkRGF0YT86IGFueVtdLCB0YXJnZXQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3dBY3Rpb25zKHNlbGVjdGVkRGF0YSwgdGFyZ2V0KTtcbiAgfVxuXG4gIG9wZW5PYmplY3QoaWQsIF90eXBlPywgdmVyc2lvbj8sIGludGVudD8sIG5ld1RhYiA9IGZhbHNlLCBmb3JjZU9wZW5PYmplY3QgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL29iamVjdCcpICYmICFmb3JjZU9wZW5PYmplY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVyc2lvbiA9IHRoaXMuYXBwbHlWZXJzaW9uID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdWVyeVBhcmFtczogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeyd0eXBlJzogX3R5cGUsIHZlcnNpb24sIGludGVudH19O1xuICAgIGlmIChuZXdUYWIpIHtcbiAgICAgIHdpbmRvdy5vcGVuKENlbGxSZW5kZXJlci53aW5kb3dVUkkodGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJ29iamVjdCcsIGlkXSwgcXVlcnlQYXJhbXMpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIGlkXSwgcXVlcnlQYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRPYmplY3QoaWQsIF90eXBlPywgdmVyc2lvbj8sIGludGVudD8pOiBTdWJzY3JpcHRpb24ge1xuICAgIHZlcnNpb24gPSB0aGlzLmFwcGx5VmVyc2lvbiA/IHZlcnNpb24gOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZVxuICAgICAgLmdldERtc09iamVjdChpZCwgX3R5cGUsIHZlcnNpb24sIGludGVudClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKHJlcyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNob3dBY3Rpb25zKHNlbGVjdGVkRGF0YT86IGFueVtdLCB0YXJnZXQgPSAnRE1TX09CSkVDVCcpIHtcbiAgICBsZXQgc2VsZWN0aW9uID0gc2VsZWN0ZWREYXRhIHx8IHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmdldCgpO1xuICAgIGxldCBvYnNlcnZhYmxlcyA9IHNlbGVjdGlvbi5tYXAoZGF0YSA9PiB0YXJnZXQgPT09ICdETVNfT0JKRUNUJyA/IHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3RCeVBhcmFtcyh0aGlzLnBhcnNlRG1zUGFyYW1zKGRhdGEpKSA6IG9ic2VydmFibGVPZihkYXRhKSk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBvYnNlcnZhYmxlRm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmFjdGlvblNlcnZpY2Uuc2hvd0FjdGlvbnMocmVzLCB0YXJnZXQpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1oZWFkXCIgW25nQ2xhc3NdPVwieydlby1oZWFkLXRhYnMnOiB0YWJzfVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuZW8taGVhZGVyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48bmctY29udGVudCBzZWxlY3Q9XCIuZW8tYm9keVwiPlxuPC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+PGVvLWxvYWRpbmctc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPjwvZGl2PlxuIl19
@@ -167,7 +167,7 @@ export class ObjectLinksComponent {
167
167
  return `result?query=${encodeURIComponent(JSON.stringify(query))}`;
168
168
  }
169
169
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectLinksComponent, deps: [{ token: i1.ReferenceService }, { token: i2.AppCacheService }, { token: i2.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
170
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"result-list-link\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\">\n <eo-icon class=\"icon\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\" [iconTitle]=\"('eo.references.open.resultlist' | translate)\"></eo-icon>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of inReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"getObjectType(entry1Layer.type)\"\n [itemAmount]=\"entry1Layer.count\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n @for (entry3Layer of entry2Layer.folder; track entry3Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry3Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry3Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry3Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.title}}\n </div>\n </div>\n }\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of outReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"entry1Layer.objectType\"\n [itemAmount]=\"entry1Layer.folder.length\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry2Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry2Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry2Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.fieldLabel}}\n </div>\n </div>\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .result-list-link{text-decoration:none;color:inherit}.eo-references .form-buttons .result-list-link:hover{color:var(--color-accent)}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists main{grid-area:main}.eo-references .eo-references-lists main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%;overflow:auto}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList eo-simple-accordion{margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-right:calc(var(--app-pane-padding) / 2)}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-bottom:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:calc(var(--app-pane-padding) / 2)}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i6.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i7.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "item", "styles", "headerClass", "iconObjectType", "itemAmount", "resultListLink", "selected"], outputs: ["selectChange"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
170
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"result-list-link\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\">\n <eo-icon class=\"icon\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\" [iconTitle]=\"('eo.references.open.resultlist' | translate)\"></eo-icon>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of inReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"getObjectType(entry1Layer.type)\"\n [itemAmount]=\"entry1Layer.count\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n @for (entry3Layer of entry2Layer.folder; track entry3Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry3Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry3Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry3Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.title}}\n </div>\n </div>\n }\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of outReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"entry1Layer.objectType\"\n [itemAmount]=\"entry1Layer.folder.length\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry2Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry2Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry2Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.fieldLabel}}\n </div>\n </div>\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .result-list-link{text-decoration:none;color:inherit}.eo-references .form-buttons .result-list-link:hover{color:var(--color-accent)}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists main{grid-area:main}.eo-references .eo-references-lists main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%;overflow:auto}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList eo-simple-accordion{margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-right:calc(var(--app-pane-padding) / 2)}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-bottom:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:calc(var(--app-pane-padding) / 2)}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i6.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i7.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "iconObjectType", "itemAmount", "resultListLink", "selected", "item"], outputs: ["selectChange"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
171
171
  }
172
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectLinksComponent, decorators: [{
173
173
  type: Component,
@@ -57,7 +57,7 @@ let StoredQueryDetailsComponent = class StoredQueryDetailsComponent {
57
57
  this.notifyList = new EventEmitter();
58
58
  this.datePipe = new LocaleDatePipe(translate);
59
59
  this.fetchRoles();
60
- this.workspaces = this.userService?.getCurrentUser()?.userSettings?.workspaceOptions?.workspaces;
60
+ this.workspaces = this.userService?.getCurrentUser()?.userSettings?.workspaceOptions?.workspaces || [];
61
61
  }
62
62
  setQueryScope(scope) {
63
63
  this.storedQuery.scope = scope;
@@ -572,4 +572,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
572
572
  }], notifyList: [{
573
573
  type: Output
574
574
  }] } });
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS1kZXRhaWxzL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnktZGV0YWlscy9zdG9yZWQtcXVlcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlELE9BQU8sRUFDTCxVQUFVLEVBS1YsWUFBWSxFQUNaLFdBQVcsRUFFWCxvQkFBb0IsRUFDcEIsV0FBVyxFQUlYLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFLakYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWWhFLElBQU0sMkJBQTJCLEdBQWpDLE1BQU0sMkJBQTJC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ZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBJU3RvcmVkUXVlcnlQYXJhbSxcbiAgT3JnUm9sZSxcbiAgUXVlcnlTY29wZSxcbiAgU2VhcmNoRmlsdGVyLFxuICBTZWFyY2hRdWVyeSxcbiAgU2VhcmNoU2VydmljZSxcbiAgU3RvcmVkUXVlcmllc1NlcnZpY2UsXG4gIFN0b3JlZFF1ZXJ5LFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgZm9ya0pvaW4sIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtSGVscGVyU2VydmljZX0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tY29udHJvbCc7XG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcbmltcG9ydCB7T2JqZWN0Rm9ybUdyb3VwfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1ncm91cC5tb2RlbCc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL3V0aWwvc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHtFZGl0Rm9ybSwgTm90aWZ5TGlzdCwgUmVzdHJpY3Rpb259IGZyb20gJy4uL3N0b3JlZC1xdWVyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTdG9yZWRRdWVyeUNvbXBvbmVudH0gZnJvbSAnLi4vc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHtXaWRnZXRHcmlkV29ya3NwYWNlfSBmcm9tICdAeXV1dmlzL3dpZGdldC1ncmlkJztcbmltcG9ydCB7QXBwU2VhcmNoU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXN0b3JlZC1xdWVyeS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdG9yZWRRdWVyeURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByaXZhdGUgRk9STV9JTlBVVF9USVRMRSA9ICdzdG9yZWRRdWVyeVRpdGxlJztcbiAgcHJpdmF0ZSBGT1JNX0lOUFVUX0ZVTExURVhUID0gJ3N0b3JlZFF1ZXJ5RnVsbHRleHQnO1xuICBwcml2YXRlIEJBU0VfUEFSQU1TX0ZJRUxEUyA9IE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5tYXAoayA9PiBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1trXSk7XG4gIHByaXZhdGUgZGF0ZVBpcGU6IExvY2FsZURhdGVQaXBlO1xuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdzdG9yZWRRdWVyeUZvcm0nKSBzdG9yZWRRdWVyeUZvcm06IFN0b3JlZFF1ZXJ5Q29tcG9uZW50O1xuXG4gIGljb25UaXRsZXM6IGFueTtcbiAgc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xuICBxdWVyeVNjb3BlOiBRdWVyeVNjb3BlO1xuICBlZGl0Rm9ybTogRWRpdEZvcm07XG4gIHJlc3RyaWN0aW9uczogUmVzdHJpY3Rpb25bXTtcbiAgZWRpdGluZ1NoYXJlOiBib29sZWFuO1xuICBpc05ld1F1ZXJ5OiBib29sZWFuO1xuICBpc093blF1ZXJ5OiBib29sZWFuO1xuICBlbmFibGVTaGFyaW5nOiBib29sZWFuO1xuICBzeXN0ZW1Sb2xlczogT3JnUm9sZVtdO1xuICB3b3Jrc3BhY2VzOiBXaWRnZXRHcmlkV29ya3NwYWNlW107XG4gIHJvbGVzUGlja2VyID0ge1xuICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5yb2xlcycpLFxuICAgIGNvZGVzeXN0ZW06IG51bGwsXG4gICAgdmFsdWU6IG51bGxcbiAgfTtcbiAgc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBpbmZvID0gJyc7XG4gIGlzVGFibGVEYXRhTWFwOiBNYXA8YW55LCBib29sZWFuPiA9IG5ldyBNYXAoKTtcblxuICBASW5wdXQoKVxuICBzZXQgcXVlcnkocTogU3RvcmVkUXVlcnkpIHtcbiAgICB0aGlzLnNldFF1ZXJ5KHEpO1xuICB9XG5cbiAgQE91dHB1dCgpIG5vdGlmeUxpc3Q6IEV2ZW50RW1pdHRlcjxOb3RpZnlMaXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Tm90aWZ5TGlzdD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmVkUXVlcmllc1NlcnZpY2U6IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbVJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU2VhcmNoU2VydmljZTogQXBwU2VhcmNoU2VydmljZVxuICApIHtcblxuICAgIHRoaXMuZGF0ZVBpcGUgPSBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKTtcbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcbiAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLnVzZXJTZXJ2aWNlPy5nZXRDdXJyZW50VXNlcigpPy51c2VyU2V0dGluZ3M/LndvcmtzcGFjZU9wdGlvbnM/LndvcmtzcGFjZXM7XG4gIH1cblxuICBwdWJsaWMgc2V0UXVlcnlTY29wZShzY29wZTogUXVlcnlTY29wZSkge1xuICAgIHRoaXMuc3RvcmVkUXVlcnkuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLnF1ZXJ5U2NvcGUgPSBzY29wZTtcbiAgfVxuXG4gIHNldFF1ZXJ5KHE6IFN0b3JlZFF1ZXJ5KSB7XG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICAvLyBncmFiIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHF1ZXJ5XG4gICAgdGhpcy5zdG9yZWRRdWVyeSA9IHE7XG4gICAgaWYgKHEgaW5zdGFuY2VvZiBTdG9yZWRRdWVyeSkge1xuICAgICAgdGhpcy5xdWVyeVNjb3BlID0gcS5zY29wZTtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICB0aGlzLmlzTmV3UXVlcnkgPSBxLmlzTmV3KCk7XG4gICAgICB0aGlzLmlzT3duUXVlcnkgPSB0aGlzLmlzTmV3UXVlcnkgfHwgcS51c2VyLnRvTG93ZXJDYXNlKCkgPT09IHVzZXIubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5yZXN0cmljdGlvbnMgPSB0aGlzLmdldFJlc3RyaWN0aW9ucygpO1xuICAgICAgdGhpcy5yb2xlc1BpY2tlci52YWx1ZSA9IHEucm9sZXM7XG4gICAgICB0aGlzLmVuYWJsZVNoYXJpbmcgPSB1c2VyLmhhc1ByaXZpbGVnZSgnU0hBUkVfU1RPUkVEX1FVRVJJRVMnKSAmJiB0aGlzLmlzT3duUXVlcnkgJiYgIXRoaXMuaXNOZXdRdWVyeTtcblxuICAgICAgaWYgKHEuaXNOZXcoKSkge1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcmllcy5uZXcudGl0bGUnKTtcbiAgICAgICAgdGhpcy5lZGl0KCk7XG4gICAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogdHJ1ZSwgdXBkYXRlOiBmYWxzZX0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVsZW1SZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cInN0b3JlZFF1ZXJ5VGl0bGVcIl0nKS5mb2N1cygpXG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIGVkaXQoKSB7XG4gICAgaWYgKCF0aGlzLmVkaXRGb3JtLmZvcm0pIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZUVkaXRGb3JtKCk7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogdHJ1ZX0pO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChmb3JtU3RhdGUpIHtcbiAgICBmb3JtU3RhdGUuZGlydHkgPyB0aGlzLnN0YXJ0UGVuZGluZygpIDogdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gIH1cblxuICB0b2dnbGVTaGFyZUVkaXQoKSB7XG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSAhdGhpcy5lZGl0aW5nU2hhcmU7XG4gIH1cblxuICBzaGFyZSgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LnJvbGVzID0gdGhpcy5yb2xlc1BpY2tlci52YWx1ZTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LnNoYXJlZCA9IHRoaXMuc3RvcmVkUXVlcnkucm9sZXM/Lmxlbmd0aCA+IDA7XG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5zYXZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeSkuc3Vic2NyaWJlKFxuICAgICAgXyA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TVE9SRURfT0JKRUNUX1NIQVJFRCk7XG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcnkuc2F2ZS5lcnJvcicpKVxuICAgICk7XG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSBmYWxzZTtcbiAgfVxuXG4gIGNhbmNlbFNoYXJlKCkge1xuICAgIHRoaXMucm9sZXNQaWNrZXIudmFsdWUgPSB0aGlzLnN0b3JlZFF1ZXJ5LnJvbGVzO1xuICAgIHRoaXMuZWRpdGluZ1NoYXJlID0gZmFsc2U7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNUT1JFRF9PQkpFQ1RfU0hBUkVEKTtcbiAgfVxuXG4gIGlzU3RvcmVkUXVlcnlVc2VkKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuaW5mbyA9ICcnO1xuICAgIGxldCBpc1VzZWQ7XG4gICAgdGhpcy53b3Jrc3BhY2VzLmZpbHRlcih3b3Jrc3BhY2UgPT4gd29ya3NwYWNlLmdyaWQuc29tZShncmlkSXRlbSA9PiB7XG4gICAgICBpZiAoZ3JpZEl0ZW0ud2lkZ2V0Q29uZmlnPy5zdG9yZWRRdWVyeSA9PT0gdGhpcy5zdG9yZWRRdWVyeS5pZCkge1xuICAgICAgICB0aGlzLmluZm8gKz0gKHRoaXMuaW5mbyA/ICcsICcgOiAnJykgKyBgJyR7d29ya3NwYWNlLmxhYmVsfSdgO1xuICAgICAgICBpc1VzZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgcmV0dXJuIGlzVXNlZDtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXG4gICAgICAucmVtb3ZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeS5pZClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZX0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LmRlbGV0ZS5lcnJvcicpKSk7XG4gIH1cblxuICB0b2dnbGVGYXZvcml0ZVN0YXRlKCkge1xuICAgIHRoaXMuc3RvcmVkUXVlcnkuZmF2b3JpdGUgPSAhdGhpcy5zdG9yZWRRdWVyeS5mYXZvcml0ZTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXG4gICAgICAuc2F2ZVN0b3JlZFF1ZXJ5KHRoaXMuc3RvcmVkUXVlcnkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuU1RPUkVEX09CSkVDVF9GQVZPUklTRUQpO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpIHtcbiAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS5pc05ldygpKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZSwgcGF5bG9hZDogdGhpcy5zdG9yZWRRdWVyeX0pO1xuICB9XG5cbiAgc2V0UXVlcnlUb0FwcFNlYXJjaCgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5Rm9ybS5sb2FkKCk7XG4gIH1cblxuICBleGVjdXRlUXVlcnkoKSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeUZvcm0uZXhlY3V0ZSgpO1xuICB9XG5cbiAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdG9yZWQgcXVlcnlcbiAgdXBkYXRlU3RvcmVkUXVlcnkoKSB7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMgPSB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMuZmlsdGVyKGYgPT4gfnRoaXMuQkFTRV9QQVJBTVNfRklFTERTLmluZGV4T2YoZi5wcm9wZXJ0eSkpO1xuICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKVxuICAgICAgLmZvckVhY2goayA9PiB7XG4gICAgICAgIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfVElUTEUpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWUgPSBmb3JtRGF0YVtrXTtcbiAgICAgICAgfSBlbHNlIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnRlcm0gPSBmb3JtRGF0YVtrXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoRmlsdGVyKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMsIGssIGZvcm1EYXRhW2tdKTtcbiAgICAgICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiB0aGlzLnN0b3JlZFF1ZXJ5LmFkZEZpbHRlcihmKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY29uc3Qgc2VhcmNoRmlsdGVycyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycygpO1xuXG4gICAgLy8gVXBkYXRlIHN0b3JlZFF1ZXJ5LmZpbHRlcnMgYmFzZWQgb24gc2VhcmNoRmlsdGVyc1xuICAgIHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVycy5mb3JFYWNoKChzdG9yZWRGaWx0ZXIsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBtYXRjaGluZ1NlYXJjaEZpbHRlciA9IHNlYXJjaEZpbHRlcnMuZmluZChzZWFyY2hGaWx0ZXIgPT4gc2VhcmNoRmlsdGVyLnByb3BlcnR5ID09PSBzdG9yZWRGaWx0ZXIucHJvcGVydHkpO1xuICAgICAgaWYgKG1hdGNoaW5nU2VhcmNoRmlsdGVyKSB7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVyc1tpbmRleF0uYWN0dWFsT3BlcmF0b3IgPSBtYXRjaGluZ1NlYXJjaEZpbHRlci5hY3R1YWxPcGVyYXRvcjtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5maWx0ZXJzW2luZGV4XS5vcGVyYXRvciA9IG1hdGNoaW5nU2VhcmNoRmlsdGVyLm9wZXJhdG9yO1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnNbaW5kZXhdLmZpcnN0VmFsdWUgPSBtYXRjaGluZ1NlYXJjaEZpbHRlci5maXJzdFZhbHVlO1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnNbaW5kZXhdLnNlY29uZFZhbHVlID0gbWF0Y2hpbmdTZWFyY2hGaWx0ZXIuc2Vjb25kVmFsdWU7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVyc1tpbmRleF0udXNlTm90ID0gbWF0Y2hpbmdTZWFyY2hGaWx0ZXIudXNlTm90O1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnNbaW5kZXhdLnRyYW5zZm9ybURhdGUgPSBtYXRjaGluZ1NlYXJjaEZpbHRlci50cmFuc2Zvcm1EYXRlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZVxuICAgICAgLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KVxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkU3RvcmVkUXVlcnkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gdXBkYXRlZFN0b3JlZFF1ZXJ5O1xuICAgICAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogZmFsc2UsIHBheWxvYWQ6IHVwZGF0ZWRTdG9yZWRRdWVyeX0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBmb3JtIGVsZW1lbnRzIHRvIGJlIGEgZHluYW1pYyBwYXJhbWV0ZXIgb3Igbm90XG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcGFyYW1ldGVyQ2hhbmdlZChldmVudDoge2NvbnRyb2w6IHN0cmluZywgdmFsdWU6IGJvb2xlYW59KSB7XG5cbiAgICBsZXQgbSA9IHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLmZpbmQocCA9PiBwLnFuYW1lID09PSBldmVudC5jb250cm9sKTtcbiAgICBpZiAobSAmJiAhZXZlbnQudmFsdWUpIHtcbiAgICAgIC8vIHJlbW92ZSBleGlzdGluZyBwYXJhbWV0ZXJcbiAgICAgIHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyID0gdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIuZmlsdGVyKHAgPT4gcC5xbmFtZSAhPT0gZXZlbnQuY29udHJvbCk7XG4gICAgfSBlbHNlIGlmICghbSAmJiBldmVudC52YWx1ZSkge1xuICAgICAgLy8gYWRkIHBhcmFtZXRlciBlbGVtZW50XG4gICAgICBsZXQgcGFyYW0gPSB0aGlzLmZvcm1GaWVsZFRvUGFyYW1ldGVyKGV2ZW50LmNvbnRyb2wpO1xuICAgICAgaWYgKHBhcmFtKSB7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLnB1c2gocGFyYW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybURhdGEoKSB7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXModGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlKTtcbiAgICBsZXQgZGF0YSA9IHt9O1xuXG5cbiAgICBwcm9wZXJ0aWVzLmZvckVhY2gocHJvcGVydHkgPT4ge1xuXG4gICAgICBjb25zdCBmYzogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyID0gdGhpcy5lZGl0Rm9ybS5mb3JtLmNvbnRyb2xzW3Byb3BlcnR5XSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XG4gICAgICBsZXQgZm9ybUVsZW1lbnQ7XG4gICAgICBpZiAoZmMuY29udHJvbHMgJiYgZmMuY29udHJvbHNbcHJvcGVydHldKSB7XG4gICAgICAgIGNvbnN0IGZlOiBPYmplY3RGb3JtQ29udHJvbCA9IGZjLmNvbnRyb2xzW3Byb3BlcnR5XSBhcyBPYmplY3RGb3JtQ29udHJvbDtcbiAgICAgICAgZm9ybUVsZW1lbnQgPSBmZS5fZW9Gb3JtRWxlbWVudDtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtRWxlbWVudCAmJiBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlKSB7XG4gICAgICAgIGRhdGFbcHJvcGVydHldID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkge1xuICAgICAgICAgIGNhc2UgdGhpcy5GT1JNX0lOUFVUX1RJVExFOiB7XG4gICAgICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV0gfHwgJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSB0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQ6IHtcbiAgICAgICAgICAgIGRhdGFbcHJvcGVydHldID0gdGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlW3Byb3BlcnR5XVtTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVF0gfHwgJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV1bcHJvcGVydHldO1xuICAgICAgICAgICAgaWYgKCFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodikpIHtcbiAgICAgICAgICAgICAgZGF0YVtwcm9wZXJ0eV0gPSB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGR5bmFtaWMgc3RvcmVkIHF1ZXJ5IHBhcmFtZXRlciBmb3IgYSBmb3JtIGVsZW1lbnRcbiAgICogQHBhcmFtIHFuYW1lIFRoZSBmb3JtIGVsZW1lbnRzIHFuYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGZvcm1GaWVsZFRvUGFyYW1ldGVyKHFuYW1lOiBzdHJpbmcpOiBJU3RvcmVkUXVlcnlQYXJhbSB7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHBhcmFtOiBJU3RvcmVkUXVlcnlQYXJhbTtcbiAgICAgIC8vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGZ1bGx0ZXh0IGZpZWxkc1xuICAgICAgaWYgKHFuYW1lID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVCkge1xuICAgICAgICBwYXJhbSA9IHtcbiAgICAgICAgICBxbmFtZTogcW5hbWUsXG4gICAgICAgICAgdHlwZTogcW5hbWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmYyA9ICgodGhpcy5lZGl0Rm9ybS5mb3JtLmNvbnRyb2xzW3FuYW1lXSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpLmNvbnRyb2xzW3FuYW1lXSBhcyBPYmplY3RGb3JtQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IGZlID0gZmMuX2VvRm9ybUVsZW1lbnQ7XG4gICAgICAgIHBhcmFtID0ge1xuICAgICAgICAgIHFuYW1lOiBmZS5xbmFtZSxcbiAgICAgICAgICB0eXBlOiBmZS50eXBlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyYW07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVkaXRGb3JtKCkge1xuICAgIHRoaXMuZWRpdEZvcm0gPSB7XG4gICAgICBmb3JtOiBudWxsLFxuICAgICAgZnVsbHRleHRGb3JtQ29udHJvbDogbnVsbCxcbiAgICAgIGNvbnRyb2xzOiBbXSxcbiAgICAgIGNvbnRleHRDb250cm9sczogW11cbiAgICB9O1xuICB9XG5cbiAgb25Gb3JtQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRGb3JtXG4gICAgICAuZm9ybVxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRm9ybVN0YXR1c0NoYW5nZWQodGhpcy5lZGl0Rm9ybS5mb3JtKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUVkaXRGb3JtKCkge1xuXG4gICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XG4gICAgdGhpcy5zZXR1cEZvcm1Db250cm9scygpLnN1YnNjcmliZShfID0+IHtcblxuICAgICAgbGV0IGZvcm0gPSBuZXcgT2JqZWN0Rm9ybUdyb3VwKHt9KTtcbiAgICAgIGxldCBmY1RpdGxlID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICBmY1RpdGxlLnNldFZhbHVlKHRoaXMuc3RvcmVkUXVlcnkubmFtZSk7XG5cbiAgICAgIGxldCBmY0Z1bGx0ZXh0ID0gdGhpcy50b0Zvcm1Db250cm9sKHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2UuZ2V0RnVsbHRleHRGb3JtRWxlbWVudChcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuc2VhcmNoLnRlcm0nKSxcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS50ZXJtXG4gICAgICApKTtcbiAgICAgIHRoaXMuZWRpdEZvcm0uZnVsbHRleHRGb3JtQ29udHJvbCA9IGZjRnVsbHRleHQ7XG5cbiAgICAgIC8vIGFkZCB0aXRsZSBhbmQgZnVsbHRleHQgZmllbGRcbiAgICAgIGZvcm0uYWRkQ29udHJvbCh0aGlzLkZPUk1fSU5QVVRfVElUTEUsIGZjVGl0bGUpO1xuICAgICAgZm9ybS5hZGRDb250cm9sKHRoaXMuRk9STV9JTlBVVF9GVUxMVEVYVCwgZmNGdWxsdGV4dCk7XG5cbiAgICAgIGlmICh0aGlzLmVkaXRGb3JtLmNvbnRyb2xzLmxlbmd0aCB8fCB0aGlzLmVkaXRGb3JtLmNvbnRleHRDb250cm9scy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1xuICAgICAgICAgIC5mb3JFYWNoKChjKSA9PiBmb3JtLmFkZENvbnRyb2woYy5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWUsIGMpKTtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybS5jb250ZXh0Q29udHJvbHNcbiAgICAgICAgICAuZm9yRWFjaCgoYykgPT4gZm9ybS5hZGRDb250cm9sKGMuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lLCBjKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZWRpdEZvcm0uZm9ybSA9IGZvcm07XG4gICAgICB0aGlzLmNvbXB1dGVJc1RhYmxlRGF0YSgpO1xuICAgICAgdGhpcy5vbkZvcm1DaGFuZ2VzKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGb3JtQ29udHJvbHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB0YXNrcyA9IFtdO1xuICAgIC8vIHNldHRpbmcgdXAgb2JqZWN0IHR5cGUgZm9ybSBvbmx5IG1ha2VzIHNlbnNlIHdpdGggb25lIHRhcmdldCB0eXBlXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0YXNrcy5wdXNoKHRoaXMuc3lzdGVtU2VydmljZS5nZXRGb3JtRWxlbWVudHNGcm9tRm9ybU1vZGVsKHRoaXMuc3RvcmVkUXVlcnkudHlwZXNbMF0ucW5hbWUsICdTRUFSQ0gnKS5waXBlKFxuICAgICAgICB0YXAoKGVsZW1lbnRzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZSA9PiB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRhYmxlcyBhbmQgYmluYXJ5IHR5cGVzIGZyb20gYmVpbmcgcmVuZGVyZWQgaW4gdGhlIHN0b3JlZCBxdWVyeSBmb3JtXG4gICAgICAgICAgICBpZiAoZS50eXBlICE9PSAnQklOQVJZJykge1xuICAgICAgICAgICAgICBpZiAoZS5yZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIGUucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZS5yZWFkb25seSkge1xuICAgICAgICAgICAgICAgIGUucmVhZG9ubHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBmYyA9IHRoaXMudG9Gb3JtQ29udHJvbChlKTtcbiAgICAgICAgICAgICAgaWYgKGZjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5jb250cm9scy5wdXNoKGZjKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICApKVxuICAgIH1cbiAgICAvLyBhZGQgY29udGV4dCBmb3JtIGNvbnRyb2xzIGFzIHdlbGxcbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoKSB7XG4gICAgICB0YXNrcy5wdXNoKHRoaXMuc3lzdGVtU2VydmljZS5nZXRGb3JtRWxlbWVudHNGcm9tRm9ybU1vZGVsKHRoaXMuc3RvcmVkUXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdLnFuYW1lLCAnU0VBUkNIJywgdHJ1ZSkucGlwZShcbiAgICAgICAgdGFwKChlbGVtZW50czogYW55W10pID0+IHtcbiAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmMgPSB0aGlzLnRvRm9ybUNvbnRyb2woZSk7XG4gICAgICAgICAgICBpZiAoZmMpIHtcbiAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5jb250ZXh0Q29udHJvbHMucHVzaChmYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgICkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhc2tzLmxlbmd0aCA/IGZvcmtKb2luKHRhc2tzKSA6IG9mKHRhc2tzKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSb2xlcygpIHtcbiAgICBpZiAoIXRoaXMuc3lzdGVtUm9sZXMgfHwgdGhpcy5zeXN0ZW1Sb2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc3lzdGVtU2VydmljZVxuICAgICAgICAuZ2V0Um9sZXMoKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5zeXN0ZW1Sb2xlcyA9IHJlcztcbiAgICAgICAgICB0aGlzLnJvbGVzUGlja2VyLmNvZGVzeXN0ZW0gPSB7XG4gICAgICAgICAgICBlbnRyaWVzOiB0aGlzLnN5c3RlbVJvbGVzLm1hcChyb2xlID0+ICh7XG4gICAgICAgICAgICAgIGlkOiByb2xlLmlkLFxuICAgICAgICAgICAgICBsYWJlbDogcm9sZS5uYW1lLFxuICAgICAgICAgICAgICBkZWZhdWx0cmVwcmVzZW50YXRpb246IHJvbGUubmFtZSxcbiAgICAgICAgICAgICAgZGF0YTogcm9sZS5uYW1lXG4gICAgICAgICAgICB9KSkuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuICB9XG5cbiAgZ2V0UmVzdHJpY3Rpb25zKCk6IFJlc3RyaWN0aW9uW10ge1xuICAgIGxldCByZXN0cmljdGlvbnM6IFJlc3RyaWN0aW9uW10gPSBbXTtcblxuICAgIC8vIHR5cGUgcmVzdHJpY3Rpb25cbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS50eXBlcyAmJiB0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLmxlbmd0aCkge1xuICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICBmaWVsZDogU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSxcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnJlc3RyaWN0aW9uLnR5cGUnKSxcbiAgICAgICAgaXRlbXM6IHRoaXMuc3RvcmVkUXVlcnkudHlwZXMubWFwKHQgPT4gdC5sYWJlbClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGFkZCBiYXNlIHBhcmFtcyByZXN0cmljdGlvbnNcbiAgICAodGhpcy5zdG9yZWRRdWVyeS5maWx0ZXJzIHx8IFtdKS5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICBpZiAoZmlsdGVyICYmIH50aGlzLkJBU0VfUEFSQU1TX0ZJRUxEUy5pbmRleE9mKGZpbHRlci5wcm9wZXJ0eSkpIHtcblxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5wcm9wZXJ0eTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5yZXN0cmljdGlvbi4nICsgZmllbGQpO1xuXG4gICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1JTUVUWVBFR1JPVVA6XG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IEFycmF5LmlzQXJyYXkoZmlsdGVyLmZpcnN0VmFsdWUpID8gZmlsdGVyLmZpcnN0VmFsdWUgOiBbZmlsdGVyLmZpcnN0VmFsdWVdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRU5BTUU6XG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFtmaWx0ZXIuZmlyc3RWYWx1ZV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFU0laRTpcbiAgICAgICAgICAgIHJlc3RyaWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQsIGxhYmVsLCBpdGVtczogW3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cuZmlsZXNpemUuJyArIGZpbHRlci5maXJzdFZhbHVlKV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVEVEOlxuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRUQ6XG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFt0aGlzLmNyZWF0ZURhdGVSZXN0cmljdGlvbihmaWx0ZXIpXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFUT1I6XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFUjpcbiAgICAgICAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3RzKGZpbHRlci5maXJzdFZhbHVlKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKG9yZ1VzZXJzID0+IHJlc3RyaWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBvcmdVc2Vycy5tYXAoKHUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB1LmlkID09PSBcIiNjdXJyZW50dXNlciNcIlxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0ucHJvcGVydHkub3JnYW5pemF0aW9uLmN1cnJlbnQudXNlcicpXG4gICAgICAgICAgICAgICAgICAgIDogdS50aXRsZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN0cmljdGlvbnM7XG4gIH1cblxuICBjcmVhdGVEYXRlUmVzdHJpY3Rpb24oZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcbiAgICBzd2l0Y2ggKGZpbHRlci5vcGVyYXRvcikge1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0U6XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5zZWFyY2guYWdnLnRpbWUuJHtmaWx0ZXIuZmlyc3RWYWx1ZX1gKTtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMOlxuICAgICAgICByZXR1cm4gYD0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USDpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX0gLSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5zZWNvbmRWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkdSRUFURVJfT1JfRVFVQUw6XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLnRpbWUuc3Bhbi5zaW5jZScpfSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTEVTU19PUl9FUVVBTDpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS5zcGFuLnVudGlsJyl9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCgke2ZpbHRlci5vcGVyYXRvcn0pICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZnJvbSBhIGdpdmVuIGZvcm0gZWxlbWVudFxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgdG9Gb3JtQ29udHJvbChmb3JtRWxlbWVudCk6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB7XG5cbiAgICAvLyB0aGUgYG5hbWVgIHByb3BlcnR5IG9mIHN0b3JlZCBxdWVyeSBmb3JtIGVsZW1lbnQgaGFzIHRvIGJlIGBxbmFtZWAgb2YgZm9ybSBlbGVtZW50LFxuICAgIC8vIGJlY2F1c2Ugd2UgbWF5IGNvbWJpbmUgbXVsdGlwbGUgZm9ybXMgKGNvbnRleHQgZm9ybSkgYW5kIGluIHRoaXMgY2FzZSB0aGVyZSBtYXlcbiAgICAvLyBiZSBjb25mbGljdHMgaW4gbmFtaW5nc1xuICAgIGZvcm1FbGVtZW50Lm5hbWUgPSBmb3JtRWxlbWVudC5xbmFtZTtcblxuICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XG4gICAgICBsZXQgZmlsdGVycyA9IHRoaXMuc3RvcmVkUXVlcnkuZ2V0VGFibGVGaWx0ZXJzKGZvcm1FbGVtZW50LnFuYW1lKTtcbiAgICAgIGlmIChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKGZpbHRlcnMsIGZvcm1FbGVtZW50LmVsZW1lbnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gW3t9XTtcbiAgICAgICAgZGVsZXRlIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdyYWIgdmFsdWUgZm9yIHRoZSBjb250cm9sIGZyb20gY29ycmVzcG9uZGluZyBxdWVyeSBmaWx0ZXJzXG4gICAgICBsZXQgZmlsdGVyID0gdGhpcy5zdG9yZWRRdWVyeS5nZXRGaWx0ZXIoZm9ybUVsZW1lbnQucW5hbWUpO1xuICAgICAgLy8gd2UgbWF5IGhhdmUgcGFyYW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBxdWVyaWVzIGZpbHRlcnMuIFRoaXMgbWF5IGJlIHRoZVxuICAgICAgLy8gY2FzZSB3aGVuIHdlIG1hcmsgZm9ybSBlbGVtZW50cyBhcyBkeW5hbWljIGZpZWxkcyB3aXRob3V0IHByb3ZpZGluZyBhIHZhbHVlXG4gICAgICBpZiAoZmlsdGVyKSB7XG5cbiAgICAgICAgLy8gZmlsdGVyIHRvIGhhdmUgbm8gdmFsdWVcbiAgICAgICAgaWYgKGZpbHRlci5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMICYmIGZpbHRlci5maXJzdFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtRWxlbWVudC52YWx1ZSA9IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXJUb0VsZW1lbnRWYWx1ZShcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmdldEZpbHRlcihmb3JtRWxlbWVudC5xbmFtZSksXG4gICAgICAgICAgZm9ybUVsZW1lbnQudHlwZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChmb3JtRWxlbWVudC5xbmFtZSAhPT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQpIHtcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZSBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBzeW5jIHdpdGggcGFyYW1zXG4gICAgY29uc3QgbWF0Y2g6IGFueSA9IHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLmZpbmQocGFyYW0gPT4ge1xuICAgICAgcmV0dXJuIChwYXJhbS5xbmFtZSA9PT0gZm9ybUVsZW1lbnQucW5hbWUpIHx8IChwYXJhbS50eXBlID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVCAmJiBmb3JtRWxlbWVudC5xbmFtZSA9PT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQpXG4gICAgfSk7XG4gICAgLy8gZXZlcnkgZmllbGQgdGhhdCBpcyBwYXJ0IG9mIHRoZSBwYXJhbXMgaXMgc3VwcG9zZWQgdG8gYmUgZHluYW1pY1xuICAgIGZvcm1FbGVtZW50Ll9keW5hbWljID0gISFtYXRjaDtcblxuICAgIC8vIGNyZWF0ZSBhY3R1YWwgZm9ybSBjb250cm9sIHRoYXQgY291bGQgYmUgdXNlZCB3aXRoXG4gICAgLy8gRm9ybUVsZW1lbnRDb21wb25lbnQgdG8gdGhlbiByZW5kZXIgZm9yIGVsZW1lbnRzXG4gICAgLy8gd3JhcHBlciBtYXkgYmUgbnVsbCBpbiBjYXNlIG9mIGFuIGVycm9yXG4gICAgcmV0dXJuIHRoaXMuZm9ybUhlbHBlclNlcnZpY2UuZWxlbWVudFRvRm9ybUNvbnRyb2woZm9ybUVsZW1lbnQsICdTRUFSQ0gnKTtcbiAgfVxuXG4gIG9uU3RvcmVkUXVlcnlMb2FkZWQoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6ICdzZWFyY2gnfX1dKTtcbiAgfVxuXG4gIG9uU3RvcmVkUXVlcnlFeGVjdXRlKGV2dCkge1xuICAgIGNvbnN0IHVyaVBhcmFtID0gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGV2dC5xdWVyeUpzb24pKTtcbiAgICBjb25zdCB1cmlQYXJhbVF1ZXJ5OiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3F1ZXJ5JzogdXJpUGFyYW19fTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9yZXN1bHQnXSwgdXJpUGFyYW1RdWVyeSk7XG4gIH1cblxuICBzZXRJY29uVGl0bGVzKCkge1xuICAgIHRoaXMuaWNvblRpdGxlcyA9IHtcbiAgICAgIHNoYXJlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5zaGFyZS50aXRsZScpLFxuICAgICAgc2hhcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5zaGFyZWRmb3IudGl0bGUnKSxcbiAgICAgIGZhdm9yOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5mYXZvci50aXRsZScpLFxuICAgICAgZmF2b3JlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuZmF2b3JlZGZvci50aXRsZScpXG4gICAgfVxuICB9XG5cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5mb2N1cyRcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZShxID0+IHtcbiAgICAgICAgdGhpcy5xdWVyeSA9IHE7XG4gICAgICB9KTtcbiAgICB0aGlzLnNldEljb25UaXRsZXMoKTtcbiAgfVxuXG4gIHRyYWNrQnlRTmFtZShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnFuYW1lO1xuICB9XG5cbiAgdHJhY2tCeUluZGV4KGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgbm90IG9mIHR5cGUgJ1RBQkxFJy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIHR5cGUgb2YgdGhlIF9fZW9Gb3JtRWxlbWVudCBwcm9wZXJ0eSBvZiB0aGUgY29udHJvbFxuICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGVsZW1lbnQuIElmIHRoZSB0eXBlIGlzIG5vdCAnVEFCTEUnLCBpdCByZXR1cm5zIHRydWUuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFRydWUgaWYgdGhlIGVsZW1lbnQgaXMgbm90IG9mIHR5cGUgJ1RBQkxFJywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNUYWJsZURhdGEoZWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgfHwgIWVsZW1lbnQuY29udHJvbHMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sTmFtZSA9IGVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lO1xuICAgIGNvbnN0IGNvbnRyb2wgPSBlbGVtZW50LmNvbnRyb2xzW2NvbnRyb2xOYW1lXTtcblxuICAgIGlmICghY29udHJvbCB8fCAhY29udHJvbC5fX2VvRm9ybUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udHJvbC5fX2VvRm9ybUVsZW1lbnQudHlwZSAhPT0gJ1RBQkxFJztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVjb21wdXRlcyB0aGUgaXNUYWJsZURhdGEgcmVzdWx0cyBmb3IgZWFjaCBjb250cm9sIGluIHRoZSBlZGl0Rm9ybS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXRlcmF0ZXMgb3ZlciB0aGUgY29udHJvbHMgaW4gdGhlIGVkaXRGb3JtIGFuZCBjYWxscyB0aGUgaXNUYWJsZURhdGEgZnVuY3Rpb25cbiAgICogZm9yIGVhY2ggY29udHJvbC4gVGhlIHJlc3VsdHMgYXJlIHN0b3JlZCBpbiB0aGUgaXNUYWJsZURhdGFNYXAsIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGNvbnRyb2xcbiAgICogYW5kIHRoZSB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpc1RhYmxlRGF0YSBmdW5jdGlvbi5cbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZUlzVGFibGVEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIHRoaXMuaXNUYWJsZURhdGFNYXAuc2V0KGNvbnRyb2wsIHRoaXMuaXNUYWJsZURhdGEoY29udHJvbCkpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZWRRdWVyeVwiPlxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZFwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJlby1oZWFkZXJcIj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiZW8taGVhZGVyLWljb25cIlxuICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2F2ZWRfc2VhcmNoLnN2ZydcIlxuICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLnZpZXcubmF2aWdhdGlvbi5zdG9yZWRxdWVyaWVzJyB8IHRyYW5zbGF0ZSlcIj5cbiAgICAgIDwvZW8taWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgICA8aDIgY2xhc3M9XCJlby1oZWFkZXItdGl0bGVcIj57eyBzdG9yZWRRdWVyeS5uYW1lIH19PC9oMj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCIgdHJhbnNsYXRlPmVvLnNlYXJjaC50aXRsZS5zdG9yZWRxdWVyaWVzPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNxdWVyeUZvcm0+XG4gICAgICAgIDxlby1zdG9yZWQtcXVlcnkgW3F1ZXJ5XT1cInN0b3JlZFF1ZXJ5XCIgW2Zvcm1Pbmx5XT1cInRydWVcIiAjc3RvcmVkUXVlcnlGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9uUXVlcnlMb2FkZWQpPVwib25TdG9yZWRRdWVyeUxvYWRlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAob25RdWVyeUV4ZWN1dGUpPVwib25TdG9yZWRRdWVyeUV4ZWN1dGUoJGV2ZW50KVwiPjwvZW8tc3RvcmVkLXF1ZXJ5PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGZvcm0gY2xhc3M9XCJlZGl0LWZvcm1cIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmZvcm1cIiAqbmdJZj1cImVkaXRGb3JtLmZvcm07IGVsc2UgcXVlcnlGb3JtXCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRleHQgZGFya1wiPlxuXG4gICAgICAgICAgPCEtLSB0aXRsZSBhbmQgZnVsbHRleHQgdGVybSBmaWVsZHMgLS0+XG4gICAgICAgICAgPGVvLWZvcm0taW5wdXQgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInN0b3JlZFF1ZXJ5VGl0bGVcIiBtYXhsZW5ndGg9XCI2NFwiIG9uZm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCJcbiAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidzdG9yZWRRdWVyeVRpdGxlJ1wiLz5cbiAgICAgICAgICA8L2VvLWZvcm0taW5wdXQ+XG5cbiAgICAgICAgICA8ZW8tcXVlcnktc2NvcGUtc2VsZWN0IFtzZWxlY3Rpb25dPVwicXVlcnlTY29wZVwiIChzZWxlY3QpPVwic2V0UXVlcnlTY29wZSgkZXZlbnQpXCI+PC9lby1xdWVyeS1zY29wZS1zZWxlY3Q+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgIDxlby1mb3JtLWVsZW1lbnQgW3NraXBUb2dnbGVdPVwidHJ1ZVwiIFtlbGVtZW50XT1cImVkaXRGb3JtLmZ1bGx0ZXh0Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l0dWF0aW9uXT1cIidTRUFSQ0gnXCI+PC9lby1mb3JtLWVsZW1lbnQ+XG4gICAgICAgICAgICA8ZW8tZHluYW1pYy1wcm9wZXJ0eS1zd2l0Y2ggW3BhcmVudEZvcm1Db250cm9sXT1cImVkaXRGb3JtLmZ1bGx0ZXh0Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblByb3BlcnR5Q2hhbmdlZCk9XCJwYXJhbWV0ZXJDaGFuZ2VkKCRldmVudClcIj48L2VvLWR5bmFtaWMtcHJvcGVydHktc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBjb250ZXh0IHR5cGUgZm9ybSBjb250cm9scyAtLT5cbiAgICAgICAgICA8aDM+e3sgc3RvcmVkUXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdPy5sYWJlbCB9fTwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdGb3I9XCJsZXQgY3R4RWxlbWVudCBvZiBlZGl0Rm9ybS5jb250ZXh0Q29udHJvbHM7IHRyYWNrQnk6IHRyYWNrQnlRTmFtZVwiPlxuICAgICAgICAgICAgPGVvLWZvcm0tZWxlbWVudCBbZWxlbWVudF09XCJjdHhFbGVtZW50XCIgW3NpdHVhdGlvbl09XCInU0VBUkNIJ1wiPjwvZW8tZm9ybS1lbGVtZW50PlxuICAgICAgICAgICAgPGVvLWR5bmFtaWMtcHJvcGVydHktc3dpdGNoIFtwYXJlbnRGb3JtQ29udHJvbF09XCJjdHhFbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Qcm9wZXJ0eUNoYW5nZWQpPVwicGFyYW1ldGVyQ2hhbmdlZCgkZXZlbnQpXCI+PC9lby1keW5hbWljLXByb3BlcnR5LXN3aXRjaD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBvYmplY3QgdHlwZSBmb3JtIGNvbnRyb2xzIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZHNcIiBbbmdDbGFzc109XCJ7ZW1wdHk6ICFlZGl0Rm9ybS5jb250cm9scz8ubGVuZ3RofVwiPlxuICAgICAgICAgIEBmb3IoZWxlbWVudCBvZiBlZGl0Rm9ybS5jb250cm9sczt0cmFjayB0cmFja0J5UU5hbWUpIHtcbiAgICAgICAgICAgIEBpZiAoaXNUYWJsZURhdGFNYXAuZ2V0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGVvLWZvcm0tZWxlbWVudCBbZWxlbWVudF09XCJlbGVtZW50XCIgW3NpdHVhdGlvbl09XCInU0VBUkNIJ1wiPjwvZW8tZm9ybS1lbGVtZW50PlxuICAgICAgICAgICAgICAgIDxlby1keW5hbWljLXByb3BlcnR5LXN3aXRjaCBbcGFyZW50Rm9ybUNvbnRyb2xdPVwiZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAob25Qcm9wZXJ0eUNoYW5nZWQpPVwicGFyYW1ldGVyQ2hhbmdlZCgkZXZlbnQpXCI+PC9lby1keW5hbWljLXByb3BlcnR5LXN3aXRjaD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cblxuICAgIDxhc2lkZSBjbGFzcz1cImFzaWRlXCI+XG5cbiAgICAgIDwhLS0gZmF2b3JpdGUgYW5kIHNoYXJlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEtYWN0aW9uc1wiICpuZ0lmPVwiIWlzTmV3UXVlcnlcIj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPd25RdWVyeTsgZWxzZSBzaGFyZWRXaXRoTWVcIj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBidG4tc2hhcmVcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaGFyZS5zdmcnXCIgKm5nSWY9XCJlbmFibGVTaGFyaW5nXCJcbiAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBzdG9yZWRRdWVyeS5zaGFyZWQgfHwgc3RvcmVkUXVlcnkucm9sZXMubGVuZ3RoLCBlZGl0aW5nOiBlZGl0aW5nU2hhcmV9XCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hhcmVFZGl0KClcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiaWNvblRpdGxlcy5zaGFyZVwiPjwvZW8taWNvbj5cblxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGJ0bi1mYXZcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19mYXZvcml0ZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBzdG9yZWRRdWVyeS5mYXZvcml0ZX1cIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGYXZvcml0ZVN0YXRlKClcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiaWNvblRpdGxlcy5mYXZvclwiPjwvZW8taWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaGFyZWRXaXRoTWU+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaGFyZWRXaXRoTWVcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaGFyZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cImljb25UaXRsZXMuc2hhcmVkXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2hhcmVkV2l0aE1lXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmF2b3JpdGUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCJpY29uVGl0bGVzLmZhdm9yZWRcIj48L2VvLWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHJvbGVzIHRoYXQgc2hhcmUgdGhpcyBxdWVyeSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhLXJvbGVzXCIgKm5nSWY9XCIhaXNOZXdRdWVyeVwiIFtuZ0NsYXNzXT1cIntkYXJrOiBlZGl0aW5nU2hhcmUsIGVtcHR5OiAhc3RvcmVkUXVlcnkucm9sZXM/Lmxlbmd0aH1cIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RvcmVkcXVlcnkuc2hhcmUuc2hhcmVkd2l0aDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiICpuZ0lmPVwicm9sZXNQaWNrZXI/LmNvZGVzeXN0ZW0/LmVudHJpZXNcIj5cbiAgICAgICAgICA8ZW8tY29kZXN5c3RlbSBbcGlja2VyVGl0bGVdPVwicm9sZXNQaWNrZXIudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2Rlc3lzdGVtXT1cInJvbGVzUGlja2VyLmNvZGVzeXN0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIWVkaXRpbmdTaGFyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCInc3RvcmVkLXF1ZXJ5X19zaGFyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm9sZXNQaWNrZXIudmFsdWVcIiBjbGFzcz1cImhpZGUtY2hpcC1jbG9zZS1idXR0b25cIj48L2VvLWNvZGVzeXN0ZW0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGFyZS1hY3Rpb25zXCIgKm5nSWY9XCJlZGl0aW5nU2hhcmVcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNhbmNlbFNoYXJlKClcIiB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeVwiIChjbGljayk9XCJzaGFyZSgpXCIgdHJhbnNsYXRlPmVvLnN0b3JlZHF1ZXJ5LnNoYXJlLm9rPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gcXVlcmllcyBtZXRhIGluZm8gbGlrZSBiYXNlcGFyYW0gc2V0dGluZ3MgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1kYXRhXCIgKm5nSWY9XCJyZXN0cmljdGlvbnM/Lmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdHJpY3Rpb25cIiAqbmdGb3I9XCJsZXQgcmVzdHJpY3Rpb24gb2YgcmVzdHJpY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57eyByZXN0cmljdGlvbi5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXN0cmljdGlvbi5pdGVtczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+e3sgaXRlbSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9hc2lkZT5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdEZvcm0uZm9ybTsgZWxzZSBhY3Rpb25FZGl0XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2Vjb25kYXJ5IGJ0bi1kZWxldGVcIiAoY2xpY2spPVwic2hvd0RlbGV0ZURpYWxvZyA9IHRydWVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzT3duUXVlcnlcIiB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5kZWxldGVcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeSBidG4tb3BlblwiIChjbGljayk9XCJzZXRRdWVyeVRvQXBwU2VhcmNoKClcIiB0cmFuc2xhdGU+ZW8uc3RvcmVkcXVlcnkubG9hZDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnkgZ3JleSBidG4tZWRpdFwiIChjbGljayk9XCJlZGl0KClcIiBbZGlzYWJsZWRdPVwiIWlzT3duUXVlcnlcIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLnN0b3JlZHF1ZXJ5LmFjdGlvbi5lZGl0XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1zZWFyY2hcIiBbZGlzYWJsZWRdPVwic3RvcmVkUXVlcnkuc3RhdGU/LmlzRW1wdHlcIiAoY2xpY2spPVwiZXhlY3V0ZVF1ZXJ5KClcIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLnN0b3JlZHF1ZXJ5LnJ1blxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZW8tZGlhbG9nIFt0aXRsZV09XCInZW8uc3RvcmVkcXVlcnkuZGVsZXRlLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dEZWxldGVEaWFsb2dcIlxuICAgICAgICAgICAgICAgW2ZvY3VzT25TaG93XT1cImZhbHNlXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidzdG9yZWRRdWVyeS1kZWxldGVfX2RpYWxvZydcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgICAgQGlmKGlzU3RvcmVkUXVlcnlVc2VkKCkpe1xuICAgICAgICAgICAgPHNwYW4+e3snZW8uc3RvcmVkcXVlcnkuZGVsZXRlLmRpYWxvZy5tZXNzYWdlJyB8IHRyYW5zbGF0ZToge1xuICAgICAgICAgICAgICAgIHN0b3JlZHF1ZXJ5OiB0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWUsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5pbmZvfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuPnt7J2VvLnN0b3JlZHF1ZXJ5LmRlbGV0ZS5kaWFsb2cubWVzc2FnZS5kZWZhdWx0JyB8IHRyYW5zbGF0ZToge1xuICAgICAgICAgICAgICAgIHN0b3JlZHF1ZXJ5OiB0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWV9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlybURlbGV0ZSAoY2xpY2spPVwiZGVsZXRlKCk7IHNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmRlbGV0ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZW8tZGlhbG9nPlxuXG4gICAgPG5nLXRlbXBsYXRlICNhY3Rpb25FZGl0PlxuICAgICAgPCEtLSBhY3Rpb24gd2hpbGUgZWRpdGluZyB0aGUgcXVlcnkgZm9ybSAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnkgYnRuLWNhbmNlbFwiIChjbGljayk9XCJjYW5jZWxFZGl0KClcIiB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1zYXZlXCIgKGNsaWNrKT1cInVwZGF0ZVN0b3JlZFF1ZXJ5KClcIiBbZGlzYWJsZWRdPVwiZWRpdEZvcm0uZm9ybS5pbnZhbGlkXCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5zdG9yZWRxdWVyeS5hY3Rpb24uc2F2ZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPlxuIl19
575
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS1kZXRhaWxzL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnktZGV0YWlscy9zdG9yZWQtcXVlcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlELE9BQU8sRUFDTCxVQUFVLEVBS1YsWUFBWSxFQUNaLFdBQVcsRUFFWCxvQkFBb0IsRUFDcEIsV0FBVyxFQUlYLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFLakYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWWhFLElBQU0sMkJBQTJCLEdBQWpDLE1BQU0sMkJBQTJC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cG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEVuYWlvRXZlbnQsXG4gIEV2ZW50U2VydmljZSxcbiAgSVN0b3JlZFF1ZXJ5UGFyYW0sXG4gIE9yZ1JvbGUsXG4gIFF1ZXJ5U2NvcGUsXG4gIFNlYXJjaEZpbHRlcixcbiAgU2VhcmNoUXVlcnksXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxuICBTdG9yZWRRdWVyeSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXNlclNlcnZpY2UsXG4gIFV0aWxzXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge09ic2VydmFibGUsIGZvcmtKb2luLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3RhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0xvY2FsZURhdGVQaXBlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcbmltcG9ydCB7U2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2x9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge09iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHtVdGlsaXRpZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi91dGlsL3NlcnZpY2VzL3V0aWxpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7RWRpdEZvcm0sIE5vdGlmeUxpc3QsIFJlc3RyaWN0aW9ufSBmcm9tICcuLi9zdG9yZWQtcXVlcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7U3RvcmVkUXVlcnlDb21wb25lbnR9IGZyb20gJy4uL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkuY29tcG9uZW50JztcbmltcG9ydCB7V2lkZ2V0R3JpZFdvcmtzcGFjZX0gZnJvbSAnQHl1dXZpcy93aWRnZXQtZ3JpZCc7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1zdG9yZWQtcXVlcnktZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9yZWQtcXVlcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3RvcmVkUXVlcnlEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwcml2YXRlIEZPUk1fSU5QVVRfVElUTEUgPSAnc3RvcmVkUXVlcnlUaXRsZSc7XG4gIHByaXZhdGUgRk9STV9JTlBVVF9GVUxMVEVYVCA9ICdzdG9yZWRRdWVyeUZ1bGx0ZXh0JztcbiAgcHJpdmF0ZSBCQVNFX1BBUkFNU19GSUVMRFMgPSBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykubWFwKGsgPT4gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba10pO1xuICBwcml2YXRlIGRhdGVQaXBlOiBMb2NhbGVEYXRlUGlwZTtcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnc3RvcmVkUXVlcnlGb3JtJykgc3RvcmVkUXVlcnlGb3JtOiBTdG9yZWRRdWVyeUNvbXBvbmVudDtcblxuICBpY29uVGl0bGVzOiBhbnk7XG4gIHN0b3JlZFF1ZXJ5OiBTdG9yZWRRdWVyeTtcbiAgcXVlcnlTY29wZTogUXVlcnlTY29wZTtcbiAgZWRpdEZvcm06IEVkaXRGb3JtO1xuICByZXN0cmljdGlvbnM6IFJlc3RyaWN0aW9uW107XG4gIGVkaXRpbmdTaGFyZTogYm9vbGVhbjtcbiAgaXNOZXdRdWVyeTogYm9vbGVhbjtcbiAgaXNPd25RdWVyeTogYm9vbGVhbjtcbiAgZW5hYmxlU2hhcmluZzogYm9vbGVhbjtcbiAgc3lzdGVtUm9sZXM6IE9yZ1JvbGVbXTtcbiAgd29ya3NwYWNlczogV2lkZ2V0R3JpZFdvcmtzcGFjZVtdO1xuICByb2xlc1BpY2tlciA9IHtcbiAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucm9sZXMnKSxcbiAgICBjb2Rlc3lzdGVtOiBudWxsLFxuICAgIHZhbHVlOiBudWxsXG4gIH07XG4gIHNob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgaW5mbyA9ICcnO1xuICBpc1RhYmxlRGF0YU1hcDogTWFwPGFueSwgYm9vbGVhbj4gPSBuZXcgTWFwKCk7XG5cbiAgQElucHV0KClcbiAgc2V0IHF1ZXJ5KHE6IFN0b3JlZFF1ZXJ5KSB7XG4gICAgdGhpcy5zZXRRdWVyeShxKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBub3RpZnlMaXN0OiBFdmVudEVtaXR0ZXI8Tm90aWZ5TGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPE5vdGlmeUxpc3Q+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1IZWxwZXJTZXJ2aWNlOiBPYmplY3RGb3JtSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1SZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2VcbiAgKSB7XG5cbiAgICB0aGlzLmRhdGVQaXBlID0gbmV3IExvY2FsZURhdGVQaXBlKHRyYW5zbGF0ZSk7XG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XG4gICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy51c2VyU2VydmljZT8uZ2V0Q3VycmVudFVzZXIoKT8udXNlclNldHRpbmdzPy53b3Jrc3BhY2VPcHRpb25zPy53b3Jrc3BhY2VzIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5xdWVyeVNjb3BlID0gc2NvcGU7XG4gIH1cblxuICBzZXRRdWVyeShxOiBTdG9yZWRRdWVyeSkge1xuICAgIHRoaXMuZWRpdGluZ1NoYXJlID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XG4gICAgLy8gZ3JhYiBtZXRhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBxdWVyeVxuICAgIHRoaXMuc3RvcmVkUXVlcnkgPSBxO1xuICAgIGlmIChxIGluc3RhbmNlb2YgU3RvcmVkUXVlcnkpIHtcbiAgICAgIHRoaXMucXVlcnlTY29wZSA9IHEuc2NvcGU7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgdGhpcy5pc05ld1F1ZXJ5ID0gcS5pc05ldygpO1xuICAgICAgdGhpcy5pc093blF1ZXJ5ID0gdGhpcy5pc05ld1F1ZXJ5IHx8IHEudXNlci50b0xvd2VyQ2FzZSgpID09PSB1c2VyLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gdGhpcy5nZXRSZXN0cmljdGlvbnMoKTtcbiAgICAgIHRoaXMucm9sZXNQaWNrZXIudmFsdWUgPSBxLnJvbGVzO1xuICAgICAgdGhpcy5lbmFibGVTaGFyaW5nID0gdXNlci5oYXNQcml2aWxlZ2UoJ1NIQVJFX1NUT1JFRF9RVUVSSUVTJykgJiYgdGhpcy5pc093blF1ZXJ5ICYmICF0aGlzLmlzTmV3UXVlcnk7XG5cbiAgICAgIGlmIChxLmlzTmV3KCkpIHtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5uYW1lID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJpZXMubmV3LnRpdGxlJyk7XG4gICAgICAgIHRoaXMuZWRpdCgpO1xuICAgICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IHRydWUsIHVwZGF0ZTogZmFsc2V9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbGVtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJzdG9yZWRRdWVyeVRpdGxlXCJdJykuZm9jdXMoKVxuICAgICAgICB9LCA1MDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQZW5kaW5nKCkge1xuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xuICAgICAgdGhpcy5wZW5kaW5nVGFza0lkID0gdGhpcy5wZW5kaW5nQ2hhbmdlcy5zdGFydFRhc2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmlzaFBlbmRpbmcoKSB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XG4gIH1cblxuICBlZGl0KCkge1xuICAgIGlmICghdGhpcy5lZGl0Rm9ybS5mb3JtKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVFZGl0Rm9ybSgpO1xuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IGZhbHNlLCB1cGRhdGU6IHRydWV9KTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZm9ybVN0YXRlKSB7XG4gICAgZm9ybVN0YXRlLmRpcnR5ID8gdGhpcy5zdGFydFBlbmRpbmcoKSA6IHRoaXMuZmluaXNoUGVuZGluZygpO1xuICB9XG5cbiAgdG9nZ2xlU2hhcmVFZGl0KCkge1xuICAgIHRoaXMuZWRpdGluZ1NoYXJlID0gIXRoaXMuZWRpdGluZ1NoYXJlO1xuICB9XG5cbiAgc2hhcmUoKSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeS5yb2xlcyA9IHRoaXMucm9sZXNQaWNrZXIudmFsdWU7XG4gICAgdGhpcy5zdG9yZWRRdWVyeS5zaGFyZWQgPSB0aGlzLnN0b3JlZFF1ZXJ5LnJvbGVzPy5sZW5ndGggPiAwO1xuICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2Uuc2F2ZVN0b3JlZFF1ZXJ5KHRoaXMuc3RvcmVkUXVlcnkpLnN1YnNjcmliZShcbiAgICAgIF8gPT4ge1xuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuU1RPUkVEX09CSkVDVF9TSEFSRUQpO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSlcbiAgICApO1xuICAgIHRoaXMuZWRpdGluZ1NoYXJlID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWxTaGFyZSgpIHtcbiAgICB0aGlzLnJvbGVzUGlja2VyLnZhbHVlID0gdGhpcy5zdG9yZWRRdWVyeS5yb2xlcztcbiAgICB0aGlzLmVkaXRpbmdTaGFyZSA9IGZhbHNlO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TVE9SRURfT0JKRUNUX1NIQVJFRCk7XG4gIH1cblxuICBpc1N0b3JlZFF1ZXJ5VXNlZCgpOiBib29sZWFuIHtcbiAgICB0aGlzLmluZm8gPSAnJztcbiAgICBsZXQgaXNVc2VkO1xuICAgIHRoaXMud29ya3NwYWNlcy5maWx0ZXIod29ya3NwYWNlID0+IHdvcmtzcGFjZS5ncmlkLnNvbWUoZ3JpZEl0ZW0gPT4ge1xuICAgICAgaWYgKGdyaWRJdGVtLndpZGdldENvbmZpZz8uc3RvcmVkUXVlcnkgPT09IHRoaXMuc3RvcmVkUXVlcnkuaWQpIHtcbiAgICAgICAgdGhpcy5pbmZvICs9ICh0aGlzLmluZm8gPyAnLCAnIDogJycpICsgYCcke3dvcmtzcGFjZS5sYWJlbH0nYDtcbiAgICAgICAgaXNVc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHJldHVybiBpc1VzZWQ7XG4gIH1cblxuICBkZWxldGUoKSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZVxuICAgICAgLnJlbW92ZVN0b3JlZFF1ZXJ5KHRoaXMuc3RvcmVkUXVlcnkuaWQpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5xdWVyeSA9IG51bGw7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogZmFsc2V9KTtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5kZWxldGUuZXJyb3InKSkpO1xuICB9XG5cbiAgdG9nZ2xlRmF2b3JpdGVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZhdm9yaXRlID0gIXRoaXMuc3RvcmVkUXVlcnkuZmF2b3JpdGU7XG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZVxuICAgICAgLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNUT1JFRF9PQkpFQ1RfRkFWT1JJU0VEKTtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5zYXZlLmVycm9yJykpKTtcbiAgfVxuXG4gIGNhbmNlbEVkaXQoKSB7XG4gICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkuaXNOZXcoKSkge1xuICAgICAgdGhpcy5xdWVyeSA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogZmFsc2UsIHBheWxvYWQ6IHRoaXMuc3RvcmVkUXVlcnl9KTtcbiAgfVxuXG4gIHNldFF1ZXJ5VG9BcHBTZWFyY2goKSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeUZvcm0ubG9hZCgpO1xuICB9XG5cbiAgZXhlY3V0ZVF1ZXJ5KCkge1xuICAgIHRoaXMuc3RvcmVkUXVlcnlGb3JtLmV4ZWN1dGUoKTtcbiAgfVxuXG4gIC8vIFNhdmUgdGhlIGN1cnJlbnQgc3RvcmVkIHF1ZXJ5XG4gIHVwZGF0ZVN0b3JlZFF1ZXJ5KCkge1xuXG4gICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmdldEZvcm1EYXRhKCk7XG4gICAgdGhpcy5zdG9yZWRRdWVyeS5maWx0ZXJzID0gdGhpcy5zdG9yZWRRdWVyeS5maWx0ZXJzLmZpbHRlcihmID0+IH50aGlzLkJBU0VfUEFSQU1TX0ZJRUxEUy5pbmRleE9mKGYucHJvcGVydHkpKTtcbiAgICBPYmplY3Qua2V5cyhmb3JtRGF0YSlcbiAgICAgIC5mb3JFYWNoKGsgPT4ge1xuICAgICAgICBpZiAoayA9PT0gdGhpcy5GT1JNX0lOUFVUX1RJVExFKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5uYW1lID0gZm9ybURhdGFba107XG4gICAgICAgIH0gZWxzZSBpZiAoayA9PT0gdGhpcy5GT1JNX0lOUFVUX0ZVTExURVhUKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS50ZXJtID0gZm9ybURhdGFba107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFNlYXJjaEZpbHRlcih0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLCBrLCBmb3JtRGF0YVtrXSk7XG4gICAgICAgICAgZmlsdGVycy5mb3JFYWNoKGYgPT4gdGhpcy5zdG9yZWRRdWVyeS5hZGRGaWx0ZXIoZikpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHNlYXJjaEZpbHRlcnMgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoKTtcblxuICAgIC8vIFVwZGF0ZSBzdG9yZWRRdWVyeS5maWx0ZXJzIGJhc2VkIG9uIHNlYXJjaEZpbHRlcnNcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMuZm9yRWFjaCgoc3RvcmVkRmlsdGVyLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hpbmdTZWFyY2hGaWx0ZXIgPSBzZWFyY2hGaWx0ZXJzLmZpbmQoc2VhcmNoRmlsdGVyID0+IHNlYXJjaEZpbHRlci5wcm9wZXJ0eSA9PT0gc3RvcmVkRmlsdGVyLnByb3BlcnR5KTtcbiAgICAgIGlmIChtYXRjaGluZ1NlYXJjaEZpbHRlcikge1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnNbaW5kZXhdLmFjdHVhbE9wZXJhdG9yID0gbWF0Y2hpbmdTZWFyY2hGaWx0ZXIuYWN0dWFsT3BlcmF0b3I7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVyc1tpbmRleF0ub3BlcmF0b3IgPSBtYXRjaGluZ1NlYXJjaEZpbHRlci5vcGVyYXRvcjtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5maWx0ZXJzW2luZGV4XS5maXJzdFZhbHVlID0gbWF0Y2hpbmdTZWFyY2hGaWx0ZXIuZmlyc3RWYWx1ZTtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5maWx0ZXJzW2luZGV4XS5zZWNvbmRWYWx1ZSA9IG1hdGNoaW5nU2VhcmNoRmlsdGVyLnNlY29uZFZhbHVlO1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnNbaW5kZXhdLnVzZU5vdCA9IG1hdGNoaW5nU2VhcmNoRmlsdGVyLnVzZU5vdDtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5maWx0ZXJzW2luZGV4XS50cmFuc2Zvcm1EYXRlID0gbWF0Y2hpbmdTZWFyY2hGaWx0ZXIudHJhbnNmb3JtRGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2VcbiAgICAgIC5zYXZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeSlcbiAgICAgIC5zdWJzY3JpYmUodXBkYXRlZFN0b3JlZFF1ZXJ5ID0+IHtcbiAgICAgICAgdGhpcy5xdWVyeSA9IHVwZGF0ZWRTdG9yZWRRdWVyeTtcbiAgICAgICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XG4gICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IGZhbHNlLCB1cGRhdGU6IGZhbHNlLCBwYXlsb2FkOiB1cGRhdGVkU3RvcmVkUXVlcnl9KTtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5zYXZlLmVycm9yJykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgZm9ybSBlbGVtZW50cyB0byBiZSBhIGR5bmFtaWMgcGFyYW1ldGVyIG9yIG5vdFxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHBhcmFtZXRlckNoYW5nZWQoZXZlbnQ6IHtjb250cm9sOiBzdHJpbmcsIHZhbHVlOiBib29sZWFufSkge1xuXG4gICAgbGV0IG0gPSB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5maW5kKHAgPT4gcC5xbmFtZSA9PT0gZXZlbnQuY29udHJvbCk7XG4gICAgaWYgKG0gJiYgIWV2ZW50LnZhbHVlKSB7XG4gICAgICAvLyByZW1vdmUgZXhpc3RpbmcgcGFyYW1ldGVyXG4gICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlciA9IHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLmZpbHRlcihwID0+IHAucW5hbWUgIT09IGV2ZW50LmNvbnRyb2wpO1xuICAgIH0gZWxzZSBpZiAoIW0gJiYgZXZlbnQudmFsdWUpIHtcbiAgICAgIC8vIGFkZCBwYXJhbWV0ZXIgZWxlbWVudFxuICAgICAgbGV0IHBhcmFtID0gdGhpcy5mb3JtRmllbGRUb1BhcmFtZXRlcihldmVudC5jb250cm9sKTtcbiAgICAgIGlmIChwYXJhbSkge1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5wdXNoKHBhcmFtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1EYXRhKCkge1xuXG4gICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZSk7XG4gICAgbGV0IGRhdGEgPSB7fTtcblxuXG4gICAgcHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcblxuICAgICAgY29uc3QgZmM6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciA9IHRoaXMuZWRpdEZvcm0uZm9ybS5jb250cm9sc1twcm9wZXJ0eV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyO1xuICAgICAgbGV0IGZvcm1FbGVtZW50O1xuICAgICAgaWYgKGZjLmNvbnRyb2xzICYmIGZjLmNvbnRyb2xzW3Byb3BlcnR5XSkge1xuICAgICAgICBjb25zdCBmZTogT2JqZWN0Rm9ybUNvbnRyb2wgPSBmYy5jb250cm9sc1twcm9wZXJ0eV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2w7XG4gICAgICAgIGZvcm1FbGVtZW50ID0gZmUuX2VvRm9ybUVsZW1lbnQ7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUVsZW1lbnQgJiYgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSkge1xuICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHtcbiAgICAgICAgICBjYXNlIHRoaXMuRk9STV9JTlBVVF9USVRMRToge1xuICAgICAgICAgICAgZGF0YVtwcm9wZXJ0eV0gPSB0aGlzLmVkaXRGb3JtLmZvcm0udmFsdWVbcHJvcGVydHldIHx8ICcnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgdGhpcy5GT1JNX0lOUFVUX0ZVTExURVhUOiB7XG4gICAgICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV1bU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFRdIHx8ICcnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLmVkaXRGb3JtLmZvcm0udmFsdWVbcHJvcGVydHldW3Byb3BlcnR5XTtcbiAgICAgICAgICAgIGlmICghVXRpbGl0aWVzU2VydmljZS5pc0VtcHR5KHYpKSB7XG4gICAgICAgICAgICAgIGRhdGFbcHJvcGVydHldID0gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkeW5hbWljIHN0b3JlZCBxdWVyeSBwYXJhbWV0ZXIgZm9yIGEgZm9ybSBlbGVtZW50XG4gICAqIEBwYXJhbSBxbmFtZSBUaGUgZm9ybSBlbGVtZW50cyBxbmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBmb3JtRmllbGRUb1BhcmFtZXRlcihxbmFtZTogc3RyaW5nKTogSVN0b3JlZFF1ZXJ5UGFyYW0ge1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXJhbTogSVN0b3JlZFF1ZXJ5UGFyYW07XG4gICAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIGZvciBmdWxsdGV4dCBmaWVsZHNcbiAgICAgIGlmIChxbmFtZSA9PT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQpIHtcbiAgICAgICAgcGFyYW0gPSB7XG4gICAgICAgICAgcW5hbWU6IHFuYW1lLFxuICAgICAgICAgIHR5cGU6IHFuYW1lLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmMgPSAoKHRoaXMuZWRpdEZvcm0uZm9ybS5jb250cm9sc1txbmFtZV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKS5jb250cm9sc1txbmFtZV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2wpO1xuICAgICAgICBjb25zdCBmZSA9IGZjLl9lb0Zvcm1FbGVtZW50O1xuICAgICAgICBwYXJhbSA9IHtcbiAgICAgICAgICBxbmFtZTogZmUucW5hbWUsXG4gICAgICAgICAgdHlwZTogZmUudHlwZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcmFtO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFZGl0Rm9ybSgpIHtcbiAgICB0aGlzLmVkaXRGb3JtID0ge1xuICAgICAgZm9ybTogbnVsbCxcbiAgICAgIGZ1bGx0ZXh0Rm9ybUNvbnRyb2w6IG51bGwsXG4gICAgICBjb250cm9sczogW10sXG4gICAgICBjb250ZXh0Q29udHJvbHM6IFtdXG4gICAgfTtcbiAgfVxuXG4gIG9uRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0Rm9ybVxuICAgICAgLmZvcm1cbiAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkZvcm1TdGF0dXNDaGFuZ2VkKHRoaXMuZWRpdEZvcm0uZm9ybSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFZGl0Rm9ybSgpIHtcblxuICAgIHRoaXMucmVzZXRFZGl0Rm9ybSgpO1xuICAgIHRoaXMuc2V0dXBGb3JtQ29udHJvbHMoKS5zdWJzY3JpYmUoXyA9PiB7XG5cbiAgICAgIGxldCBmb3JtID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XG4gICAgICBsZXQgZmNUaXRsZSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgZmNUaXRsZS5zZXRWYWx1ZSh0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWUpO1xuXG4gICAgICBsZXQgZmNGdWxsdGV4dCA9IHRoaXMudG9Gb3JtQ29udHJvbCh0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldEZ1bGx0ZXh0Rm9ybUVsZW1lbnQoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnNlYXJjaC50ZXJtJyksXG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkudGVybVxuICAgICAgKSk7XG4gICAgICB0aGlzLmVkaXRGb3JtLmZ1bGx0ZXh0Rm9ybUNvbnRyb2wgPSBmY0Z1bGx0ZXh0O1xuXG4gICAgICAvLyBhZGQgdGl0bGUgYW5kIGZ1bGx0ZXh0IGZpZWxkXG4gICAgICBmb3JtLmFkZENvbnRyb2wodGhpcy5GT1JNX0lOUFVUX1RJVExFLCBmY1RpdGxlKTtcbiAgICAgIGZvcm0uYWRkQ29udHJvbCh0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQsIGZjRnVsbHRleHQpO1xuXG4gICAgICBpZiAodGhpcy5lZGl0Rm9ybS5jb250cm9scy5sZW5ndGggfHwgdGhpcy5lZGl0Rm9ybS5jb250ZXh0Q29udHJvbHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHNcbiAgICAgICAgICAuZm9yRWFjaCgoYykgPT4gZm9ybS5hZGRDb250cm9sKGMuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lLCBjKSk7XG4gICAgICAgIHRoaXMuZWRpdEZvcm0uY29udGV4dENvbnRyb2xzXG4gICAgICAgICAgLmZvckVhY2goKGMpID0+IGZvcm0uYWRkQ29udHJvbChjLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZSwgYykpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVkaXRGb3JtLmZvcm0gPSBmb3JtO1xuICAgICAgdGhpcy5jb21wdXRlSXNUYWJsZURhdGEoKTtcbiAgICAgIHRoaXMub25Gb3JtQ2hhbmdlcygpO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldHVwRm9ybUNvbnRyb2xzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdGFza3MgPSBbXTtcbiAgICAvLyBzZXR0aW5nIHVwIG9iamVjdCB0eXBlIGZvcm0gb25seSBtYWtlcyBzZW5zZSB3aXRoIG9uZSB0YXJnZXQgdHlwZVxuICAgIGlmICh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGFza3MucHVzaCh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbCh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzWzBdLnFuYW1lLCAnU0VBUkNIJykucGlwZShcbiAgICAgICAgdGFwKChlbGVtZW50czogYW55W10pID0+IHtcbiAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgICAgLy8gcHJldmVudCB0YWJsZXMgYW5kIGJpbmFyeSB0eXBlcyBmcm9tIGJlaW5nIHJlbmRlcmVkIGluIHRoZSBzdG9yZWQgcXVlcnkgZm9ybVxuICAgICAgICAgICAgaWYgKGUudHlwZSAhPT0gJ0JJTkFSWScpIHtcbiAgICAgICAgICAgICAgaWYgKGUucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICBlLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGUucmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICBlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZmMgPSB0aGlzLnRvRm9ybUNvbnRyb2woZSk7XG4gICAgICAgICAgICAgIGlmIChmYykge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHMucHVzaChmYyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgKSlcbiAgICB9XG4gICAgLy8gYWRkIGNvbnRleHQgZm9ybSBjb250cm9scyBhcyB3ZWxsXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCkge1xuICAgICAgdGFza3MucHVzaCh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbCh0aGlzLnN0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5xbmFtZSwgJ1NFQVJDSCcsIHRydWUpLnBpcGUoXG4gICAgICAgIHRhcCgoZWxlbWVudHM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZjID0gdGhpcy50b0Zvcm1Db250cm9sKGUpO1xuICAgICAgICAgICAgaWYgKGZjKSB7XG4gICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uY29udGV4dENvbnRyb2xzLnB1c2goZmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiB0YXNrcy5sZW5ndGggPyBmb3JrSm9pbih0YXNrcykgOiBvZih0YXNrcyk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoUm9sZXMoKSB7XG4gICAgaWYgKCF0aGlzLnN5c3RlbVJvbGVzIHx8IHRoaXMuc3lzdGVtUm9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnN5c3RlbVNlcnZpY2VcbiAgICAgICAgLmdldFJvbGVzKClcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMuc3lzdGVtUm9sZXMgPSByZXM7XG4gICAgICAgICAgdGhpcy5yb2xlc1BpY2tlci5jb2Rlc3lzdGVtID0ge1xuICAgICAgICAgICAgZW50cmllczogdGhpcy5zeXN0ZW1Sb2xlcy5tYXAocm9sZSA9PiAoe1xuICAgICAgICAgICAgICBpZDogcm9sZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IHJvbGUubmFtZSxcbiAgICAgICAgICAgICAgZGVmYXVsdHJlcHJlc2VudGF0aW9uOiByb2xlLm5hbWUsXG4gICAgICAgICAgICAgIGRhdGE6IHJvbGUubmFtZVxuICAgICAgICAgICAgfSkpLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGdldFJlc3RyaWN0aW9ucygpOiBSZXN0cmljdGlvbltdIHtcbiAgICBsZXQgcmVzdHJpY3Rpb25zOiBSZXN0cmljdGlvbltdID0gW107XG5cbiAgICAvLyB0eXBlIHJlc3RyaWN0aW9uXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMgJiYgdGhpcy5zdG9yZWRRdWVyeS50eXBlcy5sZW5ndGgpIHtcbiAgICAgIHJlc3RyaWN0aW9ucy5wdXNoKHtcbiAgICAgICAgZmllbGQ6IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEUsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5yZXN0cmljdGlvbi50eXBlJyksXG4gICAgICAgIGl0ZW1zOiB0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLm1hcCh0ID0+IHQubGFiZWwpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhZGQgYmFzZSBwYXJhbXMgcmVzdHJpY3Rpb25zXG4gICAgKHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVycyB8fCBbXSkuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgaWYgKGZpbHRlciAmJiB+dGhpcy5CQVNFX1BBUkFNU19GSUVMRFMuaW5kZXhPZihmaWx0ZXIucHJvcGVydHkpKSB7XG5cbiAgICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIucHJvcGVydHk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucmVzdHJpY3Rpb24uJyArIGZpZWxkKTtcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBBcnJheS5pc0FycmF5KGZpbHRlci5maXJzdFZhbHVlKSA/IGZpbHRlci5maXJzdFZhbHVlIDogW2ZpbHRlci5maXJzdFZhbHVlXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkZJTEVOQU1FOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBbZmlsdGVyLmZpcnN0VmFsdWVdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkU6XG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBmaWx0ZXIuZmlyc3RWYWx1ZSldXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRDpcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBbdGhpcy5jcmVhdGVEYXRlUmVzdHJpY3Rpb24oZmlsdGVyKV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVE9SOlxuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRVI6XG4gICAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhmaWx0ZXIuZmlyc3RWYWx1ZSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShvcmdVc2VycyA9PiByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGQsIGxhYmVsLCBpdGVtczogb3JnVXNlcnMubWFwKCh1KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdS5pZCA9PT0gXCIjY3VycmVudHVzZXIjXCJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLnByb3BlcnR5Lm9yZ2FuaXphdGlvbi5jdXJyZW50LnVzZXInKVxuICAgICAgICAgICAgICAgICAgICA6IHUudGl0bGVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdHJpY3Rpb25zO1xuICB9XG5cbiAgY3JlYXRlRGF0ZVJlc3RyaWN0aW9uKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XG4gICAgc3dpdGNoIChmaWx0ZXIub3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFOlxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgZW8uc2VhcmNoLmFnZy50aW1lLiR7ZmlsdGVyLmZpcnN0VmFsdWV9YCk7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTDpcbiAgICAgICAgcmV0dXJuIGA9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEg6XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9IC0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuc2Vjb25kVmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5HUkVBVEVSX09SX0VRVUFMOlxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4uc2luY2UnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkxFU1NfT1JfRVFVQUw6XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLnRpbWUuc3Bhbi51bnRpbCcpfSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAoJHtmaWx0ZXIub3BlcmF0b3J9KSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZm9ybSBjb250cm9sIGZyb20gYSBnaXZlbiBmb3JtIGVsZW1lbnRcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIHRvRm9ybUNvbnRyb2woZm9ybUVsZW1lbnQpOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIge1xuXG4gICAgLy8gdGhlIGBuYW1lYCBwcm9wZXJ0eSBvZiBzdG9yZWQgcXVlcnkgZm9ybSBlbGVtZW50IGhhcyB0byBiZSBgcW5hbWVgIG9mIGZvcm0gZWxlbWVudCxcbiAgICAvLyBiZWNhdXNlIHdlIG1heSBjb21iaW5lIG11bHRpcGxlIGZvcm1zIChjb250ZXh0IGZvcm0pIGFuZCBpbiB0aGlzIGNhc2UgdGhlcmUgbWF5XG4gICAgLy8gYmUgY29uZmxpY3RzIGluIG5hbWluZ3NcbiAgICBmb3JtRWxlbWVudC5uYW1lID0gZm9ybUVsZW1lbnQucW5hbWU7XG5cbiAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJykge1xuICAgICAgbGV0IGZpbHRlcnMgPSB0aGlzLnN0b3JlZFF1ZXJ5LmdldFRhYmxlRmlsdGVycyhmb3JtRWxlbWVudC5xbmFtZSk7XG4gICAgICBpZiAoZmlsdGVycyAmJiBmaWx0ZXJzLmxlbmd0aCkge1xuICAgICAgICBmb3JtRWxlbWVudC52YWx1ZSA9IHRoaXMuc2VhcmNoU2VydmljZS50YWJsZUZpbHRlcnNUb0VsZW1lbnRWYWx1ZShmaWx0ZXJzLCBmb3JtRWxlbWVudC5lbGVtZW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtRWxlbWVudC52YWx1ZSA9IFt7fV07XG4gICAgICAgIGRlbGV0ZSBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBncmFiIHZhbHVlIGZvciB0aGUgY29udHJvbCBmcm9tIGNvcnJlc3BvbmRpbmcgcXVlcnkgZmlsdGVyc1xuICAgICAgbGV0IGZpbHRlciA9IHRoaXMuc3RvcmVkUXVlcnkuZ2V0RmlsdGVyKGZvcm1FbGVtZW50LnFuYW1lKTtcbiAgICAgIC8vIHdlIG1heSBoYXZlIHBhcmFtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgcXVlcmllcyBmaWx0ZXJzLiBUaGlzIG1heSBiZSB0aGVcbiAgICAgIC8vIGNhc2Ugd2hlbiB3ZSBtYXJrIGZvcm0gZWxlbWVudHMgYXMgZHluYW1pYyBmaWVsZHMgd2l0aG91dCBwcm92aWRpbmcgYSB2YWx1ZVxuICAgICAgaWYgKGZpbHRlcikge1xuXG4gICAgICAgIC8vIGZpbHRlciB0byBoYXZlIG5vIHZhbHVlXG4gICAgICAgIGlmIChmaWx0ZXIub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCAmJiBmaWx0ZXIuZmlyc3RWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyVG9FbGVtZW50VmFsdWUoXG4gICAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5nZXRGaWx0ZXIoZm9ybUVsZW1lbnQucW5hbWUpLFxuICAgICAgICAgIGZvcm1FbGVtZW50LnR5cGVcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZm9ybUVsZW1lbnQucW5hbWUgIT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUKSB7XG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gc3luYyB3aXRoIHBhcmFtc1xuICAgIGNvbnN0IG1hdGNoOiBhbnkgPSB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5maW5kKHBhcmFtID0+IHtcbiAgICAgIHJldHVybiAocGFyYW0ucW5hbWUgPT09IGZvcm1FbGVtZW50LnFuYW1lKSB8fCAocGFyYW0udHlwZSA9PT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQgJiYgZm9ybUVsZW1lbnQucW5hbWUgPT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUKVxuICAgIH0pO1xuICAgIC8vIGV2ZXJ5IGZpZWxkIHRoYXQgaXMgcGFydCBvZiB0aGUgcGFyYW1zIGlzIHN1cHBvc2VkIHRvIGJlIGR5bmFtaWNcbiAgICBmb3JtRWxlbWVudC5fZHluYW1pYyA9ICEhbWF0Y2g7XG5cbiAgICAvLyBjcmVhdGUgYWN0dWFsIGZvcm0gY29udHJvbCB0aGF0IGNvdWxkIGJlIHVzZWQgd2l0aFxuICAgIC8vIEZvcm1FbGVtZW50Q29tcG9uZW50IHRvIHRoZW4gcmVuZGVyIGZvciBlbGVtZW50c1xuICAgIC8vIHdyYXBwZXIgbWF5IGJlIG51bGwgaW4gY2FzZSBvZiBhbiBlcnJvclxuICAgIHJldHVybiB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmVsZW1lbnRUb0Zvcm1Db250cm9sKGZvcm1FbGVtZW50LCAnU0VBUkNIJyk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5TG9hZGVkKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiAnc2VhcmNoJ319XSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5RXhlY3V0ZShldnQpIHtcbiAgICBjb25zdCB1cmlQYXJhbSA9IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShldnQucXVlcnlKc29uKSk7XG4gICAgY29uc3QgdXJpUGFyYW1RdWVyeTogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeydxdWVyeSc6IHVyaVBhcmFtfX07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcmVzdWx0J10sIHVyaVBhcmFtUXVlcnkpO1xuICB9XG5cbiAgc2V0SWNvblRpdGxlcygpIHtcbiAgICB0aGlzLmljb25UaXRsZXMgPSB7XG4gICAgICBzaGFyZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuc2hhcmUudGl0bGUnKSxcbiAgICAgIHNoYXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuc2hhcmVkZm9yLnRpdGxlJyksXG4gICAgICBmYXZvcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuZmF2b3IudGl0bGUnKSxcbiAgICAgIGZhdm9yZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LmZhdm9yZWRmb3IudGl0bGUnKVxuICAgIH1cbiAgfVxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uZm9jdXMkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUocSA9PiB7XG4gICAgICAgIHRoaXMucXVlcnkgPSBxO1xuICAgICAgfSk7XG4gICAgdGhpcy5zZXRJY29uVGl0bGVzKCk7XG4gIH1cblxuICB0cmFja0J5UU5hbWUoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5xbmFtZTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIG5vdCBvZiB0eXBlICdUQUJMRScuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSB0eXBlIG9mIHRoZSBfX2VvRm9ybUVsZW1lbnQgcHJvcGVydHkgb2YgdGhlIGNvbnRyb2xcbiAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBlbGVtZW50LiBJZiB0aGUgdHlwZSBpcyBub3QgJ1RBQkxFJywgaXQgcmV0dXJucyB0cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIG5vdCBvZiB0eXBlICdUQUJMRScsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzVGFibGVEYXRhKGVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyIHx8ICFlbGVtZW50LmNvbnRyb2xzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSBlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZTtcbiAgICBjb25zdCBjb250cm9sID0gZWxlbWVudC5jb250cm9sc1tjb250cm9sTmFtZV07XG5cbiAgICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wuX19lb0Zvcm1FbGVtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRyb2wuX19lb0Zvcm1FbGVtZW50LnR5cGUgIT09ICdUQUJMRSc7XG4gIH1cblxuICAvKipcbiAgICogUHJlY29tcHV0ZXMgdGhlIGlzVGFibGVEYXRhIHJlc3VsdHMgZm9yIGVhY2ggY29udHJvbCBpbiB0aGUgZWRpdEZvcm0uXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGl0ZXJhdGVzIG92ZXIgdGhlIGNvbnRyb2xzIGluIHRoZSBlZGl0Rm9ybSBhbmQgY2FsbHMgdGhlIGlzVGFibGVEYXRhIGZ1bmN0aW9uXG4gICAqIGZvciBlYWNoIGNvbnRyb2wuIFRoZSByZXN1bHRzIGFyZSBzdG9yZWQgaW4gdGhlIGlzVGFibGVEYXRhTWFwLCB3aGVyZSB0aGUga2V5IGlzIHRoZSBjb250cm9sXG4gICAqIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHJlc3VsdCBvZiB0aGUgaXNUYWJsZURhdGEgZnVuY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVJc1RhYmxlRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICB0aGlzLmlzVGFibGVEYXRhTWFwLnNldChjb250cm9sLCB0aGlzLmlzVGFibGVEYXRhKGNvbnRyb2wpKTtcbiAgICB9KTtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwic3RvcmVkUXVlcnlcIj5cbiAgPGRpdiBjbGFzcz1cImVvLWhlYWRcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiZW8taGVhZGVyXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCJcbiAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NhdmVkX3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby52aWV3Lm5hdmlnYXRpb24uc3RvcmVkcXVlcmllcycgfCB0cmFuc2xhdGUpXCI+XG4gICAgICA8L2VvLWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCI+e3sgc3RvcmVkUXVlcnkubmFtZSB9fTwvaDI+XG4gICAgICAgIDxoMyBjbGFzcz1cImVvLWhlYWRlci1zdWJ0aXRsZVwiIHRyYW5zbGF0ZT5lby5zZWFyY2gudGl0bGUuc3RvcmVkcXVlcmllczwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcXVlcnlGb3JtPlxuICAgICAgICA8ZW8tc3RvcmVkLXF1ZXJ5IFtxdWVyeV09XCJzdG9yZWRRdWVyeVwiIFtmb3JtT25seV09XCJ0cnVlXCIgI3N0b3JlZFF1ZXJ5Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvblF1ZXJ5TG9hZGVkKT1cIm9uU3RvcmVkUXVlcnlMb2FkZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9uUXVlcnlFeGVjdXRlKT1cIm9uU3RvcmVkUXVlcnlFeGVjdXRlKCRldmVudClcIj48L2VvLXN0b3JlZC1xdWVyeT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxmb3JtIGNsYXNzPVwiZWRpdC1mb3JtXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5mb3JtXCIgKm5nSWY9XCJlZGl0Rm9ybS5mb3JtOyBlbHNlIHF1ZXJ5Rm9ybVwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZXh0IGRhcmtcIj5cblxuICAgICAgICAgIDwhLS0gdGl0bGUgYW5kIGZ1bGx0ZXh0IHRlcm0gZmllbGRzIC0tPlxuICAgICAgICAgIDxlby1mb3JtLWlucHV0IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzdG9yZWRRdWVyeVRpdGxlXCIgbWF4bGVuZ3RoPVwiNjRcIiBvbmZvY3VzPVwidGhpcy5zZWxlY3QoKVwiXG4gICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInc3RvcmVkUXVlcnlUaXRsZSdcIi8+XG4gICAgICAgICAgPC9lby1mb3JtLWlucHV0PlxuXG4gICAgICAgICAgPGVvLXF1ZXJ5LXNjb3BlLXNlbGVjdCBbc2VsZWN0aW9uXT1cInF1ZXJ5U2NvcGVcIiAoc2VsZWN0KT1cInNldFF1ZXJ5U2NvcGUoJGV2ZW50KVwiPjwvZW8tcXVlcnktc2NvcGUtc2VsZWN0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICA8ZW8tZm9ybS1lbGVtZW50IFtza2lwVG9nZ2xlXT1cInRydWVcIiBbZWxlbWVudF09XCJlZGl0Rm9ybS5mdWxsdGV4dEZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpdHVhdGlvbl09XCInU0VBUkNIJ1wiPjwvZW8tZm9ybS1lbGVtZW50PlxuICAgICAgICAgICAgPGVvLWR5bmFtaWMtcHJvcGVydHktc3dpdGNoIFtwYXJlbnRGb3JtQ29udHJvbF09XCJlZGl0Rm9ybS5mdWxsdGV4dEZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Qcm9wZXJ0eUNoYW5nZWQpPVwicGFyYW1ldGVyQ2hhbmdlZCgkZXZlbnQpXCI+PC9lby1keW5hbWljLXByb3BlcnR5LXN3aXRjaD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gY29udGV4dCB0eXBlIGZvcm0gY29udHJvbHMgLS0+XG4gICAgICAgICAgPGgzPnt7IHN0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXT8ubGFiZWwgfX08L2gzPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nRm9yPVwibGV0IGN0eEVsZW1lbnQgb2YgZWRpdEZvcm0uY29udGV4dENvbnRyb2xzOyB0cmFja0J5OiB0cmFja0J5UU5hbWVcIj5cbiAgICAgICAgICAgIDxlby1mb3JtLWVsZW1lbnQgW2VsZW1lbnRdPVwiY3R4RWxlbWVudFwiIFtzaXR1YXRpb25dPVwiJ1NFQVJDSCdcIj48L2VvLWZvcm0tZWxlbWVudD5cbiAgICAgICAgICAgIDxlby1keW5hbWljLXByb3BlcnR5LXN3aXRjaCBbcGFyZW50Rm9ybUNvbnRyb2xdPVwiY3R4RWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uUHJvcGVydHlDaGFuZ2VkKT1cInBhcmFtZXRlckNoYW5nZWQoJGV2ZW50KVwiPjwvZW8tZHluYW1pYy1wcm9wZXJ0eS1zd2l0Y2g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gb2JqZWN0IHR5cGUgZm9ybSBjb250cm9scyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRzXCIgW25nQ2xhc3NdPVwie2VtcHR5OiAhZWRpdEZvcm0uY29udHJvbHM/Lmxlbmd0aH1cIj5cbiAgICAgICAgICBAZm9yKGVsZW1lbnQgb2YgZWRpdEZvcm0uY29udHJvbHM7dHJhY2sgdHJhY2tCeVFOYW1lKSB7XG4gICAgICAgICAgICBAaWYgKGlzVGFibGVEYXRhTWFwLmdldChlbGVtZW50KSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxlby1mb3JtLWVsZW1lbnQgW2VsZW1lbnRdPVwiZWxlbWVudFwiIFtzaXR1YXRpb25dPVwiJ1NFQVJDSCdcIj48L2VvLWZvcm0tZWxlbWVudD5cbiAgICAgICAgICAgICAgICA8ZW8tZHluYW1pYy1wcm9wZXJ0eS1zd2l0Y2ggW3BhcmVudEZvcm1Db250cm9sXT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgKG9uUHJvcGVydHlDaGFuZ2VkKT1cInBhcmFtZXRlckNoYW5nZWQoJGV2ZW50KVwiPjwvZW8tZHluYW1pYy1wcm9wZXJ0eS1zd2l0Y2g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG5cbiAgICA8YXNpZGUgY2xhc3M9XCJhc2lkZVwiPlxuXG4gICAgICA8IS0tIGZhdm9yaXRlIGFuZCBzaGFyZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhLWFjdGlvbnNcIiAqbmdJZj1cIiFpc05ld1F1ZXJ5XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3duUXVlcnk7IGVsc2Ugc2hhcmVkV2l0aE1lXCI+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYnRuLXNoYXJlXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2hhcmUuc3ZnJ1wiICpuZ0lmPVwiZW5hYmxlU2hhcmluZ1wiXG4gICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogc3RvcmVkUXVlcnkuc2hhcmVkIHx8IHN0b3JlZFF1ZXJ5LnJvbGVzLmxlbmd0aCwgZWRpdGluZzogZWRpdGluZ1NoYXJlfVwiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNoYXJlRWRpdCgpXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cImljb25UaXRsZXMuc2hhcmVcIj48L2VvLWljb24+XG5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBidG4tZmF2XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmF2b3JpdGUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogc3RvcmVkUXVlcnkuZmF2b3JpdGV9XCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRmF2b3JpdGVTdGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cImljb25UaXRsZXMuZmF2b3JcIj48L2VvLWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hhcmVkV2l0aE1lPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2hhcmVkV2l0aE1lXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2hhcmUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCJpY29uVGl0bGVzLnNoYXJlZFwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInNoYXJlZFdpdGhNZVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Zhdm9yaXRlLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiaWNvblRpdGxlcy5mYXZvcmVkXCI+PC9lby1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSByb2xlcyB0aGF0IHNoYXJlIHRoaXMgcXVlcnkgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1yb2xlc1wiICpuZ0lmPVwiIWlzTmV3UXVlcnlcIiBbbmdDbGFzc109XCJ7ZGFyazogZWRpdGluZ1NoYXJlLCBlbXB0eTogIXN0b3JlZFF1ZXJ5LnJvbGVzPy5sZW5ndGh9XCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0b3JlZHF1ZXJ5LnNoYXJlLnNoYXJlZHdpdGg8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdJZj1cInJvbGVzUGlja2VyPy5jb2Rlc3lzdGVtPy5lbnRyaWVzXCI+XG4gICAgICAgICAgPGVvLWNvZGVzeXN0ZW0gW3BpY2tlclRpdGxlXT1cInJvbGVzUGlja2VyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY29kZXN5c3RlbV09XCJyb2xlc1BpY2tlci5jb2Rlc3lzdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFlZGl0aW5nU2hhcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiJ3N0b3JlZC1xdWVyeV9fc2hhcmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvbGVzUGlja2VyLnZhbHVlXCIgY2xhc3M9XCJoaWRlLWNoaXAtY2xvc2UtYnV0dG9uXCI+PC9lby1jb2Rlc3lzdGVtPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hhcmUtYWN0aW9uc1wiICpuZ0lmPVwiZWRpdGluZ1NoYXJlXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeVwiIChjbGljayk9XCJjYW5jZWxTaGFyZSgpXCIgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwic2hhcmUoKVwiIHRyYW5zbGF0ZT5lby5zdG9yZWRxdWVyeS5zaGFyZS5vazwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHF1ZXJpZXMgbWV0YSBpbmZvIGxpa2UgYmFzZXBhcmFtIHNldHRpbmdzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEtZGF0YVwiICpuZ0lmPVwicmVzdHJpY3Rpb25zPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc3RyaWN0aW9uXCIgKm5nRm9yPVwibGV0IHJlc3RyaWN0aW9uIG9mIHJlc3RyaWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+e3sgcmVzdHJpY3Rpb24ubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmVzdHJpY3Rpb24uaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiPnt7IGl0ZW0gfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvYXNpZGU+XG5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRGb3JtLmZvcm07IGVsc2UgYWN0aW9uRWRpdFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeSBidG4tZGVsZXRlXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSB0cnVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc093blF1ZXJ5XCIgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uZGVsZXRlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnkgYnRuLW9wZW5cIiAoY2xpY2spPVwic2V0UXVlcnlUb0FwcFNlYXJjaCgpXCIgdHJhbnNsYXRlPmVvLnN0b3JlZHF1ZXJ5LmxvYWQ8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGdyZXkgYnRuLWVkaXRcIiAoY2xpY2spPVwiZWRpdCgpXCIgW2Rpc2FibGVkXT1cIiFpc093blF1ZXJ5XCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5zdG9yZWRxdWVyeS5hY3Rpb24uZWRpdFxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tc2VhcmNoXCIgW2Rpc2FibGVkXT1cInN0b3JlZFF1ZXJ5LnN0YXRlPy5pc0VtcHR5XCIgKGNsaWNrKT1cImV4ZWN1dGVRdWVyeSgpXCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5zdG9yZWRxdWVyeS5ydW5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0b3JlZHF1ZXJ5LmRlbGV0ZS5kaWFsb2cudGl0bGUnIHwgdHJhbnNsYXRlXCIgWyh2aXNpYmxlKV09XCJzaG93RGVsZXRlRGlhbG9nXCJcbiAgICAgICAgICAgICAgIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInc3RvcmVkUXVlcnktZGVsZXRlX19kaWFsb2cnXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICAgIEBpZihpc1N0b3JlZFF1ZXJ5VXNlZCgpKXtcbiAgICAgICAgICAgIDxzcGFuPnt7J2VvLnN0b3JlZHF1ZXJ5LmRlbGV0ZS5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGU6IHtcbiAgICAgICAgICAgICAgICBzdG9yZWRxdWVyeTogdGhpcy5zdG9yZWRRdWVyeS5uYW1lLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuaW5mb31cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3Bhbj57eydlby5zdG9yZWRxdWVyeS5kZWxldGUuZGlhbG9nLm1lc3NhZ2UuZGVmYXVsdCcgfCB0cmFuc2xhdGU6IHtcbiAgICAgICAgICAgICAgICBzdG9yZWRxdWVyeTogdGhpcy5zdG9yZWRRdWVyeS5uYW1lfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGZsZXgtcm93XCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpcm1EZWxldGUgKGNsaWNrKT1cImRlbGV0ZSgpOyBzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5kZWxldGVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2VvLWRpYWxvZz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjYWN0aW9uRWRpdD5cbiAgICAgIDwhLS0gYWN0aW9uIHdoaWxlIGVkaXRpbmcgdGhlIHF1ZXJ5IGZvcm0gLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2Vjb25kYXJ5IGJ0bi1jYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsRWRpdCgpXCIgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tc2F2ZVwiIChjbGljayk9XCJ1cGRhdGVTdG9yZWRRdWVyeSgpXCIgW2Rpc2FibGVkXT1cImVkaXRGb3JtLmZvcm0uaW52YWxpZFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgZW8uc3RvcmVkcXVlcnkuYWN0aW9uLnNhdmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -285,7 +285,7 @@ let IndexdataSummaryComponent = class IndexdataSummaryComponent {
285
285
  this.getCachedAccordionState();
286
286
  }
287
287
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: IndexdataSummaryComponent, deps: [{ token: i1.TranslateService }, { token: i2.GridService }, { token: i1.DmsService }, { token: i1.UserService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
288
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: { baseparams: "baseparams", enableVersions: "enableVersions", isChangesTab: "isChangesTab", indexdata: "indexdata", dmsObject: "dmsObject", diff: "diff" }, ngImport: i0, template: "<div class=\"empty-container\" *ngIf=\"emptyState\">{{'eo.indexdata.summary.no.change' | translate}}</div>\n<div class=\"indexdata-summary\">\n\n <div class=\"core-section\" *ngIf=\"coreValues?.length\">\n\n <eo-indexdata-summary-entry *ngFor=\"let item of coreValues\"\n [label]=\"item.label\"\n [value]=\"item._value\"\n (onValueClicked)=\"onValueClick($event, item)\">\n </eo-indexdata-summary-entry>\n\n @if (item?.contextFolder && !diffActive) {\n <eo-simple-accordion [header]=\"item.contextFolder?.type?.label + ':'\"\n [item]=\"item\" [selected]=\"infoFolderAcc\" (selectChange)=\"onContextfolderToggle($event)\">\n <eo-indexdata-summary-entry *ngFor=\"let item of dataValues2\"\n [label]=\"item.label\" [value]=\"item.data\"\n (onValueClicked)=\"onValueClick($event, item)\">\n </eo-indexdata-summary-entry>\n </eo-simple-accordion>\n }\n </div>\n <div class=\"data-section\" *ngIf=\"dataValues && dataValues.length\">\n <eo-simple-accordion #dataAccordion\n [header]=\"('eo.indexdata.summary.more' | translate)\"\n [selected]=\"moreInfoAcc\"\n (selectChange)=\"onMoreInfoToggle($event)\">\n <div class=\"data\">\n\n <eo-indexdata-summary-entry *ngFor=\"let item of dataValues\"\n [label]=\"item.label\"\n [value]=\"item._value\"\n (onValueClicked)=\"onValueClick($event, item)\">\n </eo-indexdata-summary-entry>\n </div>\n </eo-simple-accordion>\n </div>\n\n <div class=\"baseparams-section\" *ngIf=\"baseparams\">\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.modifiedOn && !diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.modified' | translate\"\n [value]=\"baseparams.modifiedOn | localeDate\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.modifier' | translate\"\n [value]=\"baseparams.modifiedBy\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.createdOn && !diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.created' | translate\"\n [value]=\"baseparams.createdOn | localeDate\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.creator' | translate\"\n [value]=\"baseparams.createdBy\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.object.summary.version' | translate\"\n [value]=\"getVersionLink(baseparams.version)\"\n (onValueClicked)=\"onValueClick($event, {version: baseparams.version})\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\" [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.type' | translate\" \n [value]=\"this.item.type.label + ' (' + this.item.type.name + ')'\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.filename' | translate\"\n [value]=\"baseparams.contentFileName\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.contentFileSize\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.filesize' | translate\"\n [value]=\"diffActive ? {val1: baseparams.contentFileSize['val1'] | fileSize, val2: baseparams.contentFileSize['val2'] | fileSize} : (baseparams.contentFileSize | fileSize)\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.mimetypegroup' | translate\"\n [value]=\"baseparams.mimeGroup\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.mimetype' | translate\"\n [value]=\"baseparams.mimeType\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.id' | translate\"\n [value]=\"baseparams.id\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.contentId !== baseparams.id && !diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.contentId' | translate\"\n [value]=\"baseparams.contentId\">\n </eo-indexdata-summary-entry>\n </div>\n\n @if(storageInfos?.length && isUserAllowedToShowStorageSection && !isChangesTab) {\n <div class=\"storageinfo\">\n <eo-simple-accordion [header]=\"('eo.state.settings.storageinfo' | translate)\"\n [selected]=\"dataInfoAcc\"\n (selectChange)=\"onStorageInfoToggle($event)\">\n\n <div class=\"storageinfo-entry baseparams-section\">\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.global.baseparam.digest' | translate\"\n [value]=\"baseparams.digest\">\n </eo-indexdata-summary-entry>\n </div>\n\n <div class=\"storageinfo-entry baseparams-section\" *ngFor=\"let stInfo of storageInfos; trackBy: trackByIndex\">\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.retention' | translate\"\n [value]=\"stInfo.retention | localeDate : 'eoShortDate'\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.permanence' | translate\"\n [value]=\"stInfo.permanence\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.setname' | translate\"\n [value]=\"stInfo.setname\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.storagename' | translate\"\n [value]=\"stInfo.storagename\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.location' | translate\"\n [value]=\"stInfo.location\">\n </eo-indexdata-summary-entry>\n </div>\n </eo-simple-accordion>\n </div>\n }\n\n</div>\n", styles: [":host{display:block}:host .core-section,:host .data-section,:host .baseparams-section{list-style:none;margin:0;line-height:1.5em}:host .core-section{margin-bottom:calc(var(--app-pane-padding) / 2)}:host .data-section{margin-bottom:calc(var(--app-pane-padding) / 2)}:host .data-section .data{margin-bottom:var(--app-pane-padding);margin-top:calc(var(--app-pane-padding) / 2)}:host .storageinfo{margin-top:var(--app-pane-padding)}:host .storageinfo .storageinfo-entry{margin-top:var(--app-pane-padding)}:host .empty-container{position:absolute;inset:2em;overflow:hidden;display:flex;justify-content:center;align-items:center}:host ::ng-deep .chip{width:max-content}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IndexdataSummaryEntryComponent, selector: "eo-indexdata-summary-entry", inputs: ["label", "item", "value", "className"], outputs: ["onValueClicked"] }, { kind: "component", type: i5.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "item", "styles", "headerClass", "iconObjectType", "itemAmount", "resultListLink", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.FileSizePipe, name: "fileSize" }, { kind: "pipe", type: i8.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
288
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: { baseparams: "baseparams", enableVersions: "enableVersions", isChangesTab: "isChangesTab", indexdata: "indexdata", dmsObject: "dmsObject", diff: "diff" }, ngImport: i0, template: "<div class=\"empty-container\" *ngIf=\"emptyState\">{{'eo.indexdata.summary.no.change' | translate}}</div>\n<div class=\"indexdata-summary\">\n\n <div class=\"core-section\" *ngIf=\"coreValues?.length\">\n\n <eo-indexdata-summary-entry *ngFor=\"let item of coreValues\"\n [label]=\"item.label\"\n [value]=\"item._value\"\n (onValueClicked)=\"onValueClick($event, item)\">\n </eo-indexdata-summary-entry>\n\n @if (item?.contextFolder && !diffActive) {\n <eo-simple-accordion [header]=\"item.contextFolder?.type?.label + ':'\"\n [item]=\"item\" [selected]=\"infoFolderAcc\" (selectChange)=\"onContextfolderToggle($event)\">\n <eo-indexdata-summary-entry *ngFor=\"let item of dataValues2\"\n [label]=\"item.label\" [value]=\"item.data\"\n (onValueClicked)=\"onValueClick($event, item)\">\n </eo-indexdata-summary-entry>\n </eo-simple-accordion>\n }\n </div>\n <div class=\"data-section\" *ngIf=\"dataValues && dataValues.length\">\n <eo-simple-accordion #dataAccordion\n [header]=\"('eo.indexdata.summary.more' | translate)\"\n [selected]=\"moreInfoAcc\"\n (selectChange)=\"onMoreInfoToggle($event)\">\n <div class=\"data\">\n\n <eo-indexdata-summary-entry *ngFor=\"let item of dataValues\"\n [label]=\"item.label\"\n [value]=\"item._value\"\n (onValueClicked)=\"onValueClick($event, item)\">\n </eo-indexdata-summary-entry>\n </div>\n </eo-simple-accordion>\n </div>\n\n <div class=\"baseparams-section\" *ngIf=\"baseparams\">\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.modifiedOn && !diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.modified' | translate\"\n [value]=\"baseparams.modifiedOn | localeDate\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.modifier' | translate\"\n [value]=\"baseparams.modifiedBy\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.createdOn && !diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.created' | translate\"\n [value]=\"baseparams.createdOn | localeDate\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.creator' | translate\"\n [value]=\"baseparams.createdBy\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.object.summary.version' | translate\"\n [value]=\"getVersionLink(baseparams.version)\"\n (onValueClicked)=\"onValueClick($event, {version: baseparams.version})\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\" [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.type' | translate\" \n [value]=\"this.item.type.label + ' (' + this.item.type.name + ')'\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.filename' | translate\"\n [value]=\"baseparams.contentFileName\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.contentFileSize\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.filesize' | translate\"\n [value]=\"diffActive ? {val1: baseparams.contentFileSize['val1'] | fileSize, val2: baseparams.contentFileSize['val2'] | fileSize} : (baseparams.contentFileSize | fileSize)\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.mimetypegroup' | translate\"\n [value]=\"baseparams.mimeGroup\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.mimetype' | translate\"\n [value]=\"baseparams.mimeType\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"!diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.id' | translate\"\n [value]=\"baseparams.id\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry *ngIf=\"baseparams.contentId !== baseparams.id && !diffActive\"\n [className]=\"'baseparams-section'\"\n [label]=\"'eo.global.baseparam.contentId' | translate\"\n [value]=\"baseparams.contentId\">\n </eo-indexdata-summary-entry>\n </div>\n\n @if(storageInfos?.length && isUserAllowedToShowStorageSection && !isChangesTab) {\n <div class=\"storageinfo\">\n <eo-simple-accordion [header]=\"('eo.state.settings.storageinfo' | translate)\"\n [selected]=\"dataInfoAcc\"\n (selectChange)=\"onStorageInfoToggle($event)\">\n\n <div class=\"storageinfo-entry baseparams-section\">\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.global.baseparam.digest' | translate\"\n [value]=\"baseparams.digest\">\n </eo-indexdata-summary-entry>\n </div>\n\n <div class=\"storageinfo-entry baseparams-section\" *ngFor=\"let stInfo of storageInfos; trackBy: trackByIndex\">\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.retention' | translate\"\n [value]=\"stInfo.retention | localeDate : 'eoShortDate'\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.permanence' | translate\"\n [value]=\"stInfo.permanence\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.setname' | translate\"\n [value]=\"stInfo.setname\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.storagename' | translate\"\n [value]=\"stInfo.storagename\">\n </eo-indexdata-summary-entry>\n\n <eo-indexdata-summary-entry [className]=\"'storageinfo-subentry'\"\n [label]=\"'eo.object.storageinfo.location' | translate\"\n [value]=\"stInfo.location\">\n </eo-indexdata-summary-entry>\n </div>\n </eo-simple-accordion>\n </div>\n }\n\n</div>\n", styles: [":host{display:block}:host .core-section,:host .data-section,:host .baseparams-section{list-style:none;margin:0;line-height:1.5em}:host .core-section{margin-bottom:calc(var(--app-pane-padding) / 2)}:host .data-section{margin-bottom:calc(var(--app-pane-padding) / 2)}:host .data-section .data{margin-bottom:var(--app-pane-padding);margin-top:calc(var(--app-pane-padding) / 2)}:host .storageinfo{margin-top:var(--app-pane-padding)}:host .storageinfo .storageinfo-entry{margin-top:var(--app-pane-padding)}:host .empty-container{position:absolute;inset:2em;overflow:hidden;display:flex;justify-content:center;align-items:center}:host ::ng-deep .chip{width:max-content}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IndexdataSummaryEntryComponent, selector: "eo-indexdata-summary-entry", inputs: ["label", "item", "value", "className"], outputs: ["onValueClicked"] }, { kind: "component", type: i5.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "iconObjectType", "itemAmount", "resultListLink", "selected", "item"], outputs: ["selectChange"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.FileSizePipe, name: "fileSize" }, { kind: "pipe", type: i8.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
289
289
  };
290
290
  IndexdataSummaryComponent = IndexdataSummaryComponent_1 = __decorate([
291
291
  UntilDestroy()