@eo-sdk/client 11.12.0 → 11.13.0-rc.1

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 (41) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts +6 -3
  3. package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts.map +1 -1
  4. package/app/eo-framework/actions/actions/download-action/download-action.d.ts +7 -3
  5. package/app/eo-framework/actions/actions/download-action/download-action.d.ts.map +1 -1
  6. package/app/eo-framework/actions/actions/email/email/email.component.d.ts +7 -4
  7. package/app/eo-framework/actions/actions/email/email/email.component.d.ts.map +1 -1
  8. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +10 -2
  9. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  10. package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
  11. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts +2 -2
  12. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
  13. package/app/eo-framework/object-details/object-details.component.d.ts +33 -35
  14. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  15. package/app/eo-framework/result-list/result-list.component.d.ts +10 -3
  16. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  17. package/app/eo-framework/result-list/result-list.module.d.ts +3 -1
  18. package/app/eo-framework/result-list/result-list.module.d.ts.map +1 -1
  19. package/assets/_default/i18n/de.json +3 -2
  20. package/assets/_default/i18n/en.json +3 -2
  21. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  22. package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +1 -1
  23. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +1 -1
  24. package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +1 -1
  25. package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +1 -1
  26. package/esm2022/app/eo-client/process-state/process-state.component.mjs +1 -1
  27. package/esm2022/app/eo-client/result-state/result-state.component.mjs +1 -1
  28. package/esm2022/app/eo-client/version-state/version-state.component.mjs +1 -1
  29. package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +16 -8
  30. package/esm2022/app/eo-framework/actions/actions/download-action/download-action.mjs +11 -7
  31. package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +21 -12
  32. package/esm2022/app/eo-framework/eo-framework.module.mjs +2 -2
  33. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +23 -4
  34. package/esm2022/app/eo-framework/form-elements/form-elements.module.mjs +1 -28
  35. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +5 -5
  36. package/esm2022/app/eo-framework/object-details/object-details.component.mjs +219 -216
  37. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +46 -25
  38. package/esm2022/app/eo-framework/result-list/result-list.module.mjs +12 -4
  39. package/fesm2022/eo-sdk-client.mjs +1281 -1243
  40. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  41. package/package.json +2 -2
@@ -12,18 +12,21 @@ import * as i1 from "@eo-sdk/core";
12
12
  import * as i2 from "../../eo-framework-core/api/grid.service";
13
13
  import * as i3 from "../../eo-framework-core/search/app-search.service";
14
14
  import * as i4 from "@angular/router";
15
- import * as i5 from "@angular/common";
16
- import * as i6 from "@ngx-translate/core";
17
- import * as i7 from "../ui/eo-icon/eo-icon.component";
18
- import * as i8 from "../ui/loading-spinner/loading-spinner.component";
19
- import * as i9 from "../ui/error-message/error-message.component";
20
- import * as i10 from "../ui/eo-dialog/eo-dialog.component";
21
- import * as i11 from "../list-container/list-container.component";
22
- import * as i12 from "../grid/grid.component";
23
- import * as i13 from "../grid/column-configurator/column-configurator.component";
24
- import * as i14 from "../grid/extensions/total-count/total-count.component";
25
- import * as i15 from "../grid/extensions/pagination/pagination.component";
26
- import * as i16 from "../shortcuts/shortcuts.directive";
15
+ import * as i5 from "@angular/forms";
16
+ import * as i6 from "@angular/common";
17
+ import * as i7 from "@ngx-translate/core";
18
+ import * as i8 from "../ui/eo-icon/eo-icon.component";
19
+ import * as i9 from "../ui/loading-spinner/loading-spinner.component";
20
+ import * as i10 from "../ui/error-message/error-message.component";
21
+ import * as i11 from "../ui/eo-dialog/eo-dialog.component";
22
+ import * as i12 from "../list-container/list-container.component";
23
+ import * as i13 from "../grid/grid.component";
24
+ import * as i14 from "../grid/column-configurator/column-configurator.component";
25
+ import * as i15 from "../grid/extensions/total-count/total-count.component";
26
+ import * as i16 from "../grid/extensions/pagination/pagination.component";
27
+ import * as i17 from "../shortcuts/shortcuts.directive";
28
+ import * as i18 from "../form-elements/form-input/form-input.component";
29
+ import * as i19 from "../form-elements/checkbox/checkbox.component";
27
30
  let ResultListComponent = class ResultListComponent {
28
31
  static { ResultListComponent_1 = this; }
29
32
  static { this.COLUMNS_DEFINITION = 'eo.framework.cache.columns.definition'; }
@@ -92,7 +95,7 @@ let ResultListComponent = class ResultListComponent {
92
95
  get searchResult() {
93
96
  return this._result;
94
97
  }
95
- constructor(config, translate, gridApi, backend, appSearchService, searchService, eventService, storageService, storedQueriesService, router) {
98
+ constructor(config, translate, gridApi, backend, appSearchService, searchService, eventService, storageService, storedQueriesService, router, fb) {
96
99
  this.config = config;
97
100
  this.translate = translate;
98
101
  this.gridApi = gridApi;
@@ -103,6 +106,12 @@ let ResultListComponent = class ResultListComponent {
103
106
  this.storageService = storageService;
104
107
  this.storedQueriesService = storedQueriesService;
105
108
  this.router = router;
109
+ this.fb = fb;
110
+ this.setupForm = this.fb.group({
111
+ exportCSVwithUrl: [false],
112
+ });
113
+ this.exportCSVwithUrlKey = 'eo.resultlist.cache.withUrl';
114
+ this._exportCSVwithUrl = false;
106
115
  this.csvLoadingSpinnerVisibility = false;
107
116
  this.visibleConfig = false;
108
117
  this.showLoader = false;
@@ -111,7 +120,8 @@ let ResultListComponent = class ResultListComponent {
111
120
  this.settings = {};
112
121
  this.querySubtitle = '';
113
122
  this.savedSearchClicked = false;
114
- this.showWarnExportCSVThresholdDialog = false;
123
+ this.showDialogExport = false;
124
+ this.showWarnExportCSVThreshold = false;
115
125
  this.title = '';
116
126
  this.emptyMessage = '';
117
127
  this.selectFirst = true;
@@ -179,6 +189,10 @@ let ResultListComponent = class ResultListComponent {
179
189
  this.resolveReferencesCsv = this.config.getRaw('search.resolveReferencesCSV') || false;
180
190
  this.resolveReferencesCsvThreshold = this.config.getRaw('search.resolveReferencesCSVThreshold') || 10000;
181
191
  this._cachedColumns = this.storageService.getItem(ResultListComponent_1.COLUMNS_DEFINITION) || [];
192
+ this.setupForm.valueChanges.pipe(untilDestroyed(this)).subscribe((_) => {
193
+ this._exportCSVwithUrl = this.setupForm.get('exportCSVwithUrl').value;
194
+ this.storageService.setItem(this.exportCSVwithUrlKey, this.setupForm.get('exportCSVwithUrl').value);
195
+ });
182
196
  }
183
197
  clearQuery(clearAfterExecute) {
184
198
  if (clearAfterExecute) {
@@ -197,6 +211,10 @@ let ResultListComponent = class ResultListComponent {
197
211
  this.grid.updateRows(this.backend.update([res.data], [{ id: res.data.id }]));
198
212
  }
199
213
  });
214
+ this._exportCSVwithUrl = this.storageService.getItem(this.exportCSVwithUrlKey) || this.setupForm.get('exportCSVwithUrl').value;
215
+ this.setupForm.patchValue({
216
+ exportCSVwithUrl: this._exportCSVwithUrl
217
+ });
200
218
  this.eventService
201
219
  .on(EnaioEvent.DMS_OBJECT_UPDATED)
202
220
  .pipe(untilDestroyed(this))
@@ -362,22 +380,25 @@ let ResultListComponent = class ResultListComponent {
362
380
  resultHasReferences() {
363
381
  return this._result.fields.elements.some(element => element.type === 'ORGANIZATION' || element.type === 'REFERENCE');
364
382
  }
365
- exportCSV(ignoreThreshold = false) {
366
- if (!ignoreThreshold && this.resolveReferencesCsv
383
+ openDialogExport() {
384
+ this.showDialogExport = true;
385
+ if (this.resolveReferencesCsv
367
386
  && (this.list.gridCount.totalCount > this.resolveReferencesCsvThreshold || this.list.gridCount.relation === 'gte')
368
387
  && this.resultHasReferences()) {
369
- this.showWarnExportCSVThresholdDialog = true;
370
- return;
388
+ this.showWarnExportCSVThreshold = true;
371
389
  }
390
+ }
391
+ exportCSV() {
372
392
  this.csvLoadingSpinnerVisibility = true;
373
393
  this.updateQuery({});
374
- this.showWarnExportCSVThresholdDialog = false;
394
+ this.showWarnExportCSVThreshold = false;
395
+ this.showDialogExport = false;
375
396
  const queryJson = this.query.getQueryJson(this.resolveReferencesCsv);
376
397
  queryJson.fields = [];
377
398
  this.resultGridOptions?.columnDefs.forEach(colDef => {
378
399
  queryJson.fields.push(colDef['field'] + ' ' + colDef.headerName);
379
400
  });
380
- this.searchService.downloadCsvFromQuery(queryJson).subscribe(() => {
401
+ this.searchService.downloadCsvFromQuery(queryJson, this._exportCSVwithUrl).subscribe(() => {
381
402
  this.csvLoadingSpinnerVisibility = false;
382
403
  });
383
404
  }
@@ -397,8 +418,8 @@ let ResultListComponent = class ResultListComponent {
397
418
  const uriParamQuery = { queryParams: { 'query': uriParam } };
398
419
  this.router.navigate(['/result'], uriParamQuery);
399
420
  }
400
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, deps: [{ token: i1.Config }, { token: i1.TranslateService }, { token: i2.GridService }, { token: i1.BackendService }, { token: i3.AppSearchService }, { token: i1.SearchService }, { token: i1.EventService }, { token: i1.LocalStorageService }, { token: i1.StoredQueriesService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
401
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ResultListComponent, selector: "eo-result-list", inputs: { title: "title", configType: "configType", configContext: "configContext", clearAfterExecute: "clearAfterExecute", emptyMessage: "emptyMessage", selectFirst: "selectFirst", gridOptions: "gridOptions", hasIcon: "hasIcon", reference: "reference", query: "query", searchResult: "searchResult" }, outputs: { onSelectionChanged: "onSelectionChanged", onFocusChanged: "onFocusChanged", onDoubleClick: "onDoubleClick", onContextMenu: "onContextMenu", onCountChanged: "onCountChanged", onRefresh: "onRefresh", onResult: "onResult", onQueryInvalid: "onQueryInvalid" }, viewQueries: [{ propertyName: "grid", first: true, predicate: ["eoGrid"], descendants: true }, { propertyName: "list", first: true, predicate: ["eoList"], descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"exportCSV()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n\n<eo-dialog [title]=\"'eo.resultlist.export.csv.threshold.dialog.title' | translate\"\n [(visible)]=\"showWarnExportCSVThresholdDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'threshold__dialog'\">\n\n <div>{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showWarnExportCSVThresholdDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV(true)\" class=\"button primary\"\n translate>eo.resultlist.export.csv.threshold.dialog.export</button>\n </div>\n</eo-dialog>\n\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .threshold__dialog{padding:8px;min-height:unset!important}::ng-deep .threshold__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i7.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i8.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i9.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i10.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i11.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i12.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i13.ColumnConfiguratorComponent, selector: "eo-column-configurator", inputs: ["configType", "configContext", "visible", "eoGrid"], outputs: ["onConfigChanged"] }, { kind: "component", type: i14.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i15.PaginationComponent, selector: "eo-pagination", inputs: ["settings"], outputs: ["pageChanged"] }, { kind: "directive", type: i16.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
421
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, deps: [{ token: i1.Config }, { token: i1.TranslateService }, { token: i2.GridService }, { token: i1.BackendService }, { token: i3.AppSearchService }, { token: i1.SearchService }, { token: i1.EventService }, { token: i1.LocalStorageService }, { token: i1.StoredQueriesService }, { token: i4.Router }, { token: i5.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
422
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ResultListComponent, selector: "eo-result-list", inputs: { title: "title", configType: "configType", configContext: "configContext", clearAfterExecute: "clearAfterExecute", emptyMessage: "emptyMessage", selectFirst: "selectFirst", gridOptions: "gridOptions", hasIcon: "hasIcon", reference: "reference", query: "query", searchResult: "searchResult" }, outputs: { onSelectionChanged: "onSelectionChanged", onFocusChanged: "onFocusChanged", onDoubleClick: "onDoubleClick", onContextMenu: "onContextMenu", onCountChanged: "onCountChanged", onRefresh: "onRefresh", onResult: "onResult", onQueryInvalid: "onQueryInvalid" }, viewQueries: [{ propertyName: "grid", first: true, predicate: ["eoGrid"], descendants: true }, { propertyName: "list", first: true, predicate: ["eoList"], descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"openDialogExport()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n<eo-dialog [title]=\"'eo.resultlist.export.csv.dialog.title' | translate\" [(visible)]=\"showDialogExport\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'export__dialog'\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.resultlist.export.csv.dialog.objectUrl.label' | translate\">\n <eo-checkbox formControlName=\"exportCSVwithUrl\">\n </eo-checkbox>\n </eo-form-input>\n </form>\n\n @if(showWarnExportCSVThreshold){\n <div class=\"threshold-warning\">{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n }\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDialogExport = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV()\" class=\"button primary\"\n translate>eo.resultlist.export.csv.dialog.export</button>\n </div>\n</eo-dialog>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .export__dialog{padding:8px;min-height:unset!important}::ng-deep .export__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}.threshold-warning{padding-top:var(--app-pane-padding)}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i9.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i10.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i11.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i12.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i13.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i14.ColumnConfiguratorComponent, selector: "eo-column-configurator", inputs: ["configType", "configContext", "visible", "eoGrid"], outputs: ["onConfigChanged"] }, { kind: "component", type: i15.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i16.PaginationComponent, selector: "eo-pagination", inputs: ["settings"], outputs: ["pageChanged"] }, { kind: "directive", type: i17.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i18.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i19.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
402
423
  };
403
424
  ResultListComponent = ResultListComponent_1 = __decorate([
404
425
  UntilDestroy()
@@ -406,8 +427,8 @@ ResultListComponent = ResultListComponent_1 = __decorate([
406
427
  export { ResultListComponent };
407
428
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, decorators: [{
408
429
  type: Component,
409
- args: [{ selector: 'eo-result-list', template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"exportCSV()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n\n<eo-dialog [title]=\"'eo.resultlist.export.csv.threshold.dialog.title' | translate\"\n [(visible)]=\"showWarnExportCSVThresholdDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'threshold__dialog'\">\n\n <div>{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showWarnExportCSVThresholdDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV(true)\" class=\"button primary\"\n translate>eo.resultlist.export.csv.threshold.dialog.export</button>\n </div>\n</eo-dialog>\n\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .threshold__dialog{padding:8px;min-height:unset!important}::ng-deep .threshold__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
410
- }], ctorParameters: () => [{ type: i1.Config }, { type: i1.TranslateService }, { type: i2.GridService }, { type: i1.BackendService }, { type: i3.AppSearchService }, { type: i1.SearchService }, { type: i1.EventService }, { type: i1.LocalStorageService }, { type: i1.StoredQueriesService }, { type: i4.Router }], propDecorators: { grid: [{
430
+ args: [{ selector: 'eo-result-list', template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"openDialogExport()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n<eo-dialog [title]=\"'eo.resultlist.export.csv.dialog.title' | translate\" [(visible)]=\"showDialogExport\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'export__dialog'\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.resultlist.export.csv.dialog.objectUrl.label' | translate\">\n <eo-checkbox formControlName=\"exportCSVwithUrl\">\n </eo-checkbox>\n </eo-form-input>\n </form>\n\n @if(showWarnExportCSVThreshold){\n <div class=\"threshold-warning\">{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n }\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDialogExport = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV()\" class=\"button primary\"\n translate>eo.resultlist.export.csv.dialog.export</button>\n </div>\n</eo-dialog>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .export__dialog{padding:8px;min-height:unset!important}::ng-deep .export__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}.threshold-warning{padding-top:var(--app-pane-padding)}\n"] }]
431
+ }], ctorParameters: () => [{ type: i1.Config }, { type: i1.TranslateService }, { type: i2.GridService }, { type: i1.BackendService }, { type: i3.AppSearchService }, { type: i1.SearchService }, { type: i1.EventService }, { type: i1.LocalStorageService }, { type: i1.StoredQueriesService }, { type: i4.Router }, { type: i5.UntypedFormBuilder }], propDecorators: { grid: [{
411
432
  type: ViewChild,
412
433
  args: ['eoGrid']
413
434
  }], list: [{
@@ -452,4 +473,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
452
473
  }], searchResult: [{
453
474
  type: Input
454
475
  }] } });
455
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUdMLFVBQVUsRUFFVixlQUFlLEVBR2YsV0FBVyxFQUVYLFVBQVUsRUFFUSxLQUFLLEVBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUlyRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRL0IsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7O2FBU3ZCLHVCQUFrQixHQUFHLHVDQUF1QyxBQUExQyxDQUEyQztJQXdDcEUsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUU7cUJBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzFCLFNBQVMsQ0FBQyxDQUFDLG1CQUF3QixFQUFFLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFFbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGFBQWE7cUJBQ2YsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDO3FCQUM5RCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ2pELElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNoRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO29CQUM3QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFDSSxZQUFZLENBQUMsTUFBb0I7UUFDbkMsZ0ZBQWdGO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDM0YsQ0FBQztZQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksZUFBZSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFvQixNQUFjLEVBQVMsU0FBMkIsRUFBUyxPQUFvQixFQUFVLE9BQXVCLEVBQzFILGdCQUFrQyxFQUFVLGFBQTRCLEVBQVUsWUFBMEIsRUFDNUcsY0FBbUMsRUFBVSxvQkFBMEMsRUFBVSxNQUFjO1FBRnJHLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUMxSCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUM1RyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFHekgsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBRXBDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFWixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBZ0IsRUFBRSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0IscUNBQWdDLEdBQUcsS0FBSyxDQUFDO1FBRWhDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFPWCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDakIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBeUg5QyxtQkFBbUI7UUFDbkIsY0FBUyxHQUE0QjtZQUNuQyxFQUFFLEVBQUUsbUNBQW1DO1lBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQztZQUNsRSxRQUFRLEVBQUUsbUNBQW1DO1lBQzdDLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztvQkFDdEQsT0FBTyxFQUFFLHdCQUF3QjtvQkFDakMsUUFBUSxFQUFFLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUN6QyxlQUFlLEVBQUUsR0FBRyxFQUFFO3dCQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDM0MsQ0FBQztvQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO3dCQUNiLE9BQU8sS0FBSyxDQUFDO29CQUNmLENBQUM7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDO29CQUN4RCxPQUFPLEVBQUUsMEJBQTBCO29CQUNuQyxRQUFRLEVBQUUsSUFBSSxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7b0JBQ3pDLGVBQWUsRUFBRSxHQUFHLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDbkIsQ0FBQztvQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO3dCQUNiLE9BQU8sS0FBSyxDQUFDO29CQUNmLENBQUM7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDO29CQUN2RCxPQUFPLEVBQUUseUJBQXlCO29CQUNsQyxRQUFRLEVBQUUsSUFBSSxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7b0JBQ3pDLGVBQWUsRUFBRSxHQUFHLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQzFCLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO2lCQUNGO2dCQUNEO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsUUFBUSxFQUFFLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUN6QyxlQUFlLEVBQUUsR0FBRyxFQUFFO3dCQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO2lCQUNGLENBQUM7U0FDSCxDQUFDO1FBL0ZBLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQVcsQ0FBQztRQUM1RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQVksSUFBSSxLQUFLLENBQUM7UUFDbEcsSUFBSSxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxDQUFXLElBQUksS0FBSyxDQUFDO1FBQ25ILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQW1CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEcsQ0FBQztJQUVELFVBQVUsQ0FBQyxpQkFBaUI7UUFDMUIsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVk7YUFDZCxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDO2FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxZQUFZO2FBQ2QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztxQkFDN0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3JILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQXFERCxTQUFTLENBQUMsRUFBVSxFQUFFLElBQVM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlLLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7UUFDdkQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQ3JDLDBHQUEwRzt3QkFDMUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQzVGLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN4QixDQUFDO29CQUNELGNBQWMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNqRixDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDaEQsa0ZBQWtGO29CQUNsRixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQzFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUMzRyxDQUFDO3lCQUFNLENBQUM7d0JBQ04sUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDN0IsQ0FBQztvQkFDRCxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDakYsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsc0dBQXNHO1lBQ3RHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN0QyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7cUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDM0QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN6QyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDaEMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDN0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFXO1FBQ3pCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsT0FBTztRQUNyQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYyxDQUFDLE1BQW9CO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3ZELElBQUksV0FBVyxHQUFnQixFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDLENBQUM7UUFDckksTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JKLFdBQVcsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUVsQyxNQUFNLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFNUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN6QyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFakosTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXJFLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7WUFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUYsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsRUFBRTtRQUNwQiwwQ0FBMEM7UUFDMUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RGLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ25ELFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUU7Z0JBQ3pDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUU7Z0JBQzNDLGVBQWUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFDLENBQUM7b0JBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLE1BQVc7UUFFOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFZixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXpCLElBQUksQ0FBQyxhQUFhO2lCQUNmLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUM7aUJBQzNFLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ25ELE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0UsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUFXO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDaEYsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFckgsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPO2FBQzNDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM5RSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDO0lBQzFELENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsa0JBQWtCO0lBQ3BCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsU0FBUyxDQUFDLGVBQWUsR0FBRyxLQUFLO1FBQy9CLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLG9CQUFvQjtlQUM1QyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsNkJBQTZCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQztlQUMvRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7WUFDN0MsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLEtBQUssQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRSxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsRCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNoRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFJO1FBQ2pCLE9BQU8sRUFBQyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBRztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxhQUFhLEdBQXFCLEVBQUMsV0FBVyxFQUFFLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBQyxFQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNuRCxDQUFDOzhHQW5hVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixneUJDakNoQyxnaU1BZ0dBOztBRC9EYSxtQkFBbUI7SUFOL0IsWUFBWSxFQUFFO0dBTUYsbUJBQW1CLENBb2EvQjs7MkZBcGFZLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7aVZBTUwsSUFBSTtzQkFBeEIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLElBQUk7c0JBQXhCLFNBQVM7dUJBQUMsUUFBUTtnQkF5QlYsS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0gsS0FBSztzQkFEUixLQUFLO2dCQW9ERixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIENvbmZpZyxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBGaWVsZERlZmluaXRpb24sXG4gIExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gIE9iamVjdFR5cGUsXG4gIFNlYXJjaFF1ZXJ5LCBTZWFyY2hSZXN1bHQsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFNvcnRPcHRpb24sXG4gIFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLCBTdG9yZWRRdWVyeSxcbiAgVHJhbnNsYXRlU2VydmljZSwgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7b2YgYXMgb2JzZXJ2YWJsZU9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7R3JpZFNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7R3JpZEZpbHRlcn0gZnJvbSAnLi4vZ3JpZC9ncmlkLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQge0dyaWRDb21wb25lbnR9IGZyb20gJy4uL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtMaXN0Q29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuLi9saXN0LWNvbnRhaW5lcic7XG5pbXBvcnQge0dsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTaG9ydGN1dH0gZnJvbSAnLi4vc2hvcnRjdXRzJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1yZXN1bHQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN1bHQtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc3VsdC1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVzdWx0TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgnZW9HcmlkJykgZ3JpZDogR3JpZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZW9MaXN0JykgbGlzdDogTGlzdENvbnRhaW5lckNvbXBvbmVudDtcblxuICAvLyBmb3IgbGlzdHMgdGhhdCBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbWF4IHJlc3VsdCBzaXplLCBkYXRhIHdpbGwgYmUgZmV0Y2hlZCBpbiBjaHVua3NcbiAgcHJpdmF0ZSBWSVJUVUFMX0xJU1RfQ0hVTktfU0laRTogbnVtYmVyO1xuICByZXNvbHZlUmVmZXJlbmNlc0NzdjogYm9vbGVhbjtcbiAgcmVzb2x2ZVJlZmVyZW5jZXNDc3ZUaHJlc2hvbGQ6IG51bWJlcjtcbiAgc3RhdGljIENPTFVNTlNfREVGSU5JVElPTiA9ICdlby5mcmFtZXdvcmsuY2FjaGUuY29sdW1ucy5kZWZpbml0aW9uJztcblxuICBwcml2YXRlIF9yZXN1bHQ6IFNlYXJjaFJlc3VsdDtcbiAgcHJpdmF0ZSBfcXVlcnk6IFNlYXJjaFF1ZXJ5O1xuICBwcml2YXRlIF9jYWNoZWRDb2x1bW5zOiBhbnlbXTtcbiAgcHJpdmF0ZSBkZWZhdWx0UXVlcnk6IFNlYXJjaFF1ZXJ5O1xuICBjc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHkgPSBmYWxzZTtcblxuICB2aXNpYmxlQ29uZmlnID0gZmFsc2U7XG4gIHNob3dMb2FkZXIgPSBmYWxzZTtcbiAgcHVibGljIHRvdGFsSGl0czogYW55O1xuICBwdWJsaWMgbGltaXRlZExpc3QgPSBmYWxzZTtcbiAgcHVibGljIHJlc3VsdEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyA9IHt9O1xuICBzZXR0aW5ncyA9IHt9O1xuICBxdWVyeVN1YnRpdGxlID0gJyc7XG4gIHNhdmVkU2VhcmNoQ2xpY2tlZCA9IGZhbHNlO1xuICBzdG9yZWRRdWVyeTogU3RvcmVkUXVlcnk7XG4gIHNob3dXYXJuRXhwb3J0Q1NWVGhyZXNob2xkRGlhbG9nID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgY29uZmlnVHlwZTogT2JqZWN0VHlwZSB8IG51bGw7XG4gIEBJbnB1dCgpIGNvbmZpZ0NvbnRleHQ6IE9iamVjdFR5cGUgfCBudWxsO1xuXG4gIC8vIElmIHNldCB0byB0cnVlIHF1ZXJ5IHdpbGwgYmUgdHJlYXRlZCBsaWtlIGEgdGVtcG9yYXJ5IHNlYXJjaC5cbiAgLy8gVGhhdCBtZWFucywgZ2xvYmFsIHNlYXJjaCB3aWxsIG5vdCBiZSBhZmZlY3RlZCAoZ2xvYmFsIHF1ZXJ5IHdpbGwgYmUgcmVzZXQgYWZ0ZXIgZXhlY3V0aW9uKVxuICBASW5wdXQoKSBjbGVhckFmdGVyRXhlY3V0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpIHNlbGVjdEZpcnN0ID0gdHJ1ZTtcbiAgQElucHV0KCkgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBASW5wdXQoKSBoYXNJY29uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlZmVyZW5jZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Gb2N1c0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkRvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Db250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ291bnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25SZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25SZXN1bHQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblF1ZXJ5SW52YWxpZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKVxuICBzZXQgcXVlcnkocXVlcnk6IGFueSkge1xuICAgIHRoaXMuc3RvcmVkUXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgdGhpcy5pbnZhbGlkUXVlcnkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHF1ZXJ5Lm5hbWUpIHtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5nZXRTdG9yZWRRdWVyaWVzJCgpXG4gICAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgICAgLnN1YnNjcmliZSgocXVlcmllc1N1YnNjcmlwdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gcXVlcmllc1N1YnNjcmlwdGlvbi5xdWVyaWVzLmZpbHRlcihxID0+IHEubmFtZSA9PT0gcXVlcnkubmFtZSlbMF07XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9xdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHF1ZXJ5KTtcbiAgICAgIGlmICh0aGlzLl9xdWVyeSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRRdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHRoaXMuX3F1ZXJ5LmdldFF1ZXJ5SnNvbigpKTtcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFF1ZXJ5KHRoaXMuZGVmYXVsdFF1ZXJ5KTtcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSZXN1bHRGaWVsZERlZmluaXRpb25Db25maWcodGhpcy5xdWVyeSk7XG4gICAgICAgIHRoaXMuY29uZmlnVHlwZSA9IGNvbmZpZy50eXBlO1xuICAgICAgICB0aGlzLmNvbmZpZ0NvbnRleHQgPSBjb25maWcuY29udGV4dFR5cGU7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZVxuICAgICAgICAgIC5nZXRDaHVua2VkUmVzdWx0KHRoaXMuX3F1ZXJ5LCAwLCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jbGVhclF1ZXJ5KHRoaXMuY2xlYXJBZnRlckV4ZWN1dGUpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyUXVlcnkodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlID0gJyc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRoaXMucXVlcnlTdWJ0aXRsZSArPSB0aGlzLnF1ZXJ5LnR5cGVzW2ldLmxhYmVsO1xuICAgICAgICAgIGlmIChpICE9PSB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlTdWJ0aXRsZSArPSAnLCAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkUXVlcnkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgcXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5O1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHNlYXJjaFJlc3VsdChyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xuICAgIC8vIHRvZG86IGJhY2tlbmQgc2hvdWxkIHJlc29sdmUgcXVlcnkuZmllbGRzIGFuZCByZXR1cm4gY29uZmlnIGluIHNwZWNpZmljIG9yZGVyXG4gICAgY29uc3QgX2ZpZWxkcyA9IHJlc3VsdC5maWVsZHMgPyBvYnNlcnZhYmxlT2YocmVzdWx0LmZpZWxkcykgOlxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmZldGNoUmVzdWx0RmllbGREZWZpbml0aW9uKHRoaXMuY29uZmlnVHlwZSwgdGhpcy5jb25maWdDb250ZXh0LCAnQUxMJyk7XG4gICAgX2ZpZWxkcy5zdWJzY3JpYmUoZmllbGRzID0+IHtcbiAgICAgIGlmIChmaWVsZHMgJiYgdGhpcy5xdWVyeSAmJiB0aGlzLnF1ZXJ5LmZpZWxkcyAmJiB0aGlzLnF1ZXJ5LmZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgZmllbGRzLmVsZW1lbnRzID0gdGhpcy5xdWVyeS5maWVsZHMubWFwKGYgPT4gZmllbGRzLmVsZW1lbnRzLmZpbmQoZSA9PiBmID09PSBlLmhpdG5hbWUpKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5maWVsZHMgPSBmaWVsZHMgfHwgbmV3IEZpZWxkRGVmaW5pdGlvbigpO1xuICAgICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0O1xuICAgICAgdGhpcy5wcm9jZXNzUmVzdWx0cyh0aGlzLl9yZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IENvbmZpZywgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHVibGljIGdyaWRBcGk6IEdyaWRTZXJ2aWNlLCBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU2VhcmNoU2VydmljZTogQXBwU2VhcmNoU2VydmljZSwgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLCBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsIHByaXZhdGUgc3RvcmVkUXVlcmllc1NlcnZpY2U6IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSA9IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLmxpbWl0JykgYXMgbnVtYmVyO1xuICAgIHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3YgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC5yZXNvbHZlUmVmZXJlbmNlc0NTVicpIGFzIGJvb2xlYW4gfHwgZmFsc2U7XG4gICAgdGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdlRocmVzaG9sZCA9IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLnJlc29sdmVSZWZlcmVuY2VzQ1NWVGhyZXNob2xkJykgYXMgbnVtYmVyIHx8IDEwMDAwO1xuICAgIHRoaXMuX2NhY2hlZENvbHVtbnMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oUmVzdWx0TGlzdENvbXBvbmVudC5DT0xVTU5TX0RFRklOSVRJT04pIHx8IFtdO1xuICB9XG5cbiAgY2xlYXJRdWVyeShjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgIGlmIChjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmNsZWFyUXVlcnkoKTtcbiAgICB9XG4gIH1cblxuICBpbnZhbGlkUXVlcnkoKSB7XG4gICAgdGhpcy5vblF1ZXJ5SW52YWxpZC5lbWl0KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9ERUxFVEVEKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmlkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkLnVwZGF0ZVJvd3ModGhpcy5iYWNrZW5kLnVwZGF0ZShbcmVzLmRhdGFdLCBbe2lkOiByZXMuZGF0YS5pZH1dKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlUm93KHJlcy5kYXRhLmlkLCByZXMuZGF0YS5kYXRhKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWQgJiYgdGhpcy5fcXVlcnkpIHtcbiAgICAgICAgdGhpcy5fcXVlcnkuc29ydE9wdGlvbnMgPSAodGhpcy5ncmlkLmFwaS5nZXRDb2x1bW5TdGF0ZSgpIHx8IFtdKVxuICAgICAgICAgIC5tYXAobW9kZWwgPT4gbmV3IFNvcnRPcHRpb24oR3JpZFNlcnZpY2UucW5hbWVGb3JtYXR0ZXIobW9kZWwuY29sSWQgKyB0aGlzLnBvc3RmaXhTb3J0KG1vZGVsLmNvbElkKSksIG1vZGVsLnNvcnQpKTtcbiAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuX3F1ZXJ5O1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby53b3Jrc3BhY2Uud2lkZ2V0LmhpdGxpc3QubGFiZWwnLFxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby53b3Jrc3BhY2Uud2lkZ2V0LmhpdGxpc3QubGFiZWwnKSxcbiAgICBsYWJlbEtleTogJ2VvLndvcmtzcGFjZS53aWRnZXQuaGl0bGlzdC5sYWJlbCcsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmNvbHVtbi5jb25maWcudGl0bGUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5jb2x1bW4uY29uZmlnLnRpdGxlJyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1AnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9ICF0aGlzLnZpc2libGVDb25maWc7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyksXG4gICAgICBuYW1lS2V5OiAnZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1gnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXhwb3J0Q1NWKCk7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmFjdGlvbnMudGl0bGUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5vYmplY3QuYWN0aW9ucy50aXRsZScsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdNJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3Quc2hvd0FjdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5saXN0LnJlZnJlc2gnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5saXN0LnJlZnJlc2gnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnUicsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XVxuICB9O1xuXG4gIHVwZGF0ZVJvdyhpZDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBtYXRjaFJvdyA9IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMucm93RGF0YS5maW5kKChyKSA9PiByLmlkID09PSBpZCk7XG4gICAgY29uc3Qgc3lzdGVtRmllbGRzID0gWydjcmVhdGVkJywgJ2NyZWF0b3J0aXRsZScsICdtb2RpZmllZCcsICdtb2RpZmllcnRpdGxlJywgJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ3R5cGUnLCAndmVyc2lvbicsICdmaWxlc2l6ZScsICdmaWxlbmFtZScsICdtaW1ldHlwZWdyb3VwJywgJ21pbWV0eXBlJ107XG4gICAgbGV0IG1pc3NpbmdDb2x1bW5zID0gdGhpcy5yZXN1bHRHcmlkT3B0aW9ucy5jb2x1bW5EZWZzO1xuICAgIGlmIChtYXRjaFJvdykge1xuICAgICAgT2JqZWN0LmtleXMobWF0Y2hSb3cpLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrICsgJ19tZXRhJykpIHtcbiAgICAgICAgICAgIC8vIGlmIGl0IGlzIGFuIG9yZyBmaWVsZCwgaXQgd2lsbCBoYXZlIGEgdGl0bGUgdG8gc2hvdywgb3RoZXJ3aXNlIGl0IGlzIGEgY29kZXN5c3RlbSBhbmQgd2Ugc2hvdyB0aGUgbGFiZWxcbiAgICAgICAgICAgIG1hdGNoUm93W2tdID0gZGF0YVtrICsgJ19tZXRhJ10udGl0bGUgPyBkYXRhW2sgKyAnX21ldGEnXS50aXRsZSA6IGRhdGFbayArICdfbWV0YSddLmxhYmVsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaFJvd1trXSA9IGRhdGFba107XG4gICAgICAgICAgfVxuICAgICAgICAgIG1pc3NpbmdDb2x1bW5zID0gbWlzc2luZ0NvbHVtbnMuZmlsdGVyKChjb2x1bW46IENvbERlZikgPT4gY29sdW1uLmZpZWxkICE9PSBrKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmhhc093blByb3BlcnR5KGsuc3BsaXQoJy4nKVsxXSkpIHtcbiAgICAgICAgICAvLyBzb21lIHRlY2huaWNhbCBuYW1lcyBoYXZlIHRoZSBvYmplY3QgdHlwZSBhcyBhIHByZWZpeCwgd2UgaGF2ZSB0byBnZXQgcmlkIG9mIGl0XG4gICAgICAgICAgY29uc3Qga1NwbGl0ID0gay5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtTcGxpdCArICdfbWV0YScpKSB7XG4gICAgICAgICAgICBtYXRjaFJvd1trXSA9IGRhdGFba1NwbGl0ICsgJ19tZXRhJ10udGl0bGUgPyBkYXRhW2tTcGxpdCArICdfbWV0YSddLnRpdGxlIDogZGF0YVtrU3BsaXQgKyAnX21ldGEnXS5sYWJlbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWF0Y2hSb3dba10gPSBkYXRhW2tTcGxpdF07XG4gICAgICAgICAgfVxuICAgICAgICAgIG1pc3NpbmdDb2x1bW5zID0gbWlzc2luZ0NvbHVtbnMuZmlsdGVyKChjb2x1bW46IENvbERlZikgPT4gY29sdW1uLmZpZWxkICE9PSBrKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyB3ZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgbm90IGFscmVhZHkgYXBwbGllZCBjb2x1bW5zLCB3aGljaCB3ZXJlIGNoYW5nZWQgZnJvbSBudWxsIG9yIHRvIG51bGxcbiAgICAgIG1pc3NpbmdDb2x1bW5zLmZvckVhY2goKGNvbHVtbjogQ29sRGVmKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGNvbHVtbi5maWVsZCkpIHtcbiAgICAgICAgICBtYXRjaFJvd1tjb2x1bW4uZmllbGRdID0gZGF0YVtjb2x1bW4uZmllbGRdO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoY29sdW1uLmZpZWxkLnNwbGl0KCcuJylbMV0pKSB7XG4gICAgICAgICAgbWF0Y2hSb3dbY29sdW1uLmZpZWxkXSA9IGRhdGFbY29sdW1uLmZpZWxkLnNwbGl0KCcuJylbMV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghc3lzdGVtRmllbGRzLmluY2x1ZGVzKGNvbHVtbi5maWVsZCkpIHtcbiAgICAgICAgICAgIG1hdGNoUm93W2NvbHVtbi5maWVsZF0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtYXRjaFJvdy5pZCA9IGlkO1xuICAgICAgY29uc3Qgcm93Tm9kZSA9IHRoaXMuZ3JpZC5hcGkuZ2V0Um93Tm9kZShpZCk7XG4gICAgICByb3dOb2RlICYmIHJvd05vZGUuc2V0RGF0YShtYXRjaFJvdyk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaEdyaWQoKSB7XG4gICAgaWYgKHRoaXMucXVlcnkpIHtcbiAgICAgIHRoaXMuX3F1ZXJ5LnNvcnRPcHRpb25zID0gKHRoaXMuZ3JpZC5hcGkuZ2V0Q29sdW1uU3RhdGUoKSB8fCBbXSlcbiAgICAgICAgLm1hcChtb2RlbCA9PiBuZXcgU29ydE9wdGlvbihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihtb2RlbC5jb2xJZCArIHRoaXMucG9zdGZpeFNvcnQobW9kZWwuY29sSWQpKSwgbW9kZWwuc29ydCkpO1xuICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuX3F1ZXJ5O1xuICAgIH1cbiAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KHRoaXMucXVlcnkpO1xuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55KSB7XG4gICAgbGV0IGNvbCA9IHRoaXMuX2NhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKFJlc3VsdExpc3RDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OLCB0aGlzLl9jYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICRldmVudFxuICAgKi9cbiAgb25Db25maWdDaGFuZ2VkKHJlZnJlc2gpIHtcbiAgICBpZiAocmVmcmVzaCkge1xuICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIFNlYXJjaCByZXN1bHQgJiBnZW5lcmF0ZSBjb2x1bW4gZGVmaW5pdGlvbnNcbiAgICogQHBhcmFtIHJlc3VsdFxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzUmVzdWx0cyhyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xuICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICAgIHRoaXMub25SZXN1bHQuZW1pdChyZXN1bHQpO1xuICAgIHRoaXMudG90YWxIaXRzID0gcmVzdWx0LmNvdW50LnZhbHVlO1xuICAgIHRoaXMubGltaXRlZExpc3QgPSB0aGlzLnRvdGFsSGl0cyA+IHJlc3VsdC5oaXRzLmxlbmd0aDtcbiAgICBsZXQgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zID0ge2NvbnRleHQ6IHt9LCBvblNvcnRDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKSwgb25GaWx0ZXJDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKX07XG4gICAgY29uc3Qgc2VhcmNoTW9kZSA9IHJlc3VsdC5maWVsZHMubW9kZSA/IHJlc3VsdC5maWVsZHMubW9kZSA6IG51bGw7XG5cbiAgICB0aGlzLnNldHRpbmdzID0gdGhpcy5saW1pdGVkTGlzdCAmJiB0aGlzLnF1ZXJ5ID8ge3RvdGFsOiB0aGlzLnRvdGFsSGl0cywgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcmVsYXRpb246IHJlc3VsdC5jb3VudC5yZWxhdGlvbn0gOiBudWxsO1xuICAgIGdyaWRPcHRpb25zLnJvd0RhdGEgPSByZXN1bHQuaGl0cztcblxuICAgIGNvbnN0IHtlbGVtZW50cywgc29ydG9yZGVyLCBncm91cG9yZGVyLCBwaW5uZWQsIGFsaWdubWVudHh9ID0gcmVzdWx0LmZpZWxkcztcblxuICAgIGdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSByZXN1bHQuY291bnQ7XG4gICAgZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZzKGVsZW1lbnRzLCBzb3J0b3JkZXIsIGdyb3Vwb3JkZXIsIHBpbm5lZCwgYWxpZ25tZW50eCwgZmFsc2UsIHRoaXMuX2NhY2hlZENvbHVtbnMsIHNlYXJjaE1vZGUpO1xuXG4gICAgY29uc3QgcmVmcmVzaEdyaWQgPSB0aGlzLmhhc0dyaWRPcHRpb25zO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZXN1bHRHcmlkT3B0aW9ucywgZ3JpZE9wdGlvbnMsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuXG4gICAgaWYgKHJlZnJlc2hHcmlkKSB7XG4gICAgICAvLyByZWxvYWQgZ3JpZCBjb21wb25lbnRcbiAgICAgIHRoaXMucmVzdWx0R3JpZE9wdGlvbnMgPSB7fTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJlc3VsdEdyaWRPcHRpb25zLCBncmlkT3B0aW9ucywgdGhpcy5ncmlkT3B0aW9ucyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zdGZpeFNvcnQoaWQpIHtcbiAgICAvLyB0b2RvOiByZW1vdmUgd2hlbiBpdCdzIGZpeGVkIG9uIGJhY2tlbmRcbiAgICByZXR1cm4gaWQubWF0Y2goLyhec3lzb2JqZWN0XFwufF5zeXNkb2N1bWVudFxcLikoY3JlYXRvciR8bW9kaWZpZXIkKS8pID8gJ3RpdGxlJyA6ICcnO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlZChwYWdlOiBudW1iZXIgPSAxKSB7XG4gICAgaWYgKHRoaXMubGltaXRlZExpc3QgJiYgdGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5mZXRjaFJvd0RhdGEoe1xuICAgICAgICBzdGFydFJvdzogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSAqIChwYWdlIC0gMSksXG4gICAgICAgIHNvcnRNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRDb2x1bW5TdGF0ZSgpLFxuICAgICAgICBmaWx0ZXJNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpLFxuICAgICAgICBzdWNjZXNzQ2FsbGJhY2s6IChyb3dzLCB0b3RhbCwgcmVsYXRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzID0ge3RvdGFsLCByZWxhdGlvbiwgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcGFnZX07XG4gICAgICAgICAgdGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgcm93cyk7XG4gICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGZvciBmZXRjaGluZyB0aGUgaXRlbXMgdG8gYmUgZGlzcGxheWVkIHdpdGggYSB2aXJ0dWFsIHJvdyBtb2RlbC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIHJvdyBtb2RlbCBwYXJhbXMgKGluY2wuIHN0YXJ0Um93LCBlbmRSb3csIHNvcnRNb2RlbCBhbmQgZmlsdGVyTW9kZWwpXG4gICAqL1xuICBwcml2YXRlIGZldGNoUm93RGF0YShwYXJhbXM6IGFueSkge1xuXG4gICAgaWYgKHRoaXMucXVlcnkpIHtcblxuICAgICAgdGhpcy51cGRhdGVRdWVyeShwYXJhbXMpO1xuXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5xdWVyeSwgcGFyYW1zLnN0YXJ0Um93LCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbEhpdHMgPSB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5yb3dDb3VudCA9IHJlc3VsdC5jb3VudC52YWx1ZTtcbiAgICAgICAgICB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA9IHJlc3VsdC5jb3VudDtcbiAgICAgICAgICBwYXJhbXMuc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdC5oaXRzLCB0aGlzLnRvdGFsSGl0cywgcmVzdWx0LmNvdW50LnJlbGF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVRdWVyeShwYXJhbXM6IGFueSkge1xuICAgIHRoaXMucXVlcnkuc29ydE9wdGlvbnMgPSAocGFyYW1zLnNvcnRNb2RlbCB8fCB0aGlzLmdyaWQuYXBpLmdldENvbHVtblN0YXRlKCkgfHwgW10pXG4gICAgICAubWFwKG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLCBtb2RlbC5zb3J0KSk7XG5cbiAgICB0aGlzLnF1ZXJ5LmZpbHRlcnMgPSB0aGlzLmRlZmF1bHRRdWVyeS5maWx0ZXJzXG4gICAgICAuY29uY2F0KChPYmplY3Qua2V5cyhwYXJhbXMuZmlsdGVyTW9kZWwgfHwgdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpKSB8fCBbXSlcbiAgICAgICAgLm1hcChrZXkgPT4gR3JpZEZpbHRlci5vcGVyYXRvcihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihrZXkpLCAocGFyYW1zLmZpbHRlck1vZGVsIHx8IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSlba2V5XSkpKTtcblxuICAgIHRoaXMucXVlcnkuc2VhcmNoTW9kZSA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XG4gIH1cblxuICBleGVjdXRlU3VnZ2VzdFNlYXJjaCgpIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgfVxuXG4gIHByaXZhdGUgcmVzdWx0SGFzUmVmZXJlbmNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0LmZpZWxkcy5lbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fCBlbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKTtcbiAgfVxuXG4gIGV4cG9ydENTVihpZ25vcmVUaHJlc2hvbGQgPSBmYWxzZSkge1xuICAgIGlmICghaWdub3JlVGhyZXNob2xkICYmIHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3ZcbiAgICAgICYmICh0aGlzLmxpc3QuZ3JpZENvdW50LnRvdGFsQ291bnQgPiB0aGlzLnJlc29sdmVSZWZlcmVuY2VzQ3N2VGhyZXNob2xkIHx8IHRoaXMubGlzdC5ncmlkQ291bnQucmVsYXRpb24gPT09ICdndGUnKVxuICAgICAgJiYgdGhpcy5yZXN1bHRIYXNSZWZlcmVuY2VzKCkpIHtcbiAgICAgIHRoaXMuc2hvd1dhcm5FeHBvcnRDU1ZUaHJlc2hvbGREaWFsb2cgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNzdkxvYWRpbmdTcGlubmVyVmlzaWJpbGl0eSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVRdWVyeSh7fSk7XG4gICAgdGhpcy5zaG93V2FybkV4cG9ydENTVlRocmVzaG9sZERpYWxvZyA9IGZhbHNlO1xuICAgIGNvbnN0IHF1ZXJ5SnNvbiA9IHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3YpO1xuICAgIHF1ZXJ5SnNvbi5maWVsZHMgPSBbXTtcbiAgICB0aGlzLnJlc3VsdEdyaWRPcHRpb25zPy5jb2x1bW5EZWZzLmZvckVhY2goY29sRGVmID0+IHtcbiAgICAgIHF1ZXJ5SnNvbi5maWVsZHMucHVzaChjb2xEZWZbJ2ZpZWxkJ10gKyAnICcgKyBjb2xEZWYuaGVhZGVyTmFtZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvd25sb2FkQ3N2RnJvbVF1ZXJ5KHF1ZXJ5SnNvbikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZURtc1BhcmFtcyhkYXRhKSB7XG4gICAgcmV0dXJuIHtpZDogZGF0YSAmJiBkYXRhLmlkID8gZGF0YS5pZCA6IG51bGwsIHR5cGU6IGRhdGEgJiYgZGF0YS50eXBlID8gZGF0YS50eXBlIDogbnVsbH07XG4gIH1cblxuICBnZXQgaGFzR3JpZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucmVzdWx0R3JpZE9wdGlvbnMuZGF0YXNvdXJjZSB8fCB0aGlzLnJlc3VsdEdyaWRPcHRpb25zLnJvd0RhdGEpO1xuICB9XG5cbiAgb25TdG9yZWRRdWVyeUxvYWRlZCgpIHtcbiAgICB0aGlzLnNhdmVkU2VhcmNoQ2xpY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiAnc2VhcmNoJ319XSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5RXhlY3V0ZShldnQpIHtcbiAgICB0aGlzLnNhdmVkU2VhcmNoQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHVyaVBhcmFtID0gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGV2dC5xdWVyeUpzb24pKTtcbiAgICBjb25zdCB1cmlQYXJhbVF1ZXJ5OiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3F1ZXJ5JzogdXJpUGFyYW19fTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9yZXN1bHQnXSwgdXJpUGFyYW1RdWVyeSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwicmVzdWx0LWxpc3RfX2xvYWRlclwiIFtzaXplXT1cIidtZWRpdW0nXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxlby1jb2x1bW4tY29uZmlndXJhdG9yICpuZ0lmPVwidmlzaWJsZUNvbmZpZ1wiIFt2aXNpYmxlXT1cInZpc2libGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ1R5cGVdPVwiY29uZmlnVHlwZVwiIFtjb25maWdDb250ZXh0XT1cImNvbmZpZ0NvbnRleHRcIiBbZW9HcmlkXT1cImdyaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ29uZmlnQ2hhbmdlZCk9XCJ2aXNpYmxlQ29uZmlnID0gZmFsc2U7IG9uQ29uZmlnQ2hhbmdlZCgkZXZlbnQpXCIgPjwvZW8tY29sdW1uLWNvbmZpZ3VyYXRvcj5cblxuPGVvLWxpc3QtY29udGFpbmVyICNlb0xpc3QgW2FwcGx5U2VsZWN0aW9uXT1cInt9XCIgW2xvYWRpbmddPVwiZmFsc2VcIiBbcGFyc2VEbXNQYXJhbXNdPVwicGFyc2VEbXNQYXJhbXNcIj5cbiAgPGRpdiBjbGFzcz1cImVvLWhlYWRlclwiIFtlb1Nob3J0Y3V0c109XCJzaG9ydGN1dHNcIj5cbiAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgKm5nSWY9XCJoYXNJY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2VhcmNoLnN2ZydcIj48L2VvLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCI+e3t0aXRsZSB8fCAoJ2VvLnNlYXJjaC50aXRsZScgfCB0cmFuc2xhdGUpfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhc3RvcmVkUXVlcnk7IGVsc2Ugc3RvcmVkUXVlcnlUZXh0XCIgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVfX2xhYmVsXCIgW3RpdGxlXT1cInF1ZXJ5U3VidGl0bGVcIj57e3F1ZXJ5U3VidGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdG9yZWRRdWVyeVRleHQ+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5sZW5ndGggPT09IDA7IGVsc2Ugc3RvcmVkUXVlcnlEaWFsb2dcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlX19sYWJlbFwiIFt0aXRsZV09XCIoJ2VvLnNlYXJjaC5hc2lkZS5zdW1tYXJ5LnN0b3JlZHF1ZXJ5JyB8IHRyYW5zbGF0ZSkgKyAnOiAnICsgc3RvcmVkUXVlcnkubmFtZVwiPlxuICAgICAgICAgICAgICB7eydlby5zZWFyY2guYXNpZGUuc3VtbWFyeS5zdG9yZWRxdWVyeScgfCB0cmFuc2xhdGV9fToge3tzdG9yZWRRdWVyeS5uYW1lfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdG9yZWRRdWVyeURpYWxvZz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVkLXF1ZXJ5XCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3snZW8uc2VhcmNoLmFzaWRlLnN1bW1hcnkuc3RvcmVkcXVlcnknIHwgdHJhbnNsYXRlfX06XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3FcIiAoY2xpY2spPVwic2F2ZWRTZWFyY2hDbGlja2VkID0gdHJ1ZVwiIChrZXl1cC5lbnRlcik9XCJzYXZlZFNlYXJjaENsaWNrZWQgPSB0cnVlXCIgdGFiaW5kZXg9XCIwXCI+XG4gICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3N0b3JlZF9xdWVyeS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57e3N0b3JlZFF1ZXJ5Lm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInF1ZXJ5Py5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoID09PSAxXCIgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie3R5cGU6IHF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5sYWJlbH1cIj5lby5zZWFyY2gub2JqZWN0dHlwZS5mb3JtLmNvbnRleHQ8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGVybVwiICpuZ0lmPVwiIXN0b3JlZFF1ZXJ5ICYmIHF1ZXJ5Py50ZXJtICYmICFjbGVhckFmdGVyRXhlY3V0ZVwiIFt0aXRsZV09XCIoJ2VvLnNlYXJjaC5yZXN1bHQudGVybScgfCB0cmFuc2xhdGUpICsgJzogJyArIHF1ZXJ5LnRlcm1cIj57eydlby5zZWFyY2gucmVzdWx0LnRlcm0nIHwgdHJhbnNsYXRlfX0gOiBcInt7cXVlcnkudGVybX19XCI8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0XCIgKm5nSWY9XCJzZWFyY2hSZXN1bHQ/LnN1Z2dlc3RzXCI+e3snZW8uc2VhcmNoLnN1Z2dlc3QnIHwgdHJhbnNsYXRlfX08YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImV4ZWN1dGVTdWdnZXN0U2VhcmNoKClcIj57e3NlYXJjaFJlc3VsdC5zdWdnZXN0c1swXX19PC9hPiA/XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3JlZnJlc2guc3ZnJ1wiIChjbGljayk9XCJyZWZyZXNoR3JpZCgpXCJcbiAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5saXN0LnJlZnJlc2gnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGV4cG9ydC1idXR0b25cIiBbaGlkZGVuXT1cIiFxdWVyeVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NvbnRlbnQtZG93bmxvYWQuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0Q1NWKClcIiAqbmdJZj1cIiFjc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHlcIj48L2VvLWljb24+XG4gICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidzbWFsbCdcIiAqbmdJZj1cImNzdkxvYWRpbmdTcGlubmVyVmlzaWJpbGl0eVwiIGNsYXNzPVwic3Bpbm5lclwiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gY29uZmlnLWJ1dHRvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NldHRpbmdzLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8uY29sdW1uLmNvbmZpZy50aXRsZScgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJ2aXNpYmxlQ29uZmlnID0gIXZpc2libGVDb25maWdcIj48L2VvLWljb24+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBhY3Rpb25zLWJ1dHRvblwiIChjbGljayk9XCJlb0xpc3Quc2hvd0FjdGlvbnMoKVwiIFtpY29uVGl0bGVdPVwiKCdlby5vYmplY3QuYWN0aW9ucy50aXRsZScgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX21vcmUuc3ZnJ1wiICpuZ0lmPVwiIXJlZmVyZW5jZVwiPjwvZW8taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJlby1ib2R5XCI+XG4gICAgPGVvLWdyaWQgI2VvR3JpZCBbZ3JpZE9wdGlvbnNdPVwicmVzdWx0R3JpZE9wdGlvbnNcIiAqbmdJZj1cImhhc0dyaWRPcHRpb25zOyBlbHNlIGVycm9yXCJcbiAgICAgICAgICAgICBbc2hvd0Zvb3Rlcl09XCJ0cnVlXCIgKGVvR3JpZENvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudClcIiBbc2VsZWN0Rmlyc3RdPVwic2VsZWN0Rmlyc3RcIlxuICAgICAgICAgICAgIChlb0dyaWRDb3VudENoYW5nZWQpPVwiZW9MaXN0Lm9uQ291bnRDaGFuZ2VkKCRldmVudCk7b25Db3VudENoYW5nZWQuZW1pdCgkZXZlbnQpO1wiXG4gICAgICAgICAgICAgKGVvR3JpZENvbnRleHRNZW51Q2xpY2spPVwiZW9MaXN0Lm9uQ29udGV4dE1lbnUoJGV2ZW50KTtvbkNvbnRleHRNZW51LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGVvR3JpZFNlbGVjdGlvbkNoYW5nZWQpPVwiZW9MaXN0Lm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpO29uU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgIChlb0dyaWREb3VibGVDbGljayk9XCJlb0xpc3Qub25Eb3VibGVDbGljaygkZXZlbnQpO29uRG91YmxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoZW9HcmlkRm9jdXNDaGFuZ2VkKT1cImVvTGlzdC5vbkZvY3VzQ2hhbmdlZCgkZXZlbnQpO29uRm9jdXNDaGFuZ2VkLmVtaXQoJGV2ZW50KVwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgICAgIDxlby10b3RhbC1jb3VudCBbZ3JpZENvdW50XT1cImVvTGlzdC5ncmlkQ291bnRcIiBbb3V0c2lkZUdyaWRdPVwiZmFsc2VcIiBjbGFzcz1cImZsZXgtcm93XCI+PC9lby10b3RhbC1jb3VudD5cbiAgICAgICAgPCEtLTxlby1xdWljay1maWx0ZXIgW2VvR3JpZF09XCJlb0dyaWRcIj48L2VvLXF1aWNrLWZpbHRlcj4tLT5cbiAgICAgICAgPGVvLXBhZ2luYXRpb24gW3NldHRpbmdzXT1cInNldHRpbmdzXCIgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiPjwvZW8tcGFnaW5hdGlvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgICAgPGVvLWVycm9yLW1lc3NhZ2UgW2VtcHR5U3RhdGVdPVwie3RleHQ6IGVtcHR5TWVzc2FnZSB8fCAnZW8uc2VhcmNoLnJlc3VsdC5leHBpcmVkJ31cIj48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgICA8L2Rpdj5cbiAgICA8L2VvLWdyaWQ+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2Vycm9yPlxuXG4gICAgPGVvLWVycm9yLW1lc3NhZ2UgKm5nSWY9XCJoYXNHcmlkT3B0aW9uc1wiIFtlbXB0eVN0YXRlXT1cInt0ZXh0Oidlby5zZWFyY2gubW9kZS5leHBlcnQucmVzdWx0LmVtcHR5J31cIj5cbiAgICA8L2VvLWVycm9yLW1lc3NhZ2U+XG5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZW8tbGlzdC1jb250YWluZXI+XG5cbjxlby1kaWFsb2cgW3Zpc2libGVdPVwic2F2ZWRTZWFyY2hDbGlja2VkXCIgKGhpZGUpPVwic2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2VcIiBbdGl0bGVdPVwiJ2VvLnNlYXJjaC5hc2lkZS5zdW1tYXJ5LnN0b3JlZHF1ZXJ5JyB8IHRyYW5zbGF0ZVwiPlxuXG48L2VvLWRpYWxvZz5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnJlc3VsdGxpc3QuZXhwb3J0LmNzdi50aHJlc2hvbGQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgIFsodmlzaWJsZSldPVwic2hvd1dhcm5FeHBvcnRDU1ZUaHJlc2hvbGREaWFsb2dcIiBbZm9jdXNPblNob3ddPVwiZmFsc2VcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ3RocmVzaG9sZF9fZGlhbG9nJ1wiPlxuXG4gIDxkaXY+e3snZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2LnRocmVzaG9sZC5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGV9fTwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93V2FybkV4cG9ydENTVlRocmVzaG9sZERpYWxvZyA9IGZhbHNlXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNka0ZvY3VzSW5pdGlhbCAoY2xpY2spPVwiZXhwb3J0Q1NWKHRydWUpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2LnRocmVzaG9sZC5kaWFsb2cuZXhwb3J0PC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG5cbiJdfQ==
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUdMLFVBQVUsRUFFVixlQUFlLEVBR2YsV0FBVyxFQUVYLFVBQVUsRUFFUSxLQUFLLEVBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUlyRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTL0IsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7O2FBYXZCLHVCQUFrQixHQUFHLHVDQUF1QyxBQUExQyxDQUEyQztJQTJDcEUsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFD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QzNFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0FoY1UsbUJBQW1CO2tHQUFuQixtQkFBbUIsZ3lCQ2xDaEMsbzBNQXVHQTs7QURyRWEsbUJBQW1CO0lBTi9CLFlBQVksRUFBRTtHQU1GLG1CQUFtQixDQWljL0I7OzJGQWpjWSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO2tYQVVMLElBQUk7c0JBQXhCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxJQUFJO3NCQUF4QixTQUFTO3VCQUFDLFFBQVE7Z0JBNEJWLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUdILEtBQUs7c0JBRFIsS0FBSztnQkFvREYsWUFBWTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb2xEZWYsIEdyaWRPcHRpb25zfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJhY2tlbmRTZXJ2aWNlLFxuICBDb25maWcsXG4gIEVuYWlvRXZlbnQsXG4gIEV2ZW50U2VydmljZSxcbiAgRmllbGREZWZpbml0aW9uLFxuICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICBPYmplY3RUeXBlLFxuICBTZWFyY2hRdWVyeSwgU2VhcmNoUmVzdWx0LFxuICBTZWFyY2hTZXJ2aWNlLFxuICBTb3J0T3B0aW9uLFxuICBTdG9yZWRRdWVyaWVzU2VydmljZSwgU3RvcmVkUXVlcnksXG4gIFRyYW5zbGF0ZVNlcnZpY2UsIFV0aWxzXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge29mIGFzIG9ic2VydmFibGVPZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0dyaWRTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7QXBwU2VhcmNoU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VhcmNoL2FwcC1zZWFyY2guc2VydmljZSc7XG5pbXBvcnQge0dyaWRGaWx0ZXJ9IGZyb20gJy4uL2dyaWQvZ3JpZC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHtHcmlkQ29tcG9uZW50fSBmcm9tICcuLi9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdENvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi4vbGlzdC1jb250YWluZXInO1xuaW1wb3J0IHtHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vc2hvcnRjdXRzL2dsb2JhbC1zaG9ydGN1dC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7U2hvcnRjdXR9IGZyb20gJy4uL3Nob3J0Y3V0cyc7XG5pbXBvcnQge1VudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJlc3VsdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0LWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgc2V0dXBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZXhwb3J0Q1NWd2l0aFVybDogW2ZhbHNlXSxcbiAgfSk7XG5cblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBncmlkOiBHcmlkQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdlb0xpc3QnKSBsaXN0OiBMaXN0Q29udGFpbmVyQ29tcG9uZW50O1xuXG4gIC8vIGZvciBsaXN0cyB0aGF0IGV4Y2VlZCB0aGUgY29uZmlndXJlZCBtYXggcmVzdWx0IHNpemUsIGRhdGEgd2lsbCBiZSBmZXRjaGVkIGluIGNodW5rc1xuICBwcml2YXRlIFZJUlRVQUxfTElTVF9DSFVOS19TSVpFOiBudW1iZXI7XG4gIHJlc29sdmVSZWZlcmVuY2VzQ3N2OiBib29sZWFuO1xuICByZXNvbHZlUmVmZXJlbmNlc0NzdlRocmVzaG9sZDogbnVtYmVyO1xuICBzdGF0aWMgQ09MVU1OU19ERUZJTklUSU9OID0gJ2VvLmZyYW1ld29yay5jYWNoZS5jb2x1bW5zLmRlZmluaXRpb24nO1xuICBleHBvcnRDU1Z3aXRoVXJsS2V5ID0gJ2VvLnJlc3VsdGxpc3QuY2FjaGUud2l0aFVybCc7XG5cbiAgcHJpdmF0ZSBfZXhwb3J0Q1NWd2l0aFVybCA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXN1bHQ6IFNlYXJjaFJlc3VsdDtcbiAgcHJpdmF0ZSBfcXVlcnk6IFNlYXJjaFF1ZXJ5O1xuICBwcml2YXRlIF9jYWNoZWRDb2x1bW5zOiBhbnlbXTtcbiAgcHJpdmF0ZSBkZWZhdWx0UXVlcnk6IFNlYXJjaFF1ZXJ5O1xuICBjc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHkgPSBmYWxzZTtcblxuICB2aXNpYmxlQ29uZmlnID0gZmFsc2U7XG4gIHNob3dMb2FkZXIgPSBmYWxzZTtcbiAgcHVibGljIHRvdGFsSGl0czogYW55O1xuICBwdWJsaWMgbGltaXRlZExpc3QgPSBmYWxzZTtcbiAgcHVibGljIHJlc3VsdEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyA9IHt9O1xuICBzZXR0aW5ncyA9IHt9O1xuICBxdWVyeVN1YnRpdGxlID0gJyc7XG4gIHNhdmVkU2VhcmNoQ2xpY2tlZCA9IGZhbHNlO1xuICBzdG9yZWRRdWVyeTogU3RvcmVkUXVlcnk7XG4gIHNob3dEaWFsb2dFeHBvcnQgPSBmYWxzZTtcbiAgc2hvd1dhcm5FeHBvcnRDU1ZUaHJlc2hvbGQgPSBmYWxzZTtcblxuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBjb25maWdUeXBlOiBPYmplY3RUeXBlIHwgbnVsbDtcbiAgQElucHV0KCkgY29uZmlnQ29udGV4dDogT2JqZWN0VHlwZSB8IG51bGw7XG5cbiAgLy8gSWYgc2V0IHRvIHRydWUgcXVlcnkgd2lsbCBiZSB0cmVhdGVkIGxpa2UgYSB0ZW1wb3Jhcnkgc2VhcmNoLlxuICAvLyBUaGF0IG1lYW5zLCBnbG9iYWwgc2VhcmNoIHdpbGwgbm90IGJlIGFmZmVjdGVkIChnbG9iYWwgcXVlcnkgd2lsbCBiZSByZXNldCBhZnRlciBleGVjdXRpb24pXG4gIEBJbnB1dCgpIGNsZWFyQWZ0ZXJFeGVjdXRlOiBib29sZWFuO1xuICBASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0Rmlyc3QgPSB0cnVlO1xuICBASW5wdXQoKSBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIEBJbnB1dCgpIGhhc0ljb24gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVmZXJlbmNlID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkZvY3VzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Db3VudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUXVlcnlJbnZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBxdWVyeShxdWVyeTogYW55KSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocXVlcnkubmFtZSkge1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldFN0b3JlZFF1ZXJpZXMkKClcbiAgICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChxdWVyaWVzU3Vic2NyaXB0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcnkgPSBxdWVyaWVzU3Vic2NyaXB0aW9uLnF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5uYW1lID09PSBxdWVyeS5uYW1lKVswXTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3F1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkocXVlcnkpO1xuICAgICAgaWYgKHRoaXMuX3F1ZXJ5KSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdFF1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkodGhpcy5fcXVlcnkuZ2V0UXVlcnlKc29uKCkpO1xuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0UXVlcnkodGhpcy5kZWZhdWx0UXVlcnkpO1xuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFJlc3VsdEZpZWxkRGVmaW5pdGlvbkNvbmZpZyh0aGlzLnF1ZXJ5KTtcbiAgICAgICAgdGhpcy5jb25maWdUeXBlID0gY29uZmlnLnR5cGU7XG4gICAgICAgIHRoaXMuY29uZmlnQ29udGV4dCA9IGNvbmZpZy5jb250ZXh0VHlwZTtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5fcXVlcnksIDAsIHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUpXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyUXVlcnkodGhpcy5jbGVhckFmdGVyRXhlY3V0ZSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJRdWVyeSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFF1ZXJ5KCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnF1ZXJ5U3VidGl0bGUgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlICs9IHRoaXMucXVlcnkudHlwZXNbaV0ubGFiZWw7XG4gICAgICAgICAgaWYgKGkgIT09IHRoaXMucXVlcnkudHlwZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlICs9ICcsICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBxdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgc2VhcmNoUmVzdWx0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgLy8gdG9kbzogYmFja2VuZCBzaG91bGQgcmVzb2x2ZSBxdWVyeS5maWVsZHMgYW5kIHJldHVybiBjb25maWcgaW4gc3BlY2lmaWMgb3JkZXJcbiAgICBjb25zdCBfZmllbGRzID0gcmVzdWx0LmZpZWxkcyA/IG9ic2VydmFibGVPZihyZXN1bHQuZmllbGRzKSA6XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UuZmV0Y2hSZXN1bHRGaWVsZERlZmluaXRpb24odGhpcy5jb25maWdUeXBlLCB0aGlzLmNvbmZpZ0NvbnRleHQsICdBTEwnKTtcbiAgICBfZmllbGRzLnN1YnNjcmliZShmaWVsZHMgPT4ge1xuICAgICAgaWYgKGZpZWxkcyAmJiB0aGlzLnF1ZXJ5ICYmIHRoaXMucXVlcnkuZmllbGRzICYmIHRoaXMucXVlcnkuZmllbGRzLmxlbmd0aCkge1xuICAgICAgICBmaWVsZHMuZWxlbWVudHMgPSB0aGlzLnF1ZXJ5LmZpZWxkcy5tYXAoZiA9PiBmaWVsZHMuZWxlbWVudHMuZmluZChlID0+IGYgPT09IGUuaGl0bmFtZSkpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmZpZWxkcyA9IGZpZWxkcyB8fCBuZXcgRmllbGREZWZpbml0aW9uKCk7XG4gICAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgICB0aGlzLnByb2Nlc3NSZXN1bHRzKHRoaXMuX3Jlc3VsdCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgc2VhcmNoUmVzdWx0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXN1bHQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBjb25maWc6IENvbmZpZyxcbiAgICAgICAgICAgICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIGdyaWRBcGk6IEdyaWRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yZWRRdWVyaWVzU2VydmljZTogU3RvcmVkUXVlcmllc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlclxuICAgICAgICAgICAgKSB7XG5cbiAgICB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gubGltaXQnKSBhcyBudW1iZXI7XG4gICAgdGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdiA9IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLnJlc29sdmVSZWZlcmVuY2VzQ1NWJykgYXMgYm9vbGVhbiB8fCBmYWxzZTtcbiAgICB0aGlzLnJlc29sdmVSZWZlcmVuY2VzQ3N2VGhyZXNob2xkID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gucmVzb2x2ZVJlZmVyZW5jZXNDU1ZUaHJlc2hvbGQnKSBhcyBudW1iZXIgfHwgMTAwMDA7XG4gICAgdGhpcy5fY2FjaGVkQ29sdW1ucyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShSZXN1bHRMaXN0Q29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTikgfHwgW107XG4gICAgdGhpcy5zZXR1cEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5fZXhwb3J0Q1NWd2l0aFVybCA9IHRoaXMuc2V0dXBGb3JtLmdldCgnZXhwb3J0Q1NWd2l0aFVybCcpLnZhbHVlO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKHRoaXMuZXhwb3J0Q1NWd2l0aFVybEtleSwgdGhpcy5zZXR1cEZvcm0uZ2V0KCdleHBvcnRDU1Z3aXRoVXJsJykudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJRdWVyeShjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgIGlmIChjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmNsZWFyUXVlcnkoKTtcbiAgICB9XG4gIH1cblxuICBpbnZhbGlkUXVlcnkoKSB7XG4gICAgdGhpcy5vblF1ZXJ5SW52YWxpZC5lbWl0KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9ERUxFVEVEKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmlkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkLnVwZGF0ZVJvd3ModGhpcy5iYWNrZW5kLnVwZGF0ZShbcmVzLmRhdGFdLCBbe2lkOiByZXMuZGF0YS5pZH1dKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMuX2V4cG9ydENTVndpdGhVcmwgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5leHBvcnRDU1Z3aXRoVXJsS2V5KSB8fCB0aGlzLnNldHVwRm9ybS5nZXQoJ2V4cG9ydENTVndpdGhVcmwnKS52YWx1ZTtcbiAgICB0aGlzLnNldHVwRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGV4cG9ydENTVndpdGhVcmw6IHRoaXMuX2V4cG9ydENTVndpdGhVcmxcbiAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVJvdyhyZXMuZGF0YS5pZCwgcmVzLmRhdGEuZGF0YSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncmlkICYmIHRoaXMuX3F1ZXJ5KSB7XG4gICAgICAgIHRoaXMuX3F1ZXJ5LnNvcnRPcHRpb25zID0gKHRoaXMuZ3JpZC5hcGkuZ2V0Q29sdW1uU3RhdGUoKSB8fCBbXSlcbiAgICAgICAgICAubWFwKG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLCBtb2RlbC5zb3J0KSk7XG4gICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLl9xdWVyeTtcbiAgICAgIH1cbiAgICB9LCAyMDApO1xuICB9XG5cbiAgLy8gc2hvcnRjdXQgYWN0aW9uc1xuICBzaG9ydGN1dHM6IEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50ID0ge1xuICAgIGlkOiAnZW8ud29ya3NwYWNlLndpZGdldC5oaXRsaXN0LmxhYmVsJyxcbiAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ud29ya3NwYWNlLndpZGdldC5oaXRsaXN0LmxhYmVsJyksXG4gICAgbGFiZWxLZXk6ICdlby53b3Jrc3BhY2Uud2lkZ2V0LmhpdGxpc3QubGFiZWwnLFxuICAgIGFjdGlvbnM6IFt7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5jb2x1bW4uY29uZmlnLnRpdGxlJyksXG4gICAgICBuYW1lS2V5OiAnZW8uY29sdW1uLmNvbmZpZy50aXRsZScsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdQJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLnZpc2libGVDb25maWcgPSAhdGhpcy52aXNpYmxlQ29uZmlnO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnJlc3VsdGxpc3QuZXhwb3J0LmNzdicpLFxuICAgICAgbmFtZUtleTogJ2VvLnJlc3VsdGxpc3QuZXhwb3J0LmNzdicsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdYJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cG9ydENTVigpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5hY3Rpb25zLnRpdGxlJyksXG4gICAgICBuYW1lS2V5OiAnZW8ub2JqZWN0LmFjdGlvbnMudGl0bGUnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnTScsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0LnNob3dBY3Rpb25zKCk7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ubGlzdC5yZWZyZXNoJyksXG4gICAgICBuYW1lS2V5OiAnZW8ubGlzdC5yZWZyZXNoJyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1InLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaEdyaWQoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfV1cbiAgfTtcblxuICB1cGRhdGVSb3coaWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgY29uc3QgbWF0Y2hSb3cgPSB0aGlzLnJlc3VsdEdyaWRPcHRpb25zLnJvd0RhdGEuZmluZCgocikgPT4gci5pZCA9PT0gaWQpO1xuICAgIGNvbnN0IHN5c3RlbUZpZWxkcyA9IFsnY3JlYXRlZCcsICdjcmVhdG9ydGl0bGUnLCAnbW9kaWZpZWQnLCAnbW9kaWZpZXJ0aXRsZScsICd0aXRsZScsICdkZXNjcmlwdGlvbicsICd0eXBlJywgJ3ZlcnNpb24nLCAnZmlsZXNpemUnLCAnZmlsZW5hbWUnLCAnbWltZXR5cGVncm91cCcsICdtaW1ldHlwZSddO1xuICAgIGxldCBtaXNzaW5nQ29sdW1ucyA9IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMuY29sdW1uRGVmcztcbiAgICBpZiAobWF0Y2hSb3cpIHtcbiAgICAgIE9iamVjdC5rZXlzKG1hdGNoUm93KS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoayArICdfbWV0YScpKSB7XG4gICAgICAgICAgICAvLyBpZiBpdCBpcyBhbiBvcmcgZmllbGQsIGl0IHdpbGwgaGF2ZSBhIHRpdGxlIHRvIHNob3csIG90aGVyd2lzZSBpdCBpcyBhIGNvZGVzeXN0ZW0gYW5kIHdlIHNob3cgdGhlIGxhYmVsXG4gICAgICAgICAgICBtYXRjaFJvd1trXSA9IGRhdGFbayArICdfbWV0YSddLnRpdGxlID8gZGF0YVtrICsgJ19tZXRhJ10udGl0bGUgOiBkYXRhW2sgKyAnX21ldGEnXS5sYWJlbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWF0Y2hSb3dba10gPSBkYXRhW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtaXNzaW5nQ29sdW1ucyA9IG1pc3NpbmdDb2x1bW5zLmZpbHRlcigoY29sdW1uOiBDb2xEZWYpID0+IGNvbHVtbi5maWVsZCAhPT0gayk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrLnNwbGl0KCcuJylbMV0pKSB7XG4gICAgICAgICAgLy8gc29tZSB0ZWNobmljYWwgbmFtZXMgaGF2ZSB0aGUgb2JqZWN0IHR5cGUgYXMgYSBwcmVmaXgsIHdlIGhhdmUgdG8gZ2V0IHJpZCBvZiBpdFxuICAgICAgICAgIGNvbnN0IGtTcGxpdCA9IGsuc3BsaXQoJy4nKVsxXTtcbiAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrU3BsaXQgKyAnX21ldGEnKSkge1xuICAgICAgICAgICAgbWF0Y2hSb3dba10gPSBkYXRhW2tTcGxpdCArICdfbWV0YSddLnRpdGxlID8gZGF0YVtrU3BsaXQgKyAnX21ldGEnXS50aXRsZSA6IGRhdGFba1NwbGl0ICsgJ19tZXRhJ10ubGFiZWw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoUm93W2tdID0gZGF0YVtrU3BsaXRdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtaXNzaW5nQ29sdW1ucyA9IG1pc3NpbmdDb2x1bW5zLmZpbHRlcigoY29sdW1uOiBDb2xEZWYpID0+IGNvbHVtbi5maWVsZCAhPT0gayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggdGhlIG5vdCBhbHJlYWR5IGFwcGxpZWQgY29sdW1ucywgd2hpY2ggd2VyZSBjaGFuZ2VkIGZyb20gbnVsbCBvciB0byBudWxsXG4gICAgICBtaXNzaW5nQ29sdW1ucy5mb3JFYWNoKChjb2x1bW46IENvbERlZikgPT4ge1xuICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShjb2x1bW4uZmllbGQpKSB7XG4gICAgICAgICAgbWF0Y2hSb3dbY29sdW1uLmZpZWxkXSA9IGRhdGFbY29sdW1uLmZpZWxkXTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmhhc093blByb3BlcnR5KGNvbHVtbi5maWVsZC5zcGxpdCgnLicpWzFdKSkge1xuICAgICAgICAgIG1hdGNoUm93W2NvbHVtbi5maWVsZF0gPSBkYXRhW2NvbHVtbi5maWVsZC5zcGxpdCgnLicpWzFdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXN5c3RlbUZpZWxkcy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpKSB7XG4gICAgICAgICAgICBtYXRjaFJvd1tjb2x1bW4uZmllbGRdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWF0Y2hSb3cuaWQgPSBpZDtcbiAgICAgIGNvbnN0IHJvd05vZGUgPSB0aGlzLmdyaWQuYXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgcm93Tm9kZSAmJiByb3dOb2RlLnNldERhdGEobWF0Y2hSb3cpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hHcmlkKCkge1xuICAgIGlmICh0aGlzLnF1ZXJ5KSB7XG4gICAgICB0aGlzLl9xdWVyeS5zb3J0T3B0aW9ucyA9ICh0aGlzLmdyaWQuYXBpLmdldENvbHVtblN0YXRlKCkgfHwgW10pXG4gICAgICAgIC5tYXAobW9kZWwgPT4gbmV3IFNvcnRPcHRpb24oR3JpZFNlcnZpY2UucW5hbWVGb3JtYXR0ZXIobW9kZWwuY29sSWQgKyB0aGlzLnBvc3RmaXhTb3J0KG1vZGVsLmNvbElkKSksIG1vZGVsLnNvcnQpKTtcbiAgICAgIHRoaXMucXVlcnkgPSB0aGlzLl9xdWVyeTtcbiAgICB9XG4gICAgdGhpcy5vblJlZnJlc2guZW1pdCh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIG9uQ29sdW1uUmVzaXplZChjb2x1bW46IGFueSkge1xuICAgIGxldCBjb2wgPSB0aGlzLl9jYWNoZWRDb2x1bW5zLmZpbmQoYyA9PiBjLnFuYW1lID09PSBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUpO1xuICAgIGlmIChjb2wpIHtcbiAgICAgIGNvbC53aWR0aCA9IGNvbHVtbi5hY3R1YWxXaWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2FjaGVkQ29sdW1ucy5wdXNoKHtxbmFtZTogY29sdW1uLmNvbERlZi5yZWZEYXRhLnFuYW1lLCB3aWR0aDogY29sdW1uLmFjdHVhbFdpZHRofSk7XG4gICAgfVxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShSZXN1bHRMaXN0Q29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTiwgdGhpcy5fY2FjaGVkQ29sdW1ucyk7XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgZ3JpZCBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSAkZXZlbnRcbiAgICovXG4gIG9uQ29uZmlnQ2hhbmdlZChyZWZyZXNoKSB7XG4gICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgIHRoaXMucmVmcmVzaEdyaWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBTZWFyY2ggcmVzdWx0ICYgZ2VuZXJhdGUgY29sdW1uIGRlZmluaXRpb25zXG4gICAqIEBwYXJhbSByZXN1bHRcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1Jlc3VsdHMocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcbiAgICB0aGlzLnZpc2libGVDb25maWcgPSBmYWxzZTtcbiAgICB0aGlzLm9uUmVzdWx0LmVtaXQocmVzdWx0KTtcbiAgICB0aGlzLnRvdGFsSGl0cyA9IHJlc3VsdC5jb3VudC52YWx1ZTtcbiAgICB0aGlzLmxpbWl0ZWRMaXN0ID0gdGhpcy50b3RhbEhpdHMgPiByZXN1bHQuaGl0cy5sZW5ndGg7XG4gICAgbGV0IGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyA9IHtjb250ZXh0OiB7fSwgb25Tb3J0Q2hhbmdlZDogKCkgPT4gdGhpcy5vblBhZ2VDaGFuZ2VkKCksIG9uRmlsdGVyQ2hhbmdlZDogKCkgPT4gdGhpcy5vblBhZ2VDaGFuZ2VkKCl9O1xuICAgIGNvbnN0IHNlYXJjaE1vZGUgPSByZXN1bHQuZmllbGRzLm1vZGUgPyByZXN1bHQuZmllbGRzLm1vZGUgOiBudWxsO1xuXG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMubGltaXRlZExpc3QgJiYgdGhpcy5xdWVyeSA/IHt0b3RhbDogdGhpcy50b3RhbEhpdHMsIHNpemU6IHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUsIHJlbGF0aW9uOiByZXN1bHQuY291bnQucmVsYXRpb259IDogbnVsbDtcbiAgICBncmlkT3B0aW9ucy5yb3dEYXRhID0gcmVzdWx0LmhpdHM7XG5cbiAgICBjb25zdCB7ZWxlbWVudHMsIHNvcnRvcmRlciwgZ3JvdXBvcmRlciwgcGlubmVkLCBhbGlnbm1lbnR4fSA9IHJlc3VsdC5maWVsZHM7XG5cbiAgICBncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50ID0gcmVzdWx0LmNvdW50O1xuICAgIGdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSB0aGlzLmdyaWRBcGkuZ2V0Q29sdW1uRGVmcyhlbGVtZW50cywgc29ydG9yZGVyLCBncm91cG9yZGVyLCBwaW5uZWQsIGFsaWdubWVudHgsIGZhbHNlLCB0aGlzLl9jYWNoZWRDb2x1bW5zLCBzZWFyY2hNb2RlKTtcblxuICAgIGNvbnN0IHJlZnJlc2hHcmlkID0gdGhpcy5oYXNHcmlkT3B0aW9ucztcbiAgICBPYmplY3QuYXNzaWduKHRoaXMucmVzdWx0R3JpZE9wdGlvbnMsIGdyaWRPcHRpb25zLCB0aGlzLmdyaWRPcHRpb25zKTtcblxuICAgIGlmIChyZWZyZXNoR3JpZCkge1xuICAgICAgLy8gcmVsb2FkIGdyaWQgY29tcG9uZW50XG4gICAgICB0aGlzLnJlc3VsdEdyaWRPcHRpb25zID0ge307XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IE9iamVjdC5hc3NpZ24odGhpcy5yZXN1bHRHcmlkT3B0aW9ucywgZ3JpZE9wdGlvbnMsIHRoaXMuZ3JpZE9wdGlvbnMpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvc3RmaXhTb3J0KGlkKSB7XG4gICAgLy8gdG9kbzogcmVtb3ZlIHdoZW4gaXQncyBmaXhlZCBvbiBiYWNrZW5kXG4gICAgcmV0dXJuIGlkLm1hdGNoKC8oXnN5c29iamVjdFxcLnxec3lzZG9jdW1lbnRcXC4pKGNyZWF0b3IkfG1vZGlmaWVyJCkvKSA/ICd0aXRsZScgOiAnJztcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZWQocGFnZTogbnVtYmVyID0gMSkge1xuICAgIGlmICh0aGlzLmxpbWl0ZWRMaXN0ICYmIHRoaXMucXVlcnkpIHtcbiAgICAgIHRoaXMuZmV0Y2hSb3dEYXRhKHtcbiAgICAgICAgc3RhcnRSb3c6IHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUgKiAocGFnZSAtIDEpLFxuICAgICAgICBzb3J0TW9kZWw6IHRoaXMuZ3JpZC5hcGkuZ2V0Q29sdW1uU3RhdGUoKSxcbiAgICAgICAgZmlsdGVyTW9kZWw6IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSxcbiAgICAgICAgc3VjY2Vzc0NhbGxiYWNrOiAocm93cywgdG90YWwsIHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHt0b3RhbCwgcmVsYXRpb24sIHNpemU6IHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUsIHBhZ2V9O1xuICAgICAgICAgIHRoaXMuZ3JpZC5hcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIHJvd3MpO1xuICAgICAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiBmb3IgZmV0Y2hpbmcgdGhlIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCB3aXRoIGEgdmlydHVhbCByb3cgbW9kZWwuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSByb3cgbW9kZWwgcGFyYW1zIChpbmNsLiBzdGFydFJvdywgZW5kUm93LCBzb3J0TW9kZWwgYW5kIGZpbHRlck1vZGVsKVxuICAgKi9cbiAgcHJpdmF0ZSBmZXRjaFJvd0RhdGEocGFyYW1zOiBhbnkpIHtcblxuICAgIGlmICh0aGlzLnF1ZXJ5KSB7XG5cbiAgICAgIHRoaXMudXBkYXRlUXVlcnkocGFyYW1zKTtcblxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgIC5nZXRDaHVua2VkUmVzdWx0KHRoaXMucXVlcnksIHBhcmFtcy5zdGFydFJvdywgdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSlcbiAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgIHRoaXMudG90YWxIaXRzID0gdGhpcy5ncmlkLmdyaWRPcHRpb25zLmNvbnRleHQucm93Q291bnQgPSByZXN1bHQuY291bnQudmFsdWU7XG4gICAgICAgICAgdGhpcy5ncmlkLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSByZXN1bHQuY291bnQ7XG4gICAgICAgICAgcGFyYW1zLnN1Y2Nlc3NDYWxsYmFjayhyZXN1bHQuaGl0cywgdGhpcy50b3RhbEhpdHMsIHJlc3VsdC5jb3VudC5yZWxhdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUXVlcnkocGFyYW1zOiBhbnkpIHtcbiAgICB0aGlzLnF1ZXJ5LnNvcnRPcHRpb25zID0gKHBhcmFtcy5zb3J0TW9kZWwgfHwgdGhpcy5ncmlkLmFwaS5nZXRDb2x1bW5TdGF0ZSgpIHx8IFtdKVxuICAgICAgLm1hcChtb2RlbCA9PiBuZXcgU29ydE9wdGlvbihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihtb2RlbC5jb2xJZCArIHRoaXMucG9zdGZpeFNvcnQobW9kZWwuY29sSWQpKSwgbW9kZWwuc29ydCkpO1xuXG4gICAgdGhpcy5xdWVyeS5maWx0ZXJzID0gdGhpcy5kZWZhdWx0UXVlcnkuZmlsdGVyc1xuICAgICAgLmNvbmNhdCgoT2JqZWN0LmtleXMocGFyYW1zLmZpbHRlck1vZGVsIHx8IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSkgfHwgW10pXG4gICAgICAgIC5tYXAoa2V5ID0+IEdyaWRGaWx0ZXIub3BlcmF0b3IoR3JpZFNlcnZpY2UucW5hbWVGb3JtYXR0ZXIoa2V5KSwgKHBhcmFtcy5maWx0ZXJNb2RlbCB8fCB0aGlzLmdyaWQuYXBpLmdldEZpbHRlck1vZGVsKCkpW2tleV0pKSk7XG5cbiAgICB0aGlzLnF1ZXJ5LnNlYXJjaE1vZGUgPSBTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFO1xuICB9XG5cbiAgZXhlY3V0ZVN1Z2dlc3RTZWFyY2goKSB7XG4gICAgLy8gdG9kbzogaW1wbGVtZW50XG4gIH1cblxuICBwcml2YXRlIHJlc3VsdEhhc1JlZmVyZW5jZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdC5maWVsZHMuZWxlbWVudHMuc29tZShlbGVtZW50ID0+IGVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicgfHwgZWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJyk7XG4gIH1cblxuICBvcGVuRGlhbG9nRXhwb3J0KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0RpYWxvZ0V4cG9ydCA9IHRydWU7XG4gICAgaWYgKHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3ZcbiAgICAgICYmICh0aGlzLmxpc3QuZ3JpZENvdW50LnRvdGFsQ291bnQgPiB0aGlzLnJlc29sdmVSZWZlcmVuY2VzQ3N2VGhyZXNob2xkIHx8IHRoaXMubGlzdC5ncmlkQ291bnQucmVsYXRpb24gPT09ICdndGUnKVxuICAgICAgJiYgdGhpcy5yZXN1bHRIYXNSZWZlcmVuY2VzKCkpIHtcbiAgICAgIHRoaXMuc2hvd1dhcm5FeHBvcnRDU1ZUaHJlc2hvbGQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydENTVigpOiB2b2lkIHtcbiAgICB0aGlzLmNzdkxvYWRpbmdTcGlubmVyVmlzaWJpbGl0eSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVRdWVyeSh7fSk7XG4gICAgdGhpcy5zaG93V2FybkV4cG9ydENTVlRocmVzaG9sZCA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0RpYWxvZ0V4cG9ydCA9IGZhbHNlO1xuICAgIGNvbnN0IHF1ZXJ5SnNvbiA9IHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3YpO1xuICAgIHF1ZXJ5SnNvbi5maWVsZHMgPSBbXTtcbiAgICB0aGlzLnJlc3VsdEdyaWRPcHRpb25zPy5jb2x1bW5EZWZzLmZvckVhY2goY29sRGVmID0+IHtcbiAgICAgIHF1ZXJ5SnNvbi5maWVsZHMucHVzaChjb2xEZWZbJ2ZpZWxkJ10gKyAnICcgKyBjb2xEZWYuaGVhZGVyTmFtZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvd25sb2FkQ3N2RnJvbVF1ZXJ5KHF1ZXJ5SnNvbiwgdGhpcy5fZXhwb3J0Q1NWd2l0aFVybCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZURtc1BhcmFtcyhkYXRhKSB7XG4gICAgcmV0dXJuIHtpZDogZGF0YSAmJiBkYXRhLmlkID8gZGF0YS5pZCA6IG51bGwsIHR5cGU6IGRhdGEgJiYgZGF0YS50eXBlID8gZGF0YS50eXBlIDogbnVsbH07XG4gIH1cblxuICBnZXQgaGFzR3JpZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucmVzdWx0R3JpZE9wdGlvbnMuZGF0YXNvdXJjZSB8fCB0aGlzLnJlc3VsdEdyaWRPcHRpb25zLnJvd0RhdGEpO1xuICB9XG5cbiAgb25TdG9yZWRRdWVyeUxvYWRlZCgpIHtcbiAgICB0aGlzLnNhdmVkU2VhcmNoQ2xpY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiAnc2VhcmNoJ319XSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5RXhlY3V0ZShldnQpIHtcbiAgICB0aGlzLnNhdmVkU2VhcmNoQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHVyaVBhcmFtID0gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGV2dC5xdWVyeUpzb24pKTtcbiAgICBjb25zdCB1cmlQYXJhbVF1ZXJ5OiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3F1ZXJ5JzogdXJpUGFyYW19fTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9yZXN1bHQnXSwgdXJpUGFyYW1RdWVyeSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwicmVzdWx0LWxpc3RfX2xvYWRlclwiIFtzaXplXT1cIidtZWRpdW0nXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxlby1jb2x1bW4tY29uZmlndXJhdG9yICpuZ0lmPVwidmlzaWJsZUNvbmZpZ1wiIFt2aXNpYmxlXT1cInZpc2libGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ1R5cGVdPVwiY29uZmlnVHlwZVwiIFtjb25maWdDb250ZXh0XT1cImNvbmZpZ0NvbnRleHRcIiBbZW9HcmlkXT1cImdyaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ29uZmlnQ2hhbmdlZCk9XCJ2aXNpYmxlQ29uZmlnID0gZmFsc2U7IG9uQ29uZmlnQ2hhbmdlZCgkZXZlbnQpXCIgPjwvZW8tY29sdW1uLWNvbmZpZ3VyYXRvcj5cblxuPGVvLWxpc3QtY29udGFpbmVyICNlb0xpc3QgW2FwcGx5U2VsZWN0aW9uXT1cInt9XCIgW2xvYWRpbmddPVwiZmFsc2VcIiBbcGFyc2VEbXNQYXJhbXNdPVwicGFyc2VEbXNQYXJhbXNcIj5cbiAgPGRpdiBjbGFzcz1cImVvLWhlYWRlclwiIFtlb1Nob3J0Y3V0c109XCJzaG9ydGN1dHNcIj5cbiAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgKm5nSWY9XCJoYXNJY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2VhcmNoLnN2ZydcIj48L2VvLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCI+e3t0aXRsZSB8fCAoJ2VvLnNlYXJjaC50aXRsZScgfCB0cmFuc2xhdGUpfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhc3RvcmVkUXVlcnk7IGVsc2Ugc3RvcmVkUXVlcnlUZXh0XCIgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVfX2xhYmVsXCIgW3RpdGxlXT1cInF1ZXJ5U3VidGl0bGVcIj57e3F1ZXJ5U3VidGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdG9yZWRRdWVyeVRleHQ+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5sZW5ndGggPT09IDA7IGVsc2Ugc3RvcmVkUXVlcnlEaWFsb2dcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlX19sYWJlbFwiIFt0aXRsZV09XCIoJ2VvLnNlYXJjaC5hc2lkZS5zdW1tYXJ5LnN0b3JlZHF1ZXJ5JyB8IHRyYW5zbGF0ZSkgKyAnOiAnICsgc3RvcmVkUXVlcnkubmFtZVwiPlxuICAgICAgICAgICAgICB7eydlby5zZWFyY2guYXNpZGUuc3VtbWFyeS5zdG9yZWRxdWVyeScgfCB0cmFuc2xhdGV9fToge3tzdG9yZWRRdWVyeS5uYW1lfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdG9yZWRRdWVyeURpYWxvZz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVkLXF1ZXJ5XCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3snZW8uc2VhcmNoLmFzaWRlLnN1bW1hcnkuc3RvcmVkcXVlcnknIHwgdHJhbnNsYXRlfX06XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3FcIiAoY2xpY2spPVwic2F2ZWRTZWFyY2hDbGlja2VkID0gdHJ1ZVwiIChrZXl1cC5lbnRlcik9XCJzYXZlZFNlYXJjaENsaWNrZWQgPSB0cnVlXCIgdGFiaW5kZXg9XCIwXCI+XG4gICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3N0b3JlZF9xdWVyeS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57e3N0b3JlZFF1ZXJ5Lm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInF1ZXJ5Py5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoID09PSAxXCIgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie3R5cGU6IHF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5sYWJlbH1cIj5lby5zZWFyY2gub2JqZWN0dHlwZS5mb3JtLmNvbnRleHQ8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGVybVwiICpuZ0lmPVwiIXN0b3JlZFF1ZXJ5ICYmIHF1ZXJ5Py50ZXJtICYmICFjbGVhckFmdGVyRXhlY3V0ZVwiIFt0aXRsZV09XCIoJ2VvLnNlYXJjaC5yZXN1bHQudGVybScgfCB0cmFuc2xhdGUpICsgJzogJyArIHF1ZXJ5LnRlcm1cIj57eydlby5zZWFyY2gucmVzdWx0LnRlcm0nIHwgdHJhbnNsYXRlfX0gOiBcInt7cXVlcnkudGVybX19XCI8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0XCIgKm5nSWY9XCJzZWFyY2hSZXN1bHQ/LnN1Z2dlc3RzXCI+e3snZW8uc2VhcmNoLnN1Z2dlc3QnIHwgdHJhbnNsYXRlfX08YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImV4ZWN1dGVTdWdnZXN0U2VhcmNoKClcIj57e3NlYXJjaFJlc3VsdC5zdWdnZXN0c1swXX19PC9hPiA/XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3JlZnJlc2guc3ZnJ1wiIChjbGljayk9XCJyZWZyZXNoR3JpZCgpXCJcbiAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5saXN0LnJlZnJlc2gnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGV4cG9ydC1idXR0b25cIiBbaGlkZGVuXT1cIiFxdWVyeVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NvbnRlbnQtZG93bmxvYWQuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRpYWxvZ0V4cG9ydCgpXCIgKm5nSWY9XCIhY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5XCI+PC9lby1pY29uPlxuICAgICAgPGVvLWxvYWRpbmctc3Bpbm5lciBbc2l6ZV09XCInc21hbGwnXCIgKm5nSWY9XCJjc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHlcIiBjbGFzcz1cInNwaW5uZXJcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGNvbmZpZy1idXR0b25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zZXR0aW5ncy5zdmcnXCIgW2ljb25UaXRsZV09XCIoJ2VvLmNvbHVtbi5jb25maWcudGl0bGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAoY2xpY2spPVwidmlzaWJsZUNvbmZpZyA9ICF2aXNpYmxlQ29uZmlnXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYWN0aW9ucy1idXR0b25cIiAoY2xpY2spPVwiZW9MaXN0LnNob3dBY3Rpb25zKClcIiBbaWNvblRpdGxlXT1cIignZW8ub2JqZWN0LmFjdGlvbnMudGl0bGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19tb3JlLnN2ZydcIiAqbmdJZj1cIiFyZWZlcmVuY2VcIj48L2VvLWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgIDxlby1ncmlkICNlb0dyaWQgW2dyaWRPcHRpb25zXT1cInJlc3VsdEdyaWRPcHRpb25zXCIgKm5nSWY9XCJoYXNHcmlkT3B0aW9uczsgZWxzZSBlcnJvclwiXG4gICAgICAgICAgICAgW3Nob3dGb290ZXJdPVwidHJ1ZVwiIChlb0dyaWRDb2x1bW5SZXNpemVkKT1cIm9uQ29sdW1uUmVzaXplZCgkZXZlbnQpXCIgW3NlbGVjdEZpcnN0XT1cInNlbGVjdEZpcnN0XCJcbiAgICAgICAgICAgICAoZW9HcmlkQ291bnRDaGFuZ2VkKT1cImVvTGlzdC5vbkNvdW50Q2hhbmdlZCgkZXZlbnQpO29uQ291bnRDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcIlxuICAgICAgICAgICAgIChlb0dyaWRDb250ZXh0TWVudUNsaWNrKT1cImVvTGlzdC5vbkNvbnRleHRNZW51KCRldmVudCk7b25Db250ZXh0TWVudS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgIChlb0dyaWRTZWxlY3Rpb25DaGFuZ2VkKT1cImVvTGlzdC5vblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KTtvblNlbGVjdGlvbkNoYW5nZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoZW9HcmlkRG91YmxlQ2xpY2spPVwiZW9MaXN0Lm9uRG91YmxlQ2xpY2soJGV2ZW50KTtvbkRvdWJsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGVvR3JpZEZvY3VzQ2hhbmdlZCk9XCJlb0xpc3Qub25Gb2N1c0NoYW5nZWQoJGV2ZW50KTtvbkZvY3VzQ2hhbmdlZC5lbWl0KCRldmVudClcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICA8ZW8tdG90YWwtY291bnQgW2dyaWRDb3VudF09XCJlb0xpc3QuZ3JpZENvdW50XCIgW291dHNpZGVHcmlkXT1cImZhbHNlXCIgY2xhc3M9XCJmbGV4LXJvd1wiPjwvZW8tdG90YWwtY291bnQ+XG4gICAgICAgIDwhLS08ZW8tcXVpY2stZmlsdGVyIFtlb0dyaWRdPVwiZW9HcmlkXCI+PC9lby1xdWljay1maWx0ZXI+LS0+XG4gICAgICAgIDxlby1wYWdpbmF0aW9uIFtzZXR0aW5nc109XCJzZXR0aW5nc1wiIChwYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2VkKCRldmVudClcIj48L2VvLXBhZ2luYXRpb24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImVtcHR5XCI+XG4gICAgICAgIDxlby1lcnJvci1tZXNzYWdlIFtlbXB0eVN0YXRlXT1cInt0ZXh0OiBlbXB0eU1lc3NhZ2UgfHwgJ2VvLnNlYXJjaC5yZXN1bHQuZXhwaXJlZCd9XCI+PC9lby1lcnJvci1tZXNzYWdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9lby1ncmlkPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNlcnJvcj5cblxuICAgIDxlby1lcnJvci1tZXNzYWdlICpuZ0lmPVwiaGFzR3JpZE9wdGlvbnNcIiBbZW1wdHlTdGF0ZV09XCJ7dGV4dDonZW8uc2VhcmNoLm1vZGUuZXhwZXJ0LnJlc3VsdC5lbXB0eSd9XCI+XG4gICAgPC9lby1lcnJvci1tZXNzYWdlPlxuXG4gIDwvbmctdGVtcGxhdGU+XG48L2VvLWxpc3QtY29udGFpbmVyPlxuXG48ZW8tZGlhbG9nIFt2aXNpYmxlXT1cInNhdmVkU2VhcmNoQ2xpY2tlZFwiIChoaWRlKT1cInNhdmVkU2VhcmNoQ2xpY2tlZCA9IGZhbHNlXCIgW3RpdGxlXT1cIidlby5zZWFyY2guYXNpZGUuc3VtbWFyeS5zdG9yZWRxdWVyeScgfCB0cmFuc2xhdGVcIj5cblxuPC9lby1kaWFsb2c+XG48ZW8tZGlhbG9nIFt0aXRsZV09XCInZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2LmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dEaWFsb2dFeHBvcnRcIlxuICBbZm9jdXNPblNob3ddPVwiZmFsc2VcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ2V4cG9ydF9fZGlhbG9nJ1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNldHVwRm9ybVwiPlxuICAgIDxlby1mb3JtLWlucHV0IGNsYXNzPVwibGFiZWwgY2hlY2tib3hcIiBbc2tpcFRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgIFtsYWJlbF09XCInZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2LmRpYWxvZy5vYmplY3RVcmwubGFiZWwnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8ZW8tY2hlY2tib3ggZm9ybUNvbnRyb2xOYW1lPVwiZXhwb3J0Q1NWd2l0aFVybFwiPlxuICAgICAgPC9lby1jaGVja2JveD5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvZm9ybT5cblxuICBAaWYoc2hvd1dhcm5FeHBvcnRDU1ZUaHJlc2hvbGQpe1xuICAgIDxkaXYgY2xhc3M9XCJ0aHJlc2hvbGQtd2FybmluZ1wiPnt7J2VvLnJlc3VsdGxpc3QuZXhwb3J0LmNzdi50aHJlc2hvbGQuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RGlhbG9nRXhwb3J0ID0gZmFsc2VcIlxuICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsIChjbGljayk9XCJleHBvcnRDU1YoKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgdHJhbnNsYXRlPmVvLnJlc3VsdGxpc3QuZXhwb3J0LmNzdi5kaWFsb2cuZXhwb3J0PC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG4iXX0=
@@ -5,6 +5,8 @@ import { ResultListComponent } from './result-list.component';
5
5
  import { ListContainerModule } from '../list-container/list-container.module';
6
6
  import { StoredQueryModule } from '../stored-query/stored-query.module';
7
7
  import { ShortcutsModule } from '../shortcuts/shortcuts.module';
8
+ import { FormElementsModule } from '../form-elements';
9
+ import { ReactiveFormsModule } from '@angular/forms';
8
10
  import * as i0 from "@angular/core";
9
11
  export class ResultListModule {
10
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -12,12 +14,16 @@ export class ResultListModule {
12
14
  ListContainerModule,
13
15
  GridModule,
14
16
  ShortcutsModule,
15
- StoredQueryModule], exports: [ResultListComponent] }); }
17
+ StoredQueryModule,
18
+ FormElementsModule,
19
+ ReactiveFormsModule], exports: [ResultListComponent] }); }
16
20
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, imports: [UiModule,
17
21
  ListContainerModule,
18
22
  GridModule,
19
23
  ShortcutsModule,
20
- StoredQueryModule] }); }
24
+ StoredQueryModule,
25
+ FormElementsModule,
26
+ ReactiveFormsModule] }); }
21
27
  }
22
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, decorators: [{
23
29
  type: NgModule,
@@ -27,10 +33,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
27
33
  ListContainerModule,
28
34
  GridModule,
29
35
  ShortcutsModule,
30
- StoredQueryModule
36
+ StoredQueryModule,
37
+ FormElementsModule,
38
+ ReactiveFormsModule
31
39
  ],
32
40
  exports: [ResultListComponent],
33
41
  declarations: [ResultListComponent]
34
42
  }]
35
43
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBYTlELE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQUZaLG1CQUFtQixhQVBoQyxRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLFVBQVU7WUFDVixlQUFlO1lBQ2YsaUJBQWlCLGFBRVQsbUJBQW1COytHQUdsQixnQkFBZ0IsWUFUekIsUUFBUTtZQUNSLG1CQUFtQjtZQUNuQixVQUFVO1lBQ1YsZUFBZTtZQUNmLGlCQUFpQjs7MkZBS1IsZ0JBQWdCO2tCQVg1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxRQUFRO3dCQUNSLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVaU1vZHVsZX0gZnJvbSAnLi4vdWkvdWkubW9kdWxlJztcbmltcG9ydCB7R3JpZE1vZHVsZX0gZnJvbSAnLi4vZ3JpZC9ncmlkLm1vZHVsZSc7XG5pbXBvcnQge1Jlc3VsdExpc3RDb21wb25lbnR9IGZyb20gJy4vcmVzdWx0LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdENvbnRhaW5lck1vZHVsZX0gZnJvbSAnLi4vbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIubW9kdWxlJztcbmltcG9ydCB7U3RvcmVkUXVlcnlNb2R1bGV9IGZyb20gJy4uL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkubW9kdWxlJztcbmltcG9ydCB7U2hvcnRjdXRzTW9kdWxlfSBmcm9tICcuLi9zaG9ydGN1dHMvc2hvcnRjdXRzLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBVaU1vZHVsZSxcbiAgICBMaXN0Q29udGFpbmVyTW9kdWxlLFxuICAgIEdyaWRNb2R1bGUsXG4gICAgU2hvcnRjdXRzTW9kdWxlLFxuICAgIFN0b3JlZFF1ZXJ5TW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtSZXN1bHRMaXN0Q29tcG9uZW50XSxcbiAgZGVjbGFyYXRpb25zOiBbUmVzdWx0TGlzdENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUmVzdWx0TGlzdE1vZHVsZSB7XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBZW5ELE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQUZaLG1CQUFtQixhQVRoQyxRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLFVBQVU7WUFDVixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixtQkFBbUIsYUFFWCxtQkFBbUI7K0dBR2xCLGdCQUFnQixZQVh6QixRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLFVBQVU7WUFDVixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixtQkFBbUI7OzJGQUtWLGdCQUFnQjtrQkFiNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VpTW9kdWxlfSBmcm9tICcuLi91aS91aS5tb2R1bGUnO1xuaW1wb3J0IHtHcmlkTW9kdWxlfSBmcm9tICcuLi9ncmlkL2dyaWQubW9kdWxlJztcbmltcG9ydCB7UmVzdWx0TGlzdENvbXBvbmVudH0gZnJvbSAnLi9yZXN1bHQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtMaXN0Q29udGFpbmVyTW9kdWxlfSBmcm9tICcuLi9saXN0LWNvbnRhaW5lci9saXN0LWNvbnRhaW5lci5tb2R1bGUnO1xuaW1wb3J0IHtTdG9yZWRRdWVyeU1vZHVsZX0gZnJvbSAnLi4vc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS5tb2R1bGUnO1xuaW1wb3J0IHtTaG9ydGN1dHNNb2R1bGV9IGZyb20gJy4uL3Nob3J0Y3V0cy9zaG9ydGN1dHMubW9kdWxlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRzTW9kdWxlfSBmcm9tICcuLi9mb3JtLWVsZW1lbnRzJztcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgVWlNb2R1bGUsXG4gICAgTGlzdENvbnRhaW5lck1vZHVsZSxcbiAgICBHcmlkTW9kdWxlLFxuICAgIFNob3J0Y3V0c01vZHVsZSxcbiAgICBTdG9yZWRRdWVyeU1vZHVsZSxcbiAgICBGb3JtRWxlbWVudHNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbUmVzdWx0TGlzdENvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW1Jlc3VsdExpc3RDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFJlc3VsdExpc3RNb2R1bGUge1xufVxuIl19