@fundamental-ngx/platform 0.58.0-rc.7 → 0.58.0-rc.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/approval-flow/index.d.ts +2 -0
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +14 -11
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +26 -9
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +125 -12
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +1 -3
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +1 -2
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +3 -4
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +2 -3
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +1 -2
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -3
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +1 -2
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +3 -4
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/form/index.d.ts +6 -2
- package/icon-tab-bar/index.d.ts +61 -10
- package/list/index.d.ts +1 -1
- package/menu/index.d.ts +3 -3
- package/message-popover/index.d.ts +3 -3
- package/package.json +14 -14
- package/settings-generator/index.d.ts +3 -3
- package/table/index.d.ts +1 -1
- package/variant-management/index.d.ts +1 -1
- package/schematics/collection.json +0 -10
- package/schematics/ng-add/index.d.ts +0 -13
- package/schematics/ng-add/index.js +0 -55
- package/schematics/ng-add/index.js.map +0 -1
- package/schematics/ng-add/schema.d.ts +0 -3
- package/schematics/ng-add/schema.js +0 -3
- package/schematics/ng-add/schema.js.map +0 -1
- package/schematics/ng-add/schema.json +0 -15
- package/schematics/utils/package-utils.d.ts +0 -19
- package/schematics/utils/package-utils.js +0 -119
- package/schematics/utils/package-utils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-value-help-dialog.mjs","sources":["../tmp-esm2022/value-help-dialog/models/vhd-data.source.js","../tmp-esm2022/value-help-dialog/models/vhd-strategy.enum.js","../tmp-esm2022/value-help-dialog/models/vhd-type-condition.enum.js","../tmp-esm2022/value-help-dialog/models/vhd-filter-rule.model.js","../tmp-esm2022/value-help-dialog/models/vhd-tab-type.enum.js","../tmp-esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.js","../tmp-esm2022/value-help-dialog/constans/condition-display.function.js","../tmp-esm2022/value-help-dialog/constans/variables.js","../tmp-esm2022/value-help-dialog/directives/condition-count-message.directive.js","../tmp-esm2022/value-help-dialog/components/define-tab/define-tab.component.js","../tmp-esm2022/value-help-dialog/models/vhd-component.model.js","../tmp-esm2022/value-help-dialog/components/select-tab/select-tab.component.js","../tmp-esm2022/value-help-dialog/directives/value-help-filter-def.directive.js","../tmp-esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.js","../tmp-esm2022/value-help-dialog/directives/value-help-column-def.directive.js","../tmp-esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.js","../tmp-esm2022/value-help-dialog/value-help-dialog.module.js","../tmp-esm2022/value-help-dialog/fundamental-ngx-platform-value-help-dialog.js"],"sourcesContent":["import { BehaviorSubject, of, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { BaseDataProvider, DataProvider } from '@fundamental-ngx/platform/shared';\nexport class ValueHelpDialogDataSource {\n /** @hidden */\n get isDataLoading() {\n return this._dataLoading;\n }\n /** @hidden */\n constructor(dataProvider) {\n this.dataProvider = dataProvider;\n /** @hidden */\n this._dataChanges = new BehaviorSubject([]);\n /** @hidden */\n this._onDataRequested$ = new Subject();\n /** @hidden */\n this._onDataReceived$ = new Subject();\n /** @hidden */\n this._dataLoading = false;\n }\n /** @hidden */\n match(predicate) {\n this._onDataRequested$.next();\n this._dataLoading = true;\n let searchParam = new Map();\n if (typeof predicate === 'string') {\n searchParam.set('query', predicate);\n }\n else if (predicate instanceof Map) {\n searchParam = predicate;\n }\n this.dataProvider\n .fetch(searchParam)\n .pipe(take(1))\n .subscribe((result) => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n this._dataChanges.next(result);\n }, () => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n });\n }\n /** @hidden */\n open() {\n return this._dataChanges.asObservable();\n }\n /** @hidden */\n onDataRequested() {\n return this._onDataRequested$.asObservable();\n }\n /** @hidden */\n onDataReceived() {\n return this._onDataReceived$.asObservable();\n }\n /** @hidden */\n close() { }\n}\nexport class ArrayValueHelpDialogDataSource extends ValueHelpDialogDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n }\n}\nexport class ObservableValueHelpDialogDataSource extends ValueHelpDialogDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n }\n}\nexport class VhdDataProvider extends DataProvider {\n /** @hidden */\n constructor(values) {\n super();\n this.values = values;\n }\n /** @hidden */\n fetch(params) {\n let data = this.values;\n const arrayParams = Array.from(params);\n const filterFn = (row) => {\n const rowEntries = Object.entries(row);\n return arrayParams.every(([key, value]) => {\n if (key === '*') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return rowEntries.some(([_rowEntryKey, rowEntryValue]) => String(rowEntryValue).toLowerCase().includes(value.toLowerCase()));\n }\n else {\n return String(row[key]).toLowerCase().includes(value.toLowerCase());\n }\n });\n };\n if (params.size) {\n data = this.values.filter(filterFn);\n }\n return of(data);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWRhdGEuc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9tb2RlbHMvdmhkLWRhdGEuc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBYyxNQUFNLGtDQUFrQyxDQUFDO0FBRTlGLE1BQU0sT0FBTyx5QkFBeUI7SUFXbEMsY0FBYztJQUNkLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLFlBQW1CLFlBQTZCO1FBQTdCLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQWhCaEQsY0FBYztRQUNKLGlCQUFZLEdBQXlCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGNBQWM7UUFDSixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2xELGNBQWM7UUFDSixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpELGNBQWM7UUFDSixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQVFvQixDQUFDO0lBRXBELGNBQWM7SUFDZCxLQUFLLENBQUMsU0FBd0M7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksV0FBVyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDekMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8s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UUFDUCxDQUFDLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQmFzZURhdGFQcm92aWRlciwgRGF0YVByb3ZpZGVyLCBEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG5leHBvcnQgY2xhc3MgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiBpbXBsZW1lbnRzIERhdGFTb3VyY2U8VD4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9kYXRhQ2hhbmdlczogQmVoYXZpb3JTdWJqZWN0PFRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9vbkRhdGFSZXF1ZXN0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfb25EYXRhUmVjZWl2ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9kYXRhTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNEYXRhTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFMb2FkaW5nO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyPFQ+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtYXRjaChwcmVkaWNhdGU/OiBzdHJpbmcgfCBNYXA8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGF0YVJlcXVlc3RlZCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgbGV0IHNlYXJjaFBhcmFtID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzZWFyY2hQYXJhbS5zZXQoJ3F1ZXJ5JywgcHJlZGljYXRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmVkaWNhdGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgIHNlYXJjaFBhcmFtID0gcHJlZGljYXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIC5mZXRjaChzZWFyY2hQYXJhbSlcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXN1bHQ6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRhdGFSZWNlaXZlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhQ2hhbmdlcy5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRGF0YVJlY2VpdmVkJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9wZW4oKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25EYXRhUmVxdWVzdGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVxdWVzdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uRGF0YVJlY2VpdmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVjZWl2ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xvc2UoKTogdm9pZCB7fVxufVxuXG5leHBvcnQgY2xhc3MgQXJyYXlWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+IGV4dGVuZHMgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBUW10pIHtcbiAgICAgICAgc3VwZXIobmV3IEJhc2VEYXRhUHJvdmlkZXIoZGF0YSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+IGV4dGVuZHMgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBPYnNlcnZhYmxlPFRbXT4pIHtcbiAgICAgICAgc3VwZXIobmV3IEJhc2VEYXRhUHJvdmlkZXIoZGF0YSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZoZERhdGFQcm92aWRlcjxSIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIERhdGFQcm92aWRlcjxSPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWVzOiBSW10pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZldGNoKHBhcmFtczogTWFwPHN0cmluZywgc3RyaW5nPik6IE9ic2VydmFibGU8UltdPiB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy52YWx1ZXM7XG4gICAgICAgIGNvbnN0IGFycmF5UGFyYW1zID0gQXJyYXkuZnJvbShwYXJhbXMpO1xuICAgICAgICBjb25zdCBmaWx0ZXJGbiA9IChyb3c6IFIpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0VudHJpZXMgPSBPYmplY3QuZW50cmllcyhyb3cpIGFzIHN0cmluZ1tdW107XG4gICAgICAgICAgICByZXR1cm4gYXJyYXlQYXJhbXMuZXZlcnkoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICcqJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByb3dFbnRyaWVzLnNvbWUoKFtfcm93RW50cnlLZXksIHJvd0VudHJ5VmFsdWVdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHJvd0VudHJ5VmFsdWUpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHJvd1trZXldKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAocGFyYW1zLnNpemUpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLnZhbHVlcy5maWx0ZXIoZmlsdGVyRm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgIH1cbn1cbiJdfQ==","export var VhdDefineIncludeStrategy;\n(function (VhdDefineIncludeStrategy) {\n VhdDefineIncludeStrategy[\"contains\"] = \"contains\";\n VhdDefineIncludeStrategy[\"equalTo\"] = \"equalTo\";\n VhdDefineIncludeStrategy[\"between\"] = \"between\";\n VhdDefineIncludeStrategy[\"startsWith\"] = \"startsWith\";\n VhdDefineIncludeStrategy[\"endsWith\"] = \"endsWith\";\n VhdDefineIncludeStrategy[\"lessThan\"] = \"lessThan\";\n VhdDefineIncludeStrategy[\"lessThanEqual\"] = \"lessThanEqual\";\n VhdDefineIncludeStrategy[\"greaterThan\"] = \"greaterThan\";\n VhdDefineIncludeStrategy[\"greaterThanEqual\"] = \"greaterThanEqual\";\n VhdDefineIncludeStrategy[\"empty\"] = \"empty\";\n})(VhdDefineIncludeStrategy || (VhdDefineIncludeStrategy = {}));\nexport var VhdDefineExcludeStrategy;\n(function (VhdDefineExcludeStrategy) {\n VhdDefineExcludeStrategy[\"not_equalTo\"] = \"not_equalTo\";\n VhdDefineExcludeStrategy[\"not_empty\"] = \"not_empty\";\n})(VhdDefineExcludeStrategy || (VhdDefineExcludeStrategy = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLXN0cmF0ZWd5LmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL21vZGVscy92aGQtc3RyYXRlZ3kuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx3QkFXWDtBQVhELFdBQVksd0JBQXdCO0lBQ2hDLGlEQUFxQixDQUFBO0lBQ3JCLCtDQUFtQixDQUFBO0lBQ25CLCtDQUFtQixDQUFBO0lBQ25CLHFEQUF5QixDQUFBO0lBQ3pCLGlEQUFxQixDQUFBO0lBQ3JCLGlEQUFxQixDQUFBO0lBQ3JCLDJEQUErQixDQUFBO0lBQy9CLHVEQUEyQixDQUFBO0lBQzNCLGlFQUFxQyxDQUFBO0lBQ3JDLDJDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVhXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFXbkM7QUFFRCxNQUFNLENBQU4sSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLHVEQUEyQixDQUFBO0lBQzNCLG1EQUF1QixDQUFBO0FBQzNCLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHtcbiAgICBjb250YWlucyA9ICdjb250YWlucycsXG4gICAgZXF1YWxUbyA9ICdlcXVhbFRvJyxcbiAgICBiZXR3ZWVuID0gJ2JldHdlZW4nLFxuICAgIHN0YXJ0c1dpdGggPSAnc3RhcnRzV2l0aCcsXG4gICAgZW5kc1dpdGggPSAnZW5kc1dpdGgnLFxuICAgIGxlc3NUaGFuID0gJ2xlc3NUaGFuJyxcbiAgICBsZXNzVGhhbkVxdWFsID0gJ2xlc3NUaGFuRXF1YWwnLFxuICAgIGdyZWF0ZXJUaGFuID0gJ2dyZWF0ZXJUaGFuJyxcbiAgICBncmVhdGVyVGhhbkVxdWFsID0gJ2dyZWF0ZXJUaGFuRXF1YWwnLFxuICAgIGVtcHR5ID0gJ2VtcHR5J1xufVxuXG5leHBvcnQgZW51bSBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kge1xuICAgIG5vdF9lcXVhbFRvID0gJ25vdF9lcXVhbFRvJyxcbiAgICBub3RfZW1wdHkgPSAnbm90X2VtcHR5J1xufVxuIl19","export var VhdDefineType;\n(function (VhdDefineType) {\n VhdDefineType[\"include\"] = \"include\";\n VhdDefineType[\"exclude\"] = \"exclude\";\n})(VhdDefineType || (VhdDefineType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLXR5cGUtY29uZGl0aW9uLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL21vZGVscy92aGQtdHlwZS1jb25kaXRpb24uZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3JCLG9DQUFtQixDQUFBO0lBQ25CLG9DQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFZoZERlZmluZVR5cGUge1xuICAgIGluY2x1ZGUgPSAnaW5jbHVkZScsXG4gICAgZXhjbHVkZSA9ICdleGNsdWRlJ1xufVxuIl19","import { VhdDefineIncludeStrategy } from './vhd-strategy.enum';\nimport { VhdDefineType } from './vhd-type-condition.enum';\nexport class BaseEntity {\n /** @hidden */\n constructor(strategy, key) {\n /** @hidden */\n this.key = '*';\n /** @hidden */\n this.value = '';\n /** @hidden */\n this.valueTo = '';\n if (key) {\n this.key = key;\n }\n this.strategy = strategy || VhdDefineIncludeStrategy.equalTo;\n }\n}\nexport class VhdIncludedEntity extends BaseEntity {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.type = VhdDefineType.include;\n }\n}\nexport class VhdExcludedEntity extends BaseEntity {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.type = VhdDefineType.exclude;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWZpbHRlci1ydWxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9tb2RlbHMvdmhkLWZpbHRlci1ydWxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEIsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFVMUQsTUFBTSxPQUFPLFVBQVU7SUFnQm5CLGNBQWM7SUFDZCxZQUFZLFFBQThELEVBQUUsR0FBWTtRQWR4RixjQUFjO1FBQ2QsUUFBRyxHQUFHLEdBQUcsQ0FBQztRQUtWLGNBQWM7UUFDZCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsY0FBYztRQUNkLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFNVCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQztJQUNqRSxDQUFDO0NBQ0o7QUFDRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBVTtJQUFqRDs7UUFDSSxjQUFjO1FBQ2QsU0FBSSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7Q0FBQTtBQUNELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxVQUFVO0lBQWpEOztRQUNJLGNBQWM7UUFDZCxTQUFJLEdBQWtCLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LCBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfSBmcm9tICcuL3ZoZC1zdHJhdGVneS5lbnVtJztcbmltcG9ydCB7IFZoZERlZmluZVR5cGUgfSBmcm9tICcuL3ZoZC10eXBlLWNvbmRpdGlvbi5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBWaGREZWZpbmVFbnRpdHlSdWxlIHtcbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHN0cmF0ZWd5OiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3k7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB2YWx1ZVRvOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNlRW50aXR5IGltcGxlbWVudHMgVmhkRGVmaW5lRW50aXR5UnVsZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAga2V5ID0gJyonO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdHJhdGVneTogVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHwgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdmFsdWUgPSAnJztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbHVlVG8gPSAnJztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbGlkOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihzdHJhdGVneT86IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSB8IFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSwga2V5Pzogc3RyaW5nKSB7XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneSB8fCBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuZXF1YWxUbztcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVmhkSW5jbHVkZWRFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHR5cGU6IFZoZERlZmluZVR5cGUgPSBWaGREZWZpbmVUeXBlLmluY2x1ZGU7XG59XG5leHBvcnQgY2xhc3MgVmhkRXhjbHVkZWRFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHR5cGU6IFZoZERlZmluZVR5cGUgPSBWaGREZWZpbmVUeXBlLmV4Y2x1ZGU7XG59XG4iXX0=","export var VhdTab;\n(function (VhdTab) {\n VhdTab[VhdTab[\"selectFromList\"] = 0] = \"selectFromList\";\n VhdTab[VhdTab[\"defineConditions\"] = 1] = \"defineConditions\";\n VhdTab[VhdTab[\"advancedSearch\"] = 2] = \"advancedSearch\";\n})(VhdTab || (VhdTab = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLXRhYi10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL21vZGVscy92aGQtdGFiLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxNQUlYO0FBSkQsV0FBWSxNQUFNO0lBQ2QsdURBQWMsQ0FBQTtJQUNkLDJEQUFnQixDQUFBO0lBQ2hCLHVEQUFjLENBQUE7QUFDbEIsQ0FBQyxFQUpXLE1BQU0sS0FBTixNQUFNLFFBSWpCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVmhkVGFiIHtcbiAgICBzZWxlY3RGcm9tTGlzdCxcbiAgICBkZWZpbmVDb25kaXRpb25zLFxuICAgIGFkdmFuY2VkU2VhcmNoXG59XG4iXX0=","import { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { VhdTab } from '../../models';\nimport * as i0 from \"@angular/core\";\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class VhdBaseTab {\n /** @hidden */\n get type() {\n return VhdTab.defineConditions;\n }\n /** @hidden */\n constructor(_changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n /** Mobile view */\n this.mobile = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdBaseTab, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.4\", type: VhdBaseTab, isStandalone: true, selector: \"ng-component\", inputs: { uid: \"uid\", tabTitle: \"tabTitle\", mobile: \"mobile\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdBaseTab, decorators: [{\n type: Component,\n args: [{\n template: '',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { uid: [{\n type: Input\n }], tabTitle: [{\n type: Input\n }], mobile: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWJhc2UtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9iYXNlLXRhYi92aGQtYmFzZS10YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBTXRDLGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sVUFBVTtJQWFuQixjQUFjO0lBQ2QsSUFBSSxJQUFJO1FBQ0osT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFxQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQVYxRCxrQkFBa0I7UUFFbEIsV0FBTSxHQUFHLEtBQUssQ0FBQztJQVE4QyxDQUFDOzhHQW5CckQsVUFBVTtrR0FBVixVQUFVLHdJQUpULEVBQUU7OzJGQUlILFVBQVU7a0JBTHRCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25CO3NGQUtHLEdBQUc7c0JBREYsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVmhkVGFiIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBWaGRCYXNlVGFiIHtcbiAgICAvKiogVGFiIFRpdGxlICovXG4gICAgQElucHV0KClcbiAgICB1aWQ6IHN0cmluZztcblxuICAgIC8qKiBUYWIgVGl0bGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYlRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogTW9iaWxlIHZpZXcgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdHlwZSgpOiBWaGRUYWIge1xuICAgICAgICByZXR1cm4gVmhkVGFiLmRlZmluZUNvbmRpdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxufVxuIl19","import { VhdDefineExcludeStrategy, VhdDefineIncludeStrategy } from '../models';\nexport const defaultConditionDisplayFn = (item, filters) => {\n const filter = (filters || []).find((f) => f.key === item.key);\n let value = (() => {\n switch (item.strategy) {\n case VhdDefineIncludeStrategy.empty:\n case VhdDefineExcludeStrategy.not_empty:\n return null;\n case VhdDefineIncludeStrategy.between:\n return `${item.value}...${item.valueTo}`;\n case VhdDefineIncludeStrategy.contains:\n return `*${item.value}*`;\n case VhdDefineIncludeStrategy.equalTo:\n return `=${item.value}`;\n case VhdDefineIncludeStrategy.startsWith:\n return `${item.value}*`;\n case VhdDefineIncludeStrategy.endsWith:\n return `*${item.value}`;\n case VhdDefineIncludeStrategy.greaterThan:\n return `>${item.value}`;\n case VhdDefineIncludeStrategy.greaterThanEqual:\n return `>=${item.value}`;\n case VhdDefineIncludeStrategy.lessThan:\n return `<${item.value}`;\n case VhdDefineIncludeStrategy.lessThanEqual:\n return `<=${item.value}`;\n case VhdDefineExcludeStrategy.not_equalTo:\n return `!(=${item.value})`;\n }\n })();\n if (value && item.type === 'exclude') {\n value = `!(${value})`;\n }\n if (filter) {\n return `${filter.label}: ${value}`;\n }\n return value;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWRpc3BsYXkuZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbnN0YW5zL2NvbmRpdGlvbi1kaXNwbGF5LmZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsd0JBQXdCLEVBSTNCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3JDLElBQTJDLEVBQzNDLE9BQXFCLEVBQ1IsRUFBRTtJQUNmLE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDZCxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixLQUFLLHdCQUF3QixDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLHdCQUF3QixDQUFDLFNBQVM7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLEtBQUssd0JBQXdCLENBQUMsT0FBTztnQkFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLEtBQUssd0JBQXdCLENBQUMsUUFBUTtnQkFDbEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUM3QixLQUFLLHdCQUF3QixDQUFDLE9BQU87Z0JBQ2pDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsS0FBSyx3QkFBd0IsQ0FBQyxVQUFVO2dCQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQzVCLEtBQUssd0JBQXdCLENBQUMsUUFBUTtnQkFDbEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixLQUFLLHdCQUF3QixDQUFDLFdBQVc7Z0JBQ3JDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsS0FBSyx3QkFBd0IsQ0FBQyxnQkFBZ0I7Z0JBQzFDLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsS0FBSyx3QkFBd0IsQ0FBQyxRQUFRO2dCQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLEtBQUssd0JBQXdCLENBQUMsYUFBYTtnQkFDdkMsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixLQUFLLHdCQUF3QixDQUFDLFdBQVc7Z0JBQ3JDLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDTCxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25DLEtBQUssR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1QsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBWaGRGaWx0ZXIsXG4gICAgVmhkSW5jbHVkZWRFbnRpdHlcbn0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm4gPSAoXG4gICAgaXRlbTogVmhkSW5jbHVkZWRFbnRpdHkgfCBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBmaWx0ZXJzPzogVmhkRmlsdGVyW11cbik6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IChmaWx0ZXJzIHx8IFtdKS5maW5kKChmKSA9PiBmLmtleSA9PT0gaXRlbS5rZXkpO1xuICAgIGxldCB2YWx1ZSA9ICgoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuZW1wdHk6XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneS5ub3RfZW1wdHk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5iZXR3ZWVuOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpdGVtLnZhbHVlfS4uLiR7aXRlbS52YWx1ZVRvfWA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5jb250YWluczpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCoke2l0ZW0udmFsdWV9KmA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5lcXVhbFRvOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPSR7aXRlbS52YWx1ZX1gO1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuc3RhcnRzV2l0aDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXRlbS52YWx1ZX0qYDtcbiAgICAgICAgICAgIGNhc2UgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LmVuZHNXaXRoOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKiR7aXRlbS52YWx1ZX1gO1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuZ3JlYXRlclRoYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA+JHtpdGVtLnZhbHVlfWA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5ncmVhdGVyVGhhbkVxdWFsOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPj0ke2l0ZW0udmFsdWV9YDtcbiAgICAgICAgICAgIGNhc2UgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5Lmxlc3NUaGFuOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPCR7aXRlbS52YWx1ZX1gO1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kubGVzc1RoYW5FcXVhbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYDw9JHtpdGVtLnZhbHVlfWA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneS5ub3RfZXF1YWxUbzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCEoPSR7aXRlbS52YWx1ZX0pYDtcbiAgICAgICAgfVxuICAgIH0pKCk7XG4gICAgaWYgKHZhbHVlICYmIGl0ZW0udHlwZSA9PT0gJ2V4Y2x1ZGUnKSB7XG4gICAgICAgIHZhbHVlID0gYCEoJHt2YWx1ZX0pYDtcbiAgICB9XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgICByZXR1cm4gYCR7ZmlsdGVyLmxhYmVsfTogJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbn07XG4iXX0=","export const MAX_CHARACTER_HINT_COUNT = 7;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9jb25zdGFucy92YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE1BWF9DSEFSQUNURVJfSElOVF9DT1VOVCA9IDc7XG4iXX0=","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\nimport { NG_VALIDATORS } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class ConditionCountMessageDirective {\n /** Max characters allowed */\n set maxCharacters(value) {\n this._maxCharacters = coerceNumberProperty(value);\n }\n get maxCharacters() {\n return this._maxCharacters;\n }\n /** @hidden */\n constructor() {\n /** @hidden */\n this._maxCharacters = Number.MAX_SAFE_INTEGER;\n this.validator = this.checkError();\n }\n /** @hidden */\n validate(control) {\n return this.validator(control);\n }\n /** @hidden */\n checkError() {\n return (control) => {\n if (control.dirty && control.value && control.value.length > this.maxCharacters) {\n return {\n maxCharacters: {\n actualLength: control.value.length,\n requiredLength: this.maxCharacters\n }\n };\n }\n return null;\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConditionCountMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ConditionCountMessageDirective, isStandalone: true, selector: \"[fdp-condition-count-message]\", inputs: { maxCharacters: \"maxCharacters\" }, providers: [{ provide: NG_VALIDATORS, useExisting: ConditionCountMessageDirective, multi: true }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConditionCountMessageDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fdp-condition-count-message]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ConditionCountMessageDirective, multi: true }],\n standalone: true\n }]\n }], ctorParameters: () => [], propDecorators: { maxCharacters: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWNvdW50LW1lc3NhZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9kaXJlY3RpdmVzL2NvbmRpdGlvbi1jb3VudC1tZXNzYWdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQWdDLGFBQWEsRUFBaUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRNUcsTUFBTSxPQUFPLDhCQUE4QjtJQUN2Qyw2QkFBNkI7SUFDN0IsSUFDSSxhQUFhLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFXLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQVFELGNBQWM7SUFDZDtRQVBBLGNBQWM7UUFDTixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQU83QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVEsQ0FBQyxPQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDTixVQUFVO1FBQ2QsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlFLE9BQU87b0JBQ0gsYUFBYSxFQUFFO3dCQUNYLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU07d0JBQ2xDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYTtxQkFDckM7aUJBQ0osQ0FBQztZQUNOLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7SUFDTixDQUFDOzhHQXZDUSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3SEFINUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7MkZBR3hGLDhCQUE4QjtrQkFOMUMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDakcsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQUlPLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VdJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBDb25kaXRpb25Db3VudE1lc3NhZ2VEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1dLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uQ291bnRNZXNzYWdlRGlyZWN0aXZlIHtcbiAgICAvKiogTWF4IGNoYXJhY3RlcnMgYWxsb3dlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heENoYXJhY3RlcnModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9tYXhDaGFyYWN0ZXJzID0gPG51bWJlcj5jb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBtYXhDaGFyYWN0ZXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhDaGFyYWN0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF4Q2hhcmFjdGVycyA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRvciA9IHRoaXMuY2hlY2tFcnJvcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdmFsaWRhdGUoY29udHJvbDogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcihjb250cm9sKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgY2hlY2tFcnJvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udHJvbC5kaXJ0eSAmJiBjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gdGhpcy5tYXhDaGFyYWN0ZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4Q2hhcmFjdGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsTGVuZ3RoOiBjb250cm9sLnZhbHVlLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiB0aGlzLm1heENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","/* eslint-disable @typescript-eslint/member-ordering */\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FormControlComponent, FormInputMessageGroupComponent, FormLabelComponent, FormMessageComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ListGroupHeaderDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { MAX_CHARACTER_HINT_COUNT } from '../../constans';\nimport { ConditionCountMessageDirective } from '../../directives/condition-count-message.directive';\nimport { BaseEntity, VhdDefineExcludeStrategy, VhdDefineIncludeStrategy, VhdDefineType, VhdExcludedEntity, VhdIncludedEntity } from '../../models';\nimport { VhdBaseTab } from '../base-tab/vhd-base-tab.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nclass ExtendedBaseEntity extends BaseEntity {\n}\nclass ExtendedIncludedEntity extends VhdIncludedEntity {\n}\nclass ExtendedExcludedEntity extends VhdExcludedEntity {\n}\nlet titleUniqueId = 0;\nexport class DefineTabComponent extends VhdBaseTab {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.defaultId = `fd-title-id-${titleUniqueId++}`;\n /** @hidden */\n this.defaultSelectId = `fd-select-title-id-${titleUniqueId++}`;\n /** title id for the table */\n this.titleId = this.defaultId;\n /** seelcted value id for the table */\n this.selectedId = this.defaultSelectId;\n /** @hidden */\n this.conditions = [];\n /** @hidden */\n this.strategyLabels = {};\n /** @hidden */\n this.includeChange = new EventEmitter();\n /** @hidden */\n this.excludeChange = new EventEmitter();\n /** @hidden */\n this.conditionChange = new EventEmitter();\n /** @hidden */\n this._conditions = [];\n /** @hidden */\n this._definePanelState = {\n included: false,\n excluded: false\n };\n /** @hidden */\n this._rules = {\n maxCharactersHintCount: MAX_CHARACTER_HINT_COUNT\n };\n /** @hidden */\n this._strategyIncludeValues = VhdDefineIncludeStrategy;\n /** @hidden */\n this._strategyExcludeValues = VhdDefineExcludeStrategy;\n /** @hidden */\n this._defineTypes = VhdDefineType;\n /** @hidden */\n this._includeStrategy = [];\n /** @hidden */\n this._excludeStrategy = [];\n }\n /** @hidden */\n ngOnChanges(changes) {\n if ('conditions' in changes) {\n this._conditions = this.conditions || [];\n this._initializeConditions();\n }\n }\n /** @hidden */\n ngAfterViewInit() {\n this._refreshStrategies();\n }\n /** @hidden Track function for main data */\n _trackByKeyAndType(_index, item) {\n if (item) {\n return item.id + item.key + item.type;\n }\n return undefined;\n }\n /** @hidden */\n _onSelectStrategy() {\n this._filterChanged();\n }\n /** @hidden */\n _filterChanged() {\n this.conditionChange.emit(this._conditions);\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden */\n addEmptyCondition() {\n const item = new ExtendedBaseEntity();\n item.value = '';\n this._conditions.push(item);\n this._filterChanged();\n }\n /** @hidden */\n removeCondition(index) {\n this._conditions.splice(index, 1);\n this._initializeConditions();\n this._filterChanged();\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden */\n _validateConditionValue(item, valid) {\n item.valid = Array.isArray(valid) ? valid.every(Boolean) : !!valid;\n this._filterChanged();\n }\n /** @hidden */\n _refreshStrategies() {\n this._includeStrategy = Object.keys(VhdDefineIncludeStrategy).map((key) => ({\n key,\n type: VhdDefineType.include\n }));\n this._excludeStrategy = Object.keys(VhdDefineExcludeStrategy).map((key) => ({\n key,\n type: VhdDefineType.exclude\n }));\n }\n /** @hidden */\n _initializeConditions() {\n if (this._conditions.length === 0) {\n this.addEmptyCondition();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DefineTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: DefineTabComponent, isStandalone: true, selector: \"fdp-define-tab\", inputs: { titleId: \"titleId\", selectedId: \"selectedId\", conditions: \"conditions\", strategyLabels: \"strategyLabels\" }, outputs: { includeChange: \"includeChange\", excludeChange: \"excludeChange\", conditionChange: \"conditionChange\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"<h5 [id]=\\\"titleId\\\" role=\\\"heading\\\" aria-level=\\\"5\\\" fd-title class=\\\"define-condition-title\\\">\\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\\n</h5>\\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\\n <fd-layout-grid class=\\\"condition-row\\\">\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"4\\\">\\n <label id=\\\"CONDITIONPANEL_OPERATOR_LABEL\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n CONDITIONPANEL_OPERATOR_LABEL\\n </label>\\n <label [id]=\\\"selectedId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\\n | fdTranslate: { value: item.strategy }\\n }}</label\\n >\\n <fd-select\\n class=\\\"vhd-condition-filters\\\"\\n fdLayoutGridCol\\n colGrow\\n [class.fd-select-custom-class]=\\\"false\\\"\\n #sttr\\n [controlTemplate]=\\\"customSelectTemplate\\\"\\n [name]=\\\"uid + '-' + type + '-strategy-' + item.id\\\"\\n [(ngModel)]=\\\"item.strategy\\\"\\n (valueChange)=\\\"_filterChanged()\\\"\\n role=\\\"combobox\\\"\\n aria-roledescription=\\\"select\\\"\\n aria-haspopup=\\\"listbox\\\"\\n [inline]=\\\"false\\\"\\n [ariaLabelledBy]=\\\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\\\"\\n >\\n @if (_includeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _includeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.include, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n @if (_excludeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _excludeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.exclude, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n </fd-select>\\n </div>\\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\\n <div fdLayoutGridCol colGrow>\\n <div fdLayoutGridRow>\\n @if (item.strategy === _strategyIncludeValues.between) {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\\\"\\n placeholder=\\\"from\\\"\\n required\\n [state]=\\\"fromModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-from-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #fromModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\\\"\\n required\\n [state]=\\\"toModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-to-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #toModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.valueTo\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n } @else {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group>\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\\\"\\n [state]=\\\"valueModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-value-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, !!valueModel.valid)\\\"\\n #valueModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n @if (valueModel.invalid) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n }\\n </fd-form-input-message-group>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n <div class=\\\"action-col\\\" fdLayoutGridCol colGrow>\\n <button\\n fd-button\\n [ariaLabel]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n glyph=\\\"decline\\\"\\n [title]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"removeCondition(i)\\\"\\n ></button>\\n </div>\\n </div>\\n </fd-layout-grid>\\n}\\n<fd-layout-grid class=\\\"condition-row new-condition-row\\\" [noGap]=\\\"true\\\">\\n <div fdLayoutGridRow>\\n <div fdLayoutGridCol colGrow> </div>\\n <div fdLayoutGridCol class=\\\"action-col\\\">\\n <button\\n fd-button\\n [attr.aria-label]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n [label]=\\\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\\\"\\n [title]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"addEmptyCondition()\\\"\\n ></button>\\n </div>\\n </div>\\n</fd-layout-grid>\\n<ng-template #conditionStrategyOption let-type=\\\"type\\\" let-strategy=\\\"strategy\\\">\\n @switch (strategy.key) {\\n @case ('contains') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\\n }\\n @case ('equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\\n }\\n @case ('between') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\\n }\\n @case ('startsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\\n }\\n @case ('endsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\\n }\\n @case ('lessThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\\n }\\n @case ('lessThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\\n }\\n @case ('greaterThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\\n }\\n @case ('greaterThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\\n }\\n @case ('empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\\n }\\n @case ('not_equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\\n }\\n @case ('not_empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\\n }\\n }\\n</ng-template>\\n<ng-template #countError let-count>\\n @if (count && count > 7) {\\n <fd-form-message type=\\\"error\\\">\\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\\n </fd-form-message>\\n }\\n</ng-template>\\n<ng-template #customSelectTemplate let-textValue>\\n {{ textValue }}\\n</ng-template>\\n\", styles: [\".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:1rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\\n\"], dependencies: [{ kind: \"component\", type: TitleComponent, selector: \"[fd-title], [fdTitle]\", inputs: [\"headerSize\", \"wrap\"], exportAs: [\"fd-title\"] }, { kind: \"component\", type: LayoutGridComponent, selector: \"fd-layout-grid, [fdLayoutGrid]\", inputs: [\"class\", \"noGap\", \"noHorizontalGap\", \"noVerticalGap\"] }, { kind: \"directive\", type: LayoutGridRowDirective, selector: \"[fd-layout-grid-row], [fdLayoutGridRow]\" }, { kind: \"directive\", type: LayoutGridColDirective, selector: \"[fd-layout-grid-col], [fdLayoutGridCol]\", inputs: [\"fdLayoutGridCol\", \"colGrow\", \"colMd\", \"colLg\", \"colXl\", \"colOffset\", \"colOffsetMd\", \"colOffsetLg\", \"colOffsetXl\", \"class\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"component\", type: SelectComponent, selector: \"fd-select\", inputs: [\"extendedBodyTemplate\", \"scrollStrategy\", \"textOverflow\", \"controlId\", \"state\", \"mobile\", \"stateMessage\", \"disabled\", \"required\", \"readonly\", \"placeholder\", \"value\", \"maxHeight\", \"glyph\", \"glyphFont\", \"closeOnOutsideClick\", \"fillControlMode\", \"controlTemplate\", \"appendTo\", \"unselectMissingOption\", \"typeaheadDebounceInterval\", \"ariaLabelledBy\", \"ariaLabel\", \"mobileConfig\", \"inline\", \"selectControlClass\", \"selectDropdownButtonClass\", \"advancedStateMessage\", \"tabOutStrategy\", \"compareWith\"], outputs: [\"isOpenChange\", \"valueChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: ListGroupHeaderDirective, selector: \"[fdListGroupHeader], [fd-list-group-header]\", inputs: [\"nativeElementId\"], outputs: [\"keyDown\"] }, { kind: \"directive\", type: ListTitleDirective, selector: \"[fd-list-title], [fdListTitle]\", inputs: [\"wrap\", \"truncate\"] }, { kind: \"component\", type: OptionComponent, selector: \"[fd-option], fd-option\", inputs: [\"id\", \"value\", \"disabled\"], outputs: [\"selectionChange\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: FormInputMessageGroupComponent, selector: \"fd-form-input-message-group\", inputs: [\"triggers\", \"closeOnOutsideClick\", \"fillControlMode\", \"noArrow\", \"closeOnEscapeKey\", \"placement\", \"placementContainer\", \"isOpen\", \"preventSpaceKeyScroll\"], outputs: [\"isOpenChange\"] }, { kind: \"component\", type: FormControlComponent, selector: \"input[fd-form-control], textarea[fd-form-control]\", inputs: [\"state\", \"type\", \"class\", \"ariaLabel\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: ConditionCountMessageDirective, selector: \"[fdp-condition-count-message]\", inputs: [\"maxCharacters\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"component\", type: FormMessageComponent, selector: \"fd-form-message\", inputs: [\"type\", \"static\", \"embedded\", \"class\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DefineTabComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-define-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n TitleComponent,\n LayoutGridComponent,\n LayoutGridRowDirective,\n LayoutGridColDirective,\n FormLabelComponent,\n SelectComponent,\n FormsModule,\n ListGroupHeaderDirective,\n ListTitleDirective,\n OptionComponent,\n NgTemplateOutlet,\n FormInputMessageGroupComponent,\n FormControlComponent,\n ConditionCountMessageDirective,\n ButtonComponent,\n FormMessageComponent,\n FdTranslatePipe\n ], template: \"<h5 [id]=\\\"titleId\\\" role=\\\"heading\\\" aria-level=\\\"5\\\" fd-title class=\\\"define-condition-title\\\">\\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\\n</h5>\\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\\n <fd-layout-grid class=\\\"condition-row\\\">\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"4\\\">\\n <label id=\\\"CONDITIONPANEL_OPERATOR_LABEL\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n CONDITIONPANEL_OPERATOR_LABEL\\n </label>\\n <label [id]=\\\"selectedId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\\n | fdTranslate: { value: item.strategy }\\n }}</label\\n >\\n <fd-select\\n class=\\\"vhd-condition-filters\\\"\\n fdLayoutGridCol\\n colGrow\\n [class.fd-select-custom-class]=\\\"false\\\"\\n #sttr\\n [controlTemplate]=\\\"customSelectTemplate\\\"\\n [name]=\\\"uid + '-' + type + '-strategy-' + item.id\\\"\\n [(ngModel)]=\\\"item.strategy\\\"\\n (valueChange)=\\\"_filterChanged()\\\"\\n role=\\\"combobox\\\"\\n aria-roledescription=\\\"select\\\"\\n aria-haspopup=\\\"listbox\\\"\\n [inline]=\\\"false\\\"\\n [ariaLabelledBy]=\\\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\\\"\\n >\\n @if (_includeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _includeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.include, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n @if (_excludeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _excludeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.exclude, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n </fd-select>\\n </div>\\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\\n <div fdLayoutGridCol colGrow>\\n <div fdLayoutGridRow>\\n @if (item.strategy === _strategyIncludeValues.between) {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\\\"\\n placeholder=\\\"from\\\"\\n required\\n [state]=\\\"fromModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-from-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #fromModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\\\"\\n required\\n [state]=\\\"toModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-to-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #toModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.valueTo\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n } @else {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group>\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\\\"\\n [state]=\\\"valueModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-value-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, !!valueModel.valid)\\\"\\n #valueModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n @if (valueModel.invalid) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n }\\n </fd-form-input-message-group>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n <div class=\\\"action-col\\\" fdLayoutGridCol colGrow>\\n <button\\n fd-button\\n [ariaLabel]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n glyph=\\\"decline\\\"\\n [title]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"removeCondition(i)\\\"\\n ></button>\\n </div>\\n </div>\\n </fd-layout-grid>\\n}\\n<fd-layout-grid class=\\\"condition-row new-condition-row\\\" [noGap]=\\\"true\\\">\\n <div fdLayoutGridRow>\\n <div fdLayoutGridCol colGrow> </div>\\n <div fdLayoutGridCol class=\\\"action-col\\\">\\n <button\\n fd-button\\n [attr.aria-label]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n [label]=\\\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\\\"\\n [title]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"addEmptyCondition()\\\"\\n ></button>\\n </div>\\n </div>\\n</fd-layout-grid>\\n<ng-template #conditionStrategyOption let-type=\\\"type\\\" let-strategy=\\\"strategy\\\">\\n @switch (strategy.key) {\\n @case ('contains') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\\n }\\n @case ('equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\\n }\\n @case ('between') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\\n }\\n @case ('startsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\\n }\\n @case ('endsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\\n }\\n @case ('lessThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\\n }\\n @case ('lessThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\\n }\\n @case ('greaterThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\\n }\\n @case ('greaterThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\\n }\\n @case ('empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\\n }\\n @case ('not_equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\\n }\\n @case ('not_empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\\n }\\n }\\n</ng-template>\\n<ng-template #countError let-count>\\n @if (count && count > 7) {\\n <fd-form-message type=\\\"error\\\">\\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\\n </fd-form-message>\\n }\\n</ng-template>\\n<ng-template #customSelectTemplate let-textValue>\\n {{ textValue }}\\n</ng-template>\\n\", styles: [\".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:1rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\\n\"] }]\n }], propDecorators: { titleId: [{\n type: Input\n }], selectedId: [{\n type: Input\n }], conditions: [{\n type: Input\n }], strategyLabels: [{\n type: Input\n }], includeChange: [{\n type: Output\n }], excludeChange: [{\n type: Output\n }], conditionChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvZGVmaW5lLXRhYi9kZWZpbmUtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9kZWZpbmUtdGFiL2RlZmluZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FB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S0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBTU4sYUFBYTtzQkFEWixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgRm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50LFxuICAgIEZvcm1MYWJlbENvbXBvbmVudCxcbiAgICBGb3JtTWVzc2FnZUNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLCBMYXlvdXRHcmlkQ29tcG9uZW50LCBMYXlvdXRHcmlkUm93RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xheW91dC1ncmlkJztcbmltcG9ydCB7IExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSwgTGlzdFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50LCBTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2VsZWN0JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBNQVhfQ0hBUkFDVEVSX0hJTlRfQ09VTlQgfSBmcm9tICcuLi8uLi9jb25zdGFucyc7XG5pbXBvcnQgeyBDb25kaXRpb25Db3VudE1lc3NhZ2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbmRpdGlvbi1jb3VudC1tZXNzYWdlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEJhc2VFbnRpdHksXG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGREZWZpbmVUeXBlLFxuICAgIFZoZEV4Y2x1ZGVkRW50aXR5LFxuICAgIFZoZEluY2x1ZGVkRW50aXR5XG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBWaGRCYXNlVGFiIH0gZnJvbSAnLi4vYmFzZS10YWIvdmhkLWJhc2UtdGFiLmNvbXBvbmVudCc7XG5cbmNsYXNzIEV4dGVuZGVkQmFzZUVudGl0eSBleHRlbmRzIEJhc2VFbnRpdHkge1xuICAgIGlkPzogbnVtYmVyO1xufVxuXG5jbGFzcyBFeHRlbmRlZEluY2x1ZGVkRW50aXR5IGV4dGVuZHMgVmhkSW5jbHVkZWRFbnRpdHkge1xuICAgIGlkPzogbnVtYmVyO1xufVxuXG5jbGFzcyBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5IGV4dGVuZHMgVmhkRXhjbHVkZWRFbnRpdHkge1xuICAgIGlkPzogbnVtYmVyO1xufVxuXG5sZXQgdGl0bGVVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWRlZmluZS10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kZWZpbmUtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZGVmaW5lLXRhYi5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgTGlzdFRpdGxlRGlyZWN0aXZlLFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIENvbmRpdGlvbkNvdW50TWVzc2FnZURpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZWZpbmVUYWJDb21wb25lbnQgZXh0ZW5kcyBWaGRCYXNlVGFiIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0SWQgPSBgZmQtdGl0bGUtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0U2VsZWN0SWQgPSBgZmQtc2VsZWN0LXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogdGl0bGUgaWQgZm9yIHRoZSB0YWJsZSAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlSWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdElkO1xuXG4gICAgLyoqIHNlZWxjdGVkIHZhbHVlIGlkIGZvciB0aGUgdGFibGUgICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZElkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZWxlY3RJZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBjb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0cmF0ZWd5TGFiZWxzOiB7IFtrZXkgaW4ga2V5b2YgKHR5cGVvZiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCB0eXBlb2YgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KV0/OiBzdHJpbmcgfSA9XG4gICAgICAgIHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbmNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjb25kaXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lUGFuZWxTdGF0ZSA9IHtcbiAgICAgICAgaW5jbHVkZWQ6IGZhbHNlLFxuICAgICAgICBleGNsdWRlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnVsZXMgPSB7XG4gICAgICAgIG1heENoYXJhY3RlcnNIaW50Q291bnQ6IE1BWF9DSEFSQUNURVJfSElOVF9DT1VOVFxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzID0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzID0gVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lVHlwZXMgPSBWaGREZWZpbmVUeXBlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5jbHVkZVN0cmF0ZWd5OiBTdGF0ZWd5SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGNsdWRlU3RyYXRlZ3k6IFN0YXRlZ3lJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2NvbmRpdGlvbnMnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmRpdGlvbnMgPSAodGhpcy5jb25kaXRpb25zIGFzIEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXSkgfHwgW107XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hTdHJhdGVnaWVzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIG1haW4gZGF0YSAqL1xuICAgIF90cmFja0J5S2V5QW5kVHlwZShcbiAgICAgICAgX2luZGV4OiBudW1iZXIsXG4gICAgICAgIGl0ZW06IEV4dGVuZGVkSW5jbHVkZWRFbnRpdHkgfCBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5XG4gICAgKTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmlkICsgaXRlbS5rZXkgKyBpdGVtLnR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VsZWN0U3RyYXRlZ3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2NvbmRpdGlvbnMpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZEVtcHR5Q29uZGl0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtID0gbmV3IEV4dGVuZGVkQmFzZUVudGl0eSgpO1xuICAgICAgICBpdGVtLnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuX2NvbmRpdGlvbnMucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uZGl0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB0aGlzLl9maWx0ZXJDaGFuZ2VkKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbTogRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSB8IEV4dGVuZGVkRXhjbHVkZWRFbnRpdHksIHZhbGlkOiBib29sZWFuIHwgYm9vbGVhbltdKTogdm9pZCB7XG4gICAgICAgIGl0ZW0udmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbGlkKSA/IHZhbGlkLmV2ZXJ5KEJvb2xlYW4pIDogISF2YWxpZDtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFN0cmF0ZWdpZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luY2x1ZGVTdHJhdGVneSA9IE9iamVjdC5rZXlzKFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB0eXBlOiBWaGREZWZpbmVUeXBlLmluY2x1ZGVcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLl9leGNsdWRlU3RyYXRlZ3kgPSBPYmplY3Qua2V5cyhWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kpLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdHlwZTogVmhkRGVmaW5lVHlwZS5leGNsdWRlXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVDb25kaXRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlDb25kaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuaW50ZXJmYWNlIFN0YXRlZ3lJdGVtIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xufVxuIiwiPGg1IFtpZF09XCJ0aXRsZUlkXCIgcm9sZT1cImhlYWRpbmdcIiBhcmlhLWxldmVsPVwiNVwiIGZkLXRpdGxlIGNsYXNzPVwiZGVmaW5lLWNvbmRpdGlvbi10aXRsZVwiPlxuICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25UaXRsZScgfCBmZFRyYW5zbGF0ZSB9fVxuPC9oNT5cbkBmb3IgKGl0ZW0gb2YgX2NvbmRpdGlvbnM7IHRyYWNrIF90cmFja0J5S2V5QW5kVHlwZShpLCBpdGVtKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8ZmQtbGF5b3V0LWdyaWQgY2xhc3M9XCJjb25kaXRpb24tcm93XCI+XG4gICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICBDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RlZElkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uU2VsZWN0ZWRWYWx1ZUhpZGRlbkExMXlMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBpdGVtLnN0cmF0ZWd5IH1cbiAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aGQtY29uZGl0aW9uLWZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICBmZExheW91dEdyaWRDb2xcbiAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWN1c3RvbS1jbGFzc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICNzdHRyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sVGVtcGxhdGVdPVwiY3VzdG9tU2VsZWN0VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1zdHJhdGVneS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5zdHJhdGVneVwiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJfZmlsdGVyQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwidGl0bGVJZCArICcgJyArICdDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTCcgKyAnICcgKyBzZWxlY3RlZElkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2luY2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJJbmNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2luY2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuaW5jbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2V4Y2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJFeGNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2V4Y2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuZXhjbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5zdHJhdGVneSAhPT0gX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcy5lbXB0eSAmJiBpdGVtLnN0cmF0ZWd5ICE9PSBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzLm5vdF9lbXB0eSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnN0cmF0ZWd5ID09PSBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzLmJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwIFt0cmlnZ2Vyc109XCJbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLWNvbmRpdGlvbi1jb3VudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heENoYXJhY3RlcnNdPVwiX3J1bGVzLm1heENoYXJhY3RlcnNIaW50Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkZyb21QbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJmcm9tTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1mcm9tLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJfdmFsaWRhdGVDb25kaXRpb25WYWx1ZShpdGVtLCBbISFmcm9tTW9kZWwudmFsaWQsICEhdG9Nb2RlbC52YWxpZF0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZnJvbU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb3VudEVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY29sR3Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cCBbdHJpZ2dlcnNdPVwiWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkcC1jb25kaXRpb24tY291bnQtbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhDaGFyYWN0ZXJzXT1cIl9ydWxlcy5tYXhDaGFyYWN0ZXJzSGludENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Ub1BsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJ0b01vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctdG8tJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW0sIFshIWZyb21Nb2RlbC52YWxpZCwgISF0b01vZGVsLnZhbGlkXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0b01vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlVG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlLmxlbmd0aCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4Q2hhcmFjdGVyc109XCJfcnVsZXMubWF4Q2hhcmFjdGVyc0hpbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVmFsdWVQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInZhbHVlTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy12YWx1ZS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbSwgISF2YWx1ZU1vZGVsLnZhbGlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhbHVlTW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodmFsdWVNb2RlbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY29sXCIgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29uZGl0aW9uKGkpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtZ3JpZD5cbn1cbjxmZC1sYXlvdXQtZ3JpZCBjbGFzcz1cImNvbmRpdGlvbi1yb3cgbmV3LWNvbmRpdGlvbi1yb3dcIiBbbm9HYXBdPVwidHJ1ZVwiPlxuICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PiZuYnNwOzwvZGl2PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjbGFzcz1cImFjdGlvbi1jb2xcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEVtcHR5Q29uZGl0aW9uKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZmQtbGF5b3V0LWdyaWQ+XG48bmctdGVtcGxhdGUgI2NvbmRpdGlvblN0cmF0ZWd5T3B0aW9uIGxldC10eXBlPVwidHlwZVwiIGxldC1zdHJhdGVneT1cInN0cmF0ZWd5XCI+XG4gICAgQHN3aXRjaCAoc3RyYXRlZ3kua2V5KSB7XG4gICAgICAgIEBjYXNlICgnY29udGFpbnMnKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbENvbnRhaW5zJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdiZXR3ZWVuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxCZXR3ZWVuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzdGFydHNXaXRoJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxTdGFydHNXaXRoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbmRzV2l0aCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW5kc1dpdGgnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2xlc3NUaGFuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxMZXNzVGhhbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbGVzc1RoYW5FcXVhbCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsTGVzc1RoYW5FcXVhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZ3JlYXRlclRoYW4nKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdncmVhdGVyVGhhbkVxdWFsJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxHcmVhdGVyVGhhbkVxdWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbXB0eScpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW1wdHknIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ25vdF9lcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxOb3RFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdub3RfZW1wdHknKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbE5vdEVtcHR5JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb3VudEVycm9yIGxldC1jb3VudD5cbiAgICBAaWYgKGNvdW50ICYmIGNvdW50ID4gNykge1xuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIHR5cGU9XCJlcnJvclwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbk1heENvdW50RXJyb3InIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IDcgfSB9fVxuICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjdXN0b21TZWxlY3RUZW1wbGF0ZSBsZXQtdGV4dFZhbHVlPlxuICAgIHt7IHRleHRWYWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","export class VhdComponent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWNvbXBvbmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvbW9kZWxzL3ZoZC1jb21wb25lbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQixZQUFZO0NBRWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3ZhbHVlLWhlbHAtY29sdW1uLWRlZi5kaXJlY3RpdmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmhkQ29tcG9uZW50IHtcbiAgICBhYnN0cmFjdCBjb2x1bW5EZWY6IFF1ZXJ5TGlzdDxWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmU+O1xufVxuIl19","/* eslint-disable @typescript-eslint/member-ordering */\nimport { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { FocusableGridDirective, RepeatDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarMiddleDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { InfiniteScrollDirective } from '@fundamental-ngx/core/infinite-scroll';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TableBodyDirective, TableCellDirective, TableComponent, TableHeaderDirective, TableRowDirective, TableTextDirective } from '@fundamental-ngx/core/table';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { startWith } from 'rxjs';\nimport { VhdComponent } from '../../models/vhd-component.model';\nimport { VhdBaseTab } from '../base-tab/vhd-base-tab.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nlet titleUniqueId = 0;\nexport class SelectTabComponent extends VhdBaseTab {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.defaultTitleId = `fd-select-tab-title-id-${titleUniqueId++}`;\n /** @hidden */\n this.defaultCountId = `fd-select-tab-title-count-id-${titleUniqueId++}`;\n /** Select tab title element ID */\n this.selectTabTitleId = this.defaultTitleId;\n /** Select tab count element ID */\n this.selectTabCountId = this.defaultCountId;\n /** Selected items */\n this.selected = [];\n /** Loading state */\n this.loading = false;\n /** Actual filters */\n this.filters = [];\n /** Close dialog immediately after select any row from search table. It'll be skipped if multi option is true */\n this.selection = 'single';\n /** Whether to allow users to select all table entries with one checkbox. */\n this.allowSelectAll = true;\n /** Uniq field from data source */\n this.uniqueKey = 'id';\n /** Count of default mobile header from search table */\n this.defaultMobileHeaders = 2;\n /** Displayed data for search table */\n this.displayedData = [];\n /** Event emitted when row was selected. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.select = new EventEmitter();\n /** @hidden indeterminate flag for `select all` checkbox */\n this._selectedAll = false;\n /** @hidden Shown items count in mobile view */\n this._shownFrom = 0;\n /** @hidden Shown items count in mobile view */\n this._shownCount = 0;\n /** @hidden Current page in desktop view */\n this._currentPage = 0;\n /** @hidden Headers and body for search table */\n this._tableFilters = {\n main: [],\n secondary: []\n };\n /** @hidden */\n this._selectedMap = {};\n /** @hidden */\n this._columnDefMap = new Map();\n /** @hidden */\n this.selectedItems = [];\n /** @hidden */\n this._vhd = inject(VhdComponent, { optional: true });\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden Track function for main data */\n this._trackByTableRowFn = (_index, item) => {\n if (item) {\n return item[this.uniqueKey];\n }\n return undefined;\n };\n }\n /** Selection type getters */\n get isSingleSelection() {\n return this.selection === 'single';\n }\n /** Selection type getters */\n get isOnceSelection() {\n return this.selection === 'once';\n }\n /** Selection type getters */\n get isMultiSelection() {\n return this.selection === 'multi';\n }\n /** @hidden */\n ngAfterViewInit() {\n Promise.resolve(true).then(() => this._checkScrollAndShowMore());\n this._vhd?.columnDef.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._columnDefMap.clear();\n this._vhd?.columnDef.forEach((item) => {\n this._columnDefMap.set(item.column, item);\n });\n });\n }\n /** @hidden */\n ngOnChanges(changes) {\n if ('filters' in changes) {\n this._initializeFilters();\n }\n if ('displayedData' in changes) {\n this._refreshDisplayedData();\n }\n if ('selected' in changes) {\n this.selectedItems = this.selected || [];\n this._refreshSelectedMap();\n this._refreshTristate();\n }\n }\n /** @hidden Track function for filters */\n _trackByFilterFn(_index, item) {\n return item && item.key ? item.key : undefined;\n }\n /** @hidden Show more elements */\n _showMoreElements() {\n if (this.pageSize && this._shownCount !== this.displayedData.length) {\n this._shownCount += this.pageSize;\n this._shownCount = Math.min(this._shownCount, this.displayedData.length);\n }\n else {\n this._shownCount = this.displayedData.length;\n }\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden Refresh page in desktop view */\n _updatePage(pageNumber = 1) {\n if (this.pageSize) {\n this._currentPage = pageNumber;\n this._shownFrom = (pageNumber - 1) * this.pageSize;\n this._shownCount = Math.min(this._shownFrom + this.pageSize, this.displayedData.length);\n }\n else {\n this._shownCount = this.displayedData.length;\n }\n }\n /** @hidden Method toggle selected state for all items */\n _toggleAllRows() {\n if (this._selectedAll) {\n this.selectedItems = [];\n }\n else {\n this.selectedItems = this.displayedData;\n }\n this.select.emit(this.selectedItems);\n this._refreshSelectedMap();\n this._refreshTristate();\n }\n /** @hidden Method toggle selected state for one items */\n _toggleSelectRow(item) {\n if (this.isMultiSelection) {\n const isSelected = this._selectedMap[item[this.uniqueKey]];\n if (isSelected) {\n this.selectedItems = this.selectedItems.filter((s) => s[this.uniqueKey] !== item[this.uniqueKey]);\n }\n else {\n this.selectedItems.push(item);\n }\n this._selectedMap[item[this.uniqueKey]] = !this._selectedMap[item[this.uniqueKey]];\n }\n else {\n this._clearSelectedItems();\n this.selectedItems = [item];\n }\n this.select.emit(this.selectedItems);\n this._refreshTristate();\n }\n /** @hidden */\n _checkScrollAndShowMore() {\n if (this.mobile) {\n return;\n }\n if (this.displayedData.length &&\n this._shownCount !== this.displayedData.length &&\n this.infiniteScrollTable?.shouldTriggerAction()) {\n this._showMoreElements();\n setTimeout(() => {\n this._checkScrollAndShowMore();\n }, 100);\n }\n }\n /** @hidden */\n _resetShown() {\n if (this.mobile) {\n this._showMoreElements();\n }\n else {\n this._checkScrollAndShowMore();\n }\n }\n /** @hidden Manually clear selected items */\n _clearSelectedItems() {\n this._selectedMap = {};\n this.selectedItems = [];\n }\n /** @hidden Refresh indeterminate attribute on `select all` checkbox */\n _refreshTristate() {\n const selected = Object.values(this._selectedMap).filter(Boolean).length;\n if (selected === 0) {\n this._selectedAll = false;\n }\n else if (selected === this.displayedData.length) {\n this._selectedAll = true;\n }\n else {\n this._selectedAll = null;\n }\n }\n /** @hidden Set up filters */\n _initializeFilters() {\n if (this.mobile) {\n let _mobileTableHeaders = this.filters.filter((f) => f.main).map((f) => f.key);\n if (!_mobileTableHeaders.length) {\n _mobileTableHeaders = this.filters.slice(0, this.defaultMobileHeaders).map((f) => f.key);\n }\n this._tableFilters = {\n main: this.filters.filter((filter) => _mobileTableHeaders.some((key) => key === filter.key)),\n secondary: this.filters.filter((filter) => !_mobileTableHeaders.some((key) => key === filter.key))\n };\n }\n else {\n this._tableFilters = {\n main: this.filters,\n secondary: []\n };\n }\n }\n /** @hidden Refresh display data */\n _refreshDisplayedData() {\n this._resetShown();\n this._refreshTristate();\n }\n /** @hidden Refresh selected map for display data */\n _refreshSelectedMap() {\n this._selectedMap = {};\n for (const item of this.displayedData) {\n this._selectedMap[item[this.uniqueKey]] = false;\n }\n for (const s of this.selectedItems) {\n this._selectedMap[s[this.uniqueKey]] = true;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: SelectTabComponent, isStandalone: true, selector: \"fdp-select-tab\", inputs: { selectTabTitleId: \"selectTabTitleId\", selectTabCountId: \"selectTabCountId\", selected: \"selected\", loading: \"loading\", filters: \"filters\", selection: \"selection\", allowSelectAll: \"allowSelectAll\", uniqueKey: \"uniqueKey\", pageSize: \"pageSize\", defaultMobileHeaders: \"defaultMobileHeaders\", displayedData: \"displayedData\" }, outputs: { select: \"select\" }, viewQueries: [{ propertyName: \"infiniteScrollTable\", first: true, predicate: InfiniteScrollDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"table-header\\\">\\n <h5 fd-title role=\\\"heading\\\" aria-level=\\\"5\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </h5>\\n</div>\\n<div\\n class=\\\"fdp-value-help-dialog__table-holder table-content\\\"\\n fd-scrollbar\\n fdInfiniteScroll\\n (onScrollAction)=\\\"_showMoreElements()\\\"\\n [scrollPercent]=\\\"80\\\"\\n role=\\\"table\\\"\\n>\\n <table\\n fd-table\\n [popIn]=\\\"mobile\\\"\\n [noBorderX]=\\\"mobile\\\"\\n [noBorderY]=\\\"false\\\"\\n [attr.aria-colcount]=\\\"_tableFilters.main.length\\\"\\n [attr.aria-rowcount]=\\\"displayedData.length\\\"\\n role=\\\"grid\\\"\\n aria-multiselectable=\\\"true\\\"\\n [attr.aria-labelledby]=\\\"selectTabTitleId + ' ' + selectTabCountId\\\"\\n [allCellsFocusable]=\\\"true\\\"\\n >\\n <label [id]=\\\"selectTabCountId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.selectTabCountHiddenA11yLabel'\\n | fdTranslate: { rowCount: displayedData.length, colCount: _tableFilters.main.length }\\n }}\\n </label>\\n <label [id]=\\\"selectTabTitleId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </label>\\n <thead fd-table-header>\\n @if (displayedData.length && _tableFilters) {\\n <tr fd-table-row>\\n <th fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection && allowSelectAll) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-all'\\\"\\n [tristate]=\\\"true\\\"\\n [tristateSelectable]=\\\"false\\\"\\n [ngModel]=\\\"_selectedAll\\\"\\n (ngModelChange)=\\\"_toggleAllRows()\\\"\\n ></fd-checkbox>\\n }\\n </th>\\n @for (\\n filter of _tableFilters.main;\\n track _trackByFilterFn(colindex, filter);\\n let colindex = $index\\n ) {\\n <th fd-table-cell [attr.aria-colindex]=\\\"colindex\\\">\\n {{ filter.label }}\\n </th>\\n }\\n </tr>\\n }\\n </thead>\\n <tbody fd-table-body>\\n @for (\\n row of displayedData | slice: _shownFrom : _shownCount;\\n track _trackByTableRowFn(i, row);\\n let i = $index\\n ) {\\n <tr\\n fd-table-row\\n [hoverable]=\\\"!mobile\\\"\\n [main]=\\\"mobile\\\"\\n [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n [activable]=\\\"!isMultiSelection\\\"\\n (click)=\\\"!isMultiSelection && _toggleSelectRow(row)\\\"\\n >\\n <td fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-' + i\\\"\\n [ngModel]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n (change)=\\\"_toggleSelectRow(row)\\\"\\n ></fd-checkbox>\\n }\\n </td>\\n @for (filter of _tableFilters.main; track filter; let rowIndex = $index) {\\n <td fd-table-cell [attr.aria-rowindex]=\\\"rowIndex\\\">\\n @if (_columnDefMap.get(filter.key); as columnDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"columnDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: row,\\n key: filter.key,\\n value: row[filter.key] || ''\\n }\\\"\\n ></ng-template>\\n } @else {\\n {{ row[filter.key] || '' }}\\n }\\n </td>\\n }\\n </tr>\\n @if (mobile && _tableFilters.secondary.length) {\\n <tr fd-table-row [secondary]=\\\"true\\\" [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\">\\n <td fd-table-cell></td>\\n <td colspan=\\\"100%\\\" fd-table-cell [fitContent]=\\\"true\\\">\\n @for (filter of _tableFilters.secondary; track filter) {\\n <p fd-table-text>\\n <label>{{ filter.label }}:</label>\\n {{ row[filter.key] || '' }}\\n </p>\\n }\\n </td>\\n </tr>\\n }\\n }\\n @if (displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length) {\\n <tr fd-table-row>\\n <td colspan=\\\"100%\\\">\\n <div fd-bar barDesign=\\\"header-with-subheader\\\">\\n <div fd-bar-middle>\\n <fd-bar-element>\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_showMoreElements()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n </td>\\n </tr>\\n }\\n @if (!displayedData.length) {\\n @if (loading) {\\n <tr fd-table-row *fdkRepeat=\\\"3\\\">\\n <td fd-table-cell *fdkRepeat=\\\"3\\\">\\n <fd-skeleton [style.margin]=\\\"'auto 0'\\\" type=\\\"text\\\" textLines=\\\"1\\\" width=\\\"60%\\\"></fd-skeleton>\\n </td>\\n </tr>\\n } @else {\\n <tr fd-table-row>\\n <td fd-table-cell colspan=\\\"100%\\\">\\n <div class=\\\"fdp-value-help-dialog__empty-message\\\">\\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\\n </div>\\n </td>\\n </tr>\\n }\\n }\\n </tbody>\\n </table>\\n</div>\\n\", styles: [\".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\\n\"], dependencies: [{ kind: \"component\", type: TitleComponent, selector: \"[fd-title], [fdTitle]\", inputs: [\"headerSize\", \"wrap\"], exportAs: [\"fd-title\"] }, { kind: \"directive\", type: ScrollbarDirective, selector: \"[fdScrollbar], [fd-scrollbar]\", inputs: [\"noHorizontalScroll\", \"noVerticalScroll\", \"alwaysVisible\"] }, { kind: \"directive\", type: InfiniteScrollDirective, selector: \"[fdInfiniteScroll]\", inputs: [\"scrollPercent\", \"scrollOffset\"], outputs: [\"onScrollAction\"] }, { kind: \"component\", type: TableComponent, selector: \"table[fd-table]\", inputs: [\"noBorderX\", \"noBorderY\", \"noOuterBorder\", \"topBorder\", \"popIn\", \"responsive\", \"keys\", \"allCellsFocusable\"], exportAs: [\"fd-table\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"directive\", type: TableHeaderDirective, selector: \"[fdTableHeader], [fd-table-header]\", inputs: [\"noBorderX\", \"noBorderY\", \"nonInteractive\"] }, { kind: \"directive\", type: TableRowDirective, selector: \"[fdTableRow], [fd-table-row]\", inputs: [\"activable\", \"highlightActive\", \"hoverable\", \"focusable\", \"main\", \"secondary\", \"active\"] }, { kind: \"directive\", type: TableCellDirective, selector: \"[fdTableCell], [fd-table-cell]\", inputs: [\"noBorderX\", \"noBorderY\", \"activable\", \"focusable\", \"hoverable\", \"fitContent\", \"noPadding\", \"noData\", \"nonInteractive\", \"key\"] }, { kind: \"component\", type: CheckboxComponent, selector: \"fd-checkbox\", inputs: [\"wrapLabel\", \"valignLabel\", \"ariaLabel\", \"role\", \"value\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"inputId\", \"state\", \"name\", \"label\", \"disabled\", \"readonly\", \"tristate\", \"tristateSelectable\", \"labelClass\", \"required\", \"displayOnly\", \"values\", \"standalone\"], outputs: [\"focusChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: TableBodyDirective, selector: \"[fdTableBody], [fd-table-body]\", inputs: [\"noBorderX\", \"noBorderY\"] }, { kind: \"directive\", type: TableTextDirective, selector: \"[fdTableText], [fd-table-text]\", inputs: [\"fdTableTextClass\", \"noWrap\", \"title\", \"maxWidth\"] }, { kind: \"component\", type: BarComponent, selector: \"[fd-bar]\", inputs: [\"class\", \"barDesign\", \"inPage\", \"inHomePage\", \"clear\", \"size\", \"role\"] }, { kind: \"directive\", type: BarMiddleDirective, selector: \"[fd-bar-middle]\" }, { kind: \"directive\", type: BarElementDirective, selector: \"fd-bar-element\", inputs: [\"fullWidth\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"directive\", type: RepeatDirective, selector: \"[fdkRepeat]\", inputs: [\"fdkRepeat\"] }, { kind: \"component\", type: SkeletonComponent, selector: \"fd-skeleton\", inputs: [\"animated\", \"type\", \"textLines\", \"width\", \"height\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: SlicePipe, name: \"slice\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectTabComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-select-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n TitleComponent,\n CdkScrollable,\n ScrollbarDirective,\n InfiniteScrollDirective,\n FocusableGridDirective,\n TableComponent,\n FormLabelComponent,\n TableHeaderDirective,\n TableRowDirective,\n TableCellDirective,\n CheckboxComponent,\n FormsModule,\n TableBodyDirective,\n TableTextDirective,\n BarComponent,\n BarMiddleDirective,\n BarElementDirective,\n ButtonComponent,\n RepeatDirective,\n SkeletonComponent,\n SlicePipe,\n FdTranslatePipe,\n NgTemplateOutlet\n ], template: \"<div class=\\\"table-header\\\">\\n <h5 fd-title role=\\\"heading\\\" aria-level=\\\"5\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </h5>\\n</div>\\n<div\\n class=\\\"fdp-value-help-dialog__table-holder table-content\\\"\\n fd-scrollbar\\n fdInfiniteScroll\\n (onScrollAction)=\\\"_showMoreElements()\\\"\\n [scrollPercent]=\\\"80\\\"\\n role=\\\"table\\\"\\n>\\n <table\\n fd-table\\n [popIn]=\\\"mobile\\\"\\n [noBorderX]=\\\"mobile\\\"\\n [noBorderY]=\\\"false\\\"\\n [attr.aria-colcount]=\\\"_tableFilters.main.length\\\"\\n [attr.aria-rowcount]=\\\"displayedData.length\\\"\\n role=\\\"grid\\\"\\n aria-multiselectable=\\\"true\\\"\\n [attr.aria-labelledby]=\\\"selectTabTitleId + ' ' + selectTabCountId\\\"\\n [allCellsFocusable]=\\\"true\\\"\\n >\\n <label [id]=\\\"selectTabCountId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.selectTabCountHiddenA11yLabel'\\n | fdTranslate: { rowCount: displayedData.length, colCount: _tableFilters.main.length }\\n }}\\n </label>\\n <label [id]=\\\"selectTabTitleId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </label>\\n <thead fd-table-header>\\n @if (displayedData.length && _tableFilters) {\\n <tr fd-table-row>\\n <th fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection && allowSelectAll) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-all'\\\"\\n [tristate]=\\\"true\\\"\\n [tristateSelectable]=\\\"false\\\"\\n [ngModel]=\\\"_selectedAll\\\"\\n (ngModelChange)=\\\"_toggleAllRows()\\\"\\n ></fd-checkbox>\\n }\\n </th>\\n @for (\\n filter of _tableFilters.main;\\n track _trackByFilterFn(colindex, filter);\\n let colindex = $index\\n ) {\\n <th fd-table-cell [attr.aria-colindex]=\\\"colindex\\\">\\n {{ filter.label }}\\n </th>\\n }\\n </tr>\\n }\\n </thead>\\n <tbody fd-table-body>\\n @for (\\n row of displayedData | slice: _shownFrom : _shownCount;\\n track _trackByTableRowFn(i, row);\\n let i = $index\\n ) {\\n <tr\\n fd-table-row\\n [hoverable]=\\\"!mobile\\\"\\n [main]=\\\"mobile\\\"\\n [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n [activable]=\\\"!isMultiSelection\\\"\\n (click)=\\\"!isMultiSelection && _toggleSelectRow(row)\\\"\\n >\\n <td fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-' + i\\\"\\n [ngModel]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n (change)=\\\"_toggleSelectRow(row)\\\"\\n ></fd-checkbox>\\n }\\n </td>\\n @for (filter of _tableFilters.main; track filter; let rowIndex = $index) {\\n <td fd-table-cell [attr.aria-rowindex]=\\\"rowIndex\\\">\\n @if (_columnDefMap.get(filter.key); as columnDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"columnDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: row,\\n key: filter.key,\\n value: row[filter.key] || ''\\n }\\\"\\n ></ng-template>\\n } @else {\\n {{ row[filter.key] || '' }}\\n }\\n </td>\\n }\\n </tr>\\n @if (mobile && _tableFilters.secondary.length) {\\n <tr fd-table-row [secondary]=\\\"true\\\" [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\">\\n <td fd-table-cell></td>\\n <td colspan=\\\"100%\\\" fd-table-cell [fitContent]=\\\"true\\\">\\n @for (filter of _tableFilters.secondary; track filter) {\\n <p fd-table-text>\\n <label>{{ filter.label }}:</label>\\n {{ row[filter.key] || '' }}\\n </p>\\n }\\n </td>\\n </tr>\\n }\\n }\\n @if (displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length) {\\n <tr fd-table-row>\\n <td colspan=\\\"100%\\\">\\n <div fd-bar barDesign=\\\"header-with-subheader\\\">\\n <div fd-bar-middle>\\n <fd-bar-element>\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_showMoreElements()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n </td>\\n </tr>\\n }\\n @if (!displayedData.length) {\\n @if (loading) {\\n <tr fd-table-row *fdkRepeat=\\\"3\\\">\\n <td fd-table-cell *fdkRepeat=\\\"3\\\">\\n <fd-skeleton [style.margin]=\\\"'auto 0'\\\" type=\\\"text\\\" textLines=\\\"1\\\" width=\\\"60%\\\"></fd-skeleton>\\n </td>\\n </tr>\\n } @else {\\n <tr fd-table-row>\\n <td fd-table-cell colspan=\\\"100%\\\">\\n <div class=\\\"fdp-value-help-dialog__empty-message\\\">\\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\\n </div>\\n </td>\\n </tr>\\n }\\n }\\n </tbody>\\n </table>\\n</div>\\n\", styles: [\".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\\n\"] }]\n }], propDecorators: { selectTabTitleId: [{\n type: Input\n }], selectTabCountId: [{\n type: Input\n }], selected: [{\n type: Input\n }], loading: [{\n type: Input\n }], filters: [{\n type: Input\n }], selection: [{\n type: Input\n }], allowSelectAll: [{\n type: Input\n }], uniqueKey: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], defaultMobileHeaders: [{\n type: Input\n }], displayedData: [{\n type: Input\n }], select: [{\n type: Output\n }], infiniteScrollTable: [{\n type: ViewChild,\n args: [InfiniteScrollDirective]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvc2VsZWN0LXRhYi9zZWxlY3QtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9zZWxlY3QtdGFiL3NlbGVjdC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJB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SztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sb0JBQW9CO3NCQURuQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLSSxNQUFNO3NCQUFmLE1BQU07Z0JBRzZCLG1CQUFtQjtzQkFBdEQsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgU2xpY2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNhYmxlR3JpZERpcmVjdGl2ZSwgUmVwZWF0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFyQ29tcG9uZW50LCBCYXJFbGVtZW50RGlyZWN0aXZlLCBCYXJNaWRkbGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2tlbGV0b24nO1xuaW1wb3J0IHtcbiAgICBUYWJsZUJvZHlEaXJlY3RpdmUsXG4gICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgIFRhYmxlUm93RGlyZWN0aXZlLFxuICAgIFRhYmxlVGV4dERpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGFibGUnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmFsdWVIZWxwQ29sdW1uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWNvbHVtbi1kZWYuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZkaFRhYmxlU2VsZWN0aW9uLCBWaGRGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZoZC1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5sZXQgdGl0bGVVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNlbGVjdC10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgICAgICBGb2N1c2FibGVHcmlkRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBUYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBUYWJsZUJvZHlEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlVGV4dERpcmVjdGl2ZSxcbiAgICAgICAgQmFyQ29tcG9uZW50LFxuICAgICAgICBCYXJNaWRkbGVEaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgUmVwZWF0RGlyZWN0aXZlLFxuICAgICAgICBTa2VsZXRvbkNvbXBvbmVudCxcbiAgICAgICAgU2xpY2VQaXBlLFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdFRhYkNvbXBvbmVudDxUPiBleHRlbmRzIFZoZEJhc2VUYWIgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRUaXRsZUlkID0gYGZkLXNlbGVjdC10YWItdGl0bGUtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0Q291bnRJZCA9IGBmZC1zZWxlY3QtdGFiLXRpdGxlLWNvdW50LWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogU2VsZWN0IHRhYiB0aXRsZSBlbGVtZW50IElEICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RUYWJUaXRsZUlkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRUaXRsZUlkO1xuXG4gICAgLyoqIFNlbGVjdCB0YWIgY291bnQgZWxlbWVudCBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0VGFiQ291bnRJZDogc3RyaW5nID0gdGhpcy5kZWZhdWx0Q291bnRJZDtcblxuICAgIC8qKiBTZWxlY3RlZCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWQ6IFRbXSA9IFtdO1xuXG4gICAgLyoqIExvYWRpbmcgc3RhdGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBBY3R1YWwgZmlsdGVycyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyczogVmhkRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgaW1tZWRpYXRlbHkgYWZ0ZXIgc2VsZWN0IGFueSByb3cgZnJvbSBzZWFyY2ggdGFibGUuIEl0J2xsIGJlIHNraXBwZWQgaWYgbXVsdGkgb3B0aW9uIGlzIHRydWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbjogVmRoVGFibGVTZWxlY3Rpb24gPSAnc2luZ2xlJztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFsbG93IHVzZXJzIHRvIHNlbGVjdCBhbGwgdGFibGUgZW50cmllcyB3aXRoIG9uZSBjaGVja2JveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93U2VsZWN0QWxsID0gdHJ1ZTtcblxuICAgIC8qKiBVbmlxIGZpZWxkIGZyb20gZGF0YSBzb3VyY2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaXF1ZUtleSA9ICdpZCc7XG5cbiAgICAvKiogSXRlbXMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24gYmVsb3cgc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuXG4gICAgLyoqIENvdW50IG9mIGRlZmF1bHQgbW9iaWxlIGhlYWRlciBmcm9tIHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVmYXVsdE1vYmlsZUhlYWRlcnMgPSAyO1xuXG4gICAgLyoqIERpc3BsYXllZCBkYXRhIGZvciBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiByb3cgd2FzIHNlbGVjdGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSkgaW5maW5pdGVTY3JvbGxUYWJsZTogSW5maW5pdGVTY3JvbGxEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBpbmRldGVybWluYXRlIGZsYWcgZm9yIGBzZWxlY3QgYWxsYCBjaGVja2JveCAqL1xuICAgIF9zZWxlY3RlZEFsbDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIFNob3duIGl0ZW1zIGNvdW50IGluIG1vYmlsZSB2aWV3ICovXG4gICAgX3Nob3duRnJvbSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBTaG93biBpdGVtcyBjb3VudCBpbiBtb2JpbGUgdmlldyAqL1xuICAgIF9zaG93bkNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEN1cnJlbnQgcGFnZSBpbiBkZXNrdG9wIHZpZXcgKi9cbiAgICBfY3VycmVudFBhZ2UgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gSGVhZGVycyBhbmQgYm9keSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgX3RhYmxlRmlsdGVyczoge1xuICAgICAgICBtYWluOiBWaGRGaWx0ZXJbXTtcbiAgICAgICAgc2Vjb25kYXJ5OiBWaGRGaWx0ZXJbXTtcbiAgICB9ID0ge1xuICAgICAgICBtYWluOiBbXSxcbiAgICAgICAgc2Vjb25kYXJ5OiBbXVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZE1hcDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAgIC8qKiBTZWxlY3Rpb24gdHlwZSBnZXR0ZXJzICovXG4gICAgZ2V0IGlzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdzaW5nbGUnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc09uY2VTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiA9PT0gJ29uY2UnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc011bHRpU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdtdWx0aSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uRGVmTWFwID0gbmV3IE1hcDxzdHJpbmcsIFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBzZWxlY3RlZEl0ZW1zOiBUW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmhkID0gaW5qZWN0KFZoZENvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUodHJ1ZSkudGhlbigoKSA9PiB0aGlzLl9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCkpO1xuXG4gICAgICAgIHRoaXMuX3ZoZD8uY29sdW1uRGVmLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbkRlZk1hcC5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5fdmhkPy5jb2x1bW5EZWYuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbkRlZk1hcC5zZXQoaXRlbS5jb2x1bW4sIGl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdmaWx0ZXJzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRmlsdGVycygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnZGlzcGxheWVkRGF0YScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaERpc3BsYXllZERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3NlbGVjdGVkJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFNlbGVjdGVkTWFwKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFRyYWNrIGZ1bmN0aW9uIGZvciBtYWluIGRhdGEgKi9cbiAgICBfdHJhY2tCeVRhYmxlUm93Rm46IChfaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkID0gKF9pbmRleDogbnVtYmVyLCBpdGVtOiBUKSA9PiB7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnVuaXF1ZUtleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBUcmFjayBmdW5jdGlvbiBmb3IgZmlsdGVycyAqL1xuICAgIF90cmFja0J5RmlsdGVyRm4oX2luZGV4OiBudW1iZXIsIGl0ZW06IFZoZEZpbHRlcik6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpdGVtICYmIGl0ZW0ua2V5ID8gaXRlbS5rZXkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2hvdyBtb3JlIGVsZW1lbnRzICovXG4gICAgX3Nob3dNb3JlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VTaXplICYmIHRoaXMuX3Nob3duQ291bnQgIT09IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgKz0gdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSBNYXRoLm1pbih0aGlzLl9zaG93bkNvdW50LCB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggcGFnZSBpbiBkZXNrdG9wIHZpZXcgKi9cbiAgICBfdXBkYXRlUGFnZShwYWdlTnVtYmVyID0gMSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYWdlU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Gcm9tID0gKHBhZ2VOdW1iZXIgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gTWF0aC5taW4odGhpcy5fc2hvd25Gcm9tICsgdGhpcy5wYWdlU2l6ZSwgdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0b2dnbGUgc2VsZWN0ZWQgc3RhdGUgZm9yIGFsbCBpdGVtcyAgKi9cbiAgICBfdG9nZ2xlQWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZGlzcGxheWVkRGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hTZWxlY3RlZE1hcCgpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG9nZ2xlIHNlbGVjdGVkIHN0YXRlIGZvciBvbmUgaXRlbXMgICovXG4gICAgX3RvZ2dsZVNlbGVjdFJvdyhpdGVtOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV07XG4gICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKHM6IFQpID0+IHNbdGhpcy51bmlxdWVLZXldICE9PSBpdGVtW3RoaXMudW5pcXVlS2V5XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dID0gIXRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW2l0ZW1dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ICE9PSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsVGFibGU/LnNob3VsZFRyaWdnZXJBY3Rpb24oKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dNb3JlRWxlbWVudHMoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U2hvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2hvd01vcmVFbGVtZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWFudWFsbHkgY2xlYXIgc2VsZWN0ZWQgaXRlbXMgKi9cbiAgICBwcml2YXRlIF9jbGVhclNlbGVjdGVkSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwID0ge307XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggaW5kZXRlcm1pbmF0ZSBhdHRyaWJ1dGUgb24gYHNlbGVjdCBhbGxgIGNoZWNrYm94ICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRyaXN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IE9iamVjdC52YWx1ZXModGhpcy5fc2VsZWN0ZWRNYXApLmZpbHRlcihCb29sZWFuKS5sZW5ndGg7XG4gICAgICAgIGlmIChzZWxlY3RlZCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZCA9PT0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2V0IHVwIGZpbHRlcnMgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICBsZXQgX21vYmlsZVRhYmxlSGVhZGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoKGYpID0+IGYubWFpbikubWFwKChmKSA9PiBmLmtleSk7XG4gICAgICAgICAgICBpZiAoIV9tb2JpbGVUYWJsZUhlYWRlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgX21vYmlsZVRhYmxlSGVhZGVycyA9IHRoaXMuZmlsdGVycy5zbGljZSgwLCB0aGlzLmRlZmF1bHRNb2JpbGVIZWFkZXJzKS5tYXAoKGYpID0+IGYua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlRmlsdGVycyA9IHtcbiAgICAgICAgICAgICAgICBtYWluOiB0aGlzLmZpbHRlcnMuZmlsdGVyKChmaWx0ZXIpID0+IF9tb2JpbGVUYWJsZUhlYWRlcnMuc29tZSgoa2V5KSA9PiBrZXkgPT09IGZpbHRlci5rZXkpKSxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IHRoaXMuZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gIV9tb2JpbGVUYWJsZUhlYWRlcnMuc29tZSgoa2V5KSA9PiBrZXkgPT09IGZpbHRlci5rZXkpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlRmlsdGVycyA9IHtcbiAgICAgICAgICAgICAgICBtYWluOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggZGlzcGxheSBkYXRhICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaERpc3BsYXllZERhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0U2hvd24oKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBzZWxlY3RlZCBtYXAgZm9yIGRpc3BsYXkgZGF0YSAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hTZWxlY3RlZE1hcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXAgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGlzcGxheWVkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMuc2VsZWN0ZWRJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXBbc1t0aGlzLnVuaXF1ZUtleV1dID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICA8aDUgZmQtdGl0bGUgcm9sZT1cImhlYWRpbmdcIiBhcmlhLWxldmVsPVwiNVwiPlxuICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiRGlzcGxheUNvdW50TGFiZWwnIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IGRpc3BsYXllZERhdGEubGVuZ3RoIH0gfX1cbiAgICA8L2g1PlxuPC9kaXY+XG48ZGl2XG4gICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RhYmxlLWhvbGRlciB0YWJsZS1jb250ZW50XCJcbiAgICBmZC1zY3JvbGxiYXJcbiAgICBmZEluZmluaXRlU2Nyb2xsXG4gICAgKG9uU2Nyb2xsQWN0aW9uKT1cIl9zaG93TW9yZUVsZW1lbnRzKClcIlxuICAgIFtzY3JvbGxQZXJjZW50XT1cIjgwXCJcbiAgICByb2xlPVwidGFibGVcIlxuPlxuICAgIDx0YWJsZVxuICAgICAgICBmZC10YWJsZVxuICAgICAgICBbcG9wSW5dPVwibW9iaWxlXCJcbiAgICAgICAgW25vQm9yZGVyWF09XCJtb2JpbGVcIlxuICAgICAgICBbbm9Cb3JkZXJZXT1cImZhbHNlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb2xjb3VudF09XCJfdGFibGVGaWx0ZXJzLm1haW4ubGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yb3djb3VudF09XCJkaXNwbGF5ZWREYXRhLmxlbmd0aFwiXG4gICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInNlbGVjdFRhYlRpdGxlSWQgKyAnICcgKyBzZWxlY3RUYWJDb3VudElkXCJcbiAgICAgICAgW2FsbENlbGxzRm9jdXNhYmxlXT1cInRydWVcIlxuICAgID5cbiAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RUYWJDb3VudElkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJDb3VudEhpZGRlbkExMXlMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyByb3dDb3VudDogZGlzcGxheWVkRGF0YS5sZW5ndGgsIGNvbENvdW50OiBfdGFibGVGaWx0ZXJzLm1haW4ubGVuZ3RoIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCBbaWRdPVwic2VsZWN0VGFiVGl0bGVJZFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYkRpc3BsYXlDb3VudExhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCB9IH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDx0aGVhZCBmZC10YWJsZS1oZWFkZXI+XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoICYmIF90YWJsZUZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICAgICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJtb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNNdWx0aVNlbGVjdGlvbiAmJiBhbGxvd1NlbGVjdEFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy1hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyaXN0YXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJpc3RhdGVTZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX3NlbGVjdGVkQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3RvZ2dsZUFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyIG9mIF90YWJsZUZpbHRlcnMubWFpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIF90cmFja0J5RmlsdGVyRm4oY29saW5kZXgsIGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29saW5kZXggPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBbYXR0ci5hcmlhLWNvbGluZGV4XT1cImNvbGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5IGZkLXRhYmxlLWJvZHk+XG4gICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICByb3cgb2YgZGlzcGxheWVkRGF0YSB8IHNsaWNlOiBfc2hvd25Gcm9tIDogX3Nob3duQ291bnQ7XG4gICAgICAgICAgICAgICAgdHJhY2sgX3RyYWNrQnlUYWJsZVJvd0ZuKGksIHJvdyk7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICBmZC10YWJsZS1yb3dcbiAgICAgICAgICAgICAgICAgICAgW2hvdmVyYWJsZV09XCIhbW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW21haW5dPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJfc2VsZWN0ZWRNYXBbcm93W3VuaXF1ZUtleV1dXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2YWJsZV09XCIhaXNNdWx0aVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIhaXNNdWx0aVNlbGVjdGlvbiAmJiBfdG9nZ2xlU2VsZWN0Um93KHJvdylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgW2ZpdENvbnRlbnRdPVwibW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzTXVsdGlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy1yb3ctJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfc2VsZWN0ZWRNYXBbcm93W3VuaXF1ZUtleV1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0Um93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5tYWluOyB0cmFjayBmaWx0ZXI7IGxldCByb3dJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgW2F0dHIuYXJpYS1yb3dpbmRleF09XCJyb3dJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2NvbHVtbkRlZk1hcC5nZXQoZmlsdGVyLmtleSk7IGFzIGNvbHVtbkRlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkRlZi50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZmlsdGVyLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcm93W2ZpbHRlci5rZXldIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd1tmaWx0ZXIua2V5XSB8fCAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIEBpZiAobW9iaWxlICYmIF90YWJsZUZpbHRlcnMuc2Vjb25kYXJ5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93IFtzZWNvbmRhcnldPVwidHJ1ZVwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiX3NlbGVjdGVkTWFwW3Jvd1t1bmlxdWVLZXldXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGw+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwJVwiIGZkLXRhYmxlLWNlbGwgW2ZpdENvbnRlbnRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpbHRlciBvZiBfdGFibGVGaWx0ZXJzLnNlY29uZGFyeTsgdHJhY2sgZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYmxlLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgZmlsdGVyLmxhYmVsIH19OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dbZmlsdGVyLmtleV0gfHwgJycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChkaXNwbGF5ZWREYXRhLmxlbmd0aCAmJiBtb2JpbGUgJiYgX3Nob3duQ291bnQgJiYgX3Nob3duQ291bnQgIT09IGRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPHRyIGZkLXRhYmxlLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJoZWFkZXItd2l0aC1zdWJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3RUYWJNb3JlQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2hvd01vcmVFbGVtZW50cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKCFkaXNwbGF5ZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCAqZmRrUmVwZWF0PVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1za2VsZXRvbiBbc3R5bGUubWFyZ2luXT1cIidhdXRvIDAnXCIgdHlwZT1cInRleHRcIiB0ZXh0TGluZXM9XCIxXCIgd2lkdGg9XCI2MCVcIj48L2ZkLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHRyIGZkLXRhYmxlLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNvbHNwYW49XCIxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==","import { Directive, inject, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ValueHelpFilterDefDirective {\n constructor() {\n /** Template reference */\n this.templateRef = inject(TemplateRef);\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpFilterDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ValueHelpFilterDefDirective, isStandalone: true, selector: \"[fdpValueHelpFilterDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpFilterDefDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpValueHelpFilterDef]',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1maWx0ZXItZGVmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWZpbHRlci1kZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPL0QsTUFBTSxPQUFPLDJCQUEyQjtJQUp4QztRQUtJLHlCQUF5QjtRQUNoQixnQkFBVyxHQUFHLE1BQU0sQ0FBeUMsV0FBVyxDQUFDLENBQUM7S0FNdEY7SUFKRyxjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQWdDLEVBQUUsR0FBWTtRQUN4RSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQVBRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsdWVIZWxwRmlsdGVyRGVmLCBWYWx1ZUhlbHBGaWx0ZXJEZWZDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL3ZoZC1maWx0ZXIubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBWYWx1ZUhlbHBGaWx0ZXJEZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlSGVscEZpbHRlckRlZkRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbHVlSGVscEZpbHRlckRlZiB7XG4gICAgLyoqIFRlbXBsYXRlIHJlZmVyZW5jZSAqL1xuICAgIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0PFRlbXBsYXRlUmVmPFZhbHVlSGVscEZpbHRlckRlZkNvbnRleHQ+PihUZW1wbGF0ZVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGRpcjogVmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlLCBjdHg6IHVua25vd24pOiBjdHggaXMgVmFsdWVIZWxwRmlsdGVyRGVmQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\nimport { ValueHelpFilterDefDirective } from '../../directives/value-help-filter-def.directive';\nimport * as i0 from \"@angular/core\";\nexport class VhdFilterComponent {\n constructor() {\n /** Allow to control which of filters should show as main in mobile view.\n * Apply for search table only */\n this.main = false;\n /** Initial filter's value for search section in `select from list tab` only */\n this.value = '';\n /** Allow to show filter in advanced search template */\n this.advanced = true;\n /** Allow to use filter for including in `define conditions tab` */\n this.include = true;\n /** Allow to use filter for excluding in `define conditions tab` */\n this.exclude = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.4\", type: VhdFilterComponent, isStandalone: true, selector: \"fdp-value-help-dialog-filter\", inputs: { key: \"key\", main: \"main\", label: \"label\", value: \"value\", advanced: \"advanced\", include: \"include\", exclude: \"exclude\" }, queries: [{ propertyName: \"filterDef\", first: true, predicate: ValueHelpFilterDefDirective, descendants: true }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fdp-value-help-dialog-filter',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n }]\n }], propDecorators: { key: [{\n type: Input\n }], main: [{\n type: Input\n }], label: [{\n type: Input\n }], value: [{\n type: Input\n }], advanced: [{\n type: Input\n }], include: [{\n type: Input\n }], exclude: [{\n type: Input\n }], filterDef: [{\n type: ContentChild,\n args: [ValueHelpFilterDefDirective]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIvdmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0RBQWtELENBQUM7O0FBUy9GLE1BQU0sT0FBTyxrQkFBa0I7SUFOL0I7UUFXSTt5Q0FDaUM7UUFFakMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQU1iLCtFQUErRTtRQUUvRSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsdURBQXVEO1FBRXZELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIsbUVBQW1FO1FBRW5FLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFZixtRUFBbUU7UUFFbkUsWUFBTyxHQUFHLElBQUksQ0FBQztLQUtsQjs4R0FqQ1ksa0JBQWtCO2tHQUFsQixrQkFBa0IsbVFBK0JiLDJCQUEyQixnREFuQy9CLEVBQUU7OzJGQUlILGtCQUFrQjtrQkFOOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQUlHLEdBQUc7c0JBREYsS0FBSztnQkFNTixJQUFJO3NCQURILEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixTQUFTO3NCQURSLFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFZhbHVlSGVscEZpbHRlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdmFsdWUtaGVscC1maWx0ZXItZGVmLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaGRGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdmhkLWZpbHRlci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlcicsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVmhkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgVmhkRmlsdGVyIHtcbiAgICAvKiogVW5pcSBrZXkgZm9yIHNlYXJjaCBhbmQgZmlsdGVyaW5nICovXG4gICAgQElucHV0KClcbiAgICBrZXk6IHN0cmluZztcblxuICAgIC8qKiBBbGxvdyB0byBjb250cm9sIHdoaWNoIG9mIGZpbHRlcnMgc2hvdWxkIHNob3cgYXMgbWFpbiBpbiBtb2JpbGUgdmlldy5cbiAgICAgKiBBcHBseSBmb3Igc2VhcmNoIHRhYmxlIG9ubHkgKi9cbiAgICBASW5wdXQoKVxuICAgIG1haW4gPSBmYWxzZTtcblxuICAgIC8qKiBMYWJlbCBmb3IgaGVhZGVyIGluIHNlYXJjaCB0YWJsZSBhbmQgc2VhcmNoIGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEluaXRpYWwgZmlsdGVyJ3MgdmFsdWUgZm9yIHNlYXJjaCBzZWN0aW9uIGluIGBzZWxlY3QgZnJvbSBsaXN0IHRhYmAgb25seSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWUgPSAnJztcblxuICAgIC8qKiBBbGxvdyB0byBzaG93IGZpbHRlciBpbiBhZHZhbmNlZCBzZWFyY2ggdGVtcGxhdGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFkdmFuY2VkID0gdHJ1ZTtcblxuICAgIC8qKiBBbGxvdyB0byB1c2UgZmlsdGVyIGZvciBpbmNsdWRpbmcgaW4gYGRlZmluZSBjb25kaXRpb25zIHRhYmAgKi9cbiAgICBASW5wdXQoKVxuICAgIGluY2x1ZGUgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRvIHVzZSBmaWx0ZXIgZm9yIGV4Y2x1ZGluZyBpbiBgZGVmaW5lIGNvbmRpdGlvbnMgdGFiYCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhjbHVkZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlKVxuICAgIGZpbHRlckRlZjogTnVsbGFibGU8VmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlPjtcbn1cbiJdfQ==","import { Directive, Input, TemplateRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ValueHelpColumnDefDirective {\n constructor() {\n /** Template reference */\n this.templateRef = inject(TemplateRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpColumnDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ValueHelpColumnDefDirective, isStandalone: true, selector: \"[fdpValueHelpColumnDef]\", inputs: { as: [\"fdpValueHelpColumnDefAs\", \"as\"], column: [\"fdpValueHelpColumnDefColumn\", \"column\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpColumnDefDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpValueHelpColumnDef]',\n standalone: true\n }]\n }], propDecorators: { as: [{\n type: Input,\n args: ['fdpValueHelpColumnDefAs']\n }], column: [{\n type: Input,\n args: ['fdpValueHelpColumnDefColumn']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1jb2x1bW4tZGVmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWNvbHVtbi1kZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWXRFLE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFZSSx5QkFBeUI7UUFDaEIsZ0JBQVcsR0FBRyxNQUFNLENBQTRDLFdBQVcsQ0FBQyxDQUFDO0tBQ3pGOzhHQVZZLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFJRyxFQUFFO3NCQURELEtBQUs7dUJBQUMseUJBQXlCO2dCQUtoQyxNQUFNO3NCQURMLEtBQUs7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlSGVscENvbHVtbkRlZkNvbnRleHQ8VD4ge1xuICAgICRpbXBsaWNpdDogVDtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogYW55O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBWYWx1ZUhlbHBDb2x1bW5EZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZTxUID0gYW55PiB7XG4gICAgLyoqIFR5cGUgc3VwcG9ydC4gKi9cbiAgICBASW5wdXQoJ2ZkcFZhbHVlSGVscENvbHVtbkRlZkFzJylcbiAgICBhczogVDtcblxuICAgIC8qKiBDb2x1bW4ga2V5IHRvIHJlbmRlciBjdXN0b20gdGVtcGxhdGUuICovXG4gICAgQElucHV0KCdmZHBWYWx1ZUhlbHBDb2x1bW5EZWZDb2x1bW4nKVxuICAgIGNvbHVtbjogc3RyaW5nO1xuICAgIC8qKiBUZW1wbGF0ZSByZWZlcmVuY2UgKi9cbiAgICByZWFkb25seSB0ZW1wbGF0ZVJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxWYWx1ZUhlbHBDb2x1bW5EZWZDb250ZXh0PFQ+Pj4oVGVtcGxhdGVSZWYpO1xufVxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, DestroyRef, ElementRef, EventEmitter, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport { Subject, Subscription, filter, isObservable, of, take, tap } from 'rxjs';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { DisplayFnPipe, RtlService, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarLeftDirective, BarRightDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { DialogBodyComponent, DialogComponent, DialogConfig, DialogFooterComponent, DialogHeaderComponent, DialogService } from '@fundamental-ngx/core/dialog';\nimport { FormControlComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ListIconDirective, ListLinkDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TabItemDirective, TabLinkDirective, TabNavComponent, TabTagDirective } from '@fundamental-ngx/core/tabs';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { TokenComponent, TokenizerComponent, TokenizerInputDirective } from '@fundamental-ngx/core/token';\nimport { ToolbarComponent, ToolbarItemDirective, ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { isDataSource } from '@fundamental-ngx/platform/shared';\nimport { cloneDeep } from 'lodash-es';\nimport { DefineTabComponent } from '../components/define-tab/define-tab.component';\nimport { SelectTabComponent } from '../components/select-tab/select-tab.component';\nimport { VhdFilterComponent } from '../components/value-help-dialog-filter/value-help-dialog-filter.component';\nimport { defaultConditionDisplayFn } from '../constans/condition-display.function';\nimport { ValueHelpColumnDefDirective } from '../directives/value-help-column-def.directive';\nimport { ArrayValueHelpDialogDataSource, ObservableValueHelpDialogDataSource, VhdDefineExcludeStrategy, VhdDefineIncludeStrategy, VhdTab } from '../models';\nimport { VhdComponent } from '../models/vhd-component.model';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"@fundamental-ngx/cdk/utils\";\nimport * as i3 from \"@angular/forms\";\nlet vhdHeaderUniqueId = 0;\nlet vhiUniqueId = 0;\nexport class PlatformValueHelpDialogComponent extends VhdComponent {\n /** Data source */\n set dataSource(value) {\n if (value) {\n this._dataSource = this.toDataStream(value);\n }\n }\n get dataSource() {\n return this._dataSource;\n }\n /** @hidden */\n get loadingState() {\n return this.loading ?? this._internalLoadingState;\n }\n /** @hidden */\n constructor(elementRef, _changeDetectorRef, _dialogService, _rtlService) {\n super();\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dialogService = _dialogService;\n this._rtlService = _rtlService;\n /** Id of the popover */\n this.id = 'fdp-vhd-' + vhiUniqueId++;\n /** Initial state of Value help dialog */\n this.value = {\n selected: [],\n conditions: []\n };\n /** Select from list tab activation */\n this.initialTab = VhdTab.selectFromList;\n /** Visible tabs */\n this.tabs = 'both';\n /** Initial expand state for advanced search panel */\n this.isOpenAdvanced = false;\n /** Dialog's custom config */\n this.dialogConfig = {};\n /** Id attribute for dialog title */\n this.headerId = `fdp-vhd-header-id-${vhdHeaderUniqueId++}`;\n /** Whether the value help dialog should be view in mobile mode */\n this.mobile = false;\n /** Tokenizer function for condition's token render */\n this.conditionDisplayFn = defaultConditionDisplayFn;\n /** Selection mode for search table */\n this.searchSelection = 'multi';\n /** Items per page for pagination below search table */\n this.searchTablePageSize = 20;\n /** Count of default mobile header from search table */\n this.searchTableMobileHeaders = 2;\n /** Max shown initial filters on open. Desktop only */\n this.maxShownInitialFilters = 4;\n /** Whether to allow users to select all table entries with one checkbox. */\n this.allowSelectAll = true;\n /** Custom strategies labels\n * Allowed keys: contains, equalTo, between, startsWith, endsWith, lessThan, lessThanEqual, greaterThan, greaterThanEqual, empty\n */\n this.defineStrategyLabels = {\n contains: 'contains',\n equalTo: 'equal to',\n between: 'between',\n startsWith: 'starts with',\n endsWith: 'ends with',\n lessThan: 'less than',\n lessThanEqual: 'less than or equal to',\n greaterThan: 'greater than',\n greaterThanEqual: 'greater than or equal to',\n empty: 'empty',\n not_equalTo: 'not equal to',\n not_empty: 'not empty'\n };\n /** Dialog outputs */\n /** Event emitted when filters/tokens were changed. */\n this.valueChange = new EventEmitter();\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataRequested = new EventEmitter();\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataReceived = new EventEmitter();\n /**\n * Heading level of the dialog title.\n */\n this.headingLevel = input(5, ...(ngDevMode ? [{ debugName: \"headingLevel\" }] : []));\n /** @hidden */\n this._headingLevel = computed(() => this.headingLevel() ? Number.parseInt(`${this.headingLevel()}`.replace(/\\D/g, ''), 10) : undefined, ...(ngDevMode ? [{ debugName: \"_headingLevel\" }] : []));\n /** @hidden */\n this._tabTypes = VhdTab;\n /** @hidden */\n this._hasAdvanced = true;\n /** @hidden */\n this._displayedFilters = [];\n /** @hidden */\n this._displayedData = [];\n /** @hidden */\n this._mainSearch = '';\n /** handles rtl service\n * @hidden */\n this._dir$ = computed(() => (this._rtlService?.rtlSignal() ? 'rtl' : 'ltr'), ...(ngDevMode ? [{ debugName: \"_dir$\" }] : []));\n /** @hidden */\n this.selectedTab = null;\n /** @hidden */\n this.shownFilterCount = Infinity;\n /** @hidden\n * To differentiate between first loading when skeletons be shown and subsequent loadings when busy indicator be shown\n */\n this._firstLoadingDone = false;\n /** @hidden */\n this._destroyed = inject(DestroyRef);\n /** @hidden Previous state */\n this._prevState = {\n selected: [],\n conditions: []\n };\n /** @hidden Current data for local manupulation */\n this._currentValue = {\n selected: [],\n conditions: []\n };\n /** @hidden */\n this._internalLoadingState = false;\n /** @hidden */\n this._onDestroy$ = new Subject();\n /** @hidden */\n this._trackBySelectedFn = (_index, item) => item && item[this.uniqueKey];\n /** Default display function for define conditions */\n if (!this.conditionDisplayFn || typeof this.conditionDisplayFn !== 'function') {\n this.conditionDisplayFn = defaultConditionDisplayFn;\n }\n }\n /** @hidden */\n get isMobileAdvancedSearchActive() {\n if (this.mobile) {\n return this.isOpenAdvanced;\n }\n return false;\n }\n /** @hidden */\n get hasSelectedTab() {\n return this.selectedTab != null && this.selectedTab in VhdTab;\n }\n /** @hidden */\n get showSelectionTab() {\n return this.tabs !== 'define';\n }\n /** @hidden */\n get showDefineTab() {\n return this.tabs !== 'select';\n }\n /** @hidden */\n get isSelectionTab() {\n return this.selectedTab === VhdTab.selectFromList || this.selectedTab === VhdTab.advancedSearch;\n }\n /** @hidden */\n get selectedItems() {\n return this._currentValue.selected || [];\n }\n /** @hidden */\n get conditionItems() {\n return this._currentValue.conditions || [];\n }\n /** @hidden */\n get validConditions() {\n return this._getValidCondition(this.conditionItems);\n }\n /** @hidden */\n get hasSelectedAndConditions() {\n return Boolean(this.selectedItems.length + this.validConditions.length);\n }\n /** @hidden */\n get isShowAllFilters() {\n return this.filters.length > this.maxShownInitialFilters && this.shownFilterCount > this.maxShownInitialFilters;\n }\n /** @hidden */\n get isOpen() {\n return !!this.activeDialog;\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (this.isOpen) {\n if ('dataSource' in changes) {\n this._initializeDS();\n }\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._resetState();\n this._onDestroy$.next();\n }\n /** Open dialog */\n open() {\n if (!this.isValidOptions()) {\n throw new Error('Please check required fields');\n }\n if (this.isOpen) {\n return;\n }\n this._savePreviousState();\n this._updateFilters();\n this._initializeDS();\n this._initializeTab();\n if (!this.dialogConfig.ariaLabelledBy) {\n this.dialogConfig.ariaLabelledBy = this.headerId;\n }\n this.activeDialog = this._dialogService.open(this.dialogContainer, {\n backdropClickCloseable: false,\n hasBackdrop: true,\n verticalPadding: false,\n escKeyCloseable: false,\n dialogPanelClass: `fdp-value-help-dialog ${this.mobile ? 'fdp-value-help-dialog-mobile' : ''}`,\n ...this.dialogConfig,\n mobile: this.mobile,\n maxWidth: this.mobile ? undefined : '92%',\n width: this.mobile ? undefined : '1080px',\n height: this.mobile ? undefined : '98%'\n });\n this._listenDialogEvents();\n }\n /**\n * Toggle advanced search panel\n */\n toggleAdvancedSearch(state) {\n if (typeof state !== 'undefined') {\n this.isOpenAdvanced = state;\n }\n else {\n this.isOpenAdvanced = !this.isOpenAdvanced;\n }\n if (this.mobile) {\n this.selectedTab = this.isOpenAdvanced ? VhdTab.advancedSearch : VhdTab.selectFromList;\n }\n }\n /**\n * Clear all selected items\n */\n clearSelectedAndConditionItems() {\n this._currentValue.selected = [];\n this._currentValue.conditions = [];\n this._changeDetectorRef.markForCheck();\n }\n /** Search by only the search term. */\n search() {\n this.filter(true);\n }\n /**\n * Search by all filled filters, including the search term.\n */\n filter(onlySearch = false) {\n const nonEmptyFilters = new Map();\n if (!onlySearch) {\n this._displayedFilters\n .filter(({ value }) => !!value && typeof value === 'string' ? value.trim().length : value !== undefined)\n .forEach((e) => nonEmptyFilters.set(e.key, e.value));\n }\n if (this._mainSearch.length) {\n nonEmptyFilters.set('*', this._mainSearch);\n }\n this.dataSource?.match(nonEmptyFilters);\n }\n /**\n * Apply search from advanced filters view, using when mobile view is active\n */\n searchAdvanced() {\n this.filter();\n this.selectedTab = VhdTab.selectFromList;\n this.isOpenAdvanced = false;\n }\n /** Remove item from selected array */\n removeSelected(index) {\n this._currentValue.selected = this.selectedItems.filter((_, i) => i !== index);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Remove condition item\n */\n removeCondition(index) {\n this._currentValue.conditions = this.conditionItems.filter((_, i) => i !== index);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Switch tab by type\n */\n switchTab(type = null) {\n this.selectedTab = type;\n }\n /**\n * Close dialog with value;\n */\n success() {\n if (!this.activeDialog) {\n return;\n }\n const value = {\n selected: this.selectedItems,\n conditions: this.validConditions\n };\n this._internalLoadingState = true;\n this._changeDetectorRef.detectChanges();\n this._getValidatorFunction(value)\n .pipe(tap(() => {\n this._internalLoadingState = false;\n this._changeDetectorRef.detectChanges();\n }), filter((r) => r), take(1), takeUntilDestroyed(this._destroyed))\n .subscribe(() => {\n if (typeof this.formatToken === 'function') {\n this.formatToken(value);\n }\n this.activeDialog?.close(value);\n });\n }\n /**\n * Hide advanced search on mobile view and if it's opened\n * Close dialog with null value;\n */\n dismiss() {\n if (this.mobile && this.isOpenAdvanced) {\n this.isOpenAdvanced = false;\n this.switchTab(VhdTab.selectFromList);\n }\n else {\n this._currentValue = this._prevState;\n if (this.activeDialog) {\n this.activeDialog.close();\n }\n }\n }\n /** @hidden */\n _trackByFilterFn(_index, item) {\n return item && item.key;\n }\n /** @hidden */\n _trackByConditionFn(_index, item) {\n return item ? item.value + item.valueTo + item.strategy + item.key : undefined;\n }\n /** @hidden */\n onSelect($event) {\n this._currentValue.selected = $event;\n this._changeDetectorRef.markForCheck();\n if (this.searchSelection === 'once') {\n this.success();\n }\n }\n /** @hidden */\n onConditionChange($event) {\n this._currentValue.conditions = $event;\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden */\n toggleShownFilters() {\n this.shownFilterCount =\n this.maxShownInitialFilters === this.shownFilterCount ? Infinity : this.maxShownInitialFilters;\n }\n /** @hidden */\n _initShownFilters() {\n this.shownFilterCount = this.maxShownInitialFilters || Infinity;\n }\n /** @hidden */\n _getValidCondition(items = []) {\n return items.filter((item) => {\n if (item.strategy === VhdDefineIncludeStrategy.empty ||\n item.strategy === VhdDefineExcludeStrategy.not_empty) {\n return true;\n }\n if (item.strategy === VhdDefineIncludeStrategy.between) {\n return Boolean(item.value.length && item.valueTo.length);\n }\n if (!item.valid) {\n return false;\n }\n return Boolean(item.value.length);\n });\n }\n /** @hidden */\n _initializeDS(ds = this.dataSource) {\n this._resetSourceStream();\n if (this.showSelectionTab) {\n this._dsSubscription = new Subscription();\n this._dsSubscription.add(ds?.onDataRequested().subscribe(() => {\n this._internalLoadingState = true;\n this.onDataRequested.emit();\n }));\n this._dsSubscription.add(ds?.onDataReceived().subscribe(() => {\n this._internalLoadingState = false;\n this._firstLoadingDone = true;\n this.onDataReceived.emit();\n }));\n const dsSub = this.openDataStream()\n .pipe(takeUntilDestroyed(this._destroyed))\n .subscribe((data) => {\n this._displayedData = data.slice();\n this._changeDetectorRef.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n }\n }\n /** @hidden Save previous state */\n _savePreviousState() {\n const value = cloneDeep(this.value);\n this._currentValue = value;\n this._prevState = value;\n }\n /** @hidden */\n _initializeTab() {\n if (this.mobile) {\n this.isOpenAdvanced = false;\n }\n if (this.showSelectionTab && this.showDefineTab) {\n this.switchTab(this.mobile ? undefined : this.initialTab);\n }\n else if (this.showSelectionTab) {\n this.switchTab(VhdTab.selectFromList);\n }\n else if (this.showDefineTab) {\n this.switchTab(VhdTab.defineConditions);\n }\n this._initShownFilters();\n }\n /** @hidden */\n _listenDialogEvents() {\n if (!this.activeDialog) {\n return;\n }\n this.activeDialog.afterClosed.pipe(takeUntilDestroyed(this._destroyed)).subscribe((value) => {\n if (value) {\n this.value = value;\n this.valueChange.emit(value);\n }\n this._resetState();\n });\n this.filters.changes.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n this._updateFilters();\n });\n }\n /** @hidden */\n _resetState() {\n this._resetSourceStream();\n this._mainSearch = '';\n this.activeDialog = undefined;\n }\n /** @hidden */\n _updateFilters() {\n this._displayedFilters = this.filters.map((e) => ({\n ...e,\n label: e.label || e.key\n }));\n this._hasAdvanced = this._displayedFilters.some((e) => !!e.advanced);\n }\n /** @hidden */\n openDataStream() {\n if (this._dataSource) {\n this._dataSource.match();\n return this._dataSource.open();\n }\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n /** @hidden */\n toDataStream(ds) {\n if (isDataSource(ds)) {\n return ds;\n }\n else if (Array.isArray(ds)) {\n return new ArrayValueHelpDialogDataSource(ds);\n }\n else if (isObservable(ds)) {\n return new ObservableValueHelpDialogDataSource(ds);\n }\n return undefined;\n }\n /** @hidden */\n _resetSourceStream() {\n if (isDataSource(this.dataSource)) {\n this.dataSource.close();\n }\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = null;\n }\n }\n /** @hidden */\n isValidOptions() {\n if (this.showSelectionTab) {\n return (!!this.dataSource &&\n typeof this.uniqueKey === 'string' &&\n (typeof this.tokenViewField === 'string' || typeof this.tokenizerFn === 'function'));\n }\n return true;\n }\n _getValidatorFunction(value) {\n const validator = typeof this.tokenValidator === 'function' ? this.tokenValidator(value) : of(true);\n return isObservable(validator) ? validator : of(validator);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DialogService }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: PlatformValueHelpDialogComponent, isStandalone: true, selector: \"fdp-value-help-dialog\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, dialogTitle: { classPropertyName: \"dialogTitle\", publicName: \"dialogTitle\", isSignal: false, isRequired: false, transformFunction: null }, initialTab: { classPropertyName: \"initialTab\", publicName: \"initialTab\", isSignal: false, isRequired: false, transformFunction: null }, tabs: { classPropertyName: \"tabs\", publicName: \"tabs\", isSignal: false, isRequired: false, transformFunction: null }, isOpenAdvanced: { classPropertyName: \"isOpenAdvanced\", publicName: \"isOpenAdvanced\", isSignal: false, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, dialogConfig: { classPropertyName: \"dialogConfig\", publicName: \"dialogConfig\", isSignal: false, isRequired: false, transformFunction: null }, uniqueKey: { classPropertyName: \"uniqueKey\", publicName: \"uniqueKey\", isSignal: false, isRequired: false, transformFunction: null }, headerId: { classPropertyName: \"headerId\", publicName: \"headerId\", isSignal: false, isRequired: false, transformFunction: null }, tokenViewField: { classPropertyName: \"tokenViewField\", publicName: \"tokenViewField\", isSignal: false, isRequired: false, transformFunction: null }, tokenizerFn: { classPropertyName: \"tokenizerFn\", publicName: \"tokenizerFn\", isSignal: false, isRequired: false, transformFunction: null }, mobile: { classPropertyName: \"mobile\", publicName: \"mobile\", isSignal: false, isRequired: false, transformFunction: null }, formatToken: { classPropertyName: \"formatToken\", publicName: \"formatToken\", isSignal: false, isRequired: false, transformFunction: null }, conditionDisplayFn: { classPropertyName: \"conditionDisplayFn\", publicName: \"conditionDisplayFn\", isSignal: false, isRequired: false, transformFunction: null }, tokenValidator: { classPropertyName: \"tokenValidator\", publicName: \"tokenValidator\", isSignal: false, isRequired: false, transformFunction: null }, searchSelection: { classPropertyName: \"searchSelection\", publicName: \"searchSelection\", isSignal: false, isRequired: false, transformFunction: null }, searchTablePageSize: { classPropertyName: \"searchTablePageSize\", publicName: \"searchTablePageSize\", isSignal: false, isRequired: false, transformFunction: null }, searchTableMobileHeaders: { classPropertyName: \"searchTableMobileHeaders\", publicName: \"searchTableMobileHeaders\", isSignal: false, isRequired: false, transformFunction: null }, maxShownInitialFilters: { classPropertyName: \"maxShownInitialFilters\", publicName: \"maxShownInitialFilters\", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: \"loading\", publicName: \"loading\", isSignal: false, isRequired: false, transformFunction: null }, allowSelectAll: { classPropertyName: \"allowSelectAll\", publicName: \"allowSelectAll\", isSignal: false, isRequired: false, transformFunction: null }, defineStrategyLabels: { classPropertyName: \"defineStrategyLabels\", publicName: \"defineStrategyLabels\", isSignal: false, isRequired: false, transformFunction: null }, headingLevel: { classPropertyName: \"headingLevel\", publicName: \"headingLevel\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", onDataRequested: \"onDataRequested\", onDataReceived: \"onDataReceived\" }, providers: [\n {\n provide: VhdComponent,\n useExisting: PlatformValueHelpDialogComponent\n }\n ], queries: [{ propertyName: \"filters\", predicate: VhdFilterComponent }, { propertyName: \"columnDef\", predicate: ValueHelpColumnDefDirective }], viewQueries: [{ propertyName: \"dialogContainer\", first: true, predicate: [\"container\"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\\\"dialogConfig\\\" #container>\\n <fd-dialog [dialogConfig]=\\\"dialogConfig\\\" [dialogRef]=\\\"dialog\\\">\\n <fd-dialog-header [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <ng-template [ngTemplateOutlet]=\\\"mobile ? mobileDialogTitle : desktopDialogTitle\\\"></ng-template>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [attr.dir]=\\\"_dir$()\\\">\\n @if (!mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n <div fd-scrollbar class=\\\"fdp-value-help-dialog__content-holder\\\">\\n @if (mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.selectFromList) {\\n <ng-template [ngTemplateOutlet]=\\\"selectionContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.defineConditions) {\\n <ng-template [ngTemplateOutlet]=\\\"defineConditionsContent\\\"></ng-template>\\n }\\n </div>\\n </fd-dialog-body>\\n <fd-dialog-footer [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"footer\\\">\\n @if (!isMobileAdvancedSearchActive) {\\n <div\\n class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__selection-row\\\"\\n [attr.aria-label]=\\\"'platformVHD.selectedAndConditionLabel' | fdTranslate\\\"\\n >\\n <span\\n role=\\\"heading\\\"\\n [attr.aria-level]=\\\"_headingLevel()\\\"\\n fd-title\\n class=\\\"selected-and-condition-title\\\"\\n [id]=\\\"id + '-selected-item'\\\"\\n >\\n @if (hasSelectedAndConditions) {\\n {{ 'platformVHD.selectedAndConditionLabel' | fdTranslate }}\\n ({{ selectedItems.length + validConditions.length }})\\n } @else {\\n {{ 'platformVHD.selectedEmptyLabel' | fdTranslate }}\\n }\\n </span>\\n <div class=\\\"fdp-value-help-dialog__tokens-wrapper\\\">\\n <div class=\\\"fdp-value-help-dialog__tokens\\\">\\n <!-- Selected items -->\\n <fd-tokenizer>\\n @for (\\n item of selectedItems;\\n track _trackBySelectedFn(selectedIndex, item);\\n let selectedIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeSelected(selectedIndex)\\\"\\n >{{\\n !!tokenizerFn\\n ? (item | displayFnPipe: tokenizerFn)\\n : item[tokenViewField]\\n }}\\n </fd-token>\\n }\\n @for (\\n item of validConditions;\\n track _trackByConditionFn(conditionIndex, item);\\n let conditionIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeCondition(conditionIndex)\\\"\\n >\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionValue\\\"\\n [ngTemplateOutletContext]=\\\"{ item: item }\\\"\\n ></ng-template>\\n </fd-token>\\n }\\n <input fd-form-control fd-tokenizer-input [disabled]=\\\"!hasSelectedAndConditions\\\" />\\n </fd-tokenizer>\\n </div>\\n <button\\n (click)=\\\"clearSelectedAndConditionItems()\\\"\\n class=\\\"fdp-value-help-dialog__tokens-clear\\\"\\n fd-button\\n [disabled]=\\\"!hasSelectedAndConditions\\\"\\n fdType=\\\"transparent\\\"\\n [title]=\\\"'platformVHD.footerClearSelectedTitle' | fdTranslate\\\"\\n glyph=\\\"decline\\\"\\n [ariaLabel]=\\\"'platformVHD.footerClearSelectedAriaLabel' | fdTranslate\\\"\\n ></button>\\n </div>\\n </div>\\n }\\n <div class=\\\"fdp-value-help-dialog__actions-row\\\">\\n @if (mobile && isOpenAdvanced) {\\n <button\\n fd-button\\n data-go-advanced\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"searchAdvanced()\\\"\\n ></button>\\n }\\n @if (selectedTab !== _tabTypes.advancedSearch) {\\n <button\\n fd-button\\n data-succes\\n [disabled]=\\\"loadingState\\\"\\n [label]=\\\"'platformVHD.successButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"success()\\\"\\n ></button>\\n }\\n <button\\n fd-button\\n data-dismiss-dialog\\n [label]=\\\"'platformVHD.cancelButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"dismiss()\\\"\\n ></button>\\n </div>\\n </ng-template>\\n </fd-dialog-footer>\\n </fd-dialog>\\n</ng-template>\\n<ng-template #advancedSearchContent>\\n @if (isSelectionTab) {\\n <form class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__advanced-search\\\" [id]=\\\"'advanced-search-' + id\\\">\\n @if (!mobile || (mobile && !isOpenAdvanced)) {\\n <fd-layout-grid>\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"mobile ? 12 : 6\\\" [colXl]=\\\"mobile ? 12 : 6\\\">\\n <fdp-search-field\\n [placeholder]=\\\"'platformVHD.searchPlaceholder' | fdTranslate\\\"\\n (searchSubmit)=\\\"search()\\\"\\n (inputChange)=\\\"_mainSearch = $event.text\\\"\\n ></fdp-search-field>\\n </div>\\n @if (_hasAdvanced) {\\n <div\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"mobile ? 12 : 6\\\"\\n [colXl]=\\\"mobile ? 12 : 6\\\"\\n class=\\\"fdp-value-help-dialog__advanced-actions\\\"\\n >\\n <fd-toolbar [clearBorder]=\\\"true\\\">\\n <fd-toolbar-spacer></fd-toolbar-spacer>\\n @if (_hasAdvanced) {\\n <button\\n fd-toolbar-item\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"\\n (mobile\\n ? 'platformVHD.searchAdvancedSearchLabel'\\n : isOpenAdvanced\\n ? 'platformVHD.searchHideAdvancedSearchLabel'\\n : 'platformVHD.searchShowAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n (click)=\\\"toggleAdvancedSearch()\\\"\\n ></button>\\n }\\n <button\\n fd-toolbar-item\\n type=\\\"submit\\\"\\n fd-button\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n (click)=\\\"filter()\\\"\\n ></button>\\n </fd-toolbar>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n }\\n @if (isOpenAdvanced && _hasAdvanced) {\\n <div [id]=\\\"'advanced-search-content-' + id\\\" class=\\\"fdp-value-help-dialog__advanced-filters\\\">\\n <fd-busy-indicator [loading]=\\\"loadingState && _firstLoadingDone\\\" [block]=\\\"true\\\">\\n @if (_firstLoadingDone) {\\n <fd-layout-grid\\n [class.fdp-value-help-dialog__with-toggle-all]=\\\"filters.length > maxShownInitialFilters\\\"\\n >\\n <div fdLayoutGridRow>\\n @for (\\n filter of _displayedFilters | slice: 0 : shownFilterCount + 1;\\n track _trackByFilterFn($index, filter)\\n ) {\\n @if (filter.advanced) {\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"6\\\" [colXl]=\\\"3\\\">\\n <label\\n class=\\\"fd-form-group__header\\\"\\n fd-form-label\\n [for]=\\\"'input' + filter.key\\\"\\n >{{ filter.label }}:</label\\n >\\n @if (filter.filterDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"filter.filterDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: filter }\\\"\\n ></ng-template>\\n } @else {\\n <input\\n [(ngModel)]=\\\"filter.value\\\"\\n fd-form-control\\n type=\\\"text\\\"\\n [name]=\\\"'search-by-' + filter.label\\\"\\n [id]=\\\"'input' + filter.key\\\"\\n />\\n }\\n </div>\\n }\\n }\\n @if (filters.length > maxShownInitialFilters) {\\n <div\\n colGrow\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"6\\\"\\n [colXl]=\\\"3\\\"\\n class=\\\"fdp-value-help-dialog__toggle-filters\\\"\\n >\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n (click)=\\\"toggleShownFilters()\\\"\\n [label]=\\\"\\n (isShowAllFilters\\n ? 'platformVHD.searchHideAllAdvancedSearchLabel'\\n : 'platformVHD.searchShowAllAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n ></button>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n } @else {\\n <fd-skeleton width=\\\"100%\\\" height=\\\"100px\\\">\\n <svg:rect x=\\\"0\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"60\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"80\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n </fd-skeleton>\\n }\\n </fd-busy-indicator>\\n </div>\\n }\\n </form>\\n }\\n</ng-template>\\n<ng-template #selectionContent>\\n <fd-busy-indicator\\n [loading]=\\\"loadingState && _firstLoadingDone\\\"\\n [block]=\\\"true\\\"\\n class=\\\"fdp-value-help-dialog__table-busy-indicator\\\"\\n >\\n <fdp-select-tab\\n [selected]=\\\"selectedItems\\\"\\n [loading]=\\\"loadingState && !_firstLoadingDone\\\"\\n [uid]=\\\"id\\\"\\n [displayedData]=\\\"_displayedData\\\"\\n [tabTitle]=\\\"'platformVHD.selectTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n [selection]=\\\"searchSelection\\\"\\n [uniqueKey]=\\\"uniqueKey\\\"\\n [pageSize]=\\\"searchTablePageSize\\\"\\n [defaultMobileHeaders]=\\\"searchTableMobileHeaders\\\"\\n [filters]=\\\"_displayedFilters\\\"\\n [allowSelectAll]=\\\"allowSelectAll\\\"\\n (select)=\\\"onSelect($event)\\\"\\n ></fdp-select-tab>\\n </fd-busy-indicator>\\n</ng-template>\\n<ng-template #defineConditionsContent>\\n <div fd-scrollbar>\\n <fdp-define-tab\\n [strategyLabels]=\\\"defineStrategyLabels\\\"\\n [conditions]=\\\"conditionItems\\\"\\n [uid]=\\\"id\\\"\\n [tabTitle]=\\\"'platformVHD.defineTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n (conditionChange)=\\\"onConditionChange($event)\\\"\\n ></fdp-define-tab>\\n </div>\\n</ng-template>\\n<ng-template #dialogTitleText>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{ dialogTitle }}</span>\\n</ng-template>\\n<ng-template #tabLink let-title=\\\"title\\\" let-type=\\\"type\\\">\\n @if (selectedTab === type && showSelectionTab && showDefineTab) {\\n <button\\n fd-button\\n glyph=\\\"navigation-left-arrow\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"switchTab()\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBackBtnTitle' | fdTranslate\\\"\\n ></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{ title }}</span>\\n }\\n @if (selectedTab !== type) {\\n <a\\n fd-list-link\\n (click)=\\\"switchTab(type)\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBtnOpenDialogLabel' | fdTranslate\\\"\\n >\\n <span fd-list-title>{{ title }}</span>\\n <i fd-list-icon glyph=\\\"navigation-right-arrow\\\"></i>\\n </a>\\n }\\n</ng-template>\\n<ng-template #advancedHeader>\\n <button fd-button glyph=\\\"navigation-left-arrow\\\" fdType=\\\"transparent\\\" (click)=\\\"toggleAdvancedSearch()\\\"></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{\\n 'platformVHD.searchAdvancedSearchLabel' | fdTranslate\\n }}</span>\\n</ng-template>\\n<ng-template #desktopDialogTitle>\\n <ng-template [ngTemplateOutlet]=\\\"dialogTitleText\\\"></ng-template>\\n <ng-template [ngTemplateOutlet]=\\\"desktopTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #mobileDialogTitle>\\n <div class=\\\"fdp-value-help-dialog__mobile-title\\\">\\n @if (hasSelectedTab) {\\n <ng-template [ngTemplateOutlet]=\\\"selectedTabHeader\\\"></ng-template>\\n } @else {\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{\\n dialogTitle\\n }}</span>\\n }\\n </div>\\n <ng-template [ngTemplateOutlet]=\\\"mobileTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #desktopTabs>\\n @if (showSelectionTab && showDefineTab) {\\n <nav fd-tab-nav class=\\\"fdp-value-help-dialog__tabs\\\">\\n @if (showSelectionTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.selectFromList)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.selectFromList\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.selectFromList ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.selectTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.defineConditions)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.defineConditions\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.defineConditions ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.defineTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n </nav>\\n }\\n</ng-template>\\n<ng-template #mobileTabs>\\n @if (!hasSelectedTab && showSelectionTab && showDefineTab) {\\n <div>\\n @if (showSelectionTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.selectTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n (click)=\\\"switchTab(_tabTypes.selectFromList)\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.selectTabTitle' | fdTranslate }\\n \\\"\\n ></fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.defineTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.defineTabTitle' | fdTranslate }\\n \\\"\\n (click)=\\\"switchTab(_tabTypes.defineConditions)\\\"\\n >\\n </fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</ng-template>\\n<ng-template #selectedTabHeader>\\n @switch (selectedTab) {\\n @case (_tabTypes.selectFromList) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.selectTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n @case (_tabTypes.advancedSearch) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedHeader\\\"></ng-template>\\n }\\n @case (_tabTypes.defineConditions) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.defineTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n }\\n</ng-template>\\n<ng-template #conditionValue let-item=\\\"item\\\">\\n @if (item.strategy !== 'empty' && item.strategy !== 'not_empty') {\\n <span>\\n {{ item | displayFnPipe: conditionDisplayFn : _displayedFilters }}\\n </span>\\n } @else {\\n @if (item.strategy === 'not_empty') {\\n !(<ng-template [ngTemplateOutlet]=\\\"emptyConditionText\\\"></ng-template>)\\n } @else {\\n <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}>\\n }\\n }\\n</ng-template>\\n<ng-template #emptyConditionText> <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}> </ng-template>\\n\", styles: [\".fdp-value-help-dialog .fd-dialog__body{display:flex;flex-direction:column;overflow:hidden}.fdp-value-help-dialog .fd-title--h5{padding:.5rem 0}.fdp-value-help-dialog .fd-toolbar{background:none;border:none;padding:.1735rem .5rem;height:auto;min-height:1.625rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__advanced-search{padding-top:1rem}.fdp-value-help-dialog__advanced-search,.fdp-value-help-dialog .fd-dialog__body{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__advanced-filters{padding-top:1rem}.fdp-value-help-dialog__advanced-filters label{height:auto}.fdp-value-help-dialog__toggle-filters{display:flex;justify-content:flex-end;align-items:flex-end}.fdp-value-help-dialog__toggle-filters .fd-button{margin-bottom:.25rem}.fdp-value-help-dialog__advanced-actions{display:flex;align-items:center;justify-content:flex-end}.fdp-value-help-dialog-mobile .fdp-value-help-dialog__advanced-actions{justify-content:flex-start}.fdp-value-help-dialog__advanced-actions .fd-toolbar{padding:0}.fdp-value-help-dialog .fd-bar.fd-bar--cozy{height:auto}.fdp-value-help-dialog .fd-dialog__header{box-shadow:none}.fdp-value-help-dialog .fd-dialog__header .fd-title{display:flex;align-items:center;padding-left:2rem;padding-right:2rem;min-height:2.5rem;box-shadow:none;border-bottom:none;background-color:var(--sapObjectHeader_Background, #fff);position:relative;z-index:2}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title{display:flex;border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--sapGroup_TitleBorderColor, #d9d9d9)}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title .fd-title{flex:1 1 auto;border:none}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__tabs{position:relative}.fdp-value-help-dialog .fd-dialog__header,.fdp-value-help-dialog .fd-dialog__footer{height:auto;flex-direction:column}.fdp-value-help-dialog .fd-dialog__header.fd-bar,.fdp-value-help-dialog .fd-dialog__footer.fd-bar{padding:0}.fdp-value-help-dialog .fd-dialog__footer{border-top:none}.fdp-value-help-dialog__content-holder{padding:0 2rem 1rem;display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;min-height:20rem}.fdp-value-help-dialog__row{padding:0 2rem 1rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__selection-row{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__tokens-wrapper{display:flex}.fdp-value-help-dialog__tokens{flex:1 1 auto;overflow:hidden;align-items:center;border:1px solid var(--sapContent_ForegroundBorderColor, #89919a);margin-right:.5rem;border-radius:var(--sapElement_BorderCornerRadius, .25rem);background:none}.fdp-value-help-dialog__tokens fd-toolbar{flex:1 1 auto;overflow:hidden}.fdp-value-help-dialog__tokens-clear{height:auto;min-width:2rem;padding:.125rem 0;justify-content:center}.fdp-value-help-dialog__actions-row{padding:.5rem 1rem;display:flex;align-items:center;justify-content:flex-end;border-top:.0625rem solid #d9d9d9;border-top:.0625rem solid var(--sapPageFooter_BorderColor, #d9d9d9)}.fdp-value-help-dialog__actions-row .fd-button{margin-left:.5rem}.fdp-value-help-dialog .fdp-value-help-dialog__hidden_label{display:none!important}.fdp-value-help-dialog__table-busy-indicator{height:100%}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: ScrollbarDirective, selector: \"[fdScrollbar], [fd-scrollbar]\", inputs: [\"noHorizontalScroll\", \"noVerticalScroll\", \"alwaysVisible\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: TitleComponent, selector: \"[fd-title], [fdTitle]\", inputs: [\"headerSize\", \"wrap\"], exportAs: [\"fd-title\"] }, { kind: \"component\", type: TokenizerComponent, selector: \"fd-tokenizer\", inputs: [\"class\", \"disableKeyboardDeletion\", \"compactCollapse\", \"tokenizerFocusable\", \"inputValue\", \"glyph\", \"glyphFont\", \"moreTerm\", \"open\", \"showOverflowPopover\"], outputs: [\"moreClickedEvent\"] }, { kind: \"component\", type: TokenComponent, selector: \"fd-token\", inputs: [\"disabled\", \"selected\", \"readOnly\"], outputs: [\"onCloseClick\", \"onRemove\", \"onTokenClick\", \"onTokenKeydown\", \"elementFocused\"] }, { kind: \"directive\", type: ToolbarItemDirective, selector: \"[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]\", inputs: [\"fdOverflowPriority\", \"fdOverflowGroup\"] }, { kind: \"component\", type: FormControlComponent, selector: \"input[fd-form-control], textarea[fd-form-control]\", inputs: [\"state\", \"type\", \"class\", \"ariaLabel\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: TokenizerInputDirective, selector: \"[fdTokenizerInput], [fd-tokenizer-input]\", inputs: [\"class\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: i3.NgForm, selector: \"form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]\", inputs: [\"ngFormOptions\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: LayoutGridComponent, selector: \"fd-layout-grid, [fdLayoutGrid]\", inputs: [\"class\", \"noGap\", \"noHorizontalGap\", \"noVerticalGap\"] }, { kind: \"directive\", type: LayoutGridRowDirective, selector: \"[fd-layout-grid-row], [fdLayoutGridRow]\" }, { kind: \"directive\", type: LayoutGridColDirective, selector: \"[fd-layout-grid-col], [fdLayoutGridCol]\", inputs: [\"fdLayoutGridCol\", \"colGrow\", \"colMd\", \"colLg\", \"colXl\", \"colOffset\", \"colOffsetMd\", \"colOffsetLg\", \"colOffsetXl\", \"class\"] }, { kind: \"component\", type: SearchFieldComponent, selector: \"fdp-search-field\", inputs: [\"categoryMode\", \"appearance\", \"placeholder\", \"mobile\", \"mobileConfig\", \"disableRefresh\", \"disableSearch\", \"suggestions\", \"dataSource\", \"inputText\", \"categories\", \"currentCategory\", \"categoryLabel\", \"hideCategoryLabel\", \"isLoading\", \"forceSearchButton\", \"disableSuggestionsFoundAnnouncer\"], outputs: [\"inputChange\", \"searchSubmit\", \"cancelSearch\", \"isOpenChange\"] }, { kind: \"component\", type: ToolbarComponent, selector: \"fd-toolbar\", inputs: [\"titleId\", \"class\", \"shouldOverflow\", \"fdType\", \"title\", \"active\", \"clearBorder\", \"forceOverflow\", \"tabindex\", \"headingLevel\", \"ariaLabel\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: ToolbarSpacerDirective, selector: \"fd-toolbar-spacer\", inputs: [\"width\", \"class\", \"fixed\"] }, { kind: \"component\", type: BusyIndicatorComponent, selector: \"fd-busy-indicator\", inputs: [\"loading\", \"size\", \"block\", \"ariaLabel\", \"ariaValueText\", \"title\", \"label\", \"ariaLive\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"component\", type: SkeletonComponent, selector: \"fd-skeleton\", inputs: [\"animated\", \"type\", \"textLines\", \"width\", \"height\"] }, { kind: \"component\", type: SelectTabComponent, selector: \"fdp-select-tab\", inputs: [\"selectTabTitleId\", \"selectTabCountId\", \"selected\", \"loading\", \"filters\", \"selection\", \"allowSelectAll\", \"uniqueKey\", \"pageSize\", \"defaultMobileHeaders\", \"displayedData\"], outputs: [\"select\"] }, { kind: \"component\", type: DefineTabComponent, selector: \"fdp-define-tab\", inputs: [\"titleId\", \"selectedId\", \"conditions\", \"strategyLabels\"], outputs: [\"includeChange\", \"excludeChange\", \"conditionChange\"] }, { kind: \"directive\", type: ListLinkDirective, selector: \"[fd-list-link], [fdListLink]\", inputs: [\"navigationIndicator\", \"navigated\", \"focusable\"] }, { kind: \"directive\", type: ListTitleDirective, selector: \"[fd-list-title], [fdListTitle]\", inputs: [\"wrap\", \"truncate\"] }, { kind: \"directive\", type: ListIconDirective, selector: \"[fdListIcon], [fd-list-icon]\", inputs: [\"glyph\", \"glyphFont\", \"class\", \"role\", \"ariaHidden\"] }, { kind: \"component\", type: TabNavComponent, selector: \"[fd-tab-nav]\", inputs: [\"class\", \"mode\", \"size\"] }, { kind: \"directive\", type: TabItemDirective, selector: \"[fd-tab-item]\", inputs: [\"class\", \"tabItemState\", \"header\", \"disabled\", \"fdTabItemClass\"] }, { kind: \"directive\", type: TabLinkDirective, selector: \"[fd-tab-link]\", inputs: [\"active\", \"disabled\"], outputs: [\"keyDown\", \"focused\"] }, { kind: \"directive\", type: TabTagDirective, selector: \"[fdTabTag], [fd-tab-tag]\" }, { kind: \"component\", type: BarComponent, selector: \"[fd-bar]\", inputs: [\"class\", \"barDesign\", \"inPage\", \"inHomePage\", \"clear\", \"size\", \"role\"] }, { kind: \"directive\", type: BarLeftDirective, selector: \"[fd-bar-left]\" }, { kind: \"directive\", type: BarElementDirective, selector: \"fd-bar-element\", inputs: [\"fullWidth\"] }, { kind: \"directive\", type: BarRightDirective, selector: \"[fd-bar-right]\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"pipe\", type: SlicePipe, name: \"slice\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }, { kind: \"pipe\", type: DisplayFnPipe, name: \"displayFnPipe\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-value-help-dialog', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: VhdComponent,\n useExisting: PlatformValueHelpDialogComponent\n }\n ], imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n NgTemplateOutlet,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n DialogFooterComponent,\n TitleComponent,\n TokenizerComponent,\n TokenComponent,\n ToolbarItemDirective,\n FormControlComponent,\n TokenizerInputDirective,\n ButtonComponent,\n FormsModule,\n LayoutGridComponent,\n LayoutGridRowDirective,\n LayoutGridColDirective,\n SearchFieldComponent,\n ToolbarComponent,\n ToolbarSpacerDirective,\n BusyIndicatorComponent,\n FormLabelComponent,\n SkeletonComponent,\n SelectTabComponent,\n DefineTabComponent,\n ListLinkDirective,\n ListTitleDirective,\n ListIconDirective,\n TabNavComponent,\n TabItemDirective,\n TabLinkDirective,\n TabTagDirective,\n BarComponent,\n BarLeftDirective,\n BarElementDirective,\n BarRightDirective,\n ButtonBarComponent,\n SlicePipe,\n FdTranslatePipe,\n DisplayFnPipe\n ], template: \"<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\\\"dialogConfig\\\" #container>\\n <fd-dialog [dialogConfig]=\\\"dialogConfig\\\" [dialogRef]=\\\"dialog\\\">\\n <fd-dialog-header [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <ng-template [ngTemplateOutlet]=\\\"mobile ? mobileDialogTitle : desktopDialogTitle\\\"></ng-template>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [attr.dir]=\\\"_dir$()\\\">\\n @if (!mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n <div fd-scrollbar class=\\\"fdp-value-help-dialog__content-holder\\\">\\n @if (mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.selectFromList) {\\n <ng-template [ngTemplateOutlet]=\\\"selectionContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.defineConditions) {\\n <ng-template [ngTemplateOutlet]=\\\"defineConditionsContent\\\"></ng-template>\\n }\\n </div>\\n </fd-dialog-body>\\n <fd-dialog-footer [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"footer\\\">\\n @if (!isMobileAdvancedSearchActive) {\\n <div\\n class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__selection-row\\\"\\n [attr.aria-label]=\\\"'platformVHD.selectedAndConditionLabel' | fdTranslate\\\"\\n >\\n <span\\n role=\\\"heading\\\"\\n [attr.aria-level]=\\\"_headingLevel()\\\"\\n fd-title\\n class=\\\"selected-and-condition-title\\\"\\n [id]=\\\"id + '-selected-item'\\\"\\n >\\n @if (hasSelectedAndConditions) {\\n {{ 'platformVHD.selectedAndConditionLabel' | fdTranslate }}\\n ({{ selectedItems.length + validConditions.length }})\\n } @else {\\n {{ 'platformVHD.selectedEmptyLabel' | fdTranslate }}\\n }\\n </span>\\n <div class=\\\"fdp-value-help-dialog__tokens-wrapper\\\">\\n <div class=\\\"fdp-value-help-dialog__tokens\\\">\\n <!-- Selected items -->\\n <fd-tokenizer>\\n @for (\\n item of selectedItems;\\n track _trackBySelectedFn(selectedIndex, item);\\n let selectedIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeSelected(selectedIndex)\\\"\\n >{{\\n !!tokenizerFn\\n ? (item | displayFnPipe: tokenizerFn)\\n : item[tokenViewField]\\n }}\\n </fd-token>\\n }\\n @for (\\n item of validConditions;\\n track _trackByConditionFn(conditionIndex, item);\\n let conditionIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeCondition(conditionIndex)\\\"\\n >\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionValue\\\"\\n [ngTemplateOutletContext]=\\\"{ item: item }\\\"\\n ></ng-template>\\n </fd-token>\\n }\\n <input fd-form-control fd-tokenizer-input [disabled]=\\\"!hasSelectedAndConditions\\\" />\\n </fd-tokenizer>\\n </div>\\n <button\\n (click)=\\\"clearSelectedAndConditionItems()\\\"\\n class=\\\"fdp-value-help-dialog__tokens-clear\\\"\\n fd-button\\n [disabled]=\\\"!hasSelectedAndConditions\\\"\\n fdType=\\\"transparent\\\"\\n [title]=\\\"'platformVHD.footerClearSelectedTitle' | fdTranslate\\\"\\n glyph=\\\"decline\\\"\\n [ariaLabel]=\\\"'platformVHD.footerClearSelectedAriaLabel' | fdTranslate\\\"\\n ></button>\\n </div>\\n </div>\\n }\\n <div class=\\\"fdp-value-help-dialog__actions-row\\\">\\n @if (mobile && isOpenAdvanced) {\\n <button\\n fd-button\\n data-go-advanced\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"searchAdvanced()\\\"\\n ></button>\\n }\\n @if (selectedTab !== _tabTypes.advancedSearch) {\\n <button\\n fd-button\\n data-succes\\n [disabled]=\\\"loadingState\\\"\\n [label]=\\\"'platformVHD.successButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"success()\\\"\\n ></button>\\n }\\n <button\\n fd-button\\n data-dismiss-dialog\\n [label]=\\\"'platformVHD.cancelButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"dismiss()\\\"\\n ></button>\\n </div>\\n </ng-template>\\n </fd-dialog-footer>\\n </fd-dialog>\\n</ng-template>\\n<ng-template #advancedSearchContent>\\n @if (isSelectionTab) {\\n <form class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__advanced-search\\\" [id]=\\\"'advanced-search-' + id\\\">\\n @if (!mobile || (mobile && !isOpenAdvanced)) {\\n <fd-layout-grid>\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"mobile ? 12 : 6\\\" [colXl]=\\\"mobile ? 12 : 6\\\">\\n <fdp-search-field\\n [placeholder]=\\\"'platformVHD.searchPlaceholder' | fdTranslate\\\"\\n (searchSubmit)=\\\"search()\\\"\\n (inputChange)=\\\"_mainSearch = $event.text\\\"\\n ></fdp-search-field>\\n </div>\\n @if (_hasAdvanced) {\\n <div\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"mobile ? 12 : 6\\\"\\n [colXl]=\\\"mobile ? 12 : 6\\\"\\n class=\\\"fdp-value-help-dialog__advanced-actions\\\"\\n >\\n <fd-toolbar [clearBorder]=\\\"true\\\">\\n <fd-toolbar-spacer></fd-toolbar-spacer>\\n @if (_hasAdvanced) {\\n <button\\n fd-toolbar-item\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"\\n (mobile\\n ? 'platformVHD.searchAdvancedSearchLabel'\\n : isOpenAdvanced\\n ? 'platformVHD.searchHideAdvancedSearchLabel'\\n : 'platformVHD.searchShowAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n (click)=\\\"toggleAdvancedSearch()\\\"\\n ></button>\\n }\\n <button\\n fd-toolbar-item\\n type=\\\"submit\\\"\\n fd-button\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n (click)=\\\"filter()\\\"\\n ></button>\\n </fd-toolbar>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n }\\n @if (isOpenAdvanced && _hasAdvanced) {\\n <div [id]=\\\"'advanced-search-content-' + id\\\" class=\\\"fdp-value-help-dialog__advanced-filters\\\">\\n <fd-busy-indicator [loading]=\\\"loadingState && _firstLoadingDone\\\" [block]=\\\"true\\\">\\n @if (_firstLoadingDone) {\\n <fd-layout-grid\\n [class.fdp-value-help-dialog__with-toggle-all]=\\\"filters.length > maxShownInitialFilters\\\"\\n >\\n <div fdLayoutGridRow>\\n @for (\\n filter of _displayedFilters | slice: 0 : shownFilterCount + 1;\\n track _trackByFilterFn($index, filter)\\n ) {\\n @if (filter.advanced) {\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"6\\\" [colXl]=\\\"3\\\">\\n <label\\n class=\\\"fd-form-group__header\\\"\\n fd-form-label\\n [for]=\\\"'input' + filter.key\\\"\\n >{{ filter.label }}:</label\\n >\\n @if (filter.filterDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"filter.filterDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: filter }\\\"\\n ></ng-template>\\n } @else {\\n <input\\n [(ngModel)]=\\\"filter.value\\\"\\n fd-form-control\\n type=\\\"text\\\"\\n [name]=\\\"'search-by-' + filter.label\\\"\\n [id]=\\\"'input' + filter.key\\\"\\n />\\n }\\n </div>\\n }\\n }\\n @if (filters.length > maxShownInitialFilters) {\\n <div\\n colGrow\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"6\\\"\\n [colXl]=\\\"3\\\"\\n class=\\\"fdp-value-help-dialog__toggle-filters\\\"\\n >\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n (click)=\\\"toggleShownFilters()\\\"\\n [label]=\\\"\\n (isShowAllFilters\\n ? 'platformVHD.searchHideAllAdvancedSearchLabel'\\n : 'platformVHD.searchShowAllAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n ></button>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n } @else {\\n <fd-skeleton width=\\\"100%\\\" height=\\\"100px\\\">\\n <svg:rect x=\\\"0\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"60\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"80\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n </fd-skeleton>\\n }\\n </fd-busy-indicator>\\n </div>\\n }\\n </form>\\n }\\n</ng-template>\\n<ng-template #selectionContent>\\n <fd-busy-indicator\\n [loading]=\\\"loadingState && _firstLoadingDone\\\"\\n [block]=\\\"true\\\"\\n class=\\\"fdp-value-help-dialog__table-busy-indicator\\\"\\n >\\n <fdp-select-tab\\n [selected]=\\\"selectedItems\\\"\\n [loading]=\\\"loadingState && !_firstLoadingDone\\\"\\n [uid]=\\\"id\\\"\\n [displayedData]=\\\"_displayedData\\\"\\n [tabTitle]=\\\"'platformVHD.selectTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n [selection]=\\\"searchSelection\\\"\\n [uniqueKey]=\\\"uniqueKey\\\"\\n [pageSize]=\\\"searchTablePageSize\\\"\\n [defaultMobileHeaders]=\\\"searchTableMobileHeaders\\\"\\n [filters]=\\\"_displayedFilters\\\"\\n [allowSelectAll]=\\\"allowSelectAll\\\"\\n (select)=\\\"onSelect($event)\\\"\\n ></fdp-select-tab>\\n </fd-busy-indicator>\\n</ng-template>\\n<ng-template #defineConditionsContent>\\n <div fd-scrollbar>\\n <fdp-define-tab\\n [strategyLabels]=\\\"defineStrategyLabels\\\"\\n [conditions]=\\\"conditionItems\\\"\\n [uid]=\\\"id\\\"\\n [tabTitle]=\\\"'platformVHD.defineTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n (conditionChange)=\\\"onConditionChange($event)\\\"\\n ></fdp-define-tab>\\n </div>\\n</ng-template>\\n<ng-template #dialogTitleText>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{ dialogTitle }}</span>\\n</ng-template>\\n<ng-template #tabLink let-title=\\\"title\\\" let-type=\\\"type\\\">\\n @if (selectedTab === type && showSelectionTab && showDefineTab) {\\n <button\\n fd-button\\n glyph=\\\"navigation-left-arrow\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"switchTab()\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBackBtnTitle' | fdTranslate\\\"\\n ></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{ title }}</span>\\n }\\n @if (selectedTab !== type) {\\n <a\\n fd-list-link\\n (click)=\\\"switchTab(type)\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBtnOpenDialogLabel' | fdTranslate\\\"\\n >\\n <span fd-list-title>{{ title }}</span>\\n <i fd-list-icon glyph=\\\"navigation-right-arrow\\\"></i>\\n </a>\\n }\\n</ng-template>\\n<ng-template #advancedHeader>\\n <button fd-button glyph=\\\"navigation-left-arrow\\\" fdType=\\\"transparent\\\" (click)=\\\"toggleAdvancedSearch()\\\"></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{\\n 'platformVHD.searchAdvancedSearchLabel' | fdTranslate\\n }}</span>\\n</ng-template>\\n<ng-template #desktopDialogTitle>\\n <ng-template [ngTemplateOutlet]=\\\"dialogTitleText\\\"></ng-template>\\n <ng-template [ngTemplateOutlet]=\\\"desktopTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #mobileDialogTitle>\\n <div class=\\\"fdp-value-help-dialog__mobile-title\\\">\\n @if (hasSelectedTab) {\\n <ng-template [ngTemplateOutlet]=\\\"selectedTabHeader\\\"></ng-template>\\n } @else {\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{\\n dialogTitle\\n }}</span>\\n }\\n </div>\\n <ng-template [ngTemplateOutlet]=\\\"mobileTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #desktopTabs>\\n @if (showSelectionTab && showDefineTab) {\\n <nav fd-tab-nav class=\\\"fdp-value-help-dialog__tabs\\\">\\n @if (showSelectionTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.selectFromList)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.selectFromList\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.selectFromList ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.selectTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.defineConditions)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.defineConditions\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.defineConditions ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.defineTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n </nav>\\n }\\n</ng-template>\\n<ng-template #mobileTabs>\\n @if (!hasSelectedTab && showSelectionTab && showDefineTab) {\\n <div>\\n @if (showSelectionTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.selectTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n (click)=\\\"switchTab(_tabTypes.selectFromList)\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.selectTabTitle' | fdTranslate }\\n \\\"\\n ></fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.defineTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.defineTabTitle' | fdTranslate }\\n \\\"\\n (click)=\\\"switchTab(_tabTypes.defineConditions)\\\"\\n >\\n </fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</ng-template>\\n<ng-template #selectedTabHeader>\\n @switch (selectedTab) {\\n @case (_tabTypes.selectFromList) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.selectTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n @case (_tabTypes.advancedSearch) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedHeader\\\"></ng-template>\\n }\\n @case (_tabTypes.defineConditions) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.defineTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n }\\n</ng-template>\\n<ng-template #conditionValue let-item=\\\"item\\\">\\n @if (item.strategy !== 'empty' && item.strategy !== 'not_empty') {\\n <span>\\n {{ item | displayFnPipe: conditionDisplayFn : _displayedFilters }}\\n </span>\\n } @else {\\n @if (item.strategy === 'not_empty') {\\n !(<ng-template [ngTemplateOutlet]=\\\"emptyConditionText\\\"></ng-template>)\\n } @else {\\n <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}>\\n }\\n }\\n</ng-template>\\n<ng-template #emptyConditionText> <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}> </ng-template>\\n\", styles: [\".fdp-value-help-dialog .fd-dialog__body{display:flex;flex-direction:column;overflow:hidden}.fdp-value-help-dialog .fd-title--h5{padding:.5rem 0}.fdp-value-help-dialog .fd-toolbar{background:none;border:none;padding:.1735rem .5rem;height:auto;min-height:1.625rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__advanced-search{padding-top:1rem}.fdp-value-help-dialog__advanced-search,.fdp-value-help-dialog .fd-dialog__body{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__advanced-filters{padding-top:1rem}.fdp-value-help-dialog__advanced-filters label{height:auto}.fdp-value-help-dialog__toggle-filters{display:flex;justify-content:flex-end;align-items:flex-end}.fdp-value-help-dialog__toggle-filters .fd-button{margin-bottom:.25rem}.fdp-value-help-dialog__advanced-actions{display:flex;align-items:center;justify-content:flex-end}.fdp-value-help-dialog-mobile .fdp-value-help-dialog__advanced-actions{justify-content:flex-start}.fdp-value-help-dialog__advanced-actions .fd-toolbar{padding:0}.fdp-value-help-dialog .fd-bar.fd-bar--cozy{height:auto}.fdp-value-help-dialog .fd-dialog__header{box-shadow:none}.fdp-value-help-dialog .fd-dialog__header .fd-title{display:flex;align-items:center;padding-left:2rem;padding-right:2rem;min-height:2.5rem;box-shadow:none;border-bottom:none;background-color:var(--sapObjectHeader_Background, #fff);position:relative;z-index:2}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title{display:flex;border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--sapGroup_TitleBorderColor, #d9d9d9)}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title .fd-title{flex:1 1 auto;border:none}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__tabs{position:relative}.fdp-value-help-dialog .fd-dialog__header,.fdp-value-help-dialog .fd-dialog__footer{height:auto;flex-direction:column}.fdp-value-help-dialog .fd-dialog__header.fd-bar,.fdp-value-help-dialog .fd-dialog__footer.fd-bar{padding:0}.fdp-value-help-dialog .fd-dialog__footer{border-top:none}.fdp-value-help-dialog__content-holder{padding:0 2rem 1rem;display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;min-height:20rem}.fdp-value-help-dialog__row{padding:0 2rem 1rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__selection-row{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__tokens-wrapper{display:flex}.fdp-value-help-dialog__tokens{flex:1 1 auto;overflow:hidden;align-items:center;border:1px solid var(--sapContent_ForegroundBorderColor, #89919a);margin-right:.5rem;border-radius:var(--sapElement_BorderCornerRadius, .25rem);background:none}.fdp-value-help-dialog__tokens fd-toolbar{flex:1 1 auto;overflow:hidden}.fdp-value-help-dialog__tokens-clear{height:auto;min-width:2rem;padding:.125rem 0;justify-content:center}.fdp-value-help-dialog__actions-row{padding:.5rem 1rem;display:flex;align-items:center;justify-content:flex-end;border-top:.0625rem solid #d9d9d9;border-top:.0625rem solid var(--sapPageFooter_BorderColor, #d9d9d9)}.fdp-value-help-dialog__actions-row .fd-button{margin-left:.5rem}.fdp-value-help-dialog .fdp-value-help-dialog__hidden_label{display:none!important}.fdp-value-help-dialog__table-busy-indicator{height:100%}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DialogService }, { type: i2.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { id: [{\n type: Input\n }], value: [{\n type: Input\n }], dialogTitle: [{\n type: Input\n }], initialTab: [{\n type: Input\n }], tabs: [{\n type: Input\n }], isOpenAdvanced: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], dialogConfig: [{\n type: Input\n }], uniqueKey: [{\n type: Input\n }], headerId: [{\n type: Input\n }], tokenViewField: [{\n type: Input\n }], tokenizerFn: [{\n type: Input\n }], mobile: [{\n type: Input\n }], formatToken: [{\n type: Input\n }], conditionDisplayFn: [{\n type: Input\n }], tokenValidator: [{\n type: Input\n }], searchSelection: [{\n type: Input\n }], searchTablePageSize: [{\n type: Input\n }], searchTableMobileHeaders: [{\n type: Input\n }], maxShownInitialFilters: [{\n type: Input\n }], loading: [{\n type: Input\n }], allowSelectAll: [{\n type: Input\n }], defineStrategyLabels: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onDataRequested: [{\n type: Output\n }], onDataReceived: [{\n type: Output\n }], filters: [{\n type: ContentChildren,\n args: [VhdFilterComponent]\n }], columnDef: [{\n type: ContentChildren,\n args: [ValueHelpColumnDefDirective]\n }], dialogContainer: [{\n type: ViewChild,\n args: ['container', { read: TemplateRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQ0gsWUFBWSxFQUNaLG1CQUFt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Z0JBSzVDLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZmlsdGVyLCBpc09ic2VydmFibGUsIG9mLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIFNsaWNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERpc3BsYXlGblBpcGUsIFJ0bFNlcnZpY2UsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJDb21wb25lbnQsXG4gICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgIEJ1dHRvbkJhckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1c3lJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnVzeS1pbmRpY2F0b3InO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIERpYWxvZ0NvbmZpZyxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ1JlZixcbiAgICBEaWFsb2dTZXJ2aWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xDb21wb25lbnQsIEZvcm1MYWJlbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IExheW91dEdyaWRDb2xEaXJlY3RpdmUsIExheW91dEdyaWRDb21wb25lbnQsIExheW91dEdyaWRSb3dEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGF5b3V0LWdyaWQnO1xuaW1wb3J0IHsgTGlzdEljb25EaXJlY3RpdmUsIExpc3RMaW5rRGlyZWN0aXZlLCBMaXN0VGl0bGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGlzdCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IEhlYWRpbmdMZXZlbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2tlbGV0b24nO1xuaW1wb3J0IHsgVGFiSXRlbURpcmVjdGl2ZSwgVGFiTGlua0RpcmVjdGl2ZSwgVGFiTmF2Q29tcG9uZW50LCBUYWJUYWdEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGFicyc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBUb2tlbkNvbXBvbmVudCwgVG9rZW5pemVyQ29tcG9uZW50LCBUb2tlbml6ZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b2tlbic7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50LCBUb29sYmFySXRlbURpcmVjdGl2ZSwgVG9vbGJhclNwYWNlckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b29sYmFyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBEZWZpbmVUYWJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2RlZmluZS10YWIvZGVmaW5lLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0VGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZWxlY3QtdGFiL3NlbGVjdC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFZoZEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyL3ZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZGVmYXVsdENvbmRpdGlvbkRpc3BsYXlGbiB9IGZyb20gJy4uL2NvbnN0YW5zL2NvbmRpdGlvbi1kaXNwbGF5LmZ1bmN0aW9uJztcbmltcG9ydCB7IFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdmFsdWUtaGVscC1jb2x1bW4tZGVmLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZSxcbiAgICBCYXNlRW50aXR5LFxuICAgIE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlLFxuICAgIFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2UsXG4gICAgVmRoVGFibGVTZWxlY3Rpb24sXG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGRGaWx0ZXIsXG4gICAgVmhkVGFiLFxuICAgIFZoZFZhbHVlLFxuICAgIFZoZFZhbHVlQ2hhbmdlRXZlbnRcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFZoZENvbXBvbmVudCB9IGZyb20gJy4uL21vZGVscy92aGQtY29tcG9uZW50Lm1vZGVsJztcblxubGV0IHZoZEhlYWRlclVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IHR5cGUgRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiA9XG4gICAgfCBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+XG4gICAgfCBBcnJheVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD5cbiAgICB8IE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+O1xuXG5sZXQgdmhpVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vdmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFZoZENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQbGF0Zm9ybVZhbHVlSGVscERpYWxvZ0NvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBUb2tlbml6ZXJDb21wb25lbnQsXG4gICAgICAgIFRva2VuQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFySXRlbURpcmVjdGl2ZSxcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIFRva2VuaXplcklucHV0RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBTZWFyY2hGaWVsZENvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhclNwYWNlckRpcmVjdGl2ZSxcbiAgICAgICAgQnVzeUluZGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBTa2VsZXRvbkNvbXBvbmVudCxcbiAgICAgICAgU2VsZWN0VGFiQ29tcG9uZW50LFxuICAgICAgICBEZWZpbmVUYWJDb21wb25lbnQsXG4gICAgICAgIExpc3RMaW5rRGlyZWN0aXZlLFxuICAgICAgICBMaXN0VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIExpc3RJY29uRGlyZWN0aXZlLFxuICAgICAgICBUYWJOYXZDb21wb25lbnQsXG4gICAgICAgIFRhYkl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIFRhYkxpbmtEaXJlY3RpdmUsXG4gICAgICAgIFRhYlRhZ0RpcmVjdGl2ZSxcbiAgICAgICAgQmFyQ29tcG9uZW50LFxuICAgICAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBTbGljZVBpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgRGlzcGxheUZuUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1WYWx1ZUhlbHBEaWFsb2dDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBWaGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIElkIG9mIHRoZSBwb3BvdmVyICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkcC12aGQtJyArIHZoaVVuaXF1ZUlkKys7XG5cbiAgICAvKiogSW5pdGlhbCBzdGF0ZSBvZiBWYWx1ZSBoZWxwIGRpYWxvZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWU6IFZoZFZhbHVlPFQ+ID0ge1xuICAgICAgICBzZWxlY3RlZDogW10sXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIC8qKiBEaWFsb2cgdGl0bGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpYWxvZ1RpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogU2VsZWN0IGZyb20gbGlzdCB0YWIgYWN0aXZhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbFRhYiA9IFZoZFRhYi5zZWxlY3RGcm9tTGlzdDtcblxuICAgIC8qKiBWaXNpYmxlIHRhYnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYnM6ICdib3RoJyB8ICdzZWxlY3QnIHwgJ2RlZmluZScgPSAnYm90aCc7XG5cbiAgICAvKiogSW5pdGlhbCBleHBhbmQgc3RhdGUgZm9yIGFkdmFuY2VkIHNlYXJjaCBwYW5lbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNPcGVuQWR2YW5jZWQgPSBmYWxzZTtcblxuICAgIC8qKiBEYXRhIHNvdXJjZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8YW55PiB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB0aGlzLnRvRGF0YVN0cmVhbSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRhdGFTb3VyY2UoKTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIERpYWxvZydzIGN1c3RvbSBjb25maWcgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnID0ge307XG5cbiAgICAvKiogVW5pcXVlIGtleSBmcm9tIHRoZSBzb3VyY2UgZmllbGQgbmFtZXMuIFJlcXVpcmVkIGZpZWxkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pcXVlS2V5OiBzdHJpbmc7XG5cbiAgICAvKiogSWQgYXR0cmlidXRlIGZvciBkaWFsb2cgdGl0bGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGhlYWRlcklkID0gYGZkcC12aGQtaGVhZGVyLWlkLSR7dmhkSGVhZGVyVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIEZpZWxkIG5hbWUgZm9yIGRlZmF1bHQgcmVuZGVyIGZyb20gZGF0YS5cbiAgICAgKiBSZXF1aXJlZCBmaWVsZCBpZiB0b2tlbml6ZXJGbiBpcyBub3QgZXhpc3QuICovXG4gICAgQElucHV0KClcbiAgICB0b2tlblZpZXdGaWVsZDogc3RyaW5nO1xuXG4gICAgLyoqIFRva2VuaXplciBmdW5jdGlvbiBmb3IgY3VzdG9tIHRva2VuIHJlbmRlciwgaXQgaGFzIGhpZ2hlciBwcmlvIHRoYXQgYHRva2VuVmlld0ZpZWxkYC5cbiAgICAgKiBSZXF1aXJlZCBmaWVsZCBpZiB0b2tlblZpZXdGaWVsZCBpcyBub3QgZXhpc3QuICovXG4gICAgQElucHV0KClcbiAgICB0b2tlbml6ZXJGbjogKGl0ZW06IFQpID0+IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB2YWx1ZSBoZWxwIGRpYWxvZyBzaG91bGQgYmUgdmlldyBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogSXQgc2hvdWxkIGJlIGFibGUgaWYgeW91IHVzZSBtdWx0aXBsZSBzZWxlY3Rpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcm1hdFRva2VuOiAodmFsdWU6IFZoZFZhbHVlQ2hhbmdlRXZlbnQ8VD4pID0+IHZvaWQ7XG5cbiAgICAvKiogVG9rZW5pemVyIGZ1bmN0aW9uIGZvciBjb25kaXRpb24ncyB0b2tlbiByZW5kZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbmRpdGlvbkRpc3BsYXlGbiA9IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm47XG5cbiAgICAvKiogVmFsaWRhdG9yIGZ1bmN0aW9uLiBDYWxsZWQgd2hlbiB1c2VyIHN1Ym1pdHMgVkhEIGRpYWxvZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRva2VuVmFsaWRhdG9yOiAoKHZhbHVlOiBWaGRWYWx1ZUNoYW5nZUV2ZW50KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbikgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogU2VsZWN0aW9uIG1vZGUgZm9yIHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoU2VsZWN0aW9uOiBWZGhUYWJsZVNlbGVjdGlvbiA9ICdtdWx0aSc7XG5cbiAgICAvKiogSXRlbXMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24gYmVsb3cgc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZVBhZ2VTaXplID0gMjA7XG5cbiAgICAvKiogQ291bnQgb2YgZGVmYXVsdCBtb2JpbGUgaGVhZGVyIGZyb20gc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnMgPSAyO1xuXG4gICAgLyoqIE1heCBzaG93biBpbml0aWFsIGZpbHRlcnMgb24gb3Blbi4gRGVza3RvcCBvbmx5ICovXG4gICAgQElucHV0KClcbiAgICBtYXhTaG93bkluaXRpYWxGaWx0ZXJzID0gNDtcblxuICAgIC8qKiBMb2FkaW5nIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgdXNlcnMgdG8gc2VsZWN0IGFsbCB0YWJsZSBlbnRyaWVzIHdpdGggb25lIGNoZWNrYm94LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuXG4gICAgLyoqIEN1c3RvbSBzdHJhdGVnaWVzIGxhYmVsc1xuICAgICAqIEFsbG93ZWQga2V5czogY29udGFpbnMsIGVxdWFsVG8sIGJldHdlZW4sIHN0YXJ0c1dpdGgsIGVuZHNXaXRoLCBsZXNzVGhhbiwgbGVzc1RoYW5FcXVhbCwgZ3JlYXRlclRoYW4sIGdyZWF0ZXJUaGFuRXF1YWwsIGVtcHR5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkZWZpbmVTdHJhdGVneUxhYmVsczoge1xuICAgICAgICBba2V5IGluIGtleW9mICh0eXBlb2YgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHwgdHlwZW9mIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSldPzogc3RyaW5nO1xuICAgIH0gPSB7XG4gICAgICAgIGNvbnRhaW5zOiAnY29udGFpbnMnLFxuICAgICAgICBlcXVhbFRvOiAnZXF1YWwgdG8nLFxuICAgICAgICBiZXR3ZWVuOiAnYmV0d2VlbicsXG4gICAgICAgIHN0YXJ0c1dpdGg6ICdzdGFydHMgd2l0aCcsXG4gICAgICAgIGVuZHNXaXRoOiAnZW5kcyB3aXRoJyxcbiAgICAgICAgbGVzc1RoYW46ICdsZXNzIHRoYW4nLFxuICAgICAgICBsZXNzVGhhbkVxdWFsOiAnbGVzcyB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgICAgZ3JlYXRlclRoYW46ICdncmVhdGVyIHRoYW4nLFxuICAgICAgICBncmVhdGVyVGhhbkVxdWFsOiAnZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgICAgZW1wdHk6ICdlbXB0eScsXG4gICAgICAgIG5vdF9lcXVhbFRvOiAnbm90IGVxdWFsIHRvJyxcbiAgICAgICAgbm90X2VtcHR5OiAnbm90IGVtcHR5J1xuICAgIH07XG5cbiAgICAvKiogRGlhbG9nIG91dHB1dHMgKi9cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGZpbHRlcnMvdG9rZW5zIHdlcmUgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmhkVmFsdWVDaGFuZ2VFdmVudDxUPj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkRhdGFSZWNlaXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuIEZpdGxlcnMgZm9yIHNlYXJjaCB0YWJsZSBhbmQgZGVmaW5jZSBjb25kaXRpb25zICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihWaGRGaWx0ZXJDb21wb25lbnQpXG4gICAgZmlsdGVyczogUXVlcnlMaXN0PFZoZEZpbHRlckNvbXBvbmVudD47XG5cbiAgICAvKiogQ29sdW1uIGRlZmluaXRpb25zLiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVmFsdWVIZWxwQ29sdW1uRGVmRGlyZWN0aXZlKVxuICAgIGNvbHVtbkRlZjogUXVlcnlMaXN0PFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiBJbnRlcm5hbCBjb250YWluZXIgZm9yIGRpYWxvZyAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBkaWFsb2dDb250YWluZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBIZWFkaW5nIGxldmVsIG9mIHRoZSBkaWFsb2cgdGl0bGUuXG4gICAgICovXG4gICAgaGVhZGluZ0xldmVsID0gaW5wdXQ8SGVhZGluZ0xldmVsPig1KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hlYWRpbmdMZXZlbCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuaGVhZGluZ0xldmVsKCkgPyBOdW1iZXIucGFyc2VJbnQoYCR7dGhpcy5oZWFkaW5nTGV2ZWwoKX1gLnJlcGxhY2UoL1xcRC9nLCAnJyksIDEwKSA6IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFjdGl2ZURpYWxvZz86IERpYWxvZ1JlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYlR5cGVzID0gVmhkVGFiO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFzQWR2YW5jZWQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheWVkRmlsdGVyczogVmhkRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWFpblNlYXJjaCA9ICcnO1xuXG4gICAgLyoqIGhhbmRsZXMgcnRsIHNlcnZpY2VcbiAgICAgKiBAaGlkZGVuICovXG4gICAgX2RpciQgPSBjb21wdXRlZDxEaXJlY3Rpb24+KCgpID0+ICh0aGlzLl9ydGxTZXJ2aWNlPy5ydGxTaWduYWwoKSA/ICdydGwnIDogJ2x0cicpKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2VsZWN0ZWRUYWI6IFZoZFRhYiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93bkZpbHRlckNvdW50ID0gSW5maW5pdHk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBsb2FkaW5nU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmcgPz8gdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUbyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZmlyc3QgbG9hZGluZyB3aGVuIHNrZWxldG9ucyBiZSBzaG93biBhbmQgc3Vic2VxdWVudCBsb2FkaW5ncyB3aGVuIGJ1c3kgaW5kaWNhdG9yIGJlIHNob3duXG4gICAgICovXG4gICAgX2ZpcnN0TG9hZGluZ0RvbmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveWVkID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiBmb3IgZGF0YSBzb3VyY2UgaGFuZGxpbmcgKi9cbiAgICBwcml2YXRlIF9kc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuIFByZXZpb3VzIHN0YXRlICovXG4gICAgcHJpdmF0ZSBfcHJldlN0YXRlOiBWaGRWYWx1ZTxUPiA9IHtcbiAgICAgICAgc2VsZWN0ZWQ6IFtdLFxuICAgICAgICBjb25kaXRpb25zOiBbXVxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gQ3VycmVudCBkYXRhIGZvciBsb2NhbCBtYW51cHVsYXRpb24gKi9cbiAgICBwcml2YXRlIF9jdXJyZW50VmFsdWU6IFZoZFZhbHVlPFQ+ID0ge1xuICAgICAgICBzZWxlY3RlZDogW10sXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiBEZWZhdWx0IGRpc3BsYXkgZnVuY3Rpb24gZm9yIGRlZmluZSBjb25kaXRpb25zICovXG4gICAgICAgIGlmICghdGhpcy5jb25kaXRpb25EaXNwbGF5Rm4gfHwgdHlwZW9mIHRoaXMuY29uZGl0aW9uRGlzcGxheUZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkRpc3BsYXlGbiA9IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc01vYmlsZUFkdmFuY2VkU2VhcmNoQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT3BlbkFkdmFuY2VkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBoYXNTZWxlY3RlZFRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYWIgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVGFiIGluIFZoZFRhYjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzaG93U2VsZWN0aW9uVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzICE9PSAnZGVmaW5lJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzaG93RGVmaW5lVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzICE9PSAnc2VsZWN0JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc1NlbGVjdGlvblRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYWIgPT09IFZoZFRhYi5zZWxlY3RGcm9tTGlzdCB8fCB0aGlzLnNlbGVjdGVkVGFiID09PSBWaGRUYWIuYWR2YW5jZWRTZWFyY2g7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNvbmRpdGlvbkl0ZW1zKCk6IEJhc2VFbnRpdHlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyB8fCBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB2YWxpZENvbmRpdGlvbnMoKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFZhbGlkQ29uZGl0aW9uKHRoaXMuY29uZGl0aW9uSXRlbXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGhhc1NlbGVjdGVkQW5kQ29uZGl0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCArIHRoaXMudmFsaWRDb25kaXRpb25zLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTaG93QWxsRmlsdGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycy5sZW5ndGggPiB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgJiYgdGhpcy5zaG93bkZpbHRlckNvdW50ID4gdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5hY3RpdmVEaWFsb2c7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgaWYgKCdkYXRhU291cmNlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURTKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFN0YXRlKCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBPcGVuIGRpYWxvZyAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkT3B0aW9ucygpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBjaGVjayByZXF1aXJlZCBmaWVsZHMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zYXZlUHJldmlvdXNTdGF0ZSgpO1xuICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVEUygpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplVGFiKCk7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dDb25maWcuYXJpYUxhYmVsbGVkQnkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29uZmlnLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5oZWFkZXJJZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZyA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmRpYWxvZ0NvbnRhaW5lciwge1xuICAgICAgICAgICAgYmFja2Ryb3BDbGlja0Nsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogZmFsc2UsXG4gICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZGlhbG9nUGFuZWxDbGFzczogYGZkcC12YWx1ZS1oZWxwLWRpYWxvZyAke3RoaXMubW9iaWxlID8gJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZy1tb2JpbGUnIDogJyd9YCxcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuXG4gICAgICAgICAgICBtb2JpbGU6IHRoaXMubW9iaWxlLFxuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzkyJScsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5tb2JpbGUgPyB1bmRlZmluZWQgOiAnMTA4MHB4JyxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5tb2JpbGUgPyB1bmRlZmluZWQgOiAnOTglJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fbGlzdGVuRGlhbG9nRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGFkdmFuY2VkIHNlYXJjaCBwYW5lbFxuICAgICAqL1xuICAgIHRvZ2dsZUFkdmFuY2VkU2VhcmNoKHN0YXRlPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9IHN0YXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9ICF0aGlzLmlzT3BlbkFkdmFuY2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGhpcy5pc09wZW5BZHZhbmNlZCA/IFZoZFRhYi5hZHZhbmNlZFNlYXJjaCA6IFZoZFRhYi5zZWxlY3RGcm9tTGlzdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGFsbCBzZWxlY3RlZCBpdGVtc1xuICAgICAqL1xuICAgIGNsZWFyU2VsZWN0ZWRBbmRDb25kaXRpb25JdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkID0gW107XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zID0gW107XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBTZWFyY2ggYnkgb25seSB0aGUgc2VhcmNoIHRlcm0uICovXG4gICAgc2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcih0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggYnkgYWxsIGZpbGxlZCBmaWx0ZXJzLCBpbmNsdWRpbmcgdGhlIHNlYXJjaCB0ZXJtLlxuICAgICAqL1xuICAgIGZpbHRlcihvbmx5U2VhcmNoID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9uRW1wdHlGaWx0ZXJzID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGlmICghb25seVNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzcGxheWVkRmlsdGVyc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHsgdmFsdWUgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudHJpbSgpLmxlbmd0aCA6IHZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGUpID0+IG5vbkVtcHR5RmlsdGVycy5zZXQoZS5rZXksIGUudmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9tYWluU2VhcmNoLmxlbmd0aCkge1xuICAgICAgICAgICAgbm9uRW1wdHlGaWx0ZXJzLnNldCgnKicsIHRoaXMuX21haW5TZWFyY2gpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZT8ubWF0Y2gobm9uRW1wdHlGaWx0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBseSBzZWFyY2ggZnJvbSBhZHZhbmNlZCBmaWx0ZXJzIHZpZXcsIHVzaW5nIHdoZW4gbW9iaWxlIHZpZXcgaXMgYWN0aXZlXG4gICAgICovXG4gICAgc2VhcmNoQWR2YW5jZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSBWaGRUYWIuc2VsZWN0RnJvbUxpc3Q7XG4gICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlIGl0ZW0gZnJvbSBzZWxlY3RlZCBhcnJheSAqL1xuICAgIHJlbW92ZVNlbGVjdGVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgY29uZGl0aW9uIGl0ZW1cbiAgICAgKi9cbiAgICByZW1vdmVDb25kaXRpb24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyA9IHRoaXMuY29uZGl0aW9uSXRlbXMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN3aXRjaCB0YWIgYnkgdHlwZVxuICAgICAqL1xuICAgIHN3aXRjaFRhYih0eXBlOiBWaGRUYWIgfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBkaWFsb2cgd2l0aCB2YWx1ZTtcbiAgICAgKi9cbiAgICBzdWNjZXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWU6IFZoZFZhbHVlQ2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgY29uZGl0aW9uczogdGhpcy52YWxpZENvbmRpdGlvbnNcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fZ2V0VmFsaWRhdG9yRnVuY3Rpb24odmFsdWUpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChyKSA9PiByKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95ZWQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybWF0VG9rZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRUb2tlbih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nPy5jbG9zZSh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIGFkdmFuY2VkIHNlYXJjaCBvbiBtb2JpbGUgdmlldyBhbmQgaWYgaXQncyBvcGVuZWRcbiAgICAgKiBDbG9zZSBkaWFsb2cgd2l0aCBudWxsIHZhbHVlO1xuICAgICAqL1xuICAgIGRpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSAmJiB0aGlzLmlzT3BlbkFkdmFuY2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRhYihWaGRUYWIuc2VsZWN0RnJvbUxpc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5fcHJldlN0YXRlO1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlTZWxlY3RlZEZuOiAoX2luZGV4OiBudW1iZXIsIGl0ZW06IFQpID0+IG51bWJlciB8IHN0cmluZyA9IChfaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT5cbiAgICAgICAgaXRlbSAmJiBpdGVtW3RoaXMudW5pcXVlS2V5XTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGaWx0ZXJGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVmhkRmlsdGVyKTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gJiYgaXRlbS5rZXk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUNvbmRpdGlvbkZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBCYXNlRW50aXR5KTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnZhbHVlICsgaXRlbS52YWx1ZVRvICsgaXRlbS5zdHJhdGVneSArIGl0ZW0ua2V5IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25TZWxlY3QoJGV2ZW50OiBUW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkID0gJGV2ZW50O1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoU2VsZWN0aW9uID09PSAnb25jZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2VzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNvbmRpdGlvbkNoYW5nZSgkZXZlbnQ6IEJhc2VFbnRpdHlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyA9ICRldmVudDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0b2dnbGVTaG93bkZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd25GaWx0ZXJDb3VudCA9XG4gICAgICAgICAgICB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgPT09IHRoaXMuc2hvd25GaWx0ZXJDb3VudCA/IEluZmluaXR5IDogdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFNob3duRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93bkZpbHRlckNvdW50ID0gdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzIHx8IEluZmluaXR5O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWRDb25kaXRpb24oaXRlbXM6IEJhc2VFbnRpdHlbXSA9IFtdKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5lbXB0eSB8fFxuICAgICAgICAgICAgICAgIGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneS5ub3RfZW1wdHlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5iZXR3ZWVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW4oaXRlbS52YWx1ZS5sZW5ndGggJiYgaXRlbS52YWx1ZVRvLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWl0ZW0udmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gQm9vbGVhbihpdGVtLnZhbHVlLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZURTKGRzOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQgPSB0aGlzLmRhdGFTb3VyY2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXRTb3VyY2VTdHJlYW0oKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIGRzPy5vbkRhdGFSZXF1ZXN0ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVxdWVzdGVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIGRzPy5vbkRhdGFSZWNlaXZlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0TG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVJlY2VpdmVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgZHNTdWIgPSB0aGlzLm9wZW5EYXRhU3RyZWFtKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXllZERhdGEgPSBkYXRhLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoZHNTdWIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2F2ZSBwcmV2aW91cyBzdGF0ZSAqL1xuICAgIHByaXZhdGUgX3NhdmVQcmV2aW91c1N0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNsb25lRGVlcCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3ByZXZTdGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVRhYigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYiAmJiB0aGlzLnNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogdGhpcy5pbml0aWFsVGFiKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKFZoZFRhYi5zZWxlY3RGcm9tTGlzdCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93RGVmaW5lVGFiKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRhYihWaGRUYWIuZGVmaW5lQ29uZGl0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdFNob3duRmlsdGVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRGlhbG9nRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cuYWZ0ZXJDbG9zZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3RhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVycy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXRTb3VyY2VTdHJlYW0oKTtcbiAgICAgICAgdGhpcy5fbWFpblNlYXJjaCA9ICcnO1xuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXllZEZpbHRlcnMgPSB0aGlzLmZpbHRlcnMubWFwKChlKSA9PiAoe1xuICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsIHx8IGUua2V5XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLl9oYXNBZHZhbmNlZCA9IHRoaXMuX2Rpc3BsYXllZEZpbHRlcnMuc29tZSgoZTogVmhkRmlsdGVyKSA9PiAhIWUuYWR2YW5jZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBvcGVuRGF0YVN0cmVhbSgpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5tYXRjaCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbZGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gYXJyYXksIE9ic2VydmFibGUsIG9yIERhdGFTb3VyY2VgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgdG9EYXRhU3RyZWFtKGRzOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+KTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0RhdGFTb3VyY2UoZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZHMgYXMgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4oZHMpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JzZXJ2YWJsZShkcykpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4oZHMgYXMgT2JzZXJ2YWJsZTxUW10+KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFNvdXJjZVN0cmVhbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgaXNWYWxpZE9wdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgISF0aGlzLmRhdGFTb3VyY2UgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy51bmlxdWVLZXkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLnRva2VuVmlld0ZpZWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdGhpcy50b2tlbml6ZXJGbiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWRhdG9yRnVuY3Rpb24odmFsdWU6IFZoZFZhbHVlQ2hhbmdlRXZlbnQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gdHlwZW9mIHRoaXMudG9rZW5WYWxpZGF0b3IgPT09ICdmdW5jdGlvbicgPyB0aGlzLnRva2VuVmFsaWRhdG9yKHZhbHVlKSA6IG9mKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUodmFsaWRhdG9yKSA/IHZhbGlkYXRvciA6IG9mKHZhbGlkYXRvcik7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIFtmZERpYWxvZ1RlbXBsYXRlXSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjY29udGFpbmVyPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlciBbYXR0ci5kaXJdPVwiX2RpciQoKVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vYmlsZSA/IG1vYmlsZURpYWxvZ1RpdGxlIDogZGVza3RvcERpYWxvZ1RpdGxlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5IFthdHRyLmRpcl09XCJfZGlyJCgpXCI+XG4gICAgICAgICAgICBAaWYgKCFtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWR2YW5jZWRTZWFyY2hDb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgZmQtc2Nyb2xsYmFyIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19jb250ZW50LWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIEBpZiAobW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhZHZhbmNlZFNlYXJjaENvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdGlvbkNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmaW5lQ29uZGl0aW9uc0NvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8ZmQtZGlhbG9nLWZvb3RlciBbYXR0ci5kaXJdPVwiX2RpciQoKVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgQGlmICghaXNNb2JpbGVBZHZhbmNlZFNlYXJjaEFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fcm93IGZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fc2VsZWN0aW9uLXJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3RlZEFuZENvbmRpdGlvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiaGVhZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sZXZlbF09XCJfaGVhZGluZ0xldmVsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1hbmQtY29uZGl0aW9uLXRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLXNlbGVjdGVkLWl0ZW0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGhhc1NlbGVjdGVkQW5kQ29uZGl0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0ZWRBbmRDb25kaXRpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sgc2VsZWN0ZWRJdGVtcy5sZW5ndGggKyB2YWxpZENvbmRpdGlvbnMubGVuZ3RoIH19KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0ZWRFbXB0eUxhYmVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9rZW5zLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2tlbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWxlY3RlZCBpdGVtcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuaXplcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBfdHJhY2tCeVNlbGVjdGVkRm4oc2VsZWN0ZWRJbmRleCwgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSW5kZXggPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b2tlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwiaGlnaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19zZWxlY3Rpb24tdG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cInJlbW92ZVNlbGVjdGVkKHNlbGVjdGVkSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIXRva2VuaXplckZuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoaXRlbSB8IGRpc3BsYXlGblBpcGU6IHRva2VuaXplckZuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbVt0b2tlblZpZXdGaWVsZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRva2VuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSBvZiB2YWxpZENvbmRpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgX3RyYWNrQnlDb25kaXRpb25Gbihjb25kaXRpb25JbmRleCwgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmRpdGlvbkluZGV4ID0gJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImhpZ2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fc2VsZWN0aW9uLXRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJyZW1vdmVDb25kaXRpb24oY29uZGl0aW9uSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29uZGl0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b2tlbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmZC1mb3JtLWNvbnRyb2wgZmQtdG9rZW5pemVyLWlucHV0IFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b2tlbml6ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZEFuZENvbmRpdGlvbkl0ZW1zKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9rZW5zLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELmZvb3RlckNsZWFyU2VsZWN0ZWRUaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ3BsYXRmb3JtVkhELmZvb3RlckNsZWFyU2VsZWN0ZWRBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWN0aW9ucy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChtb2JpbGUgJiYgaXNPcGVuQWR2YW5jZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWdvLWFkdmFuY2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWFyY2hCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEFkdmFuY2VkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRUYWIgIT09IF90YWJUeXBlcy5hZHZhbmNlZFNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc3VjY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdTdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zdWNjZXNzQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWNjZXNzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzLWRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5jYW5jZWxCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGlzbWlzcygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRTZWFyY2hDb250ZW50PlxuICAgIEBpZiAoaXNTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgPGZvcm0gY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3JvdyBmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2FkdmFuY2VkLXNlYXJjaFwiIFtpZF09XCInYWR2YW5jZWQtc2VhcmNoLScgKyBpZFwiPlxuICAgICAgICAgICAgQGlmICghbW9iaWxlIHx8IChtb2JpbGUgJiYgIWlzT3BlbkFkdmFuY2VkKSkge1xuICAgICAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmZExheW91dEdyaWRDb2xdPVwiMTJcIiBbY29sTWRdPVwiMTJcIiBbY29sTGddPVwibW9iaWxlID8gMTIgOiA2XCIgW2NvbFhsXT1cIm1vYmlsZSA/IDEyIDogNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtc2VhcmNoLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuc2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cInNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIl9tYWluU2VhcmNoID0gJGV2ZW50LnRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2hhc0FkdmFuY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cIm1vYmlsZSA/IDEyIDogNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCJtb2JpbGUgPyAxMiA6IDZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWR2YW5jZWQtYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKF9oYXNBZHZhbmNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVZIRC5zZWFyY2hBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNPcGVuQWR2YW5jZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVkhELnNlYXJjaEhpZGVBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1WSEQuc2VhcmNoU2hvd0FkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFkdmFuY2VkU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGlzT3BlbkFkdmFuY2VkICYmIF9oYXNBZHZhbmNlZCkge1xuICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidhZHZhbmNlZC1zZWFyY2gtY29udGVudC0nICsgaWRcIiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWR2YW5jZWQtZmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwibG9hZGluZ1N0YXRlICYmIF9maXJzdExvYWRpbmdEb25lXCIgW2Jsb2NrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2ZpcnN0TG9hZGluZ0RvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbGF5b3V0LWdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fd2l0aC10b2dnbGUtYWxsXT1cImZpbHRlcnMubGVuZ3RoID4gbWF4U2hvd25Jbml0aWFsRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciBvZiBfZGlzcGxheWVkRmlsdGVycyB8IHNsaWNlOiAwIDogc2hvd25GaWx0ZXJDb3VudCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgX3RyYWNrQnlGaWx0ZXJGbigkaW5kZXgsIGZpbHRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVyLmFkdmFuY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiIFtjb2xNZF09XCIxMlwiIFtjb2xMZ109XCI2XCIgW2NvbFhsXT1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtZm9ybS1ncm91cF9faGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCInaW5wdXQnICsgZmlsdGVyLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGZpbHRlci5sYWJlbCB9fTo8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbHRlci5maWx0ZXJEZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyLmZpbHRlckRlZi50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZmlsdGVyIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3NlYXJjaC1ieS0nICsgZmlsdGVyLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidpbnB1dCcgKyBmaWx0ZXIua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbHRlcnMubGVuZ3RoID4gbWF4U2hvd25Jbml0aWFsRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2dnbGUtZmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93bkZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2hvd0FsbEZpbHRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoSGlkZUFsbEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVkhELnNlYXJjaFNob3dBbGxBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMHB4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCIwXCIgcng9XCI0XCIgd2lkdGg9XCIxNSVcIiBoZWlnaHQ9XCI4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjIwXCIgcng9XCI0XCIgd2lkdGg9XCIyNSVcIiBoZWlnaHQ9XCIxNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMzUlXCIgeT1cIjBcIiByeD1cIjRcIiB3aWR0aD1cIjE1JVwiIGhlaWdodD1cIjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjM1JVwiIHk9XCIyMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMjUlXCIgaGVpZ2h0PVwiMTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjBcIiB5PVwiNjBcIiByeD1cIjRcIiB3aWR0aD1cIjE1JVwiIGhlaWdodD1cIjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjBcIiB5PVwiODBcIiByeD1cIjRcIiB3aWR0aD1cIjI1JVwiIGhlaWdodD1cIjE2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Zvcm0+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0aW9uQ29udGVudD5cbiAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1N0YXRlICYmIF9maXJzdExvYWRpbmdEb25lXCJcbiAgICAgICAgW2Jsb2NrXT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdGFibGUtYnVzeS1pbmRpY2F0b3JcIlxuICAgID5cbiAgICAgICAgPGZkcC1zZWxlY3QtdGFiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgIV9maXJzdExvYWRpbmdEb25lXCJcbiAgICAgICAgICAgIFt1aWRdPVwiaWRcIlxuICAgICAgICAgICAgW2Rpc3BsYXllZERhdGFdPVwiX2Rpc3BsYXllZERhdGFcIlxuICAgICAgICAgICAgW3RhYlRpdGxlXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cInNlYXJjaFNlbGVjdGlvblwiXG4gICAgICAgICAgICBbdW5pcXVlS2V5XT1cInVuaXF1ZUtleVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwic2VhcmNoVGFibGVQYWdlU2l6ZVwiXG4gICAgICAgICAgICBbZGVmYXVsdE1vYmlsZUhlYWRlcnNdPVwic2VhcmNoVGFibGVNb2JpbGVIZWFkZXJzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cIl9kaXNwbGF5ZWRGaWx0ZXJzXCJcbiAgICAgICAgICAgIFthbGxvd1NlbGVjdEFsbF09XCJhbGxvd1NlbGVjdEFsbFwiXG4gICAgICAgICAgICAoc2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxuICAgICAgICA+PC9mZHAtc2VsZWN0LXRhYj5cbiAgICA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmaW5lQ29uZGl0aW9uc0NvbnRlbnQ+XG4gICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgIDxmZHAtZGVmaW5lLXRhYlxuICAgICAgICAgICAgW3N0cmF0ZWd5TGFiZWxzXT1cImRlZmluZVN0cmF0ZWd5TGFiZWxzXCJcbiAgICAgICAgICAgIFtjb25kaXRpb25zXT1cImNvbmRpdGlvbkl0ZW1zXCJcbiAgICAgICAgICAgIFt1aWRdPVwiaWRcIlxuICAgICAgICAgICAgW3RhYlRpdGxlXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICAoY29uZGl0aW9uQ2hhbmdlKT1cIm9uQ29uZGl0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9mZHAtZGVmaW5lLXRhYj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RpYWxvZ1RpdGxlVGV4dD5cbiAgICA8c3BhbiByb2xlPVwiaGVhZGluZ1wiIFthdHRyLmFyaWEtbGV2ZWxdPVwiX2hlYWRpbmdMZXZlbCgpXCIgW2F0dHIuaWRdPVwiaGVhZGVySWRcIiBmZC10aXRsZT57eyBkaWFsb2dUaXRsZSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RhYkxpbmsgbGV0LXRpdGxlPVwidGl0bGVcIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgICBAaWYgKHNlbGVjdGVkVGFiID09PSB0eXBlICYmIHNob3dTZWxlY3Rpb25UYWIgJiYgc2hvd0RlZmluZVRhYikge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYkJhY2tCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPHNwYW4gcm9sZT1cImhlYWRpbmdcIiBbYXR0ci5hcmlhLWxldmVsXT1cIl9oZWFkaW5nTGV2ZWwoKVwiIGZkLXRpdGxlPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIH1cbiAgICBAaWYgKHNlbGVjdGVkVGFiICE9PSB0eXBlKSB7XG4gICAgICAgIDxhXG4gICAgICAgICAgICBmZC1saXN0LWxpbmtcbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIodHlwZSlcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVUYWJCdG5PcGVuRGlhbG9nTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGkgZmQtbGlzdC1pY29uIGdseXBoPVwibmF2aWdhdGlvbi1yaWdodC1hcnJvd1wiPjwvaT5cbiAgICAgICAgPC9hPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FkdmFuY2VkSGVhZGVyPlxuICAgIDxidXR0b24gZmQtYnV0dG9uIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiAoY2xpY2spPVwidG9nZ2xlQWR2YW5jZWRTZWFyY2goKVwiPjwvYnV0dG9uPlxuICAgIDxzcGFuIHJvbGU9XCJoZWFkaW5nXCIgW2F0dHIuYXJpYS1sZXZlbF09XCJfaGVhZGluZ0xldmVsKClcIiBmZC10aXRsZT57e1xuICAgICAgICAncGxhdGZvcm1WSEQuc2VhcmNoQWR2YW5jZWRTZWFyY2hMYWJlbCcgfCBmZFRyYW5zbGF0ZVxuICAgIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcERpYWxvZ1RpdGxlPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJkaWFsb2dUaXRsZVRleHRcIj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXNrdG9wVGFic1wiPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNtb2JpbGVEaWFsb2dUaXRsZT5cbiAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19tb2JpbGUtdGl0bGVcIj5cbiAgICAgICAgQGlmIChoYXNTZWxlY3RlZFRhYikge1xuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdGVkVGFiSGVhZGVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiByb2xlPVwiaGVhZGluZ1wiIFthdHRyLmFyaWEtbGV2ZWxdPVwiX2hlYWRpbmdMZXZlbCgpXCIgW2F0dHIuaWRdPVwiaGVhZGVySWRcIiBmZC10aXRsZT57e1xuICAgICAgICAgICAgICAgIGRpYWxvZ1RpdGxlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJtb2JpbGVUYWJzXCI+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Rlc2t0b3BUYWJzPlxuICAgIEBpZiAoc2hvd1NlbGVjdGlvblRhYiAmJiBzaG93RGVmaW5lVGFiKSB7XG4gICAgICAgIDxuYXYgZmQtdGFiLW5hdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdGFic1wiPlxuICAgICAgICAgICAgQGlmIChzaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC10YWItaXRlbSAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRhYi1saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QgPyAnMCcgOiAnLTEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48c3BhbiBmZC10YWItdGFnPnt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93RGVmaW5lVGFiKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC10YWItaXRlbSAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMgPyAnMCcgOiAnLTEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48c3BhbiBmZC10YWItdGFnPnt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L25hdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNtb2JpbGVUYWJzPlxuICAgIEBpZiAoIWhhc1NlbGVjdGVkVGFiICYmIHNob3dTZWxlY3Rpb25UYWIgJiYgc2hvd0RlZmluZVRhYikge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgQGlmIChzaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgW2luUGFnZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYihfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYlRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGU6IHsgdGl0bGU6ICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93RGVmaW5lVGFiKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgW2luUGFnZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYlRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGU6IHsgdGl0bGU6ICdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NlbGVjdGVkVGFiSGVhZGVyPlxuICAgIEBzd2l0Y2ggKHNlbGVjdGVkVGFiKSB7XG4gICAgICAgIEBjYXNlIChfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QpIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYkxpbmtcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHNlbGVjdGVkVGFiXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoX3RhYlR5cGVzLmFkdmFuY2VkU2VhcmNoKSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWR2YW5jZWRIZWFkZXJcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9ucykge1xuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiTGlua1wiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogc2VsZWN0ZWRUYWJcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjY29uZGl0aW9uVmFsdWUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgQGlmIChpdGVtLnN0cmF0ZWd5ICE9PSAnZW1wdHknICYmIGl0ZW0uc3RyYXRlZ3kgIT09ICdub3RfZW1wdHknKSB7XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgaXRlbSB8IGRpc3BsYXlGblBpcGU6IGNvbmRpdGlvbkRpc3BsYXlGbiA6IF9kaXNwbGF5ZWRGaWx0ZXJzIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChpdGVtLnN0cmF0ZWd5ID09PSAnbm90X2VtcHR5Jykge1xuICAgICAgICAgICAgISg8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlDb25kaXRpb25UZXh0XCI+PC9uZy10ZW1wbGF0ZT4pXG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJmx0O3t7ICdwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVDb25kaXRpb25FbXB0eScgfCBmZFRyYW5zbGF0ZSB9fSZndDtcbiAgICAgICAgfVxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2VtcHR5Q29uZGl0aW9uVGV4dD4gJmx0O3t7ICdwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVDb25kaXRpb25FbXB0eScgfCBmZFRyYW5zbGF0ZSB9fSZndDsgPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { VhdFilterComponent } from './components/value-help-dialog-filter/value-help-dialog-filter.component';\nimport { PlatformValueHelpDialogComponent } from './value-help-dialog/value-help-dialog.component';\nimport * as i0 from \"@angular/core\";\nconst components = [PlatformValueHelpDialogComponent, VhdFilterComponent, ContentDensityModule];\nexport class PlatformValueHelpDialogModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, imports: [PlatformValueHelpDialogComponent, VhdFilterComponent, ContentDensityModule], exports: [PlatformValueHelpDialogComponent, VhdFilterComponent, ContentDensityModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, imports: [PlatformValueHelpDialogComponent, ContentDensityModule, ContentDensityModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...components],\n exports: [...components]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFFbkcsTUFBTSxVQUFVLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBTWhHLE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjsrR0FBN0IsNkJBQTZCLFlBTnRCLGdDQUFnQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixhQUExRSxnQ0FBZ0MsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0I7K0dBTWpGLDZCQUE2QixZQU50QixnQ0FBZ0MsRUFBc0Isb0JBQW9CLEVBQXBCLG9CQUFvQjs7MkZBTWpGLDZCQUE2QjtrQkFKekMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcblxuaW1wb3J0IHsgVmhkRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlci92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYXRmb3JtVmFsdWVIZWxwRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1BsYXRmb3JtVmFsdWVIZWxwRGlhbG9nQ29tcG9uZW50LCBWaGRGaWx0ZXJDb21wb25lbnQsIENvbnRlbnREZW5zaXR5TW9kdWxlXTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbLi4uY29tcG9uZW50c10sXG4gICAgZXhwb3J0czogWy4uLmNvbXBvbmVudHNdXG59KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVmFsdWVIZWxwRGlhbG9nTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLXZhbHVlLWhlbHAtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9mdW5kYW1lbnRhbC1uZ3gtcGxhdGZvcm0tdmFsdWUtaGVscC1kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["titleUniqueId","take","i1","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-value-help-dialog.mjs","sources":["../tmp-esm2022/value-help-dialog/models/vhd-data.source.js","../tmp-esm2022/value-help-dialog/models/vhd-strategy.enum.js","../tmp-esm2022/value-help-dialog/models/vhd-type-condition.enum.js","../tmp-esm2022/value-help-dialog/models/vhd-filter-rule.model.js","../tmp-esm2022/value-help-dialog/models/vhd-tab-type.enum.js","../tmp-esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.js","../tmp-esm2022/value-help-dialog/constans/condition-display.function.js","../tmp-esm2022/value-help-dialog/constans/variables.js","../tmp-esm2022/value-help-dialog/directives/condition-count-message.directive.js","../tmp-esm2022/value-help-dialog/components/define-tab/define-tab.component.js","../tmp-esm2022/value-help-dialog/models/vhd-component.model.js","../tmp-esm2022/value-help-dialog/components/select-tab/select-tab.component.js","../tmp-esm2022/value-help-dialog/directives/value-help-filter-def.directive.js","../tmp-esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.js","../tmp-esm2022/value-help-dialog/directives/value-help-column-def.directive.js","../tmp-esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.js","../tmp-esm2022/value-help-dialog/value-help-dialog.module.js","../tmp-esm2022/value-help-dialog/fundamental-ngx-platform-value-help-dialog.js"],"sourcesContent":["import { BehaviorSubject, of, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { BaseDataProvider, DataProvider } from '@fundamental-ngx/platform/shared';\nexport class ValueHelpDialogDataSource {\n /** @hidden */\n get isDataLoading() {\n return this._dataLoading;\n }\n /** @hidden */\n constructor(dataProvider) {\n this.dataProvider = dataProvider;\n /** @hidden */\n this._dataChanges = new BehaviorSubject([]);\n /** @hidden */\n this._onDataRequested$ = new Subject();\n /** @hidden */\n this._onDataReceived$ = new Subject();\n /** @hidden */\n this._dataLoading = false;\n }\n /** @hidden */\n match(predicate) {\n this._onDataRequested$.next();\n this._dataLoading = true;\n let searchParam = new Map();\n if (typeof predicate === 'string') {\n searchParam.set('query', predicate);\n }\n else if (predicate instanceof Map) {\n searchParam = predicate;\n }\n this.dataProvider\n .fetch(searchParam)\n .pipe(take(1))\n .subscribe((result) => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n this._dataChanges.next(result);\n }, () => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n });\n }\n /** @hidden */\n open() {\n return this._dataChanges.asObservable();\n }\n /** @hidden */\n onDataRequested() {\n return this._onDataRequested$.asObservable();\n }\n /** @hidden */\n onDataReceived() {\n return this._onDataReceived$.asObservable();\n }\n /** @hidden */\n close() { }\n}\nexport class ArrayValueHelpDialogDataSource extends ValueHelpDialogDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n }\n}\nexport class ObservableValueHelpDialogDataSource extends ValueHelpDialogDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n }\n}\nexport class VhdDataProvider extends DataProvider {\n /** @hidden */\n constructor(values) {\n super();\n this.values = values;\n }\n /** @hidden */\n fetch(params) {\n let data = this.values;\n const arrayParams = Array.from(params);\n const filterFn = (row) => {\n const rowEntries = Object.entries(row);\n return arrayParams.every(([key, value]) => {\n if (key === '*') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return rowEntries.some(([_rowEntryKey, rowEntryValue]) => String(rowEntryValue).toLowerCase().includes(value.toLowerCase()));\n }\n else {\n return String(row[key]).toLowerCase().includes(value.toLowerCase());\n }\n });\n };\n if (params.size) {\n data = this.values.filter(filterFn);\n }\n return of(data);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWRhdGEuc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9tb2RlbHMvdmhkLWRhdGEuc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBYyxNQUFNLGtDQUFrQyxDQUFDO0FBRTlGLE1BQU0sT0FBTyx5QkFBeUI7SUFXbEMsY0FBYztJQUNkLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLFlBQW1CLFlBQTZCO1FBQTdCLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQWhCaEQsY0FBYztRQUNKLGlCQUFZLEdBQXlCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGNBQWM7UUFDSixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2xELGNBQWM7UUFDSixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpELGNBQWM7UUFDSixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQVFvQixDQUFDO0lBRXBELGNBQWM7SUFDZCxLQUFLLENBQUMsU0FBd0M7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksV0FBVyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDekMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8s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UUFDUCxDQUFDLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQmFzZURhdGFQcm92aWRlciwgRGF0YVByb3ZpZGVyLCBEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG5leHBvcnQgY2xhc3MgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiBpbXBsZW1lbnRzIERhdGFTb3VyY2U8VD4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9kYXRhQ2hhbmdlczogQmVoYXZpb3JTdWJqZWN0PFRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9vbkRhdGFSZXF1ZXN0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfb25EYXRhUmVjZWl2ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9kYXRhTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNEYXRhTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFMb2FkaW5nO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyPFQ+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtYXRjaChwcmVkaWNhdGU/OiBzdHJpbmcgfCBNYXA8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGF0YVJlcXVlc3RlZCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgbGV0IHNlYXJjaFBhcmFtID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzZWFyY2hQYXJhbS5zZXQoJ3F1ZXJ5JywgcHJlZGljYXRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmVkaWNhdGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgIHNlYXJjaFBhcmFtID0gcHJlZGljYXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIC5mZXRjaChzZWFyY2hQYXJhbSlcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXN1bHQ6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRhdGFSZWNlaXZlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhQ2hhbmdlcy5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRGF0YVJlY2VpdmVkJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9wZW4oKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25EYXRhUmVxdWVzdGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVxdWVzdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uRGF0YVJlY2VpdmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVjZWl2ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xvc2UoKTogdm9pZCB7fVxufVxuXG5leHBvcnQgY2xhc3MgQXJyYXlWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+IGV4dGVuZHMgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBUW10pIHtcbiAgICAgICAgc3VwZXIobmV3IEJhc2VEYXRhUHJvdmlkZXIoZGF0YSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+IGV4dGVuZHMgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBPYnNlcnZhYmxlPFRbXT4pIHtcbiAgICAgICAgc3VwZXIobmV3IEJhc2VEYXRhUHJvdmlkZXIoZGF0YSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZoZERhdGFQcm92aWRlcjxSIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIERhdGFQcm92aWRlcjxSPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWVzOiBSW10pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZldGNoKHBhcmFtczogTWFwPHN0cmluZywgc3RyaW5nPik6IE9ic2VydmFibGU8UltdPiB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy52YWx1ZXM7XG4gICAgICAgIGNvbnN0IGFycmF5UGFyYW1zID0gQXJyYXkuZnJvbShwYXJhbXMpO1xuICAgICAgICBjb25zdCBmaWx0ZXJGbiA9IChyb3c6IFIpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0VudHJpZXMgPSBPYmplY3QuZW50cmllcyhyb3cpIGFzIHN0cmluZ1tdW107XG4gICAgICAgICAgICByZXR1cm4gYXJyYXlQYXJhbXMuZXZlcnkoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICcqJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByb3dFbnRyaWVzLnNvbWUoKFtfcm93RW50cnlLZXksIHJvd0VudHJ5VmFsdWVdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHJvd0VudHJ5VmFsdWUpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHJvd1trZXldKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAocGFyYW1zLnNpemUpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLnZhbHVlcy5maWx0ZXIoZmlsdGVyRm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgIH1cbn1cbiJdfQ==","export var VhdDefineIncludeStrategy;\n(function (VhdDefineIncludeStrategy) {\n VhdDefineIncludeStrategy[\"contains\"] = \"contains\";\n VhdDefineIncludeStrategy[\"equalTo\"] = \"equalTo\";\n VhdDefineIncludeStrategy[\"between\"] = \"between\";\n VhdDefineIncludeStrategy[\"startsWith\"] = \"startsWith\";\n VhdDefineIncludeStrategy[\"endsWith\"] = \"endsWith\";\n VhdDefineIncludeStrategy[\"lessThan\"] = \"lessThan\";\n VhdDefineIncludeStrategy[\"lessThanEqual\"] = \"lessThanEqual\";\n VhdDefineIncludeStrategy[\"greaterThan\"] = \"greaterThan\";\n VhdDefineIncludeStrategy[\"greaterThanEqual\"] = \"greaterThanEqual\";\n VhdDefineIncludeStrategy[\"empty\"] = \"empty\";\n})(VhdDefineIncludeStrategy || (VhdDefineIncludeStrategy = {}));\nexport var VhdDefineExcludeStrategy;\n(function (VhdDefineExcludeStrategy) {\n VhdDefineExcludeStrategy[\"not_equalTo\"] = \"not_equalTo\";\n VhdDefineExcludeStrategy[\"not_empty\"] = \"not_empty\";\n})(VhdDefineExcludeStrategy || (VhdDefineExcludeStrategy = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLXN0cmF0ZWd5LmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL21vZGVscy92aGQtc3RyYXRlZ3kuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx3QkFXWDtBQVhELFdBQVksd0JBQXdCO0lBQ2hDLGlEQUFxQixDQUFBO0lBQ3JCLCtDQUFtQixDQUFBO0lBQ25CLCtDQUFtQixDQUFBO0lBQ25CLHFEQUF5QixDQUFBO0lBQ3pCLGlEQUFxQixDQUFBO0lBQ3JCLGlEQUFxQixDQUFBO0lBQ3JCLDJEQUErQixDQUFBO0lBQy9CLHVEQUEyQixDQUFBO0lBQzNCLGlFQUFxQyxDQUFBO0lBQ3JDLDJDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVhXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFXbkM7QUFFRCxNQUFNLENBQU4sSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLHVEQUEyQixDQUFBO0lBQzNCLG1EQUF1QixDQUFBO0FBQzNCLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHtcbiAgICBjb250YWlucyA9ICdjb250YWlucycsXG4gICAgZXF1YWxUbyA9ICdlcXVhbFRvJyxcbiAgICBiZXR3ZWVuID0gJ2JldHdlZW4nLFxuICAgIHN0YXJ0c1dpdGggPSAnc3RhcnRzV2l0aCcsXG4gICAgZW5kc1dpdGggPSAnZW5kc1dpdGgnLFxuICAgIGxlc3NUaGFuID0gJ2xlc3NUaGFuJyxcbiAgICBsZXNzVGhhbkVxdWFsID0gJ2xlc3NUaGFuRXF1YWwnLFxuICAgIGdyZWF0ZXJUaGFuID0gJ2dyZWF0ZXJUaGFuJyxcbiAgICBncmVhdGVyVGhhbkVxdWFsID0gJ2dyZWF0ZXJUaGFuRXF1YWwnLFxuICAgIGVtcHR5ID0gJ2VtcHR5J1xufVxuXG5leHBvcnQgZW51bSBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kge1xuICAgIG5vdF9lcXVhbFRvID0gJ25vdF9lcXVhbFRvJyxcbiAgICBub3RfZW1wdHkgPSAnbm90X2VtcHR5J1xufVxuIl19","export var VhdDefineType;\n(function (VhdDefineType) {\n VhdDefineType[\"include\"] = \"include\";\n VhdDefineType[\"exclude\"] = \"exclude\";\n})(VhdDefineType || (VhdDefineType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLXR5cGUtY29uZGl0aW9uLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL21vZGVscy92aGQtdHlwZS1jb25kaXRpb24uZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3JCLG9DQUFtQixDQUFBO0lBQ25CLG9DQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFZoZERlZmluZVR5cGUge1xuICAgIGluY2x1ZGUgPSAnaW5jbHVkZScsXG4gICAgZXhjbHVkZSA9ICdleGNsdWRlJ1xufVxuIl19","import { VhdDefineIncludeStrategy } from './vhd-strategy.enum';\nimport { VhdDefineType } from './vhd-type-condition.enum';\nexport class BaseEntity {\n /** @hidden */\n constructor(strategy, key) {\n /** @hidden */\n this.key = '*';\n /** @hidden */\n this.value = '';\n /** @hidden */\n this.valueTo = '';\n if (key) {\n this.key = key;\n }\n this.strategy = strategy || VhdDefineIncludeStrategy.equalTo;\n }\n}\nexport class VhdIncludedEntity extends BaseEntity {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.type = VhdDefineType.include;\n }\n}\nexport class VhdExcludedEntity extends BaseEntity {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.type = VhdDefineType.exclude;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWZpbHRlci1ydWxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9tb2RlbHMvdmhkLWZpbHRlci1ydWxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEIsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFVMUQsTUFBTSxPQUFPLFVBQVU7SUFnQm5CLGNBQWM7SUFDZCxZQUFZLFFBQThELEVBQUUsR0FBWTtRQWR4RixjQUFjO1FBQ2QsUUFBRyxHQUFHLEdBQUcsQ0FBQztRQUtWLGNBQWM7UUFDZCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsY0FBYztRQUNkLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFNVCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQztJQUNqRSxDQUFDO0NBQ0o7QUFDRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBVTtJQUFqRDs7UUFDSSxjQUFjO1FBQ2QsU0FBSSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7Q0FBQTtBQUNELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxVQUFVO0lBQWpEOztRQUNJLGNBQWM7UUFDZCxTQUFJLEdBQWtCLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LCBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfSBmcm9tICcuL3ZoZC1zdHJhdGVneS5lbnVtJztcbmltcG9ydCB7IFZoZERlZmluZVR5cGUgfSBmcm9tICcuL3ZoZC10eXBlLWNvbmRpdGlvbi5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBWaGREZWZpbmVFbnRpdHlSdWxlIHtcbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHN0cmF0ZWd5OiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3k7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB2YWx1ZVRvOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNlRW50aXR5IGltcGxlbWVudHMgVmhkRGVmaW5lRW50aXR5UnVsZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAga2V5ID0gJyonO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdHJhdGVneTogVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHwgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdmFsdWUgPSAnJztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbHVlVG8gPSAnJztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbGlkOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihzdHJhdGVneT86IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSB8IFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSwga2V5Pzogc3RyaW5nKSB7XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneSB8fCBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuZXF1YWxUbztcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVmhkSW5jbHVkZWRFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHR5cGU6IFZoZERlZmluZVR5cGUgPSBWaGREZWZpbmVUeXBlLmluY2x1ZGU7XG59XG5leHBvcnQgY2xhc3MgVmhkRXhjbHVkZWRFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHR5cGU6IFZoZERlZmluZVR5cGUgPSBWaGREZWZpbmVUeXBlLmV4Y2x1ZGU7XG59XG4iXX0=","export var VhdTab;\n(function (VhdTab) {\n VhdTab[VhdTab[\"selectFromList\"] = 0] = \"selectFromList\";\n VhdTab[VhdTab[\"defineConditions\"] = 1] = \"defineConditions\";\n VhdTab[VhdTab[\"advancedSearch\"] = 2] = \"advancedSearch\";\n})(VhdTab || (VhdTab = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLXRhYi10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL21vZGVscy92aGQtdGFiLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxNQUlYO0FBSkQsV0FBWSxNQUFNO0lBQ2QsdURBQWMsQ0FBQTtJQUNkLDJEQUFnQixDQUFBO0lBQ2hCLHVEQUFjLENBQUE7QUFDbEIsQ0FBQyxFQUpXLE1BQU0sS0FBTixNQUFNLFFBSWpCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVmhkVGFiIHtcbiAgICBzZWxlY3RGcm9tTGlzdCxcbiAgICBkZWZpbmVDb25kaXRpb25zLFxuICAgIGFkdmFuY2VkU2VhcmNoXG59XG4iXX0=","import { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { VhdTab } from '../../models';\nimport * as i0 from \"@angular/core\";\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class VhdBaseTab {\n /** @hidden */\n get type() {\n return VhdTab.defineConditions;\n }\n /** @hidden */\n constructor(_changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n /** Mobile view */\n this.mobile = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdBaseTab, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.4\", type: VhdBaseTab, isStandalone: true, selector: \"ng-component\", inputs: { uid: \"uid\", tabTitle: \"tabTitle\", mobile: \"mobile\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdBaseTab, decorators: [{\n type: Component,\n args: [{\n template: '',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { uid: [{\n type: Input\n }], tabTitle: [{\n type: Input\n }], mobile: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWJhc2UtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9iYXNlLXRhYi92aGQtYmFzZS10YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBTXRDLGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sVUFBVTtJQWFuQixjQUFjO0lBQ2QsSUFBSSxJQUFJO1FBQ0osT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFxQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQVYxRCxrQkFBa0I7UUFFbEIsV0FBTSxHQUFHLEtBQUssQ0FBQztJQVE4QyxDQUFDOzhHQW5CckQsVUFBVTtrR0FBVixVQUFVLHdJQUpULEVBQUU7OzJGQUlILFVBQVU7a0JBTHRCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25CO3NGQUtHLEdBQUc7c0JBREYsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVmhkVGFiIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBWaGRCYXNlVGFiIHtcbiAgICAvKiogVGFiIFRpdGxlICovXG4gICAgQElucHV0KClcbiAgICB1aWQ6IHN0cmluZztcblxuICAgIC8qKiBUYWIgVGl0bGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYlRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogTW9iaWxlIHZpZXcgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdHlwZSgpOiBWaGRUYWIge1xuICAgICAgICByZXR1cm4gVmhkVGFiLmRlZmluZUNvbmRpdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxufVxuIl19","import { VhdDefineExcludeStrategy, VhdDefineIncludeStrategy } from '../models';\nexport const defaultConditionDisplayFn = (item, filters) => {\n const filter = (filters || []).find((f) => f.key === item.key);\n let value = (() => {\n switch (item.strategy) {\n case VhdDefineIncludeStrategy.empty:\n case VhdDefineExcludeStrategy.not_empty:\n return null;\n case VhdDefineIncludeStrategy.between:\n return `${item.value}...${item.valueTo}`;\n case VhdDefineIncludeStrategy.contains:\n return `*${item.value}*`;\n case VhdDefineIncludeStrategy.equalTo:\n return `=${item.value}`;\n case VhdDefineIncludeStrategy.startsWith:\n return `${item.value}*`;\n case VhdDefineIncludeStrategy.endsWith:\n return `*${item.value}`;\n case VhdDefineIncludeStrategy.greaterThan:\n return `>${item.value}`;\n case VhdDefineIncludeStrategy.greaterThanEqual:\n return `>=${item.value}`;\n case VhdDefineIncludeStrategy.lessThan:\n return `<${item.value}`;\n case VhdDefineIncludeStrategy.lessThanEqual:\n return `<=${item.value}`;\n case VhdDefineExcludeStrategy.not_equalTo:\n return `!(=${item.value})`;\n }\n })();\n if (value && item.type === 'exclude') {\n value = `!(${value})`;\n }\n if (filter) {\n return `${filter.label}: ${value}`;\n }\n return value;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWRpc3BsYXkuZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbnN0YW5zL2NvbmRpdGlvbi1kaXNwbGF5LmZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsd0JBQXdCLEVBSTNCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3JDLElBQTJDLEVBQzNDLE9BQXFCLEVBQ1IsRUFBRTtJQUNmLE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDZCxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixLQUFLLHdCQUF3QixDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLHdCQUF3QixDQUFDLFNBQVM7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLEtBQUssd0JBQXdCLENBQUMsT0FBTztnQkFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLEtBQUssd0JBQXdCLENBQUMsUUFBUTtnQkFDbEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUM3QixLQUFLLHdCQUF3QixDQUFDLE9BQU87Z0JBQ2pDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsS0FBSyx3QkFBd0IsQ0FBQyxVQUFVO2dCQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQzVCLEtBQUssd0JBQXdCLENBQUMsUUFBUTtnQkFDbEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixLQUFLLHdCQUF3QixDQUFDLFdBQVc7Z0JBQ3JDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsS0FBSyx3QkFBd0IsQ0FBQyxnQkFBZ0I7Z0JBQzFDLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsS0FBSyx3QkFBd0IsQ0FBQyxRQUFRO2dCQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLEtBQUssd0JBQXdCLENBQUMsYUFBYTtnQkFDdkMsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixLQUFLLHdCQUF3QixDQUFDLFdBQVc7Z0JBQ3JDLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDTCxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25DLEtBQUssR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1QsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBWaGRGaWx0ZXIsXG4gICAgVmhkSW5jbHVkZWRFbnRpdHlcbn0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm4gPSAoXG4gICAgaXRlbTogVmhkSW5jbHVkZWRFbnRpdHkgfCBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBmaWx0ZXJzPzogVmhkRmlsdGVyW11cbik6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IChmaWx0ZXJzIHx8IFtdKS5maW5kKChmKSA9PiBmLmtleSA9PT0gaXRlbS5rZXkpO1xuICAgIGxldCB2YWx1ZSA9ICgoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuZW1wdHk6XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneS5ub3RfZW1wdHk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5iZXR3ZWVuOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpdGVtLnZhbHVlfS4uLiR7aXRlbS52YWx1ZVRvfWA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5jb250YWluczpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCoke2l0ZW0udmFsdWV9KmA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5lcXVhbFRvOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPSR7aXRlbS52YWx1ZX1gO1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuc3RhcnRzV2l0aDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXRlbS52YWx1ZX0qYDtcbiAgICAgICAgICAgIGNhc2UgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LmVuZHNXaXRoOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKiR7aXRlbS52YWx1ZX1gO1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuZ3JlYXRlclRoYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA+JHtpdGVtLnZhbHVlfWA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5ncmVhdGVyVGhhbkVxdWFsOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPj0ke2l0ZW0udmFsdWV9YDtcbiAgICAgICAgICAgIGNhc2UgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5Lmxlc3NUaGFuOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPCR7aXRlbS52YWx1ZX1gO1xuICAgICAgICAgICAgY2FzZSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kubGVzc1RoYW5FcXVhbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYDw9JHtpdGVtLnZhbHVlfWA7XG4gICAgICAgICAgICBjYXNlIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneS5ub3RfZXF1YWxUbzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCEoPSR7aXRlbS52YWx1ZX0pYDtcbiAgICAgICAgfVxuICAgIH0pKCk7XG4gICAgaWYgKHZhbHVlICYmIGl0ZW0udHlwZSA9PT0gJ2V4Y2x1ZGUnKSB7XG4gICAgICAgIHZhbHVlID0gYCEoJHt2YWx1ZX0pYDtcbiAgICB9XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgICByZXR1cm4gYCR7ZmlsdGVyLmxhYmVsfTogJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbn07XG4iXX0=","export const MAX_CHARACTER_HINT_COUNT = 7;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9jb25zdGFucy92YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE1BWF9DSEFSQUNURVJfSElOVF9DT1VOVCA9IDc7XG4iXX0=","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\nimport { NG_VALIDATORS } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class ConditionCountMessageDirective {\n /** Max characters allowed */\n set maxCharacters(value) {\n this._maxCharacters = coerceNumberProperty(value);\n }\n get maxCharacters() {\n return this._maxCharacters;\n }\n /** @hidden */\n constructor() {\n /** @hidden */\n this._maxCharacters = Number.MAX_SAFE_INTEGER;\n this.validator = this.checkError();\n }\n /** @hidden */\n validate(control) {\n return this.validator(control);\n }\n /** @hidden */\n checkError() {\n return (control) => {\n if (control.dirty && control.value && control.value.length > this.maxCharacters) {\n return {\n maxCharacters: {\n actualLength: control.value.length,\n requiredLength: this.maxCharacters\n }\n };\n }\n return null;\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConditionCountMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ConditionCountMessageDirective, isStandalone: true, selector: \"[fdp-condition-count-message]\", inputs: { maxCharacters: \"maxCharacters\" }, providers: [{ provide: NG_VALIDATORS, useExisting: ConditionCountMessageDirective, multi: true }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConditionCountMessageDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fdp-condition-count-message]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ConditionCountMessageDirective, multi: true }],\n standalone: true\n }]\n }], ctorParameters: () => [], propDecorators: { maxCharacters: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWNvdW50LW1lc3NhZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9kaXJlY3RpdmVzL2NvbmRpdGlvbi1jb3VudC1tZXNzYWdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQWdDLGFBQWEsRUFBaUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRNUcsTUFBTSxPQUFPLDhCQUE4QjtJQUN2Qyw2QkFBNkI7SUFDN0IsSUFDSSxhQUFhLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFXLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQVFELGNBQWM7SUFDZDtRQVBBLGNBQWM7UUFDTixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQU83QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVEsQ0FBQyxPQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDTixVQUFVO1FBQ2QsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlFLE9BQU87b0JBQ0gsYUFBYSxFQUFFO3dCQUNYLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU07d0JBQ2xDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYTtxQkFDckM7aUJBQ0osQ0FBQztZQUNOLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7SUFDTixDQUFDOzhHQXZDUSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3SEFINUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7MkZBR3hGLDhCQUE4QjtrQkFOMUMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDakcsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQUlPLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VdJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBDb25kaXRpb25Db3VudE1lc3NhZ2VEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1dLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uQ291bnRNZXNzYWdlRGlyZWN0aXZlIHtcbiAgICAvKiogTWF4IGNoYXJhY3RlcnMgYWxsb3dlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heENoYXJhY3RlcnModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9tYXhDaGFyYWN0ZXJzID0gPG51bWJlcj5jb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBtYXhDaGFyYWN0ZXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhDaGFyYWN0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF4Q2hhcmFjdGVycyA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRvciA9IHRoaXMuY2hlY2tFcnJvcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdmFsaWRhdGUoY29udHJvbDogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcihjb250cm9sKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgY2hlY2tFcnJvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udHJvbC5kaXJ0eSAmJiBjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gdGhpcy5tYXhDaGFyYWN0ZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4Q2hhcmFjdGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsTGVuZ3RoOiBjb250cm9sLnZhbHVlLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiB0aGlzLm1heENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","/* eslint-disable @typescript-eslint/member-ordering */\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FormControlComponent, FormInputMessageGroupComponent, FormLabelComponent, FormMessageComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ListGroupHeaderDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { MAX_CHARACTER_HINT_COUNT } from '../../constans';\nimport { ConditionCountMessageDirective } from '../../directives/condition-count-message.directive';\nimport { BaseEntity, VhdDefineExcludeStrategy, VhdDefineIncludeStrategy, VhdDefineType, VhdExcludedEntity, VhdIncludedEntity } from '../../models';\nimport { VhdBaseTab } from '../base-tab/vhd-base-tab.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nclass ExtendedBaseEntity extends BaseEntity {\n}\nclass ExtendedIncludedEntity extends VhdIncludedEntity {\n}\nclass ExtendedExcludedEntity extends VhdExcludedEntity {\n}\nlet titleUniqueId = 0;\nexport class DefineTabComponent extends VhdBaseTab {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.defaultId = `fd-title-id-${titleUniqueId++}`;\n /** @hidden */\n this.defaultSelectId = `fd-select-title-id-${titleUniqueId++}`;\n /** title id for the table */\n this.titleId = this.defaultId;\n /** seelcted value id for the table */\n this.selectedId = this.defaultSelectId;\n /** @hidden */\n this.conditions = [];\n /** @hidden */\n this.strategyLabels = {};\n /** @hidden */\n this.includeChange = new EventEmitter();\n /** @hidden */\n this.excludeChange = new EventEmitter();\n /** @hidden */\n this.conditionChange = new EventEmitter();\n /** @hidden */\n this._conditions = [];\n /** @hidden */\n this._definePanelState = {\n included: false,\n excluded: false\n };\n /** @hidden */\n this._rules = {\n maxCharactersHintCount: MAX_CHARACTER_HINT_COUNT\n };\n /** @hidden */\n this._strategyIncludeValues = VhdDefineIncludeStrategy;\n /** @hidden */\n this._strategyExcludeValues = VhdDefineExcludeStrategy;\n /** @hidden */\n this._defineTypes = VhdDefineType;\n /** @hidden */\n this._includeStrategy = [];\n /** @hidden */\n this._excludeStrategy = [];\n }\n /** @hidden */\n ngOnChanges(changes) {\n if ('conditions' in changes) {\n this._conditions = this.conditions || [];\n this._initializeConditions();\n }\n }\n /** @hidden */\n ngAfterViewInit() {\n this._refreshStrategies();\n }\n /** @hidden Track function for main data */\n _trackByKeyAndType(_index, item) {\n if (item) {\n return item.id + item.key + item.type;\n }\n return undefined;\n }\n /** @hidden */\n _onSelectStrategy() {\n this._filterChanged();\n }\n /** @hidden */\n _filterChanged() {\n this.conditionChange.emit(this._conditions);\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden */\n addEmptyCondition() {\n const item = new ExtendedBaseEntity();\n item.value = '';\n this._conditions.push(item);\n this._filterChanged();\n }\n /** @hidden */\n removeCondition(index) {\n this._conditions.splice(index, 1);\n this._initializeConditions();\n this._filterChanged();\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden */\n _validateConditionValue(item, valid) {\n item.valid = Array.isArray(valid) ? valid.every(Boolean) : !!valid;\n this._filterChanged();\n }\n /** @hidden */\n _refreshStrategies() {\n this._includeStrategy = Object.keys(VhdDefineIncludeStrategy).map((key) => ({\n key,\n type: VhdDefineType.include\n }));\n this._excludeStrategy = Object.keys(VhdDefineExcludeStrategy).map((key) => ({\n key,\n type: VhdDefineType.exclude\n }));\n }\n /** @hidden */\n _initializeConditions() {\n if (this._conditions.length === 0) {\n this.addEmptyCondition();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DefineTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: DefineTabComponent, isStandalone: true, selector: \"fdp-define-tab\", inputs: { titleId: \"titleId\", selectedId: \"selectedId\", conditions: \"conditions\", strategyLabels: \"strategyLabels\" }, outputs: { includeChange: \"includeChange\", excludeChange: \"excludeChange\", conditionChange: \"conditionChange\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"<h5 [id]=\\\"titleId\\\" role=\\\"heading\\\" aria-level=\\\"5\\\" fd-title class=\\\"define-condition-title\\\">\\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\\n</h5>\\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\\n <fd-layout-grid class=\\\"condition-row\\\">\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"4\\\">\\n <label id=\\\"CONDITIONPANEL_OPERATOR_LABEL\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n CONDITIONPANEL_OPERATOR_LABEL\\n </label>\\n <label [id]=\\\"selectedId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\\n | fdTranslate: { value: item.strategy }\\n }}</label\\n >\\n <fd-select\\n class=\\\"vhd-condition-filters\\\"\\n fdLayoutGridCol\\n colGrow\\n [class.fd-select-custom-class]=\\\"false\\\"\\n #sttr\\n [controlTemplate]=\\\"customSelectTemplate\\\"\\n [name]=\\\"uid + '-' + type + '-strategy-' + item.id\\\"\\n [(ngModel)]=\\\"item.strategy\\\"\\n (valueChange)=\\\"_filterChanged()\\\"\\n role=\\\"combobox\\\"\\n aria-roledescription=\\\"select\\\"\\n aria-haspopup=\\\"listbox\\\"\\n [inline]=\\\"false\\\"\\n [ariaLabelledBy]=\\\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\\\"\\n >\\n @if (_includeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _includeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.include, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n @if (_excludeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _excludeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.exclude, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n </fd-select>\\n </div>\\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\\n <div fdLayoutGridCol colGrow>\\n <div fdLayoutGridRow>\\n @if (item.strategy === _strategyIncludeValues.between) {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\\\"\\n placeholder=\\\"from\\\"\\n required\\n [state]=\\\"fromModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-from-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #fromModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\\\"\\n required\\n [state]=\\\"toModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-to-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #toModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.valueTo\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n } @else {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group>\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\\\"\\n [state]=\\\"valueModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-value-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, !!valueModel.valid)\\\"\\n #valueModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n @if (valueModel.invalid) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n }\\n </fd-form-input-message-group>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n <div class=\\\"action-col\\\" fdLayoutGridCol colGrow>\\n <button\\n fd-button\\n [ariaLabel]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n glyph=\\\"decline\\\"\\n [title]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"removeCondition(i)\\\"\\n ></button>\\n </div>\\n </div>\\n </fd-layout-grid>\\n}\\n<fd-layout-grid class=\\\"condition-row new-condition-row\\\" [noGap]=\\\"true\\\">\\n <div fdLayoutGridRow>\\n <div fdLayoutGridCol colGrow> </div>\\n <div fdLayoutGridCol class=\\\"action-col\\\">\\n <button\\n fd-button\\n [attr.aria-label]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n [label]=\\\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\\\"\\n [title]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"addEmptyCondition()\\\"\\n ></button>\\n </div>\\n </div>\\n</fd-layout-grid>\\n<ng-template #conditionStrategyOption let-type=\\\"type\\\" let-strategy=\\\"strategy\\\">\\n @switch (strategy.key) {\\n @case ('contains') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\\n }\\n @case ('equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\\n }\\n @case ('between') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\\n }\\n @case ('startsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\\n }\\n @case ('endsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\\n }\\n @case ('lessThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\\n }\\n @case ('lessThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\\n }\\n @case ('greaterThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\\n }\\n @case ('greaterThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\\n }\\n @case ('empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\\n }\\n @case ('not_equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\\n }\\n @case ('not_empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\\n }\\n }\\n</ng-template>\\n<ng-template #countError let-count>\\n @if (count && count > 7) {\\n <fd-form-message type=\\\"error\\\">\\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\\n </fd-form-message>\\n }\\n</ng-template>\\n<ng-template #customSelectTemplate let-textValue>\\n {{ textValue }}\\n</ng-template>\\n\", styles: [\".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:1rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\\n\"], dependencies: [{ kind: \"component\", type: TitleComponent, selector: \"[fd-title], [fdTitle]\", inputs: [\"headerSize\", \"wrap\"], exportAs: [\"fd-title\"] }, { kind: \"component\", type: LayoutGridComponent, selector: \"fd-layout-grid, [fdLayoutGrid]\", inputs: [\"class\", \"noGap\", \"noHorizontalGap\", \"noVerticalGap\"] }, { kind: \"directive\", type: LayoutGridRowDirective, selector: \"[fd-layout-grid-row], [fdLayoutGridRow]\" }, { kind: \"directive\", type: LayoutGridColDirective, selector: \"[fd-layout-grid-col], [fdLayoutGridCol]\", inputs: [\"fdLayoutGridCol\", \"colGrow\", \"colMd\", \"colLg\", \"colXl\", \"colOffset\", \"colOffsetMd\", \"colOffsetLg\", \"colOffsetXl\", \"class\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"component\", type: SelectComponent, selector: \"fd-select\", inputs: [\"extendedBodyTemplate\", \"scrollStrategy\", \"textOverflow\", \"controlId\", \"state\", \"mobile\", \"stateMessage\", \"disabled\", \"required\", \"readonly\", \"placeholder\", \"value\", \"maxHeight\", \"glyph\", \"glyphFont\", \"closeOnOutsideClick\", \"fillControlMode\", \"controlTemplate\", \"appendTo\", \"unselectMissingOption\", \"typeaheadDebounceInterval\", \"ariaLabelledBy\", \"ariaLabel\", \"mobileConfig\", \"inline\", \"selectControlClass\", \"selectDropdownButtonClass\", \"advancedStateMessage\", \"tabOutStrategy\", \"compareWith\"], outputs: [\"isOpenChange\", \"valueChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: ListGroupHeaderDirective, selector: \"[fdListGroupHeader], [fd-list-group-header]\", inputs: [\"nativeElementId\"], outputs: [\"keyDown\"] }, { kind: \"directive\", type: ListTitleDirective, selector: \"[fd-list-title], [fdListTitle]\", inputs: [\"wrap\", \"truncate\"] }, { kind: \"component\", type: OptionComponent, selector: \"[fd-option], fd-option\", inputs: [\"id\", \"value\", \"disabled\"], outputs: [\"selectionChange\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: FormInputMessageGroupComponent, selector: \"fd-form-input-message-group\", inputs: [\"triggers\", \"closeOnOutsideClick\", \"fillControlMode\", \"noArrow\", \"closeOnEscapeKey\", \"placement\", \"placementContainer\", \"isOpen\", \"preventSpaceKeyScroll\"], outputs: [\"isOpenChange\"] }, { kind: \"component\", type: FormControlComponent, selector: \"input[fd-form-control], textarea[fd-form-control]\", inputs: [\"state\", \"type\", \"class\", \"ariaLabel\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: ConditionCountMessageDirective, selector: \"[fdp-condition-count-message]\", inputs: [\"maxCharacters\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"component\", type: FormMessageComponent, selector: \"fd-form-message\", inputs: [\"type\", \"static\", \"embedded\", \"class\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DefineTabComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-define-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n TitleComponent,\n LayoutGridComponent,\n LayoutGridRowDirective,\n LayoutGridColDirective,\n FormLabelComponent,\n SelectComponent,\n FormsModule,\n ListGroupHeaderDirective,\n ListTitleDirective,\n OptionComponent,\n NgTemplateOutlet,\n FormInputMessageGroupComponent,\n FormControlComponent,\n ConditionCountMessageDirective,\n ButtonComponent,\n FormMessageComponent,\n FdTranslatePipe\n ], template: \"<h5 [id]=\\\"titleId\\\" role=\\\"heading\\\" aria-level=\\\"5\\\" fd-title class=\\\"define-condition-title\\\">\\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\\n</h5>\\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\\n <fd-layout-grid class=\\\"condition-row\\\">\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"4\\\">\\n <label id=\\\"CONDITIONPANEL_OPERATOR_LABEL\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n CONDITIONPANEL_OPERATOR_LABEL\\n </label>\\n <label [id]=\\\"selectedId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\\n | fdTranslate: { value: item.strategy }\\n }}</label\\n >\\n <fd-select\\n class=\\\"vhd-condition-filters\\\"\\n fdLayoutGridCol\\n colGrow\\n [class.fd-select-custom-class]=\\\"false\\\"\\n #sttr\\n [controlTemplate]=\\\"customSelectTemplate\\\"\\n [name]=\\\"uid + '-' + type + '-strategy-' + item.id\\\"\\n [(ngModel)]=\\\"item.strategy\\\"\\n (valueChange)=\\\"_filterChanged()\\\"\\n role=\\\"combobox\\\"\\n aria-roledescription=\\\"select\\\"\\n aria-haspopup=\\\"listbox\\\"\\n [inline]=\\\"false\\\"\\n [ariaLabelledBy]=\\\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\\\"\\n >\\n @if (_includeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _includeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.include, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n @if (_excludeStrategy.length) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{\\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\\n }}</span>\\n </li>\\n @for (strategy of _excludeStrategy; track strategy) {\\n <li fd-option [value]=\\\"strategy.key\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionStrategyOption\\\"\\n [ngTemplateOutletContext]=\\\"{ type: _defineTypes.exclude, strategy: strategy }\\\"\\n ></ng-template>\\n </li>\\n }\\n }\\n </fd-select>\\n </div>\\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\\n <div fdLayoutGridCol colGrow>\\n <div fdLayoutGridRow>\\n @if (item.strategy === _strategyIncludeValues.between) {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\\\"\\n placeholder=\\\"from\\\"\\n required\\n [state]=\\\"fromModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-from-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #fromModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group [triggers]=\\\"['focusin', 'focusout']\\\">\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\\\"\\n required\\n [state]=\\\"toModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-to-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\\\"\\n #toModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.valueTo\\\"\\n />\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n </fd-form-input-message-group>\\n </div>\\n } @else {\\n <div fdLayoutGridCol colGrow>\\n <fd-form-input-message-group>\\n <input\\n fd-form-control\\n fdp-condition-count-message\\n [maxCharacters]=\\\"_rules.maxCharactersHintCount\\\"\\n type=\\\"text\\\"\\n [placeholder]=\\\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\\\"\\n [state]=\\\"valueModel.invalid ? 'error' : null\\\"\\n [name]=\\\"uid + '-' + type + '-value-' + item.id\\\"\\n (blur)=\\\"_validateConditionValue(item, !!valueModel.valid)\\\"\\n #valueModel=\\\"ngModel\\\"\\n [(ngModel)]=\\\"item.value\\\"\\n />\\n @if (valueModel.invalid) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"countError\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.value && item.value.length }\\\"\\n ></ng-template>\\n }\\n </fd-form-input-message-group>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n <div class=\\\"action-col\\\" fdLayoutGridCol colGrow>\\n <button\\n fd-button\\n [ariaLabel]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n glyph=\\\"decline\\\"\\n [title]=\\\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"removeCondition(i)\\\"\\n ></button>\\n </div>\\n </div>\\n </fd-layout-grid>\\n}\\n<fd-layout-grid class=\\\"condition-row new-condition-row\\\" [noGap]=\\\"true\\\">\\n <div fdLayoutGridRow>\\n <div fdLayoutGridCol colGrow> </div>\\n <div fdLayoutGridCol class=\\\"action-col\\\">\\n <button\\n fd-button\\n [attr.aria-label]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n [label]=\\\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\\\"\\n [title]=\\\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\\\"\\n (click)=\\\"addEmptyCondition()\\\"\\n ></button>\\n </div>\\n </div>\\n</fd-layout-grid>\\n<ng-template #conditionStrategyOption let-type=\\\"type\\\" let-strategy=\\\"strategy\\\">\\n @switch (strategy.key) {\\n @case ('contains') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\\n }\\n @case ('equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\\n }\\n @case ('between') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\\n }\\n @case ('startsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\\n }\\n @case ('endsWith') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\\n }\\n @case ('lessThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\\n }\\n @case ('lessThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\\n }\\n @case ('greaterThan') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\\n }\\n @case ('greaterThanEqual') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\\n }\\n @case ('empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\\n }\\n @case ('not_equalTo') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\\n }\\n @case ('not_empty') {\\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\\n }\\n }\\n</ng-template>\\n<ng-template #countError let-count>\\n @if (count && count > 7) {\\n <fd-form-message type=\\\"error\\\">\\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\\n </fd-form-message>\\n }\\n</ng-template>\\n<ng-template #customSelectTemplate let-textValue>\\n {{ textValue }}\\n</ng-template>\\n\", styles: [\".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:1rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\\n\"] }]\n }], propDecorators: { titleId: [{\n type: Input\n }], selectedId: [{\n type: Input\n }], conditions: [{\n type: Input\n }], strategyLabels: [{\n type: Input\n }], includeChange: [{\n type: Output\n }], excludeChange: [{\n type: Output\n }], conditionChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvZGVmaW5lLXRhYi9kZWZpbmUtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9kZWZpbmUtdGFiL2RlZmluZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FB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S0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBTU4sYUFBYTtzQkFEWixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgRm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50LFxuICAgIEZvcm1MYWJlbENvbXBvbmVudCxcbiAgICBGb3JtTWVzc2FnZUNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLCBMYXlvdXRHcmlkQ29tcG9uZW50LCBMYXlvdXRHcmlkUm93RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xheW91dC1ncmlkJztcbmltcG9ydCB7IExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSwgTGlzdFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50LCBTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2VsZWN0JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBNQVhfQ0hBUkFDVEVSX0hJTlRfQ09VTlQgfSBmcm9tICcuLi8uLi9jb25zdGFucyc7XG5pbXBvcnQgeyBDb25kaXRpb25Db3VudE1lc3NhZ2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbmRpdGlvbi1jb3VudC1tZXNzYWdlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEJhc2VFbnRpdHksXG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGREZWZpbmVUeXBlLFxuICAgIFZoZEV4Y2x1ZGVkRW50aXR5LFxuICAgIFZoZEluY2x1ZGVkRW50aXR5XG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBWaGRCYXNlVGFiIH0gZnJvbSAnLi4vYmFzZS10YWIvdmhkLWJhc2UtdGFiLmNvbXBvbmVudCc7XG5cbmNsYXNzIEV4dGVuZGVkQmFzZUVudGl0eSBleHRlbmRzIEJhc2VFbnRpdHkge1xuICAgIGlkPzogbnVtYmVyO1xufVxuXG5jbGFzcyBFeHRlbmRlZEluY2x1ZGVkRW50aXR5IGV4dGVuZHMgVmhkSW5jbHVkZWRFbnRpdHkge1xuICAgIGlkPzogbnVtYmVyO1xufVxuXG5jbGFzcyBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5IGV4dGVuZHMgVmhkRXhjbHVkZWRFbnRpdHkge1xuICAgIGlkPzogbnVtYmVyO1xufVxuXG5sZXQgdGl0bGVVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWRlZmluZS10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kZWZpbmUtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZGVmaW5lLXRhYi5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgTGlzdFRpdGxlRGlyZWN0aXZlLFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIENvbmRpdGlvbkNvdW50TWVzc2FnZURpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZWZpbmVUYWJDb21wb25lbnQgZXh0ZW5kcyBWaGRCYXNlVGFiIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0SWQgPSBgZmQtdGl0bGUtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0U2VsZWN0SWQgPSBgZmQtc2VsZWN0LXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogdGl0bGUgaWQgZm9yIHRoZSB0YWJsZSAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlSWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdElkO1xuXG4gICAgLyoqIHNlZWxjdGVkIHZhbHVlIGlkIGZvciB0aGUgdGFibGUgICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZElkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZWxlY3RJZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBjb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0cmF0ZWd5TGFiZWxzOiB7IFtrZXkgaW4ga2V5b2YgKHR5cGVvZiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCB0eXBlb2YgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KV0/OiBzdHJpbmcgfSA9XG4gICAgICAgIHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbmNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjb25kaXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lUGFuZWxTdGF0ZSA9IHtcbiAgICAgICAgaW5jbHVkZWQ6IGZhbHNlLFxuICAgICAgICBleGNsdWRlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnVsZXMgPSB7XG4gICAgICAgIG1heENoYXJhY3RlcnNIaW50Q291bnQ6IE1BWF9DSEFSQUNURVJfSElOVF9DT1VOVFxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzID0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzID0gVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lVHlwZXMgPSBWaGREZWZpbmVUeXBlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5jbHVkZVN0cmF0ZWd5OiBTdGF0ZWd5SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGNsdWRlU3RyYXRlZ3k6IFN0YXRlZ3lJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2NvbmRpdGlvbnMnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmRpdGlvbnMgPSAodGhpcy5jb25kaXRpb25zIGFzIEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXSkgfHwgW107XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hTdHJhdGVnaWVzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIG1haW4gZGF0YSAqL1xuICAgIF90cmFja0J5S2V5QW5kVHlwZShcbiAgICAgICAgX2luZGV4OiBudW1iZXIsXG4gICAgICAgIGl0ZW06IEV4dGVuZGVkSW5jbHVkZWRFbnRpdHkgfCBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5XG4gICAgKTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmlkICsgaXRlbS5rZXkgKyBpdGVtLnR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VsZWN0U3RyYXRlZ3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2NvbmRpdGlvbnMpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZEVtcHR5Q29uZGl0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtID0gbmV3IEV4dGVuZGVkQmFzZUVudGl0eSgpO1xuICAgICAgICBpdGVtLnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuX2NvbmRpdGlvbnMucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uZGl0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB0aGlzLl9maWx0ZXJDaGFuZ2VkKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbTogRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSB8IEV4dGVuZGVkRXhjbHVkZWRFbnRpdHksIHZhbGlkOiBib29sZWFuIHwgYm9vbGVhbltdKTogdm9pZCB7XG4gICAgICAgIGl0ZW0udmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbGlkKSA/IHZhbGlkLmV2ZXJ5KEJvb2xlYW4pIDogISF2YWxpZDtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFN0cmF0ZWdpZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luY2x1ZGVTdHJhdGVneSA9IE9iamVjdC5rZXlzKFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB0eXBlOiBWaGREZWZpbmVUeXBlLmluY2x1ZGVcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLl9leGNsdWRlU3RyYXRlZ3kgPSBPYmplY3Qua2V5cyhWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kpLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdHlwZTogVmhkRGVmaW5lVHlwZS5leGNsdWRlXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVDb25kaXRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlDb25kaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuaW50ZXJmYWNlIFN0YXRlZ3lJdGVtIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xufVxuIiwiPGg1IFtpZF09XCJ0aXRsZUlkXCIgcm9sZT1cImhlYWRpbmdcIiBhcmlhLWxldmVsPVwiNVwiIGZkLXRpdGxlIGNsYXNzPVwiZGVmaW5lLWNvbmRpdGlvbi10aXRsZVwiPlxuICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25UaXRsZScgfCBmZFRyYW5zbGF0ZSB9fVxuPC9oNT5cbkBmb3IgKGl0ZW0gb2YgX2NvbmRpdGlvbnM7IHRyYWNrIF90cmFja0J5S2V5QW5kVHlwZShpLCBpdGVtKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8ZmQtbGF5b3V0LWdyaWQgY2xhc3M9XCJjb25kaXRpb24tcm93XCI+XG4gICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICBDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RlZElkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uU2VsZWN0ZWRWYWx1ZUhpZGRlbkExMXlMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBpdGVtLnN0cmF0ZWd5IH1cbiAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aGQtY29uZGl0aW9uLWZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICBmZExheW91dEdyaWRDb2xcbiAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWN1c3RvbS1jbGFzc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICNzdHRyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sVGVtcGxhdGVdPVwiY3VzdG9tU2VsZWN0VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1zdHJhdGVneS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5zdHJhdGVneVwiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJfZmlsdGVyQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwidGl0bGVJZCArICcgJyArICdDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTCcgKyAnICcgKyBzZWxlY3RlZElkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2luY2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJJbmNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2luY2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuaW5jbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2V4Y2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJFeGNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2V4Y2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuZXhjbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5zdHJhdGVneSAhPT0gX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcy5lbXB0eSAmJiBpdGVtLnN0cmF0ZWd5ICE9PSBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzLm5vdF9lbXB0eSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnN0cmF0ZWd5ID09PSBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzLmJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwIFt0cmlnZ2Vyc109XCJbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLWNvbmRpdGlvbi1jb3VudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heENoYXJhY3RlcnNdPVwiX3J1bGVzLm1heENoYXJhY3RlcnNIaW50Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkZyb21QbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJmcm9tTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1mcm9tLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJfdmFsaWRhdGVDb25kaXRpb25WYWx1ZShpdGVtLCBbISFmcm9tTW9kZWwudmFsaWQsICEhdG9Nb2RlbC52YWxpZF0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZnJvbU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb3VudEVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY29sR3Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cCBbdHJpZ2dlcnNdPVwiWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkcC1jb25kaXRpb24tY291bnQtbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhDaGFyYWN0ZXJzXT1cIl9ydWxlcy5tYXhDaGFyYWN0ZXJzSGludENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Ub1BsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJ0b01vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctdG8tJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW0sIFshIWZyb21Nb2RlbC52YWxpZCwgISF0b01vZGVsLnZhbGlkXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0b01vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlVG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlLmxlbmd0aCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4Q2hhcmFjdGVyc109XCJfcnVsZXMubWF4Q2hhcmFjdGVyc0hpbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVmFsdWVQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInZhbHVlTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy12YWx1ZS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbSwgISF2YWx1ZU1vZGVsLnZhbGlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhbHVlTW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodmFsdWVNb2RlbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY29sXCIgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29uZGl0aW9uKGkpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtZ3JpZD5cbn1cbjxmZC1sYXlvdXQtZ3JpZCBjbGFzcz1cImNvbmRpdGlvbi1yb3cgbmV3LWNvbmRpdGlvbi1yb3dcIiBbbm9HYXBdPVwidHJ1ZVwiPlxuICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PiZuYnNwOzwvZGl2PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjbGFzcz1cImFjdGlvbi1jb2xcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEVtcHR5Q29uZGl0aW9uKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZmQtbGF5b3V0LWdyaWQ+XG48bmctdGVtcGxhdGUgI2NvbmRpdGlvblN0cmF0ZWd5T3B0aW9uIGxldC10eXBlPVwidHlwZVwiIGxldC1zdHJhdGVneT1cInN0cmF0ZWd5XCI+XG4gICAgQHN3aXRjaCAoc3RyYXRlZ3kua2V5KSB7XG4gICAgICAgIEBjYXNlICgnY29udGFpbnMnKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbENvbnRhaW5zJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdiZXR3ZWVuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxCZXR3ZWVuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzdGFydHNXaXRoJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxTdGFydHNXaXRoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbmRzV2l0aCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW5kc1dpdGgnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2xlc3NUaGFuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxMZXNzVGhhbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbGVzc1RoYW5FcXVhbCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsTGVzc1RoYW5FcXVhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZ3JlYXRlclRoYW4nKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdncmVhdGVyVGhhbkVxdWFsJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxHcmVhdGVyVGhhbkVxdWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbXB0eScpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW1wdHknIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ25vdF9lcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxOb3RFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdub3RfZW1wdHknKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbE5vdEVtcHR5JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb3VudEVycm9yIGxldC1jb3VudD5cbiAgICBAaWYgKGNvdW50ICYmIGNvdW50ID4gNykge1xuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIHR5cGU9XCJlcnJvclwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbk1heENvdW50RXJyb3InIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IDcgfSB9fVxuICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjdXN0b21TZWxlY3RUZW1wbGF0ZSBsZXQtdGV4dFZhbHVlPlxuICAgIHt7IHRleHRWYWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","export class VhdComponent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWNvbXBvbmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvbW9kZWxzL3ZoZC1jb21wb25lbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQixZQUFZO0NBRWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3ZhbHVlLWhlbHAtY29sdW1uLWRlZi5kaXJlY3RpdmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmhkQ29tcG9uZW50IHtcbiAgICBhYnN0cmFjdCBjb2x1bW5EZWY6IFF1ZXJ5TGlzdDxWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmU+O1xufVxuIl19","/* eslint-disable @typescript-eslint/member-ordering */\nimport { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { FocusableGridDirective, RepeatDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarMiddleDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { InfiniteScrollDirective } from '@fundamental-ngx/core/infinite-scroll';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TableBodyDirective, TableCellDirective, TableComponent, TableHeaderDirective, TableRowDirective, TableTextDirective } from '@fundamental-ngx/core/table';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { startWith } from 'rxjs';\nimport { VhdComponent } from '../../models/vhd-component.model';\nimport { VhdBaseTab } from '../base-tab/vhd-base-tab.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nlet titleUniqueId = 0;\nexport class SelectTabComponent extends VhdBaseTab {\n constructor() {\n super(...arguments);\n /** @hidden */\n this.defaultTitleId = `fd-select-tab-title-id-${titleUniqueId++}`;\n /** @hidden */\n this.defaultCountId = `fd-select-tab-title-count-id-${titleUniqueId++}`;\n /** Select tab title element ID */\n this.selectTabTitleId = this.defaultTitleId;\n /** Select tab count element ID */\n this.selectTabCountId = this.defaultCountId;\n /** Selected items */\n this.selected = [];\n /** Loading state */\n this.loading = false;\n /** Actual filters */\n this.filters = [];\n /** Close dialog immediately after select any row from search table. It'll be skipped if multi option is true */\n this.selection = 'single';\n /** Whether to allow users to select all table entries with one checkbox. */\n this.allowSelectAll = true;\n /** Uniq field from data source */\n this.uniqueKey = 'id';\n /** Count of default mobile header from search table */\n this.defaultMobileHeaders = 2;\n /** Displayed data for search table */\n this.displayedData = [];\n /** Event emitted when row was selected. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.select = new EventEmitter();\n /** @hidden indeterminate flag for `select all` checkbox */\n this._selectedAll = false;\n /** @hidden Shown items count in mobile view */\n this._shownFrom = 0;\n /** @hidden Shown items count in mobile view */\n this._shownCount = 0;\n /** @hidden Current page in desktop view */\n this._currentPage = 0;\n /** @hidden Headers and body for search table */\n this._tableFilters = {\n main: [],\n secondary: []\n };\n /** @hidden */\n this._selectedMap = {};\n /** @hidden */\n this._columnDefMap = new Map();\n /** @hidden */\n this.selectedItems = [];\n /** @hidden */\n this._vhd = inject(VhdComponent, { optional: true });\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden Track function for main data */\n this._trackByTableRowFn = (_index, item) => {\n if (item) {\n return item[this.uniqueKey];\n }\n return undefined;\n };\n }\n /** Selection type getters */\n get isSingleSelection() {\n return this.selection === 'single';\n }\n /** Selection type getters */\n get isOnceSelection() {\n return this.selection === 'once';\n }\n /** Selection type getters */\n get isMultiSelection() {\n return this.selection === 'multi';\n }\n /** @hidden */\n ngAfterViewInit() {\n Promise.resolve(true).then(() => this._checkScrollAndShowMore());\n this._vhd?.columnDef.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._columnDefMap.clear();\n this._vhd?.columnDef.forEach((item) => {\n this._columnDefMap.set(item.column, item);\n });\n });\n }\n /** @hidden */\n ngOnChanges(changes) {\n if ('filters' in changes) {\n this._initializeFilters();\n }\n if ('displayedData' in changes) {\n this._refreshDisplayedData();\n }\n if ('selected' in changes) {\n this.selectedItems = this.selected || [];\n this._refreshSelectedMap();\n this._refreshTristate();\n }\n }\n /** @hidden Track function for filters */\n _trackByFilterFn(_index, item) {\n return item && item.key ? item.key : undefined;\n }\n /** @hidden Show more elements */\n _showMoreElements() {\n if (this.pageSize && this._shownCount !== this.displayedData.length) {\n this._shownCount += this.pageSize;\n this._shownCount = Math.min(this._shownCount, this.displayedData.length);\n }\n else {\n this._shownCount = this.displayedData.length;\n }\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden Refresh page in desktop view */\n _updatePage(pageNumber = 1) {\n if (this.pageSize) {\n this._currentPage = pageNumber;\n this._shownFrom = (pageNumber - 1) * this.pageSize;\n this._shownCount = Math.min(this._shownFrom + this.pageSize, this.displayedData.length);\n }\n else {\n this._shownCount = this.displayedData.length;\n }\n }\n /** @hidden Method toggle selected state for all items */\n _toggleAllRows() {\n if (this._selectedAll) {\n this.selectedItems = [];\n }\n else {\n this.selectedItems = this.displayedData;\n }\n this.select.emit(this.selectedItems);\n this._refreshSelectedMap();\n this._refreshTristate();\n }\n /** @hidden Method toggle selected state for one items */\n _toggleSelectRow(item) {\n if (this.isMultiSelection) {\n const isSelected = this._selectedMap[item[this.uniqueKey]];\n if (isSelected) {\n this.selectedItems = this.selectedItems.filter((s) => s[this.uniqueKey] !== item[this.uniqueKey]);\n }\n else {\n this.selectedItems.push(item);\n }\n this._selectedMap[item[this.uniqueKey]] = !this._selectedMap[item[this.uniqueKey]];\n }\n else {\n this._clearSelectedItems();\n this.selectedItems = [item];\n }\n this.select.emit(this.selectedItems);\n this._refreshTristate();\n }\n /** @hidden */\n _checkScrollAndShowMore() {\n if (this.mobile) {\n return;\n }\n if (this.displayedData.length &&\n this._shownCount !== this.displayedData.length &&\n this.infiniteScrollTable?.shouldTriggerAction()) {\n this._showMoreElements();\n setTimeout(() => {\n this._checkScrollAndShowMore();\n }, 100);\n }\n }\n /** @hidden */\n _resetShown() {\n if (this.mobile) {\n this._showMoreElements();\n }\n else {\n this._checkScrollAndShowMore();\n }\n }\n /** @hidden Manually clear selected items */\n _clearSelectedItems() {\n this._selectedMap = {};\n this.selectedItems = [];\n }\n /** @hidden Refresh indeterminate attribute on `select all` checkbox */\n _refreshTristate() {\n const selected = Object.values(this._selectedMap).filter(Boolean).length;\n if (selected === 0) {\n this._selectedAll = false;\n }\n else if (selected === this.displayedData.length) {\n this._selectedAll = true;\n }\n else {\n this._selectedAll = null;\n }\n }\n /** @hidden Set up filters */\n _initializeFilters() {\n if (this.mobile) {\n let _mobileTableHeaders = this.filters.filter((f) => f.main).map((f) => f.key);\n if (!_mobileTableHeaders.length) {\n _mobileTableHeaders = this.filters.slice(0, this.defaultMobileHeaders).map((f) => f.key);\n }\n this._tableFilters = {\n main: this.filters.filter((filter) => _mobileTableHeaders.some((key) => key === filter.key)),\n secondary: this.filters.filter((filter) => !_mobileTableHeaders.some((key) => key === filter.key))\n };\n }\n else {\n this._tableFilters = {\n main: this.filters,\n secondary: []\n };\n }\n }\n /** @hidden Refresh display data */\n _refreshDisplayedData() {\n this._resetShown();\n this._refreshTristate();\n }\n /** @hidden Refresh selected map for display data */\n _refreshSelectedMap() {\n this._selectedMap = {};\n for (const item of this.displayedData) {\n this._selectedMap[item[this.uniqueKey]] = false;\n }\n for (const s of this.selectedItems) {\n this._selectedMap[s[this.uniqueKey]] = true;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: SelectTabComponent, isStandalone: true, selector: \"fdp-select-tab\", inputs: { selectTabTitleId: \"selectTabTitleId\", selectTabCountId: \"selectTabCountId\", selected: \"selected\", loading: \"loading\", filters: \"filters\", selection: \"selection\", allowSelectAll: \"allowSelectAll\", uniqueKey: \"uniqueKey\", pageSize: \"pageSize\", defaultMobileHeaders: \"defaultMobileHeaders\", displayedData: \"displayedData\" }, outputs: { select: \"select\" }, viewQueries: [{ propertyName: \"infiniteScrollTable\", first: true, predicate: InfiniteScrollDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"table-header\\\">\\n <h5 fd-title role=\\\"heading\\\" aria-level=\\\"5\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </h5>\\n</div>\\n<div\\n class=\\\"fdp-value-help-dialog__table-holder table-content\\\"\\n fd-scrollbar\\n fdInfiniteScroll\\n (onScrollAction)=\\\"_showMoreElements()\\\"\\n [scrollPercent]=\\\"80\\\"\\n role=\\\"table\\\"\\n>\\n <table\\n fd-table\\n [popIn]=\\\"mobile\\\"\\n [noBorderX]=\\\"mobile\\\"\\n [noBorderY]=\\\"false\\\"\\n [attr.aria-colcount]=\\\"_tableFilters.main.length\\\"\\n [attr.aria-rowcount]=\\\"displayedData.length\\\"\\n role=\\\"grid\\\"\\n aria-multiselectable=\\\"true\\\"\\n [attr.aria-labelledby]=\\\"selectTabTitleId + ' ' + selectTabCountId\\\"\\n [allCellsFocusable]=\\\"true\\\"\\n >\\n <label [id]=\\\"selectTabCountId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.selectTabCountHiddenA11yLabel'\\n | fdTranslate: { rowCount: displayedData.length, colCount: _tableFilters.main.length }\\n }}\\n </label>\\n <label [id]=\\\"selectTabTitleId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </label>\\n <thead fd-table-header>\\n @if (displayedData.length && _tableFilters) {\\n <tr fd-table-row>\\n <th fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection && allowSelectAll) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-all'\\\"\\n [tristate]=\\\"true\\\"\\n [tristateSelectable]=\\\"false\\\"\\n [ngModel]=\\\"_selectedAll\\\"\\n (ngModelChange)=\\\"_toggleAllRows()\\\"\\n ></fd-checkbox>\\n }\\n </th>\\n @for (\\n filter of _tableFilters.main;\\n track _trackByFilterFn(colindex, filter);\\n let colindex = $index\\n ) {\\n <th fd-table-cell [attr.aria-colindex]=\\\"colindex\\\">\\n {{ filter.label }}\\n </th>\\n }\\n </tr>\\n }\\n </thead>\\n <tbody fd-table-body>\\n @for (\\n row of displayedData | slice: _shownFrom : _shownCount;\\n track _trackByTableRowFn(i, row);\\n let i = $index\\n ) {\\n <tr\\n fd-table-row\\n [hoverable]=\\\"!mobile\\\"\\n [main]=\\\"mobile\\\"\\n [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n [activable]=\\\"!isMultiSelection\\\"\\n (click)=\\\"!isMultiSelection && _toggleSelectRow(row)\\\"\\n >\\n <td fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-' + i\\\"\\n [ngModel]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n (change)=\\\"_toggleSelectRow(row)\\\"\\n ></fd-checkbox>\\n }\\n </td>\\n @for (filter of _tableFilters.main; track filter; let rowIndex = $index) {\\n <td fd-table-cell [attr.aria-rowindex]=\\\"rowIndex\\\">\\n @if (_columnDefMap.get(filter.key); as columnDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"columnDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: row,\\n key: filter.key,\\n value: row[filter.key] || ''\\n }\\\"\\n ></ng-template>\\n } @else {\\n {{ row[filter.key] || '' }}\\n }\\n </td>\\n }\\n </tr>\\n @if (mobile && _tableFilters.secondary.length) {\\n <tr fd-table-row [secondary]=\\\"true\\\" [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\">\\n <td fd-table-cell></td>\\n <td colspan=\\\"100%\\\" fd-table-cell [fitContent]=\\\"true\\\">\\n @for (filter of _tableFilters.secondary; track filter) {\\n <p fd-table-text>\\n <label>{{ filter.label }}:</label>\\n {{ row[filter.key] || '' }}\\n </p>\\n }\\n </td>\\n </tr>\\n }\\n }\\n @if (displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length) {\\n <tr fd-table-row>\\n <td colspan=\\\"100%\\\">\\n <div fd-bar barDesign=\\\"header-with-subheader\\\">\\n <div fd-bar-middle>\\n <fd-bar-element>\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_showMoreElements()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n </td>\\n </tr>\\n }\\n @if (!displayedData.length) {\\n @if (loading) {\\n <tr fd-table-row *fdkRepeat=\\\"3\\\">\\n <td fd-table-cell *fdkRepeat=\\\"3\\\">\\n <fd-skeleton [style.margin]=\\\"'auto 0'\\\" type=\\\"text\\\" textLines=\\\"1\\\" width=\\\"60%\\\"></fd-skeleton>\\n </td>\\n </tr>\\n } @else {\\n <tr fd-table-row>\\n <td fd-table-cell colspan=\\\"100%\\\">\\n <div class=\\\"fdp-value-help-dialog__empty-message\\\">\\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\\n </div>\\n </td>\\n </tr>\\n }\\n }\\n </tbody>\\n </table>\\n</div>\\n\", styles: [\".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\\n\"], dependencies: [{ kind: \"component\", type: TitleComponent, selector: \"[fd-title], [fdTitle]\", inputs: [\"headerSize\", \"wrap\"], exportAs: [\"fd-title\"] }, { kind: \"directive\", type: ScrollbarDirective, selector: \"[fdScrollbar], [fd-scrollbar]\", inputs: [\"noHorizontalScroll\", \"noVerticalScroll\", \"alwaysVisible\"] }, { kind: \"directive\", type: InfiniteScrollDirective, selector: \"[fdInfiniteScroll]\", inputs: [\"scrollPercent\", \"scrollOffset\"], outputs: [\"onScrollAction\"] }, { kind: \"component\", type: TableComponent, selector: \"table[fd-table]\", inputs: [\"noBorderX\", \"noBorderY\", \"noOuterBorder\", \"topBorder\", \"popIn\", \"responsive\", \"keys\", \"allCellsFocusable\"], exportAs: [\"fd-table\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"directive\", type: TableHeaderDirective, selector: \"[fdTableHeader], [fd-table-header]\", inputs: [\"noBorderX\", \"noBorderY\", \"nonInteractive\"] }, { kind: \"directive\", type: TableRowDirective, selector: \"[fdTableRow], [fd-table-row]\", inputs: [\"activable\", \"highlightActive\", \"hoverable\", \"focusable\", \"main\", \"secondary\", \"active\"] }, { kind: \"directive\", type: TableCellDirective, selector: \"[fdTableCell], [fd-table-cell]\", inputs: [\"noBorderX\", \"noBorderY\", \"activable\", \"focusable\", \"hoverable\", \"fitContent\", \"noPadding\", \"noData\", \"nonInteractive\", \"key\"] }, { kind: \"component\", type: CheckboxComponent, selector: \"fd-checkbox\", inputs: [\"wrapLabel\", \"valignLabel\", \"ariaLabel\", \"role\", \"value\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"inputId\", \"state\", \"name\", \"label\", \"disabled\", \"readonly\", \"tristate\", \"tristateSelectable\", \"labelClass\", \"required\", \"displayOnly\", \"values\", \"standalone\"], outputs: [\"focusChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: TableBodyDirective, selector: \"[fdTableBody], [fd-table-body]\", inputs: [\"noBorderX\", \"noBorderY\"] }, { kind: \"directive\", type: TableTextDirective, selector: \"[fdTableText], [fd-table-text]\", inputs: [\"fdTableTextClass\", \"noWrap\", \"title\", \"maxWidth\"] }, { kind: \"component\", type: BarComponent, selector: \"[fd-bar]\", inputs: [\"class\", \"barDesign\", \"inPage\", \"inHomePage\", \"clear\", \"size\", \"role\"] }, { kind: \"directive\", type: BarMiddleDirective, selector: \"[fd-bar-middle]\" }, { kind: \"directive\", type: BarElementDirective, selector: \"fd-bar-element\", inputs: [\"fullWidth\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"directive\", type: RepeatDirective, selector: \"[fdkRepeat]\", inputs: [\"fdkRepeat\"] }, { kind: \"component\", type: SkeletonComponent, selector: \"fd-skeleton\", inputs: [\"animated\", \"type\", \"textLines\", \"width\", \"height\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: SlicePipe, name: \"slice\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectTabComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-select-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n TitleComponent,\n CdkScrollable,\n ScrollbarDirective,\n InfiniteScrollDirective,\n FocusableGridDirective,\n TableComponent,\n FormLabelComponent,\n TableHeaderDirective,\n TableRowDirective,\n TableCellDirective,\n CheckboxComponent,\n FormsModule,\n TableBodyDirective,\n TableTextDirective,\n BarComponent,\n BarMiddleDirective,\n BarElementDirective,\n ButtonComponent,\n RepeatDirective,\n SkeletonComponent,\n SlicePipe,\n FdTranslatePipe,\n NgTemplateOutlet\n ], template: \"<div class=\\\"table-header\\\">\\n <h5 fd-title role=\\\"heading\\\" aria-level=\\\"5\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </h5>\\n</div>\\n<div\\n class=\\\"fdp-value-help-dialog__table-holder table-content\\\"\\n fd-scrollbar\\n fdInfiniteScroll\\n (onScrollAction)=\\\"_showMoreElements()\\\"\\n [scrollPercent]=\\\"80\\\"\\n role=\\\"table\\\"\\n>\\n <table\\n fd-table\\n [popIn]=\\\"mobile\\\"\\n [noBorderX]=\\\"mobile\\\"\\n [noBorderY]=\\\"false\\\"\\n [attr.aria-colcount]=\\\"_tableFilters.main.length\\\"\\n [attr.aria-rowcount]=\\\"displayedData.length\\\"\\n role=\\\"grid\\\"\\n aria-multiselectable=\\\"true\\\"\\n [attr.aria-labelledby]=\\\"selectTabTitleId + ' ' + selectTabCountId\\\"\\n [allCellsFocusable]=\\\"true\\\"\\n >\\n <label [id]=\\\"selectTabCountId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{\\n 'platformVHD.selectTabCountHiddenA11yLabel'\\n | fdTranslate: { rowCount: displayedData.length, colCount: _tableFilters.main.length }\\n }}\\n </label>\\n <label [id]=\\\"selectTabTitleId\\\" fd-form-label class=\\\"fdp-value-help-dialog__hidden_label\\\">\\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\\n </label>\\n <thead fd-table-header>\\n @if (displayedData.length && _tableFilters) {\\n <tr fd-table-row>\\n <th fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection && allowSelectAll) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-all'\\\"\\n [tristate]=\\\"true\\\"\\n [tristateSelectable]=\\\"false\\\"\\n [ngModel]=\\\"_selectedAll\\\"\\n (ngModelChange)=\\\"_toggleAllRows()\\\"\\n ></fd-checkbox>\\n }\\n </th>\\n @for (\\n filter of _tableFilters.main;\\n track _trackByFilterFn(colindex, filter);\\n let colindex = $index\\n ) {\\n <th fd-table-cell [attr.aria-colindex]=\\\"colindex\\\">\\n {{ filter.label }}\\n </th>\\n }\\n </tr>\\n }\\n </thead>\\n <tbody fd-table-body>\\n @for (\\n row of displayedData | slice: _shownFrom : _shownCount;\\n track _trackByTableRowFn(i, row);\\n let i = $index\\n ) {\\n <tr\\n fd-table-row\\n [hoverable]=\\\"!mobile\\\"\\n [main]=\\\"mobile\\\"\\n [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n [activable]=\\\"!isMultiSelection\\\"\\n (click)=\\\"!isMultiSelection && _toggleSelectRow(row)\\\"\\n >\\n <td fd-table-cell [fitContent]=\\\"mobile\\\">\\n @if (isMultiSelection) {\\n <fd-checkbox\\n [name]=\\\"uid + '-row-' + i\\\"\\n [ngModel]=\\\"_selectedMap[row[uniqueKey]]\\\"\\n (change)=\\\"_toggleSelectRow(row)\\\"\\n ></fd-checkbox>\\n }\\n </td>\\n @for (filter of _tableFilters.main; track filter; let rowIndex = $index) {\\n <td fd-table-cell [attr.aria-rowindex]=\\\"rowIndex\\\">\\n @if (_columnDefMap.get(filter.key); as columnDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"columnDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: row,\\n key: filter.key,\\n value: row[filter.key] || ''\\n }\\\"\\n ></ng-template>\\n } @else {\\n {{ row[filter.key] || '' }}\\n }\\n </td>\\n }\\n </tr>\\n @if (mobile && _tableFilters.secondary.length) {\\n <tr fd-table-row [secondary]=\\\"true\\\" [attr.aria-selected]=\\\"_selectedMap[row[uniqueKey]]\\\">\\n <td fd-table-cell></td>\\n <td colspan=\\\"100%\\\" fd-table-cell [fitContent]=\\\"true\\\">\\n @for (filter of _tableFilters.secondary; track filter) {\\n <p fd-table-text>\\n <label>{{ filter.label }}:</label>\\n {{ row[filter.key] || '' }}\\n </p>\\n }\\n </td>\\n </tr>\\n }\\n }\\n @if (displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length) {\\n <tr fd-table-row>\\n <td colspan=\\\"100%\\\">\\n <div fd-bar barDesign=\\\"header-with-subheader\\\">\\n <div fd-bar-middle>\\n <fd-bar-element>\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_showMoreElements()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n </td>\\n </tr>\\n }\\n @if (!displayedData.length) {\\n @if (loading) {\\n <tr fd-table-row *fdkRepeat=\\\"3\\\">\\n <td fd-table-cell *fdkRepeat=\\\"3\\\">\\n <fd-skeleton [style.margin]=\\\"'auto 0'\\\" type=\\\"text\\\" textLines=\\\"1\\\" width=\\\"60%\\\"></fd-skeleton>\\n </td>\\n </tr>\\n } @else {\\n <tr fd-table-row>\\n <td fd-table-cell colspan=\\\"100%\\\">\\n <div class=\\\"fdp-value-help-dialog__empty-message\\\">\\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\\n </div>\\n </td>\\n </tr>\\n }\\n }\\n </tbody>\\n </table>\\n</div>\\n\", styles: [\".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\\n\"] }]\n }], propDecorators: { selectTabTitleId: [{\n type: Input\n }], selectTabCountId: [{\n type: Input\n }], selected: [{\n type: Input\n }], loading: [{\n type: Input\n }], filters: [{\n type: Input\n }], selection: [{\n type: Input\n }], allowSelectAll: [{\n type: Input\n }], uniqueKey: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], defaultMobileHeaders: [{\n type: Input\n }], displayedData: [{\n type: Input\n }], select: [{\n type: Output\n }], infiniteScrollTable: [{\n type: ViewChild,\n args: [InfiniteScrollDirective]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvc2VsZWN0LXRhYi9zZWxlY3QtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9zZWxlY3QtdGFiL3NlbGVjdC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJB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SztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sb0JBQW9CO3NCQURuQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLSSxNQUFNO3NCQUFmLE1BQU07Z0JBRzZCLG1CQUFtQjtzQkFBdEQsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgU2xpY2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNhYmxlR3JpZERpcmVjdGl2ZSwgUmVwZWF0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFyQ29tcG9uZW50LCBCYXJFbGVtZW50RGlyZWN0aXZlLCBCYXJNaWRkbGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2tlbGV0b24nO1xuaW1wb3J0IHtcbiAgICBUYWJsZUJvZHlEaXJlY3RpdmUsXG4gICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgIFRhYmxlUm93RGlyZWN0aXZlLFxuICAgIFRhYmxlVGV4dERpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGFibGUnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmFsdWVIZWxwQ29sdW1uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWNvbHVtbi1kZWYuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZkaFRhYmxlU2VsZWN0aW9uLCBWaGRGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZoZC1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5sZXQgdGl0bGVVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNlbGVjdC10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgICAgICBGb2N1c2FibGVHcmlkRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBUYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBUYWJsZUJvZHlEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlVGV4dERpcmVjdGl2ZSxcbiAgICAgICAgQmFyQ29tcG9uZW50LFxuICAgICAgICBCYXJNaWRkbGVEaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgUmVwZWF0RGlyZWN0aXZlLFxuICAgICAgICBTa2VsZXRvbkNvbXBvbmVudCxcbiAgICAgICAgU2xpY2VQaXBlLFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdFRhYkNvbXBvbmVudDxUPiBleHRlbmRzIFZoZEJhc2VUYWIgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRUaXRsZUlkID0gYGZkLXNlbGVjdC10YWItdGl0bGUtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0Q291bnRJZCA9IGBmZC1zZWxlY3QtdGFiLXRpdGxlLWNvdW50LWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogU2VsZWN0IHRhYiB0aXRsZSBlbGVtZW50IElEICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RUYWJUaXRsZUlkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRUaXRsZUlkO1xuXG4gICAgLyoqIFNlbGVjdCB0YWIgY291bnQgZWxlbWVudCBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0VGFiQ291bnRJZDogc3RyaW5nID0gdGhpcy5kZWZhdWx0Q291bnRJZDtcblxuICAgIC8qKiBTZWxlY3RlZCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWQ6IFRbXSA9IFtdO1xuXG4gICAgLyoqIExvYWRpbmcgc3RhdGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBBY3R1YWwgZmlsdGVycyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyczogVmhkRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgaW1tZWRpYXRlbHkgYWZ0ZXIgc2VsZWN0IGFueSByb3cgZnJvbSBzZWFyY2ggdGFibGUuIEl0J2xsIGJlIHNraXBwZWQgaWYgbXVsdGkgb3B0aW9uIGlzIHRydWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbjogVmRoVGFibGVTZWxlY3Rpb24gPSAnc2luZ2xlJztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFsbG93IHVzZXJzIHRvIHNlbGVjdCBhbGwgdGFibGUgZW50cmllcyB3aXRoIG9uZSBjaGVja2JveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93U2VsZWN0QWxsID0gdHJ1ZTtcblxuICAgIC8qKiBVbmlxIGZpZWxkIGZyb20gZGF0YSBzb3VyY2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaXF1ZUtleSA9ICdpZCc7XG5cbiAgICAvKiogSXRlbXMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24gYmVsb3cgc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuXG4gICAgLyoqIENvdW50IG9mIGRlZmF1bHQgbW9iaWxlIGhlYWRlciBmcm9tIHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVmYXVsdE1vYmlsZUhlYWRlcnMgPSAyO1xuXG4gICAgLyoqIERpc3BsYXllZCBkYXRhIGZvciBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiByb3cgd2FzIHNlbGVjdGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSkgaW5maW5pdGVTY3JvbGxUYWJsZTogSW5maW5pdGVTY3JvbGxEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBpbmRldGVybWluYXRlIGZsYWcgZm9yIGBzZWxlY3QgYWxsYCBjaGVja2JveCAqL1xuICAgIF9zZWxlY3RlZEFsbDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIFNob3duIGl0ZW1zIGNvdW50IGluIG1vYmlsZSB2aWV3ICovXG4gICAgX3Nob3duRnJvbSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBTaG93biBpdGVtcyBjb3VudCBpbiBtb2JpbGUgdmlldyAqL1xuICAgIF9zaG93bkNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEN1cnJlbnQgcGFnZSBpbiBkZXNrdG9wIHZpZXcgKi9cbiAgICBfY3VycmVudFBhZ2UgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gSGVhZGVycyBhbmQgYm9keSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgX3RhYmxlRmlsdGVyczoge1xuICAgICAgICBtYWluOiBWaGRGaWx0ZXJbXTtcbiAgICAgICAgc2Vjb25kYXJ5OiBWaGRGaWx0ZXJbXTtcbiAgICB9ID0ge1xuICAgICAgICBtYWluOiBbXSxcbiAgICAgICAgc2Vjb25kYXJ5OiBbXVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZE1hcDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAgIC8qKiBTZWxlY3Rpb24gdHlwZSBnZXR0ZXJzICovXG4gICAgZ2V0IGlzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdzaW5nbGUnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc09uY2VTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiA9PT0gJ29uY2UnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc011bHRpU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdtdWx0aSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uRGVmTWFwID0gbmV3IE1hcDxzdHJpbmcsIFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBzZWxlY3RlZEl0ZW1zOiBUW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmhkID0gaW5qZWN0KFZoZENvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUodHJ1ZSkudGhlbigoKSA9PiB0aGlzLl9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCkpO1xuXG4gICAgICAgIHRoaXMuX3ZoZD8uY29sdW1uRGVmLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbkRlZk1hcC5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5fdmhkPy5jb2x1bW5EZWYuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbkRlZk1hcC5zZXQoaXRlbS5jb2x1bW4sIGl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdmaWx0ZXJzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRmlsdGVycygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnZGlzcGxheWVkRGF0YScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaERpc3BsYXllZERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3NlbGVjdGVkJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFNlbGVjdGVkTWFwKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFRyYWNrIGZ1bmN0aW9uIGZvciBtYWluIGRhdGEgKi9cbiAgICBfdHJhY2tCeVRhYmxlUm93Rm46IChfaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkID0gKF9pbmRleDogbnVtYmVyLCBpdGVtOiBUKSA9PiB7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnVuaXF1ZUtleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBUcmFjayBmdW5jdGlvbiBmb3IgZmlsdGVycyAqL1xuICAgIF90cmFja0J5RmlsdGVyRm4oX2luZGV4OiBudW1iZXIsIGl0ZW06IFZoZEZpbHRlcik6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpdGVtICYmIGl0ZW0ua2V5ID8gaXRlbS5rZXkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2hvdyBtb3JlIGVsZW1lbnRzICovXG4gICAgX3Nob3dNb3JlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VTaXplICYmIHRoaXMuX3Nob3duQ291bnQgIT09IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgKz0gdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSBNYXRoLm1pbih0aGlzLl9zaG93bkNvdW50LCB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggcGFnZSBpbiBkZXNrdG9wIHZpZXcgKi9cbiAgICBfdXBkYXRlUGFnZShwYWdlTnVtYmVyID0gMSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYWdlU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Gcm9tID0gKHBhZ2VOdW1iZXIgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gTWF0aC5taW4odGhpcy5fc2hvd25Gcm9tICsgdGhpcy5wYWdlU2l6ZSwgdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0b2dnbGUgc2VsZWN0ZWQgc3RhdGUgZm9yIGFsbCBpdGVtcyAgKi9cbiAgICBfdG9nZ2xlQWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZGlzcGxheWVkRGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hTZWxlY3RlZE1hcCgpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG9nZ2xlIHNlbGVjdGVkIHN0YXRlIGZvciBvbmUgaXRlbXMgICovXG4gICAgX3RvZ2dsZVNlbGVjdFJvdyhpdGVtOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV07XG4gICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKHM6IFQpID0+IHNbdGhpcy51bmlxdWVLZXldICE9PSBpdGVtW3RoaXMudW5pcXVlS2V5XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dID0gIXRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW2l0ZW1dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ICE9PSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsVGFibGU/LnNob3VsZFRyaWdnZXJBY3Rpb24oKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dNb3JlRWxlbWVudHMoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U2hvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2hvd01vcmVFbGVtZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWFudWFsbHkgY2xlYXIgc2VsZWN0ZWQgaXRlbXMgKi9cbiAgICBwcml2YXRlIF9jbGVhclNlbGVjdGVkSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwID0ge307XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggaW5kZXRlcm1pbmF0ZSBhdHRyaWJ1dGUgb24gYHNlbGVjdCBhbGxgIGNoZWNrYm94ICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRyaXN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IE9iamVjdC52YWx1ZXModGhpcy5fc2VsZWN0ZWRNYXApLmZpbHRlcihCb29sZWFuKS5sZW5ndGg7XG4gICAgICAgIGlmIChzZWxlY3RlZCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZCA9PT0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2V0IHVwIGZpbHRlcnMgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICBsZXQgX21vYmlsZVRhYmxlSGVhZGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoKGYpID0+IGYubWFpbikubWFwKChmKSA9PiBmLmtleSk7XG4gICAgICAgICAgICBpZiAoIV9tb2JpbGVUYWJsZUhlYWRlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgX21vYmlsZVRhYmxlSGVhZGVycyA9IHRoaXMuZmlsdGVycy5zbGljZSgwLCB0aGlzLmRlZmF1bHRNb2JpbGVIZWFkZXJzKS5tYXAoKGYpID0+IGYua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlRmlsdGVycyA9IHtcbiAgICAgICAgICAgICAgICBtYWluOiB0aGlzLmZpbHRlcnMuZmlsdGVyKChmaWx0ZXIpID0+IF9tb2JpbGVUYWJsZUhlYWRlcnMuc29tZSgoa2V5KSA9PiBrZXkgPT09IGZpbHRlci5rZXkpKSxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IHRoaXMuZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gIV9tb2JpbGVUYWJsZUhlYWRlcnMuc29tZSgoa2V5KSA9PiBrZXkgPT09IGZpbHRlci5rZXkpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlRmlsdGVycyA9IHtcbiAgICAgICAgICAgICAgICBtYWluOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggZGlzcGxheSBkYXRhICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaERpc3BsYXllZERhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0U2hvd24oKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBzZWxlY3RlZCBtYXAgZm9yIGRpc3BsYXkgZGF0YSAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hTZWxlY3RlZE1hcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXAgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGlzcGxheWVkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMuc2VsZWN0ZWRJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXBbc1t0aGlzLnVuaXF1ZUtleV1dID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICA8aDUgZmQtdGl0bGUgcm9sZT1cImhlYWRpbmdcIiBhcmlhLWxldmVsPVwiNVwiPlxuICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiRGlzcGxheUNvdW50TGFiZWwnIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IGRpc3BsYXllZERhdGEubGVuZ3RoIH0gfX1cbiAgICA8L2g1PlxuPC9kaXY+XG48ZGl2XG4gICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RhYmxlLWhvbGRlciB0YWJsZS1jb250ZW50XCJcbiAgICBmZC1zY3JvbGxiYXJcbiAgICBmZEluZmluaXRlU2Nyb2xsXG4gICAgKG9uU2Nyb2xsQWN0aW9uKT1cIl9zaG93TW9yZUVsZW1lbnRzKClcIlxuICAgIFtzY3JvbGxQZXJjZW50XT1cIjgwXCJcbiAgICByb2xlPVwidGFibGVcIlxuPlxuICAgIDx0YWJsZVxuICAgICAgICBmZC10YWJsZVxuICAgICAgICBbcG9wSW5dPVwibW9iaWxlXCJcbiAgICAgICAgW25vQm9yZGVyWF09XCJtb2JpbGVcIlxuICAgICAgICBbbm9Cb3JkZXJZXT1cImZhbHNlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb2xjb3VudF09XCJfdGFibGVGaWx0ZXJzLm1haW4ubGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yb3djb3VudF09XCJkaXNwbGF5ZWREYXRhLmxlbmd0aFwiXG4gICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInNlbGVjdFRhYlRpdGxlSWQgKyAnICcgKyBzZWxlY3RUYWJDb3VudElkXCJcbiAgICAgICAgW2FsbENlbGxzRm9jdXNhYmxlXT1cInRydWVcIlxuICAgID5cbiAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RUYWJDb3VudElkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJDb3VudEhpZGRlbkExMXlMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyByb3dDb3VudDogZGlzcGxheWVkRGF0YS5sZW5ndGgsIGNvbENvdW50OiBfdGFibGVGaWx0ZXJzLm1haW4ubGVuZ3RoIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCBbaWRdPVwic2VsZWN0VGFiVGl0bGVJZFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYkRpc3BsYXlDb3VudExhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCB9IH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDx0aGVhZCBmZC10YWJsZS1oZWFkZXI+XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoICYmIF90YWJsZUZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICAgICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJtb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNNdWx0aVNlbGVjdGlvbiAmJiBhbGxvd1NlbGVjdEFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy1hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyaXN0YXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJpc3RhdGVTZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX3NlbGVjdGVkQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3RvZ2dsZUFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyIG9mIF90YWJsZUZpbHRlcnMubWFpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIF90cmFja0J5RmlsdGVyRm4oY29saW5kZXgsIGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29saW5kZXggPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBbYXR0ci5hcmlhLWNvbGluZGV4XT1cImNvbGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5IGZkLXRhYmxlLWJvZHk+XG4gICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICByb3cgb2YgZGlzcGxheWVkRGF0YSB8IHNsaWNlOiBfc2hvd25Gcm9tIDogX3Nob3duQ291bnQ7XG4gICAgICAgICAgICAgICAgdHJhY2sgX3RyYWNrQnlUYWJsZVJvd0ZuKGksIHJvdyk7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICBmZC10YWJsZS1yb3dcbiAgICAgICAgICAgICAgICAgICAgW2hvdmVyYWJsZV09XCIhbW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW21haW5dPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJfc2VsZWN0ZWRNYXBbcm93W3VuaXF1ZUtleV1dXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2YWJsZV09XCIhaXNNdWx0aVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIhaXNNdWx0aVNlbGVjdGlvbiAmJiBfdG9nZ2xlU2VsZWN0Um93KHJvdylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgW2ZpdENvbnRlbnRdPVwibW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzTXVsdGlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy1yb3ctJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfc2VsZWN0ZWRNYXBbcm93W3VuaXF1ZUtleV1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0Um93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5tYWluOyB0cmFjayBmaWx0ZXI7IGxldCByb3dJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgW2F0dHIuYXJpYS1yb3dpbmRleF09XCJyb3dJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2NvbHVtbkRlZk1hcC5nZXQoZmlsdGVyLmtleSk7IGFzIGNvbHVtbkRlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkRlZi50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZmlsdGVyLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcm93W2ZpbHRlci5rZXldIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd1tmaWx0ZXIua2V5XSB8fCAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIEBpZiAobW9iaWxlICYmIF90YWJsZUZpbHRlcnMuc2Vjb25kYXJ5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93IFtzZWNvbmRhcnldPVwidHJ1ZVwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiX3NlbGVjdGVkTWFwW3Jvd1t1bmlxdWVLZXldXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGw+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwJVwiIGZkLXRhYmxlLWNlbGwgW2ZpdENvbnRlbnRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpbHRlciBvZiBfdGFibGVGaWx0ZXJzLnNlY29uZGFyeTsgdHJhY2sgZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYmxlLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgZmlsdGVyLmxhYmVsIH19OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dbZmlsdGVyLmtleV0gfHwgJycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChkaXNwbGF5ZWREYXRhLmxlbmd0aCAmJiBtb2JpbGUgJiYgX3Nob3duQ291bnQgJiYgX3Nob3duQ291bnQgIT09IGRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPHRyIGZkLXRhYmxlLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJoZWFkZXItd2l0aC1zdWJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3RUYWJNb3JlQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2hvd01vcmVFbGVtZW50cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKCFkaXNwbGF5ZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCAqZmRrUmVwZWF0PVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1za2VsZXRvbiBbc3R5bGUubWFyZ2luXT1cIidhdXRvIDAnXCIgdHlwZT1cInRleHRcIiB0ZXh0TGluZXM9XCIxXCIgd2lkdGg9XCI2MCVcIj48L2ZkLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHRyIGZkLXRhYmxlLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNvbHNwYW49XCIxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==","import { Directive, inject, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ValueHelpFilterDefDirective {\n constructor() {\n /** Template reference */\n this.templateRef = inject(TemplateRef);\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpFilterDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ValueHelpFilterDefDirective, isStandalone: true, selector: \"[fdpValueHelpFilterDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpFilterDefDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpValueHelpFilterDef]',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1maWx0ZXItZGVmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWZpbHRlci1kZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPL0QsTUFBTSxPQUFPLDJCQUEyQjtJQUp4QztRQUtJLHlCQUF5QjtRQUNoQixnQkFBVyxHQUFHLE1BQU0sQ0FBeUMsV0FBVyxDQUFDLENBQUM7S0FNdEY7SUFKRyxjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQWdDLEVBQUUsR0FBWTtRQUN4RSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQVBRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsdWVIZWxwRmlsdGVyRGVmLCBWYWx1ZUhlbHBGaWx0ZXJEZWZDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL3ZoZC1maWx0ZXIubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBWYWx1ZUhlbHBGaWx0ZXJEZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlSGVscEZpbHRlckRlZkRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbHVlSGVscEZpbHRlckRlZiB7XG4gICAgLyoqIFRlbXBsYXRlIHJlZmVyZW5jZSAqL1xuICAgIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0PFRlbXBsYXRlUmVmPFZhbHVlSGVscEZpbHRlckRlZkNvbnRleHQ+PihUZW1wbGF0ZVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGRpcjogVmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlLCBjdHg6IHVua25vd24pOiBjdHggaXMgVmFsdWVIZWxwRmlsdGVyRGVmQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\nimport { ValueHelpFilterDefDirective } from '../../directives/value-help-filter-def.directive';\nimport * as i0 from \"@angular/core\";\nexport class VhdFilterComponent {\n constructor() {\n /** Allow to control which of filters should show as main in mobile view.\n * Apply for search table only */\n this.main = false;\n /** Initial filter's value for search section in `select from list tab` only */\n this.value = '';\n /** Allow to show filter in advanced search template */\n this.advanced = true;\n /** Allow to use filter for including in `define conditions tab` */\n this.include = true;\n /** Allow to use filter for excluding in `define conditions tab` */\n this.exclude = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.4\", type: VhdFilterComponent, isStandalone: true, selector: \"fdp-value-help-dialog-filter\", inputs: { key: \"key\", main: \"main\", label: \"label\", value: \"value\", advanced: \"advanced\", include: \"include\", exclude: \"exclude\" }, queries: [{ propertyName: \"filterDef\", first: true, predicate: ValueHelpFilterDefDirective, descendants: true }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: VhdFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fdp-value-help-dialog-filter',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n }]\n }], propDecorators: { key: [{\n type: Input\n }], main: [{\n type: Input\n }], label: [{\n type: Input\n }], value: [{\n type: Input\n }], advanced: [{\n type: Input\n }], include: [{\n type: Input\n }], exclude: [{\n type: Input\n }], filterDef: [{\n type: ContentChild,\n args: [ValueHelpFilterDefDirective]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIvdmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0RBQWtELENBQUM7O0FBUy9GLE1BQU0sT0FBTyxrQkFBa0I7SUFOL0I7UUFXSTt5Q0FDaUM7UUFFakMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQU1iLCtFQUErRTtRQUUvRSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsdURBQXVEO1FBRXZELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIsbUVBQW1FO1FBRW5FLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFZixtRUFBbUU7UUFFbkUsWUFBTyxHQUFHLElBQUksQ0FBQztLQUtsQjs4R0FqQ1ksa0JBQWtCO2tHQUFsQixrQkFBa0IsbVFBK0JiLDJCQUEyQixnREFuQy9CLEVBQUU7OzJGQUlILGtCQUFrQjtrQkFOOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQUlHLEdBQUc7c0JBREYsS0FBSztnQkFNTixJQUFJO3NCQURILEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixTQUFTO3NCQURSLFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFZhbHVlSGVscEZpbHRlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdmFsdWUtaGVscC1maWx0ZXItZGVmLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaGRGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdmhkLWZpbHRlci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlcicsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVmhkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgVmhkRmlsdGVyIHtcbiAgICAvKiogVW5pcSBrZXkgZm9yIHNlYXJjaCBhbmQgZmlsdGVyaW5nICovXG4gICAgQElucHV0KClcbiAgICBrZXk6IHN0cmluZztcblxuICAgIC8qKiBBbGxvdyB0byBjb250cm9sIHdoaWNoIG9mIGZpbHRlcnMgc2hvdWxkIHNob3cgYXMgbWFpbiBpbiBtb2JpbGUgdmlldy5cbiAgICAgKiBBcHBseSBmb3Igc2VhcmNoIHRhYmxlIG9ubHkgKi9cbiAgICBASW5wdXQoKVxuICAgIG1haW4gPSBmYWxzZTtcblxuICAgIC8qKiBMYWJlbCBmb3IgaGVhZGVyIGluIHNlYXJjaCB0YWJsZSBhbmQgc2VhcmNoIGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEluaXRpYWwgZmlsdGVyJ3MgdmFsdWUgZm9yIHNlYXJjaCBzZWN0aW9uIGluIGBzZWxlY3QgZnJvbSBsaXN0IHRhYmAgb25seSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWUgPSAnJztcblxuICAgIC8qKiBBbGxvdyB0byBzaG93IGZpbHRlciBpbiBhZHZhbmNlZCBzZWFyY2ggdGVtcGxhdGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFkdmFuY2VkID0gdHJ1ZTtcblxuICAgIC8qKiBBbGxvdyB0byB1c2UgZmlsdGVyIGZvciBpbmNsdWRpbmcgaW4gYGRlZmluZSBjb25kaXRpb25zIHRhYmAgKi9cbiAgICBASW5wdXQoKVxuICAgIGluY2x1ZGUgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRvIHVzZSBmaWx0ZXIgZm9yIGV4Y2x1ZGluZyBpbiBgZGVmaW5lIGNvbmRpdGlvbnMgdGFiYCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhjbHVkZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlKVxuICAgIGZpbHRlckRlZjogTnVsbGFibGU8VmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlPjtcbn1cbiJdfQ==","import { Directive, Input, TemplateRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ValueHelpColumnDefDirective {\n constructor() {\n /** Template reference */\n this.templateRef = inject(TemplateRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpColumnDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ValueHelpColumnDefDirective, isStandalone: true, selector: \"[fdpValueHelpColumnDef]\", inputs: { as: [\"fdpValueHelpColumnDefAs\", \"as\"], column: [\"fdpValueHelpColumnDefColumn\", \"column\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueHelpColumnDefDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpValueHelpColumnDef]',\n standalone: true\n }]\n }], propDecorators: { as: [{\n type: Input,\n args: ['fdpValueHelpColumnDefAs']\n }], column: [{\n type: Input,\n args: ['fdpValueHelpColumnDefColumn']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1jb2x1bW4tZGVmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWNvbHVtbi1kZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWXRFLE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFZSSx5QkFBeUI7UUFDaEIsZ0JBQVcsR0FBRyxNQUFNLENBQTRDLFdBQVcsQ0FBQyxDQUFDO0tBQ3pGOzhHQVZZLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFJRyxFQUFFO3NCQURELEtBQUs7dUJBQUMseUJBQXlCO2dCQUtoQyxNQUFNO3NCQURMLEtBQUs7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlSGVscENvbHVtbkRlZkNvbnRleHQ8VD4ge1xuICAgICRpbXBsaWNpdDogVDtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogYW55O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBWYWx1ZUhlbHBDb2x1bW5EZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZTxUID0gYW55PiB7XG4gICAgLyoqIFR5cGUgc3VwcG9ydC4gKi9cbiAgICBASW5wdXQoJ2ZkcFZhbHVlSGVscENvbHVtbkRlZkFzJylcbiAgICBhczogVDtcblxuICAgIC8qKiBDb2x1bW4ga2V5IHRvIHJlbmRlciBjdXN0b20gdGVtcGxhdGUuICovXG4gICAgQElucHV0KCdmZHBWYWx1ZUhlbHBDb2x1bW5EZWZDb2x1bW4nKVxuICAgIGNvbHVtbjogc3RyaW5nO1xuICAgIC8qKiBUZW1wbGF0ZSByZWZlcmVuY2UgKi9cbiAgICByZWFkb25seSB0ZW1wbGF0ZVJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxWYWx1ZUhlbHBDb2x1bW5EZWZDb250ZXh0PFQ+Pj4oVGVtcGxhdGVSZWYpO1xufVxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, DestroyRef, ElementRef, EventEmitter, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport { Subject, Subscription, filter, isObservable, of, take, tap } from 'rxjs';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { DisplayFnPipe, RtlService, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarLeftDirective, BarRightDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { DialogBodyComponent, DialogComponent, DialogConfig, DialogFooterComponent, DialogHeaderComponent, DialogService } from '@fundamental-ngx/core/dialog';\nimport { FormControlComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ListIconDirective, ListLinkDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TabItemDirective, TabLinkDirective, TabNavComponent, TabTagDirective } from '@fundamental-ngx/core/tabs';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { TokenComponent, TokenizerComponent, TokenizerInputDirective } from '@fundamental-ngx/core/token';\nimport { ToolbarComponent, ToolbarItemDirective, ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { isDataSource } from '@fundamental-ngx/platform/shared';\nimport { DefineTabComponent } from '../components/define-tab/define-tab.component';\nimport { SelectTabComponent } from '../components/select-tab/select-tab.component';\nimport { VhdFilterComponent } from '../components/value-help-dialog-filter/value-help-dialog-filter.component';\nimport { defaultConditionDisplayFn } from '../constans/condition-display.function';\nimport { ValueHelpColumnDefDirective } from '../directives/value-help-column-def.directive';\nimport { ArrayValueHelpDialogDataSource, ObservableValueHelpDialogDataSource, VhdDefineExcludeStrategy, VhdDefineIncludeStrategy, VhdTab } from '../models';\nimport { VhdComponent } from '../models/vhd-component.model';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"@fundamental-ngx/cdk/utils\";\nimport * as i3 from \"@angular/forms\";\nlet vhdHeaderUniqueId = 0;\nlet vhiUniqueId = 0;\nexport class PlatformValueHelpDialogComponent extends VhdComponent {\n /** Data source */\n set dataSource(value) {\n if (value) {\n this._dataSource = this.toDataStream(value);\n }\n }\n get dataSource() {\n return this._dataSource;\n }\n /** @hidden */\n get loadingState() {\n return this.loading ?? this._internalLoadingState;\n }\n /** @hidden */\n constructor(elementRef, _changeDetectorRef, _dialogService, _rtlService) {\n super();\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dialogService = _dialogService;\n this._rtlService = _rtlService;\n /** Id of the popover */\n this.id = 'fdp-vhd-' + vhiUniqueId++;\n /** Initial state of Value help dialog */\n this.value = {\n selected: [],\n conditions: []\n };\n /** Select from list tab activation */\n this.initialTab = VhdTab.selectFromList;\n /** Visible tabs */\n this.tabs = 'both';\n /** Initial expand state for advanced search panel */\n this.isOpenAdvanced = false;\n /** Dialog's custom config */\n this.dialogConfig = {};\n /** Id attribute for dialog title */\n this.headerId = `fdp-vhd-header-id-${vhdHeaderUniqueId++}`;\n /** Whether the value help dialog should be view in mobile mode */\n this.mobile = false;\n /** Tokenizer function for condition's token render */\n this.conditionDisplayFn = defaultConditionDisplayFn;\n /** Selection mode for search table */\n this.searchSelection = 'multi';\n /** Items per page for pagination below search table */\n this.searchTablePageSize = 20;\n /** Count of default mobile header from search table */\n this.searchTableMobileHeaders = 2;\n /** Max shown initial filters on open. Desktop only */\n this.maxShownInitialFilters = 4;\n /** Whether to allow users to select all table entries with one checkbox. */\n this.allowSelectAll = true;\n /** Custom strategies labels\n * Allowed keys: contains, equalTo, between, startsWith, endsWith, lessThan, lessThanEqual, greaterThan, greaterThanEqual, empty\n */\n this.defineStrategyLabels = {\n contains: 'contains',\n equalTo: 'equal to',\n between: 'between',\n startsWith: 'starts with',\n endsWith: 'ends with',\n lessThan: 'less than',\n lessThanEqual: 'less than or equal to',\n greaterThan: 'greater than',\n greaterThanEqual: 'greater than or equal to',\n empty: 'empty',\n not_equalTo: 'not equal to',\n not_empty: 'not empty'\n };\n /** Dialog outputs */\n /** Event emitted when filters/tokens were changed. */\n this.valueChange = new EventEmitter();\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataRequested = new EventEmitter();\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataReceived = new EventEmitter();\n /**\n * Heading level of the dialog title.\n */\n this.headingLevel = input(5, ...(ngDevMode ? [{ debugName: \"headingLevel\" }] : []));\n /** @hidden */\n this._headingLevel = computed(() => this.headingLevel() ? Number.parseInt(`${this.headingLevel()}`.replace(/\\D/g, ''), 10) : undefined, ...(ngDevMode ? [{ debugName: \"_headingLevel\" }] : []));\n /** @hidden */\n this._tabTypes = VhdTab;\n /** @hidden */\n this._hasAdvanced = true;\n /** @hidden */\n this._displayedFilters = [];\n /** @hidden */\n this._displayedData = [];\n /** @hidden */\n this._mainSearch = '';\n /** handles rtl service\n * @hidden */\n this._dir$ = computed(() => (this._rtlService?.rtlSignal() ? 'rtl' : 'ltr'), ...(ngDevMode ? [{ debugName: \"_dir$\" }] : []));\n /** @hidden */\n this.selectedTab = null;\n /** @hidden */\n this.shownFilterCount = Infinity;\n /** @hidden\n * To differentiate between first loading when skeletons be shown and subsequent loadings when busy indicator be shown\n */\n this._firstLoadingDone = false;\n /** @hidden */\n this._destroyed = inject(DestroyRef);\n /** @hidden Previous state */\n this._prevState = {\n selected: [],\n conditions: []\n };\n /** @hidden Current data for local manupulation */\n this._currentValue = {\n selected: [],\n conditions: []\n };\n /** @hidden */\n this._internalLoadingState = false;\n /** @hidden */\n this._onDestroy$ = new Subject();\n /** @hidden */\n this._trackBySelectedFn = (_index, item) => item && item[this.uniqueKey];\n /** Default display function for define conditions */\n if (!this.conditionDisplayFn || typeof this.conditionDisplayFn !== 'function') {\n this.conditionDisplayFn = defaultConditionDisplayFn;\n }\n }\n /** @hidden */\n get isMobileAdvancedSearchActive() {\n if (this.mobile) {\n return this.isOpenAdvanced;\n }\n return false;\n }\n /** @hidden */\n get hasSelectedTab() {\n return this.selectedTab != null && this.selectedTab in VhdTab;\n }\n /** @hidden */\n get showSelectionTab() {\n return this.tabs !== 'define';\n }\n /** @hidden */\n get showDefineTab() {\n return this.tabs !== 'select';\n }\n /** @hidden */\n get isSelectionTab() {\n return this.selectedTab === VhdTab.selectFromList || this.selectedTab === VhdTab.advancedSearch;\n }\n /** @hidden */\n get selectedItems() {\n return this._currentValue.selected || [];\n }\n /** @hidden */\n get conditionItems() {\n return this._currentValue.conditions || [];\n }\n /** @hidden */\n get validConditions() {\n return this._getValidCondition(this.conditionItems);\n }\n /** @hidden */\n get hasSelectedAndConditions() {\n return Boolean(this.selectedItems.length + this.validConditions.length);\n }\n /** @hidden */\n get isShowAllFilters() {\n return this.filters.length > this.maxShownInitialFilters && this.shownFilterCount > this.maxShownInitialFilters;\n }\n /** @hidden */\n get isOpen() {\n return !!this.activeDialog;\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (this.isOpen) {\n if ('dataSource' in changes) {\n this._initializeDS();\n }\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._resetState();\n this._onDestroy$.next();\n }\n /** Open dialog */\n open() {\n if (!this.isValidOptions()) {\n throw new Error('Please check required fields');\n }\n if (this.isOpen) {\n return;\n }\n this._savePreviousState();\n this._updateFilters();\n this._initializeDS();\n this._initializeTab();\n if (!this.dialogConfig.ariaLabelledBy) {\n this.dialogConfig.ariaLabelledBy = this.headerId;\n }\n this.activeDialog = this._dialogService.open(this.dialogContainer, {\n backdropClickCloseable: false,\n hasBackdrop: true,\n verticalPadding: false,\n escKeyCloseable: false,\n dialogPanelClass: `fdp-value-help-dialog ${this.mobile ? 'fdp-value-help-dialog-mobile' : ''}`,\n ...this.dialogConfig,\n mobile: this.mobile,\n maxWidth: this.mobile ? undefined : '92%',\n width: this.mobile ? undefined : '1080px',\n height: this.mobile ? undefined : '98%'\n });\n this._listenDialogEvents();\n }\n /**\n * Toggle advanced search panel\n */\n toggleAdvancedSearch(state) {\n if (typeof state !== 'undefined') {\n this.isOpenAdvanced = state;\n }\n else {\n this.isOpenAdvanced = !this.isOpenAdvanced;\n }\n if (this.mobile) {\n this.selectedTab = this.isOpenAdvanced ? VhdTab.advancedSearch : VhdTab.selectFromList;\n }\n }\n /**\n * Clear all selected items\n */\n clearSelectedAndConditionItems() {\n this._currentValue.selected = [];\n this._currentValue.conditions = [];\n this._changeDetectorRef.markForCheck();\n }\n /** Search by only the search term. */\n search() {\n this.filter(true);\n }\n /**\n * Search by all filled filters, including the search term.\n */\n filter(onlySearch = false) {\n const nonEmptyFilters = new Map();\n if (!onlySearch) {\n this._displayedFilters\n .filter(({ value }) => !!value && typeof value === 'string' ? value.trim().length : value !== undefined)\n .forEach((e) => nonEmptyFilters.set(e.key, e.value));\n }\n if (this._mainSearch.length) {\n nonEmptyFilters.set('*', this._mainSearch);\n }\n this.dataSource?.match(nonEmptyFilters);\n }\n /**\n * Apply search from advanced filters view, using when mobile view is active\n */\n searchAdvanced() {\n this.filter();\n this.selectedTab = VhdTab.selectFromList;\n this.isOpenAdvanced = false;\n }\n /** Remove item from selected array */\n removeSelected(index) {\n this._currentValue.selected = this.selectedItems.filter((_, i) => i !== index);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Remove condition item\n */\n removeCondition(index) {\n this._currentValue.conditions = this.conditionItems.filter((_, i) => i !== index);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Switch tab by type\n */\n switchTab(type = null) {\n this.selectedTab = type;\n }\n /**\n * Close dialog with value;\n */\n success() {\n if (!this.activeDialog) {\n return;\n }\n const value = {\n selected: this.selectedItems,\n conditions: this.validConditions\n };\n this._internalLoadingState = true;\n this._changeDetectorRef.detectChanges();\n this._getValidatorFunction(value)\n .pipe(tap(() => {\n this._internalLoadingState = false;\n this._changeDetectorRef.detectChanges();\n }), filter((r) => r), take(1), takeUntilDestroyed(this._destroyed))\n .subscribe(() => {\n if (typeof this.formatToken === 'function') {\n this.formatToken(value);\n }\n this.activeDialog?.close(value);\n });\n }\n /**\n * Hide advanced search on mobile view and if it's opened\n * Close dialog with null value;\n */\n dismiss() {\n if (this.mobile && this.isOpenAdvanced) {\n this.isOpenAdvanced = false;\n this.switchTab(VhdTab.selectFromList);\n }\n else {\n this._currentValue = this._prevState;\n if (this.activeDialog) {\n this.activeDialog.close();\n }\n }\n }\n /** @hidden */\n _trackByFilterFn(_index, item) {\n return item && item.key;\n }\n /** @hidden */\n _trackByConditionFn(_index, item) {\n return item ? item.value + item.valueTo + item.strategy + item.key : undefined;\n }\n /** @hidden */\n onSelect($event) {\n this._currentValue.selected = $event;\n this._changeDetectorRef.markForCheck();\n if (this.searchSelection === 'once') {\n this.success();\n }\n }\n /** @hidden */\n onConditionChange($event) {\n this._currentValue.conditions = $event;\n this._changeDetectorRef.markForCheck();\n }\n /** @hidden */\n toggleShownFilters() {\n this.shownFilterCount =\n this.maxShownInitialFilters === this.shownFilterCount ? Infinity : this.maxShownInitialFilters;\n }\n /** @hidden */\n _initShownFilters() {\n this.shownFilterCount = this.maxShownInitialFilters || Infinity;\n }\n /** @hidden */\n _getValidCondition(items = []) {\n return items.filter((item) => {\n if (item.strategy === VhdDefineIncludeStrategy.empty ||\n item.strategy === VhdDefineExcludeStrategy.not_empty) {\n return true;\n }\n if (item.strategy === VhdDefineIncludeStrategy.between) {\n return Boolean(item.value.length && item.valueTo.length);\n }\n if (!item.valid) {\n return false;\n }\n return Boolean(item.value.length);\n });\n }\n /** @hidden */\n _initializeDS(ds = this.dataSource) {\n this._resetSourceStream();\n if (this.showSelectionTab) {\n this._dsSubscription = new Subscription();\n this._dsSubscription.add(ds?.onDataRequested().subscribe(() => {\n this._internalLoadingState = true;\n this.onDataRequested.emit();\n }));\n this._dsSubscription.add(ds?.onDataReceived().subscribe(() => {\n this._internalLoadingState = false;\n this._firstLoadingDone = true;\n this.onDataReceived.emit();\n }));\n const dsSub = this.openDataStream()\n .pipe(takeUntilDestroyed(this._destroyed))\n .subscribe((data) => {\n this._displayedData = data.slice();\n this._changeDetectorRef.markForCheck();\n });\n this._dsSubscription.add(dsSub);\n }\n }\n /** @hidden Save previous state */\n _savePreviousState() {\n const value = structuredClone(this.value);\n this._currentValue = value;\n this._prevState = value;\n }\n /** @hidden */\n _initializeTab() {\n if (this.mobile) {\n this.isOpenAdvanced = false;\n }\n if (this.showSelectionTab && this.showDefineTab) {\n this.switchTab(this.mobile ? undefined : this.initialTab);\n }\n else if (this.showSelectionTab) {\n this.switchTab(VhdTab.selectFromList);\n }\n else if (this.showDefineTab) {\n this.switchTab(VhdTab.defineConditions);\n }\n this._initShownFilters();\n }\n /** @hidden */\n _listenDialogEvents() {\n if (!this.activeDialog) {\n return;\n }\n this.activeDialog.afterClosed.pipe(takeUntilDestroyed(this._destroyed)).subscribe((value) => {\n if (value) {\n this.value = value;\n this.valueChange.emit(value);\n }\n this._resetState();\n });\n this.filters.changes.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n this._updateFilters();\n });\n }\n /** @hidden */\n _resetState() {\n this._resetSourceStream();\n this._mainSearch = '';\n this.activeDialog = undefined;\n }\n /** @hidden */\n _updateFilters() {\n this._displayedFilters = this.filters.map((e) => ({\n ...e,\n label: e.label || e.key\n }));\n this._hasAdvanced = this._displayedFilters.some((e) => !!e.advanced);\n }\n /** @hidden */\n openDataStream() {\n if (this._dataSource) {\n this._dataSource.match();\n return this._dataSource.open();\n }\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n /** @hidden */\n toDataStream(ds) {\n if (isDataSource(ds)) {\n return ds;\n }\n else if (Array.isArray(ds)) {\n return new ArrayValueHelpDialogDataSource(ds);\n }\n else if (isObservable(ds)) {\n return new ObservableValueHelpDialogDataSource(ds);\n }\n return undefined;\n }\n /** @hidden */\n _resetSourceStream() {\n if (isDataSource(this.dataSource)) {\n this.dataSource.close();\n }\n if (this._dsSubscription) {\n this._dsSubscription.unsubscribe();\n this._dsSubscription = null;\n }\n }\n /** @hidden */\n isValidOptions() {\n if (this.showSelectionTab) {\n return (!!this.dataSource &&\n typeof this.uniqueKey === 'string' &&\n (typeof this.tokenViewField === 'string' || typeof this.tokenizerFn === 'function'));\n }\n return true;\n }\n _getValidatorFunction(value) {\n const validator = typeof this.tokenValidator === 'function' ? this.tokenValidator(value) : of(true);\n return isObservable(validator) ? validator : of(validator);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DialogService }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: PlatformValueHelpDialogComponent, isStandalone: true, selector: \"fdp-value-help-dialog\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, dialogTitle: { classPropertyName: \"dialogTitle\", publicName: \"dialogTitle\", isSignal: false, isRequired: false, transformFunction: null }, initialTab: { classPropertyName: \"initialTab\", publicName: \"initialTab\", isSignal: false, isRequired: false, transformFunction: null }, tabs: { classPropertyName: \"tabs\", publicName: \"tabs\", isSignal: false, isRequired: false, transformFunction: null }, isOpenAdvanced: { classPropertyName: \"isOpenAdvanced\", publicName: \"isOpenAdvanced\", isSignal: false, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, dialogConfig: { classPropertyName: \"dialogConfig\", publicName: \"dialogConfig\", isSignal: false, isRequired: false, transformFunction: null }, uniqueKey: { classPropertyName: \"uniqueKey\", publicName: \"uniqueKey\", isSignal: false, isRequired: false, transformFunction: null }, headerId: { classPropertyName: \"headerId\", publicName: \"headerId\", isSignal: false, isRequired: false, transformFunction: null }, tokenViewField: { classPropertyName: \"tokenViewField\", publicName: \"tokenViewField\", isSignal: false, isRequired: false, transformFunction: null }, tokenizerFn: { classPropertyName: \"tokenizerFn\", publicName: \"tokenizerFn\", isSignal: false, isRequired: false, transformFunction: null }, mobile: { classPropertyName: \"mobile\", publicName: \"mobile\", isSignal: false, isRequired: false, transformFunction: null }, formatToken: { classPropertyName: \"formatToken\", publicName: \"formatToken\", isSignal: false, isRequired: false, transformFunction: null }, conditionDisplayFn: { classPropertyName: \"conditionDisplayFn\", publicName: \"conditionDisplayFn\", isSignal: false, isRequired: false, transformFunction: null }, tokenValidator: { classPropertyName: \"tokenValidator\", publicName: \"tokenValidator\", isSignal: false, isRequired: false, transformFunction: null }, searchSelection: { classPropertyName: \"searchSelection\", publicName: \"searchSelection\", isSignal: false, isRequired: false, transformFunction: null }, searchTablePageSize: { classPropertyName: \"searchTablePageSize\", publicName: \"searchTablePageSize\", isSignal: false, isRequired: false, transformFunction: null }, searchTableMobileHeaders: { classPropertyName: \"searchTableMobileHeaders\", publicName: \"searchTableMobileHeaders\", isSignal: false, isRequired: false, transformFunction: null }, maxShownInitialFilters: { classPropertyName: \"maxShownInitialFilters\", publicName: \"maxShownInitialFilters\", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: \"loading\", publicName: \"loading\", isSignal: false, isRequired: false, transformFunction: null }, allowSelectAll: { classPropertyName: \"allowSelectAll\", publicName: \"allowSelectAll\", isSignal: false, isRequired: false, transformFunction: null }, defineStrategyLabels: { classPropertyName: \"defineStrategyLabels\", publicName: \"defineStrategyLabels\", isSignal: false, isRequired: false, transformFunction: null }, headingLevel: { classPropertyName: \"headingLevel\", publicName: \"headingLevel\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", onDataRequested: \"onDataRequested\", onDataReceived: \"onDataReceived\" }, providers: [\n {\n provide: VhdComponent,\n useExisting: PlatformValueHelpDialogComponent\n }\n ], queries: [{ propertyName: \"filters\", predicate: VhdFilterComponent }, { propertyName: \"columnDef\", predicate: ValueHelpColumnDefDirective }], viewQueries: [{ propertyName: \"dialogContainer\", first: true, predicate: [\"container\"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\\\"dialogConfig\\\" #container>\\n <fd-dialog [dialogConfig]=\\\"dialogConfig\\\" [dialogRef]=\\\"dialog\\\">\\n <fd-dialog-header [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <ng-template [ngTemplateOutlet]=\\\"mobile ? mobileDialogTitle : desktopDialogTitle\\\"></ng-template>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [attr.dir]=\\\"_dir$()\\\">\\n @if (!mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n <div fd-scrollbar class=\\\"fdp-value-help-dialog__content-holder\\\">\\n @if (mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.selectFromList) {\\n <ng-template [ngTemplateOutlet]=\\\"selectionContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.defineConditions) {\\n <ng-template [ngTemplateOutlet]=\\\"defineConditionsContent\\\"></ng-template>\\n }\\n </div>\\n </fd-dialog-body>\\n <fd-dialog-footer [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"footer\\\">\\n @if (!isMobileAdvancedSearchActive) {\\n <div\\n class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__selection-row\\\"\\n [attr.aria-label]=\\\"'platformVHD.selectedAndConditionLabel' | fdTranslate\\\"\\n >\\n <span\\n role=\\\"heading\\\"\\n [attr.aria-level]=\\\"_headingLevel()\\\"\\n fd-title\\n class=\\\"selected-and-condition-title\\\"\\n [id]=\\\"id + '-selected-item'\\\"\\n >\\n @if (hasSelectedAndConditions) {\\n {{ 'platformVHD.selectedAndConditionLabel' | fdTranslate }}\\n ({{ selectedItems.length + validConditions.length }})\\n } @else {\\n {{ 'platformVHD.selectedEmptyLabel' | fdTranslate }}\\n }\\n </span>\\n <div class=\\\"fdp-value-help-dialog__tokens-wrapper\\\">\\n <div class=\\\"fdp-value-help-dialog__tokens\\\">\\n <!-- Selected items -->\\n <fd-tokenizer>\\n @for (\\n item of selectedItems;\\n track _trackBySelectedFn(selectedIndex, item);\\n let selectedIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeSelected(selectedIndex)\\\"\\n >{{\\n !!tokenizerFn\\n ? (item | displayFnPipe: tokenizerFn)\\n : item[tokenViewField]\\n }}\\n </fd-token>\\n }\\n @for (\\n item of validConditions;\\n track _trackByConditionFn(conditionIndex, item);\\n let conditionIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeCondition(conditionIndex)\\\"\\n >\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionValue\\\"\\n [ngTemplateOutletContext]=\\\"{ item: item }\\\"\\n ></ng-template>\\n </fd-token>\\n }\\n <input fd-form-control fd-tokenizer-input [disabled]=\\\"!hasSelectedAndConditions\\\" />\\n </fd-tokenizer>\\n </div>\\n <button\\n (click)=\\\"clearSelectedAndConditionItems()\\\"\\n class=\\\"fdp-value-help-dialog__tokens-clear\\\"\\n fd-button\\n [disabled]=\\\"!hasSelectedAndConditions\\\"\\n fdType=\\\"transparent\\\"\\n [title]=\\\"'platformVHD.footerClearSelectedTitle' | fdTranslate\\\"\\n glyph=\\\"decline\\\"\\n [ariaLabel]=\\\"'platformVHD.footerClearSelectedAriaLabel' | fdTranslate\\\"\\n ></button>\\n </div>\\n </div>\\n }\\n <div class=\\\"fdp-value-help-dialog__actions-row\\\">\\n @if (mobile && isOpenAdvanced) {\\n <button\\n fd-button\\n data-go-advanced\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"searchAdvanced()\\\"\\n ></button>\\n }\\n @if (selectedTab !== _tabTypes.advancedSearch) {\\n <button\\n fd-button\\n data-succes\\n [disabled]=\\\"loadingState\\\"\\n [label]=\\\"'platformVHD.successButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"success()\\\"\\n ></button>\\n }\\n <button\\n fd-button\\n data-dismiss-dialog\\n [label]=\\\"'platformVHD.cancelButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"dismiss()\\\"\\n ></button>\\n </div>\\n </ng-template>\\n </fd-dialog-footer>\\n </fd-dialog>\\n</ng-template>\\n<ng-template #advancedSearchContent>\\n @if (isSelectionTab) {\\n <form class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__advanced-search\\\" [id]=\\\"'advanced-search-' + id\\\">\\n @if (!mobile || (mobile && !isOpenAdvanced)) {\\n <fd-layout-grid>\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"mobile ? 12 : 6\\\" [colXl]=\\\"mobile ? 12 : 6\\\">\\n <fdp-search-field\\n [placeholder]=\\\"'platformVHD.searchPlaceholder' | fdTranslate\\\"\\n (searchSubmit)=\\\"search()\\\"\\n (inputChange)=\\\"_mainSearch = $event.text\\\"\\n ></fdp-search-field>\\n </div>\\n @if (_hasAdvanced) {\\n <div\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"mobile ? 12 : 6\\\"\\n [colXl]=\\\"mobile ? 12 : 6\\\"\\n class=\\\"fdp-value-help-dialog__advanced-actions\\\"\\n >\\n <fd-toolbar [clearBorder]=\\\"true\\\">\\n <fd-toolbar-spacer></fd-toolbar-spacer>\\n @if (_hasAdvanced) {\\n <button\\n fd-toolbar-item\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"\\n (mobile\\n ? 'platformVHD.searchAdvancedSearchLabel'\\n : isOpenAdvanced\\n ? 'platformVHD.searchHideAdvancedSearchLabel'\\n : 'platformVHD.searchShowAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n (click)=\\\"toggleAdvancedSearch()\\\"\\n ></button>\\n }\\n <button\\n fd-toolbar-item\\n type=\\\"submit\\\"\\n fd-button\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n (click)=\\\"filter()\\\"\\n ></button>\\n </fd-toolbar>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n }\\n @if (isOpenAdvanced && _hasAdvanced) {\\n <div [id]=\\\"'advanced-search-content-' + id\\\" class=\\\"fdp-value-help-dialog__advanced-filters\\\">\\n <fd-busy-indicator [loading]=\\\"loadingState && _firstLoadingDone\\\" [block]=\\\"true\\\">\\n @if (_firstLoadingDone) {\\n <fd-layout-grid\\n [class.fdp-value-help-dialog__with-toggle-all]=\\\"filters.length > maxShownInitialFilters\\\"\\n >\\n <div fdLayoutGridRow>\\n @for (\\n filter of _displayedFilters | slice: 0 : shownFilterCount + 1;\\n track _trackByFilterFn($index, filter)\\n ) {\\n @if (filter.advanced) {\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"6\\\" [colXl]=\\\"3\\\">\\n <label\\n class=\\\"fd-form-group__header\\\"\\n fd-form-label\\n [for]=\\\"'input' + filter.key\\\"\\n >{{ filter.label }}:</label\\n >\\n @if (filter.filterDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"filter.filterDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: filter }\\\"\\n ></ng-template>\\n } @else {\\n <input\\n [(ngModel)]=\\\"filter.value\\\"\\n fd-form-control\\n type=\\\"text\\\"\\n [name]=\\\"'search-by-' + filter.label\\\"\\n [id]=\\\"'input' + filter.key\\\"\\n />\\n }\\n </div>\\n }\\n }\\n @if (filters.length > maxShownInitialFilters) {\\n <div\\n colGrow\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"6\\\"\\n [colXl]=\\\"3\\\"\\n class=\\\"fdp-value-help-dialog__toggle-filters\\\"\\n >\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n (click)=\\\"toggleShownFilters()\\\"\\n [label]=\\\"\\n (isShowAllFilters\\n ? 'platformVHD.searchHideAllAdvancedSearchLabel'\\n : 'platformVHD.searchShowAllAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n ></button>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n } @else {\\n <fd-skeleton width=\\\"100%\\\" height=\\\"100px\\\">\\n <svg:rect x=\\\"0\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"60\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"80\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n </fd-skeleton>\\n }\\n </fd-busy-indicator>\\n </div>\\n }\\n </form>\\n }\\n</ng-template>\\n<ng-template #selectionContent>\\n <fd-busy-indicator\\n [loading]=\\\"loadingState && _firstLoadingDone\\\"\\n [block]=\\\"true\\\"\\n class=\\\"fdp-value-help-dialog__table-busy-indicator\\\"\\n >\\n <fdp-select-tab\\n [selected]=\\\"selectedItems\\\"\\n [loading]=\\\"loadingState && !_firstLoadingDone\\\"\\n [uid]=\\\"id\\\"\\n [displayedData]=\\\"_displayedData\\\"\\n [tabTitle]=\\\"'platformVHD.selectTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n [selection]=\\\"searchSelection\\\"\\n [uniqueKey]=\\\"uniqueKey\\\"\\n [pageSize]=\\\"searchTablePageSize\\\"\\n [defaultMobileHeaders]=\\\"searchTableMobileHeaders\\\"\\n [filters]=\\\"_displayedFilters\\\"\\n [allowSelectAll]=\\\"allowSelectAll\\\"\\n (select)=\\\"onSelect($event)\\\"\\n ></fdp-select-tab>\\n </fd-busy-indicator>\\n</ng-template>\\n<ng-template #defineConditionsContent>\\n <div fd-scrollbar>\\n <fdp-define-tab\\n [strategyLabels]=\\\"defineStrategyLabels\\\"\\n [conditions]=\\\"conditionItems\\\"\\n [uid]=\\\"id\\\"\\n [tabTitle]=\\\"'platformVHD.defineTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n (conditionChange)=\\\"onConditionChange($event)\\\"\\n ></fdp-define-tab>\\n </div>\\n</ng-template>\\n<ng-template #dialogTitleText>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{ dialogTitle }}</span>\\n</ng-template>\\n<ng-template #tabLink let-title=\\\"title\\\" let-type=\\\"type\\\">\\n @if (selectedTab === type && showSelectionTab && showDefineTab) {\\n <button\\n fd-button\\n glyph=\\\"navigation-left-arrow\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"switchTab()\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBackBtnTitle' | fdTranslate\\\"\\n ></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{ title }}</span>\\n }\\n @if (selectedTab !== type) {\\n <a\\n fd-list-link\\n (click)=\\\"switchTab(type)\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBtnOpenDialogLabel' | fdTranslate\\\"\\n >\\n <span fd-list-title>{{ title }}</span>\\n <i fd-list-icon glyph=\\\"navigation-right-arrow\\\"></i>\\n </a>\\n }\\n</ng-template>\\n<ng-template #advancedHeader>\\n <button fd-button glyph=\\\"navigation-left-arrow\\\" fdType=\\\"transparent\\\" (click)=\\\"toggleAdvancedSearch()\\\"></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{\\n 'platformVHD.searchAdvancedSearchLabel' | fdTranslate\\n }}</span>\\n</ng-template>\\n<ng-template #desktopDialogTitle>\\n <ng-template [ngTemplateOutlet]=\\\"dialogTitleText\\\"></ng-template>\\n <ng-template [ngTemplateOutlet]=\\\"desktopTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #mobileDialogTitle>\\n <div class=\\\"fdp-value-help-dialog__mobile-title\\\">\\n @if (hasSelectedTab) {\\n <ng-template [ngTemplateOutlet]=\\\"selectedTabHeader\\\"></ng-template>\\n } @else {\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{\\n dialogTitle\\n }}</span>\\n }\\n </div>\\n <ng-template [ngTemplateOutlet]=\\\"mobileTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #desktopTabs>\\n @if (showSelectionTab && showDefineTab) {\\n <nav fd-tab-nav class=\\\"fdp-value-help-dialog__tabs\\\">\\n @if (showSelectionTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.selectFromList)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.selectFromList\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.selectFromList ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.selectTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.defineConditions)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.defineConditions\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.defineConditions ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.defineTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n </nav>\\n }\\n</ng-template>\\n<ng-template #mobileTabs>\\n @if (!hasSelectedTab && showSelectionTab && showDefineTab) {\\n <div>\\n @if (showSelectionTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.selectTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n (click)=\\\"switchTab(_tabTypes.selectFromList)\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.selectTabTitle' | fdTranslate }\\n \\\"\\n ></fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.defineTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.defineTabTitle' | fdTranslate }\\n \\\"\\n (click)=\\\"switchTab(_tabTypes.defineConditions)\\\"\\n >\\n </fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</ng-template>\\n<ng-template #selectedTabHeader>\\n @switch (selectedTab) {\\n @case (_tabTypes.selectFromList) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.selectTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n @case (_tabTypes.advancedSearch) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedHeader\\\"></ng-template>\\n }\\n @case (_tabTypes.defineConditions) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.defineTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n }\\n</ng-template>\\n<ng-template #conditionValue let-item=\\\"item\\\">\\n @if (item.strategy !== 'empty' && item.strategy !== 'not_empty') {\\n <span>\\n {{ item | displayFnPipe: conditionDisplayFn : _displayedFilters }}\\n </span>\\n } @else {\\n @if (item.strategy === 'not_empty') {\\n !(<ng-template [ngTemplateOutlet]=\\\"emptyConditionText\\\"></ng-template>)\\n } @else {\\n <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}>\\n }\\n }\\n</ng-template>\\n<ng-template #emptyConditionText> <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}> </ng-template>\\n\", styles: [\".fdp-value-help-dialog .fd-dialog__body{display:flex;flex-direction:column;overflow:hidden}.fdp-value-help-dialog .fd-title--h5{padding:.5rem 0}.fdp-value-help-dialog .fd-toolbar{background:none;border:none;padding:.1735rem .5rem;height:auto;min-height:1.625rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__advanced-search{padding-top:1rem}.fdp-value-help-dialog__advanced-search,.fdp-value-help-dialog .fd-dialog__body{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__advanced-filters{padding-top:1rem}.fdp-value-help-dialog__advanced-filters label{height:auto}.fdp-value-help-dialog__toggle-filters{display:flex;justify-content:flex-end;align-items:flex-end}.fdp-value-help-dialog__toggle-filters .fd-button{margin-bottom:.25rem}.fdp-value-help-dialog__advanced-actions{display:flex;align-items:center;justify-content:flex-end}.fdp-value-help-dialog-mobile .fdp-value-help-dialog__advanced-actions{justify-content:flex-start}.fdp-value-help-dialog__advanced-actions .fd-toolbar{padding:0}.fdp-value-help-dialog .fd-bar.fd-bar--cozy{height:auto}.fdp-value-help-dialog .fd-dialog__header{box-shadow:none}.fdp-value-help-dialog .fd-dialog__header .fd-title{display:flex;align-items:center;padding-left:2rem;padding-right:2rem;min-height:2.5rem;box-shadow:none;border-bottom:none;background-color:var(--sapObjectHeader_Background, #fff);position:relative;z-index:2}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title{display:flex;border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--sapGroup_TitleBorderColor, #d9d9d9)}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title .fd-title{flex:1 1 auto;border:none}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__tabs{position:relative}.fdp-value-help-dialog .fd-dialog__header,.fdp-value-help-dialog .fd-dialog__footer{height:auto;flex-direction:column}.fdp-value-help-dialog .fd-dialog__header.fd-bar,.fdp-value-help-dialog .fd-dialog__footer.fd-bar{padding:0}.fdp-value-help-dialog .fd-dialog__footer{border-top:none}.fdp-value-help-dialog__content-holder{padding:0 2rem 1rem;display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;min-height:20rem}.fdp-value-help-dialog__row{padding:0 2rem 1rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__selection-row{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__tokens-wrapper{display:flex}.fdp-value-help-dialog__tokens{flex:1 1 auto;overflow:hidden;align-items:center;border:1px solid var(--sapContent_ForegroundBorderColor, #89919a);margin-right:.5rem;border-radius:var(--sapElement_BorderCornerRadius, .25rem);background:none}.fdp-value-help-dialog__tokens fd-toolbar{flex:1 1 auto;overflow:hidden}.fdp-value-help-dialog__tokens-clear{height:auto;min-width:2rem;padding:.125rem 0;justify-content:center}.fdp-value-help-dialog__actions-row{padding:.5rem 1rem;display:flex;align-items:center;justify-content:flex-end;border-top:.0625rem solid #d9d9d9;border-top:.0625rem solid var(--sapPageFooter_BorderColor, #d9d9d9)}.fdp-value-help-dialog__actions-row .fd-button{margin-left:.5rem}.fdp-value-help-dialog .fdp-value-help-dialog__hidden_label{display:none!important}.fdp-value-help-dialog__table-busy-indicator{height:100%}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: ScrollbarDirective, selector: \"[fdScrollbar], [fd-scrollbar]\", inputs: [\"noHorizontalScroll\", \"noVerticalScroll\", \"alwaysVisible\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: TitleComponent, selector: \"[fd-title], [fdTitle]\", inputs: [\"headerSize\", \"wrap\"], exportAs: [\"fd-title\"] }, { kind: \"component\", type: TokenizerComponent, selector: \"fd-tokenizer\", inputs: [\"class\", \"disableKeyboardDeletion\", \"compactCollapse\", \"tokenizerFocusable\", \"inputValue\", \"glyph\", \"glyphFont\", \"moreTerm\", \"open\", \"showOverflowPopover\"], outputs: [\"moreClickedEvent\"] }, { kind: \"component\", type: TokenComponent, selector: \"fd-token\", inputs: [\"disabled\", \"selected\", \"readOnly\"], outputs: [\"onCloseClick\", \"onRemove\", \"onTokenClick\", \"onTokenKeydown\", \"elementFocused\"] }, { kind: \"directive\", type: ToolbarItemDirective, selector: \"[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]\", inputs: [\"fdOverflowPriority\", \"fdOverflowGroup\"] }, { kind: \"component\", type: FormControlComponent, selector: \"input[fd-form-control], textarea[fd-form-control]\", inputs: [\"state\", \"type\", \"class\", \"ariaLabel\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: TokenizerInputDirective, selector: \"[fdTokenizerInput], [fd-tokenizer-input]\", inputs: [\"class\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: i3.NgForm, selector: \"form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]\", inputs: [\"ngFormOptions\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: LayoutGridComponent, selector: \"fd-layout-grid, [fdLayoutGrid]\", inputs: [\"class\", \"noGap\", \"noHorizontalGap\", \"noVerticalGap\"] }, { kind: \"directive\", type: LayoutGridRowDirective, selector: \"[fd-layout-grid-row], [fdLayoutGridRow]\" }, { kind: \"directive\", type: LayoutGridColDirective, selector: \"[fd-layout-grid-col], [fdLayoutGridCol]\", inputs: [\"fdLayoutGridCol\", \"colGrow\", \"colMd\", \"colLg\", \"colXl\", \"colOffset\", \"colOffsetMd\", \"colOffsetLg\", \"colOffsetXl\", \"class\"] }, { kind: \"component\", type: SearchFieldComponent, selector: \"fdp-search-field\", inputs: [\"categoryMode\", \"appearance\", \"placeholder\", \"mobile\", \"mobileConfig\", \"disableRefresh\", \"disableSearch\", \"suggestions\", \"dataSource\", \"inputText\", \"categories\", \"currentCategory\", \"categoryLabel\", \"hideCategoryLabel\", \"isLoading\", \"forceSearchButton\", \"disableSuggestionsFoundAnnouncer\"], outputs: [\"inputChange\", \"searchSubmit\", \"cancelSearch\", \"isOpenChange\"] }, { kind: \"component\", type: ToolbarComponent, selector: \"fd-toolbar\", inputs: [\"titleId\", \"class\", \"shouldOverflow\", \"fdType\", \"title\", \"active\", \"clearBorder\", \"forceOverflow\", \"tabindex\", \"headingLevel\", \"ariaLabel\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: ToolbarSpacerDirective, selector: \"fd-toolbar-spacer\", inputs: [\"width\", \"class\", \"fixed\"] }, { kind: \"component\", type: BusyIndicatorComponent, selector: \"fd-busy-indicator\", inputs: [\"loading\", \"size\", \"block\", \"ariaLabel\", \"ariaValueText\", \"title\", \"label\", \"ariaLive\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"component\", type: SkeletonComponent, selector: \"fd-skeleton\", inputs: [\"animated\", \"type\", \"textLines\", \"width\", \"height\"] }, { kind: \"component\", type: SelectTabComponent, selector: \"fdp-select-tab\", inputs: [\"selectTabTitleId\", \"selectTabCountId\", \"selected\", \"loading\", \"filters\", \"selection\", \"allowSelectAll\", \"uniqueKey\", \"pageSize\", \"defaultMobileHeaders\", \"displayedData\"], outputs: [\"select\"] }, { kind: \"component\", type: DefineTabComponent, selector: \"fdp-define-tab\", inputs: [\"titleId\", \"selectedId\", \"conditions\", \"strategyLabels\"], outputs: [\"includeChange\", \"excludeChange\", \"conditionChange\"] }, { kind: \"directive\", type: ListLinkDirective, selector: \"[fd-list-link], [fdListLink]\", inputs: [\"navigationIndicator\", \"navigated\", \"focusable\"] }, { kind: \"directive\", type: ListTitleDirective, selector: \"[fd-list-title], [fdListTitle]\", inputs: [\"wrap\", \"truncate\"] }, { kind: \"directive\", type: ListIconDirective, selector: \"[fdListIcon], [fd-list-icon]\", inputs: [\"glyph\", \"glyphFont\", \"class\", \"role\", \"ariaHidden\"] }, { kind: \"component\", type: TabNavComponent, selector: \"[fd-tab-nav]\", inputs: [\"class\", \"mode\", \"size\"] }, { kind: \"directive\", type: TabItemDirective, selector: \"[fd-tab-item]\", inputs: [\"class\", \"tabItemState\", \"header\", \"disabled\", \"fdTabItemClass\"] }, { kind: \"directive\", type: TabLinkDirective, selector: \"[fd-tab-link]\", inputs: [\"active\", \"disabled\"], outputs: [\"keyDown\", \"focused\"] }, { kind: \"directive\", type: TabTagDirective, selector: \"[fdTabTag], [fd-tab-tag]\" }, { kind: \"component\", type: BarComponent, selector: \"[fd-bar]\", inputs: [\"class\", \"barDesign\", \"inPage\", \"inHomePage\", \"clear\", \"size\", \"role\"] }, { kind: \"directive\", type: BarLeftDirective, selector: \"[fd-bar-left]\" }, { kind: \"directive\", type: BarElementDirective, selector: \"fd-bar-element\", inputs: [\"fullWidth\"] }, { kind: \"directive\", type: BarRightDirective, selector: \"[fd-bar-right]\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"pipe\", type: SlicePipe, name: \"slice\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }, { kind: \"pipe\", type: DisplayFnPipe, name: \"displayFnPipe\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-value-help-dialog', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: VhdComponent,\n useExisting: PlatformValueHelpDialogComponent\n }\n ], imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n NgTemplateOutlet,\n ScrollbarDirective,\n DialogBodyComponent,\n DialogFooterComponent,\n TitleComponent,\n TokenizerComponent,\n TokenComponent,\n ToolbarItemDirective,\n FormControlComponent,\n TokenizerInputDirective,\n ButtonComponent,\n FormsModule,\n LayoutGridComponent,\n LayoutGridRowDirective,\n LayoutGridColDirective,\n SearchFieldComponent,\n ToolbarComponent,\n ToolbarSpacerDirective,\n BusyIndicatorComponent,\n FormLabelComponent,\n SkeletonComponent,\n SelectTabComponent,\n DefineTabComponent,\n ListLinkDirective,\n ListTitleDirective,\n ListIconDirective,\n TabNavComponent,\n TabItemDirective,\n TabLinkDirective,\n TabTagDirective,\n BarComponent,\n BarLeftDirective,\n BarElementDirective,\n BarRightDirective,\n ButtonBarComponent,\n SlicePipe,\n FdTranslatePipe,\n DisplayFnPipe\n ], template: \"<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\\\"dialogConfig\\\" #container>\\n <fd-dialog [dialogConfig]=\\\"dialogConfig\\\" [dialogRef]=\\\"dialog\\\">\\n <fd-dialog-header [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <ng-template [ngTemplateOutlet]=\\\"mobile ? mobileDialogTitle : desktopDialogTitle\\\"></ng-template>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [attr.dir]=\\\"_dir$()\\\">\\n @if (!mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n <div fd-scrollbar class=\\\"fdp-value-help-dialog__content-holder\\\">\\n @if (mobile) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedSearchContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.selectFromList) {\\n <ng-template [ngTemplateOutlet]=\\\"selectionContent\\\"></ng-template>\\n }\\n @if (selectedTab === _tabTypes.defineConditions) {\\n <ng-template [ngTemplateOutlet]=\\\"defineConditionsContent\\\"></ng-template>\\n }\\n </div>\\n </fd-dialog-body>\\n <fd-dialog-footer [attr.dir]=\\\"_dir$()\\\">\\n <ng-template fdkTemplate=\\\"footer\\\">\\n @if (!isMobileAdvancedSearchActive) {\\n <div\\n class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__selection-row\\\"\\n [attr.aria-label]=\\\"'platformVHD.selectedAndConditionLabel' | fdTranslate\\\"\\n >\\n <span\\n role=\\\"heading\\\"\\n [attr.aria-level]=\\\"_headingLevel()\\\"\\n fd-title\\n class=\\\"selected-and-condition-title\\\"\\n [id]=\\\"id + '-selected-item'\\\"\\n >\\n @if (hasSelectedAndConditions) {\\n {{ 'platformVHD.selectedAndConditionLabel' | fdTranslate }}\\n ({{ selectedItems.length + validConditions.length }})\\n } @else {\\n {{ 'platformVHD.selectedEmptyLabel' | fdTranslate }}\\n }\\n </span>\\n <div class=\\\"fdp-value-help-dialog__tokens-wrapper\\\">\\n <div class=\\\"fdp-value-help-dialog__tokens\\\">\\n <!-- Selected items -->\\n <fd-tokenizer>\\n @for (\\n item of selectedItems;\\n track _trackBySelectedFn(selectedIndex, item);\\n let selectedIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeSelected(selectedIndex)\\\"\\n >{{\\n !!tokenizerFn\\n ? (item | displayFnPipe: tokenizerFn)\\n : item[tokenViewField]\\n }}\\n </fd-token>\\n }\\n @for (\\n item of validConditions;\\n track _trackByConditionFn(conditionIndex, item);\\n let conditionIndex = $index\\n ) {\\n <fd-token\\n fd-toolbar-item\\n fdOverflowPriority=\\\"high\\\"\\n class=\\\"fdp-value-help-dialog__selection-token\\\"\\n (onCloseClick)=\\\"removeCondition(conditionIndex)\\\"\\n >\\n <ng-template\\n [ngTemplateOutlet]=\\\"conditionValue\\\"\\n [ngTemplateOutletContext]=\\\"{ item: item }\\\"\\n ></ng-template>\\n </fd-token>\\n }\\n <input fd-form-control fd-tokenizer-input [disabled]=\\\"!hasSelectedAndConditions\\\" />\\n </fd-tokenizer>\\n </div>\\n <button\\n (click)=\\\"clearSelectedAndConditionItems()\\\"\\n class=\\\"fdp-value-help-dialog__tokens-clear\\\"\\n fd-button\\n [disabled]=\\\"!hasSelectedAndConditions\\\"\\n fdType=\\\"transparent\\\"\\n [title]=\\\"'platformVHD.footerClearSelectedTitle' | fdTranslate\\\"\\n glyph=\\\"decline\\\"\\n [ariaLabel]=\\\"'platformVHD.footerClearSelectedAriaLabel' | fdTranslate\\\"\\n ></button>\\n </div>\\n </div>\\n }\\n <div class=\\\"fdp-value-help-dialog__actions-row\\\">\\n @if (mobile && isOpenAdvanced) {\\n <button\\n fd-button\\n data-go-advanced\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"searchAdvanced()\\\"\\n ></button>\\n }\\n @if (selectedTab !== _tabTypes.advancedSearch) {\\n <button\\n fd-button\\n data-succes\\n [disabled]=\\\"loadingState\\\"\\n [label]=\\\"'platformVHD.successButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n (click)=\\\"success()\\\"\\n ></button>\\n }\\n <button\\n fd-button\\n data-dismiss-dialog\\n [label]=\\\"'platformVHD.cancelButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"dismiss()\\\"\\n ></button>\\n </div>\\n </ng-template>\\n </fd-dialog-footer>\\n </fd-dialog>\\n</ng-template>\\n<ng-template #advancedSearchContent>\\n @if (isSelectionTab) {\\n <form class=\\\"fdp-value-help-dialog__row fdp-value-help-dialog__advanced-search\\\" [id]=\\\"'advanced-search-' + id\\\">\\n @if (!mobile || (mobile && !isOpenAdvanced)) {\\n <fd-layout-grid>\\n <div fdLayoutGridRow>\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"mobile ? 12 : 6\\\" [colXl]=\\\"mobile ? 12 : 6\\\">\\n <fdp-search-field\\n [placeholder]=\\\"'platformVHD.searchPlaceholder' | fdTranslate\\\"\\n (searchSubmit)=\\\"search()\\\"\\n (inputChange)=\\\"_mainSearch = $event.text\\\"\\n ></fdp-search-field>\\n </div>\\n @if (_hasAdvanced) {\\n <div\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"mobile ? 12 : 6\\\"\\n [colXl]=\\\"mobile ? 12 : 6\\\"\\n class=\\\"fdp-value-help-dialog__advanced-actions\\\"\\n >\\n <fd-toolbar [clearBorder]=\\\"true\\\">\\n <fd-toolbar-spacer></fd-toolbar-spacer>\\n @if (_hasAdvanced) {\\n <button\\n fd-toolbar-item\\n fd-button\\n fdType=\\\"transparent\\\"\\n [label]=\\\"\\n (mobile\\n ? 'platformVHD.searchAdvancedSearchLabel'\\n : isOpenAdvanced\\n ? 'platformVHD.searchHideAdvancedSearchLabel'\\n : 'platformVHD.searchShowAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n (click)=\\\"toggleAdvancedSearch()\\\"\\n ></button>\\n }\\n <button\\n fd-toolbar-item\\n type=\\\"submit\\\"\\n fd-button\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformVHD.searchButtonLabel' | fdTranslate\\\"\\n (click)=\\\"filter()\\\"\\n ></button>\\n </fd-toolbar>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n }\\n @if (isOpenAdvanced && _hasAdvanced) {\\n <div [id]=\\\"'advanced-search-content-' + id\\\" class=\\\"fdp-value-help-dialog__advanced-filters\\\">\\n <fd-busy-indicator [loading]=\\\"loadingState && _firstLoadingDone\\\" [block]=\\\"true\\\">\\n @if (_firstLoadingDone) {\\n <fd-layout-grid\\n [class.fdp-value-help-dialog__with-toggle-all]=\\\"filters.length > maxShownInitialFilters\\\"\\n >\\n <div fdLayoutGridRow>\\n @for (\\n filter of _displayedFilters | slice: 0 : shownFilterCount + 1;\\n track _trackByFilterFn($index, filter)\\n ) {\\n @if (filter.advanced) {\\n <div [fdLayoutGridCol]=\\\"12\\\" [colMd]=\\\"12\\\" [colLg]=\\\"6\\\" [colXl]=\\\"3\\\">\\n <label\\n class=\\\"fd-form-group__header\\\"\\n fd-form-label\\n [for]=\\\"'input' + filter.key\\\"\\n >{{ filter.label }}:</label\\n >\\n @if (filter.filterDef) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"filter.filterDef.templateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: filter }\\\"\\n ></ng-template>\\n } @else {\\n <input\\n [(ngModel)]=\\\"filter.value\\\"\\n fd-form-control\\n type=\\\"text\\\"\\n [name]=\\\"'search-by-' + filter.label\\\"\\n [id]=\\\"'input' + filter.key\\\"\\n />\\n }\\n </div>\\n }\\n }\\n @if (filters.length > maxShownInitialFilters) {\\n <div\\n colGrow\\n [fdLayoutGridCol]=\\\"12\\\"\\n [colMd]=\\\"12\\\"\\n [colLg]=\\\"6\\\"\\n [colXl]=\\\"3\\\"\\n class=\\\"fdp-value-help-dialog__toggle-filters\\\"\\n >\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n (click)=\\\"toggleShownFilters()\\\"\\n [label]=\\\"\\n (isShowAllFilters\\n ? 'platformVHD.searchHideAllAdvancedSearchLabel'\\n : 'platformVHD.searchShowAllAdvancedSearchLabel'\\n ) | fdTranslate\\n \\\"\\n ></button>\\n </div>\\n }\\n </div>\\n </fd-layout-grid>\\n } @else {\\n <fd-skeleton width=\\\"100%\\\" height=\\\"100px\\\">\\n <svg:rect x=\\\"0\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"0\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"35%\\\" y=\\\"20\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"60\\\" rx=\\\"4\\\" width=\\\"15%\\\" height=\\\"8\\\" />\\n <svg:rect x=\\\"0\\\" y=\\\"80\\\" rx=\\\"4\\\" width=\\\"25%\\\" height=\\\"16\\\" />\\n </fd-skeleton>\\n }\\n </fd-busy-indicator>\\n </div>\\n }\\n </form>\\n }\\n</ng-template>\\n<ng-template #selectionContent>\\n <fd-busy-indicator\\n [loading]=\\\"loadingState && _firstLoadingDone\\\"\\n [block]=\\\"true\\\"\\n class=\\\"fdp-value-help-dialog__table-busy-indicator\\\"\\n >\\n <fdp-select-tab\\n [selected]=\\\"selectedItems\\\"\\n [loading]=\\\"loadingState && !_firstLoadingDone\\\"\\n [uid]=\\\"id\\\"\\n [displayedData]=\\\"_displayedData\\\"\\n [tabTitle]=\\\"'platformVHD.selectTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n [selection]=\\\"searchSelection\\\"\\n [uniqueKey]=\\\"uniqueKey\\\"\\n [pageSize]=\\\"searchTablePageSize\\\"\\n [defaultMobileHeaders]=\\\"searchTableMobileHeaders\\\"\\n [filters]=\\\"_displayedFilters\\\"\\n [allowSelectAll]=\\\"allowSelectAll\\\"\\n (select)=\\\"onSelect($event)\\\"\\n ></fdp-select-tab>\\n </fd-busy-indicator>\\n</ng-template>\\n<ng-template #defineConditionsContent>\\n <div fd-scrollbar>\\n <fdp-define-tab\\n [strategyLabels]=\\\"defineStrategyLabels\\\"\\n [conditions]=\\\"conditionItems\\\"\\n [uid]=\\\"id\\\"\\n [tabTitle]=\\\"'platformVHD.defineTabTitle' | fdTranslate\\\"\\n [mobile]=\\\"mobile\\\"\\n (conditionChange)=\\\"onConditionChange($event)\\\"\\n ></fdp-define-tab>\\n </div>\\n</ng-template>\\n<ng-template #dialogTitleText>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{ dialogTitle }}</span>\\n</ng-template>\\n<ng-template #tabLink let-title=\\\"title\\\" let-type=\\\"type\\\">\\n @if (selectedTab === type && showSelectionTab && showDefineTab) {\\n <button\\n fd-button\\n glyph=\\\"navigation-left-arrow\\\"\\n fdType=\\\"transparent\\\"\\n (click)=\\\"switchTab()\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBackBtnTitle' | fdTranslate\\\"\\n ></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{ title }}</span>\\n }\\n @if (selectedTab !== type) {\\n <a\\n fd-list-link\\n (click)=\\\"switchTab(type)\\\"\\n [title]=\\\"'platformVHD.selectMobileTabBtnOpenDialogLabel' | fdTranslate\\\"\\n >\\n <span fd-list-title>{{ title }}</span>\\n <i fd-list-icon glyph=\\\"navigation-right-arrow\\\"></i>\\n </a>\\n }\\n</ng-template>\\n<ng-template #advancedHeader>\\n <button fd-button glyph=\\\"navigation-left-arrow\\\" fdType=\\\"transparent\\\" (click)=\\\"toggleAdvancedSearch()\\\"></button>\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" fd-title>{{\\n 'platformVHD.searchAdvancedSearchLabel' | fdTranslate\\n }}</span>\\n</ng-template>\\n<ng-template #desktopDialogTitle>\\n <ng-template [ngTemplateOutlet]=\\\"dialogTitleText\\\"></ng-template>\\n <ng-template [ngTemplateOutlet]=\\\"desktopTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #mobileDialogTitle>\\n <div class=\\\"fdp-value-help-dialog__mobile-title\\\">\\n @if (hasSelectedTab) {\\n <ng-template [ngTemplateOutlet]=\\\"selectedTabHeader\\\"></ng-template>\\n } @else {\\n <span role=\\\"heading\\\" [attr.aria-level]=\\\"_headingLevel()\\\" [attr.id]=\\\"headerId\\\" fd-title>{{\\n dialogTitle\\n }}</span>\\n }\\n </div>\\n <ng-template [ngTemplateOutlet]=\\\"mobileTabs\\\"></ng-template>\\n</ng-template>\\n<ng-template #desktopTabs>\\n @if (showSelectionTab && showDefineTab) {\\n <nav fd-tab-nav class=\\\"fdp-value-help-dialog__tabs\\\">\\n @if (showSelectionTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.selectFromList)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.selectFromList\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.selectFromList ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.selectTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-tab-item (click)=\\\"switchTab(_tabTypes.defineConditions)\\\">\\n <a\\n fd-tab-link\\n [active]=\\\"selectedTab === _tabTypes.defineConditions\\\"\\n [tabindex]=\\\"selectedTab === _tabTypes.defineConditions ? '0' : '-1'\\\"\\n ><span fd-tab-tag>{{ 'platformVHD.defineTabTitle' | fdTranslate }}</span></a\\n >\\n </div>\\n }\\n </nav>\\n }\\n</ng-template>\\n<ng-template #mobileTabs>\\n @if (!hasSelectedTab && showSelectionTab && showDefineTab) {\\n <div>\\n @if (showSelectionTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.selectTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n (click)=\\\"switchTab(_tabTypes.selectFromList)\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.selectTabTitle' | fdTranslate }\\n \\\"\\n ></fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n @if (showDefineTab) {\\n <div fd-bar [inPage]=\\\"true\\\">\\n <div fd-bar-left>\\n <fd-bar-element>\\n {{ 'platformVHD.defineTabTitle' | fdTranslate }}\\n </fd-bar-element>\\n </div>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <fd-button-bar\\n glyph=\\\"navigation-right-arrow\\\"\\n [title]=\\\"\\n 'platformVHD.selectMobileTabTitle'\\n | fdTranslate: { title: 'platformVHD.defineTabTitle' | fdTranslate }\\n \\\"\\n (click)=\\\"switchTab(_tabTypes.defineConditions)\\\"\\n >\\n </fd-button-bar>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</ng-template>\\n<ng-template #selectedTabHeader>\\n @switch (selectedTab) {\\n @case (_tabTypes.selectFromList) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.selectTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n @case (_tabTypes.advancedSearch) {\\n <ng-template [ngTemplateOutlet]=\\\"advancedHeader\\\"></ng-template>\\n }\\n @case (_tabTypes.defineConditions) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"tabLink\\\"\\n [ngTemplateOutletContext]=\\\"{\\n title: 'platformVHD.defineTabTitle' | fdTranslate,\\n type: selectedTab\\n }\\\"\\n ></ng-template>\\n }\\n }\\n</ng-template>\\n<ng-template #conditionValue let-item=\\\"item\\\">\\n @if (item.strategy !== 'empty' && item.strategy !== 'not_empty') {\\n <span>\\n {{ item | displayFnPipe: conditionDisplayFn : _displayedFilters }}\\n </span>\\n } @else {\\n @if (item.strategy === 'not_empty') {\\n !(<ng-template [ngTemplateOutlet]=\\\"emptyConditionText\\\"></ng-template>)\\n } @else {\\n <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}>\\n }\\n }\\n</ng-template>\\n<ng-template #emptyConditionText> <{{ 'platformVHD.selectMobileConditionEmpty' | fdTranslate }}> </ng-template>\\n\", styles: [\".fdp-value-help-dialog .fd-dialog__body{display:flex;flex-direction:column;overflow:hidden}.fdp-value-help-dialog .fd-title--h5{padding:.5rem 0}.fdp-value-help-dialog .fd-toolbar{background:none;border:none;padding:.1735rem .5rem;height:auto;min-height:1.625rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__advanced-search{padding-top:1rem}.fdp-value-help-dialog__advanced-search,.fdp-value-help-dialog .fd-dialog__body{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__advanced-filters{padding-top:1rem}.fdp-value-help-dialog__advanced-filters label{height:auto}.fdp-value-help-dialog__toggle-filters{display:flex;justify-content:flex-end;align-items:flex-end}.fdp-value-help-dialog__toggle-filters .fd-button{margin-bottom:.25rem}.fdp-value-help-dialog__advanced-actions{display:flex;align-items:center;justify-content:flex-end}.fdp-value-help-dialog-mobile .fdp-value-help-dialog__advanced-actions{justify-content:flex-start}.fdp-value-help-dialog__advanced-actions .fd-toolbar{padding:0}.fdp-value-help-dialog .fd-bar.fd-bar--cozy{height:auto}.fdp-value-help-dialog .fd-dialog__header{box-shadow:none}.fdp-value-help-dialog .fd-dialog__header .fd-title{display:flex;align-items:center;padding-left:2rem;padding-right:2rem;min-height:2.5rem;box-shadow:none;border-bottom:none;background-color:var(--sapObjectHeader_Background, #fff);position:relative;z-index:2}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title{display:flex;border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--sapGroup_TitleBorderColor, #d9d9d9)}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__mobile-title .fd-title{flex:1 1 auto;border:none}.fdp-value-help-dialog .fd-dialog__header .fdp-value-help-dialog__tabs{position:relative}.fdp-value-help-dialog .fd-dialog__header,.fdp-value-help-dialog .fd-dialog__footer{height:auto;flex-direction:column}.fdp-value-help-dialog .fd-dialog__header.fd-bar,.fdp-value-help-dialog .fd-dialog__footer.fd-bar{padding:0}.fdp-value-help-dialog .fd-dialog__footer{border-top:none}.fdp-value-help-dialog__content-holder{padding:0 2rem 1rem;display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;min-height:20rem}.fdp-value-help-dialog__row{padding:0 2rem 1rem}.fdp-value-help-dialog__row.fdp-value-help-dialog__selection-row{background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-value-help-dialog__tokens-wrapper{display:flex}.fdp-value-help-dialog__tokens{flex:1 1 auto;overflow:hidden;align-items:center;border:1px solid var(--sapContent_ForegroundBorderColor, #89919a);margin-right:.5rem;border-radius:var(--sapElement_BorderCornerRadius, .25rem);background:none}.fdp-value-help-dialog__tokens fd-toolbar{flex:1 1 auto;overflow:hidden}.fdp-value-help-dialog__tokens-clear{height:auto;min-width:2rem;padding:.125rem 0;justify-content:center}.fdp-value-help-dialog__actions-row{padding:.5rem 1rem;display:flex;align-items:center;justify-content:flex-end;border-top:.0625rem solid #d9d9d9;border-top:.0625rem solid var(--sapPageFooter_BorderColor, #d9d9d9)}.fdp-value-help-dialog__actions-row .fd-button{margin-left:.5rem}.fdp-value-help-dialog .fdp-value-help-dialog__hidden_label{display:none!important}.fdp-value-help-dialog__table-busy-indicator{height:100%}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DialogService }, { type: i2.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { id: [{\n type: Input\n }], value: [{\n type: Input\n }], dialogTitle: [{\n type: Input\n }], initialTab: [{\n type: Input\n }], tabs: [{\n type: Input\n }], isOpenAdvanced: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], dialogConfig: [{\n type: Input\n }], uniqueKey: [{\n type: Input\n }], headerId: [{\n type: Input\n }], tokenViewField: [{\n type: Input\n }], tokenizerFn: [{\n type: Input\n }], mobile: [{\n type: Input\n }], formatToken: [{\n type: Input\n }], conditionDisplayFn: [{\n type: Input\n }], tokenValidator: [{\n type: Input\n }], searchSelection: [{\n type: Input\n }], searchTablePageSize: [{\n type: Input\n }], searchTableMobileHeaders: [{\n type: Input\n }], maxShownInitialFilters: [{\n type: Input\n }], loading: [{\n type: Input\n }], allowSelectAll: [{\n type: Input\n }], defineStrategyLabels: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onDataRequested: [{\n type: Output\n }], onDataReceived: [{\n type: Output\n }], filters: [{\n type: ContentChildren,\n args: [VhdFilterComponent]\n }], columnDef: [{\n type: ContentChildren,\n args: [ValueHelpColumnDefDirective]\n }], dialogContainer: [{\n type: ViewChild,\n args: ['container', { read: TemplateRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFDSCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVB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ICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBjb21wdXRlZCxcbiAgICBpbmplY3QsXG4gICAgaW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZpbHRlciwgaXNPYnNlcnZhYmxlLCBvZiwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIFNsaWNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERpc3BsYXlGblBpcGUsIFJ0bFNlcnZpY2UsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJDb21wb25lbnQsXG4gICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgIEJ1dHRvbkJhckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1c3lJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnVzeS1pbmRpY2F0b3InO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIERpYWxvZ0NvbmZpZyxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ1JlZixcbiAgICBEaWFsb2dTZXJ2aWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xDb21wb25lbnQsIEZvcm1MYWJlbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IExheW91dEdyaWRDb2xEaXJlY3RpdmUsIExheW91dEdyaWRDb21wb25lbnQsIExheW91dEdyaWRSb3dEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGF5b3V0LWdyaWQnO1xuaW1wb3J0IHsgTGlzdEljb25EaXJlY3RpdmUsIExpc3RMaW5rRGlyZWN0aXZlLCBMaXN0VGl0bGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGlzdCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IEhlYWRpbmdMZXZlbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2tlbGV0b24nO1xuaW1wb3J0IHsgVGFiSXRlbURpcmVjdGl2ZSwgVGFiTGlua0RpcmVjdGl2ZSwgVGFiTmF2Q29tcG9uZW50LCBUYWJUYWdEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGFicyc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBUb2tlbkNvbXBvbmVudCwgVG9rZW5pemVyQ29tcG9uZW50LCBUb2tlbml6ZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b2tlbic7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50LCBUb29sYmFySXRlbURpcmVjdGl2ZSwgVG9vbGJhclNwYWNlckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b29sYmFyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IERlZmluZVRhYkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmaW5lLXRhYi9kZWZpbmUtdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RUYWJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NlbGVjdC10YWIvc2VsZWN0LXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmhkRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIvdmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkZWZhdWx0Q29uZGl0aW9uRGlzcGxheUZuIH0gZnJvbSAnLi4vY29uc3RhbnMvY29uZGl0aW9uLWRpc3BsYXkuZnVuY3Rpb24nO1xuaW1wb3J0IHsgVmFsdWVIZWxwQ29sdW1uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWNvbHVtbi1kZWYuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgQXJyYXlWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlLFxuICAgIEJhc2VFbnRpdHksXG4gICAgT2JzZXJ2YWJsZVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2UsXG4gICAgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZSxcbiAgICBWZGhUYWJsZVNlbGVjdGlvbixcbiAgICBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3ksXG4gICAgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LFxuICAgIFZoZEZpbHRlcixcbiAgICBWaGRUYWIsXG4gICAgVmhkVmFsdWUsXG4gICAgVmhkVmFsdWVDaGFuZ2VFdmVudFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kZWxzL3ZoZC1jb21wb25lbnQubW9kZWwnO1xuXG5sZXQgdmhkSGVhZGVyVW5pcXVlSWQgPSAwO1xuXG5leHBvcnQgdHlwZSBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+ID1cbiAgICB8IFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD5cbiAgICB8IEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPlxuICAgIHwgT2JzZXJ2YWJsZVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD47XG5cbmxldCB2aGlVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXZhbHVlLWhlbHAtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVmhkQ29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFBsYXRmb3JtVmFsdWVIZWxwRGlhbG9nQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIFRva2VuaXplckNvbXBvbmVudCxcbiAgICAgICAgVG9rZW5Db21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJJdGVtRGlyZWN0aXZlLFxuICAgICAgICBGb3JtQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgVG9rZW5pemVySW5wdXREaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExheW91dEdyaWRDb21wb25lbnQsXG4gICAgICAgIExheW91dEdyaWRSb3dEaXJlY3RpdmUsXG4gICAgICAgIExheW91dEdyaWRDb2xEaXJlY3RpdmUsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyU3BhY2VyRGlyZWN0aXZlLFxuICAgICAgICBCdXN5SW5kaWNhdG9yQ29tcG9uZW50LFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNrZWxldG9uQ29tcG9uZW50LFxuICAgICAgICBTZWxlY3RUYWJDb21wb25lbnQsXG4gICAgICAgIERlZmluZVRhYkNvbXBvbmVudCxcbiAgICAgICAgTGlzdExpbmtEaXJlY3RpdmUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgTGlzdEljb25EaXJlY3RpdmUsXG4gICAgICAgIFRhYk5hdkNvbXBvbmVudCxcbiAgICAgICAgVGFiSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgVGFiTGlua0RpcmVjdGl2ZSxcbiAgICAgICAgVGFiVGFnRGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIFNsaWNlUGlwZSxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlLFxuICAgICAgICBEaXNwbGF5Rm5QaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVZhbHVlSGVscERpYWxvZ0NvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIFZoZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogSWQgb2YgdGhlIHBvcG92ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmRwLXZoZC0nICsgdmhpVW5pcXVlSWQrKztcblxuICAgIC8qKiBJbml0aWFsIHN0YXRlIG9mIFZhbHVlIGhlbHAgZGlhbG9nICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZTogVmhkVmFsdWU8VD4gPSB7XG4gICAgICAgIHNlbGVjdGVkOiBbXSxcbiAgICAgICAgY29uZGl0aW9uczogW11cbiAgICB9O1xuXG4gICAgLyoqIERpYWxvZyB0aXRsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlhbG9nVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBTZWxlY3QgZnJvbSBsaXN0IHRhYiBhY3RpdmF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsVGFiID0gVmhkVGFiLnNlbGVjdEZyb21MaXN0O1xuXG4gICAgLyoqIFZpc2libGUgdGFicyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiczogJ2JvdGgnIHwgJ3NlbGVjdCcgfCAnZGVmaW5lJyA9ICdib3RoJztcblxuICAgIC8qKiBJbml0aWFsIGV4cGFuZCBzdGF0ZSBmb3IgYWR2YW5jZWQgc2VhcmNoIHBhbmVsICovXG4gICAgQElucHV0KClcbiAgICBpc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIERhdGEgc291cmNlICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHRoaXMudG9EYXRhU3RyZWFtKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogRGlhbG9nJ3MgY3VzdG9tIGNvbmZpZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcgPSB7fTtcblxuICAgIC8qKiBVbmlxdWUga2V5IGZyb20gdGhlIHNvdXJjZSBmaWVsZCBuYW1lcy4gUmVxdWlyZWQgZmllbGQuICovXG4gICAgQElucHV0KClcbiAgICB1bmlxdWVLZXk6IHN0cmluZztcblxuICAgIC8qKiBJZCBhdHRyaWJ1dGUgZm9yIGRpYWxvZyB0aXRsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVhZGVySWQgPSBgZmRwLXZoZC1oZWFkZXItaWQtJHt2aGRIZWFkZXJVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogRmllbGQgbmFtZSBmb3IgZGVmYXVsdCByZW5kZXIgZnJvbSBkYXRhLlxuICAgICAqIFJlcXVpcmVkIGZpZWxkIGlmIHRva2VuaXplckZuIGlzIG5vdCBleGlzdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRva2VuVmlld0ZpZWxkOiBzdHJpbmc7XG5cbiAgICAvKiogVG9rZW5pemVyIGZ1bmN0aW9uIGZvciBjdXN0b20gdG9rZW4gcmVuZGVyLCBpdCBoYXMgaGlnaGVyIHByaW8gdGhhdCBgdG9rZW5WaWV3RmllbGRgLlxuICAgICAqIFJlcXVpcmVkIGZpZWxkIGlmIHRva2VuVmlld0ZpZWxkIGlzIG5vdCBleGlzdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRva2VuaXplckZuOiAoaXRlbTogVCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHZhbHVlIGhlbHAgZGlhbG9nIHNob3VsZCBiZSB2aWV3IGluIG1vYmlsZSBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBJdCBzaG91bGQgYmUgYWJsZSBpZiB5b3UgdXNlIG11bHRpcGxlIHNlbGVjdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybWF0VG9rZW46ICh2YWx1ZTogVmhkVmFsdWVDaGFuZ2VFdmVudDxUPikgPT4gdm9pZDtcblxuICAgIC8qKiBUb2tlbml6ZXIgZnVuY3Rpb24gZm9yIGNvbmRpdGlvbidzIHRva2VuIHJlbmRlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29uZGl0aW9uRGlzcGxheUZuID0gZGVmYXVsdENvbmRpdGlvbkRpc3BsYXlGbjtcblxuICAgIC8qKiBWYWxpZGF0b3IgZnVuY3Rpb24uIENhbGxlZCB3aGVuIHVzZXIgc3VibWl0cyBWSEQgZGlhbG9nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5WYWxpZGF0b3I6ICgodmFsdWU6IFZoZFZhbHVlQ2hhbmdlRXZlbnQpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuKSB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBTZWxlY3Rpb24gbW9kZSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hTZWxlY3Rpb246IFZkaFRhYmxlU2VsZWN0aW9uID0gJ211bHRpJztcblxuICAgIC8qKiBJdGVtcyBwZXIgcGFnZSBmb3IgcGFnaW5hdGlvbiBiZWxvdyBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaFRhYmxlUGFnZVNpemUgPSAyMDtcblxuICAgIC8qKiBDb3VudCBvZiBkZWZhdWx0IG1vYmlsZSBoZWFkZXIgZnJvbSBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaFRhYmxlTW9iaWxlSGVhZGVycyA9IDI7XG5cbiAgICAvKiogTWF4IHNob3duIGluaXRpYWwgZmlsdGVycyBvbiBvcGVuLiBEZXNrdG9wIG9ubHkgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFNob3duSW5pdGlhbEZpbHRlcnMgPSA0O1xuXG4gICAgLyoqIExvYWRpbmcgc3RhdGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGxvYWRpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogV2hldGhlciB0byBhbGxvdyB1c2VycyB0byBzZWxlY3QgYWxsIHRhYmxlIGVudHJpZXMgd2l0aCBvbmUgY2hlY2tib3guICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd1NlbGVjdEFsbCA9IHRydWU7XG5cbiAgICAvKiogQ3VzdG9tIHN0cmF0ZWdpZXMgbGFiZWxzXG4gICAgICogQWxsb3dlZCBrZXlzOiBjb250YWlucywgZXF1YWxUbywgYmV0d2Vlbiwgc3RhcnRzV2l0aCwgZW5kc1dpdGgsIGxlc3NUaGFuLCBsZXNzVGhhbkVxdWFsLCBncmVhdGVyVGhhbiwgZ3JlYXRlclRoYW5FcXVhbCwgZW1wdHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmluZVN0cmF0ZWd5TGFiZWxzOiB7XG4gICAgICAgIFtrZXkgaW4ga2V5b2YgKHR5cGVvZiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCB0eXBlb2YgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KV0/OiBzdHJpbmc7XG4gICAgfSA9IHtcbiAgICAgICAgY29udGFpbnM6ICdjb250YWlucycsXG4gICAgICAgIGVxdWFsVG86ICdlcXVhbCB0bycsXG4gICAgICAgIGJldHdlZW46ICdiZXR3ZWVuJyxcbiAgICAgICAgc3RhcnRzV2l0aDogJ3N0YXJ0cyB3aXRoJyxcbiAgICAgICAgZW5kc1dpdGg6ICdlbmRzIHdpdGgnLFxuICAgICAgICBsZXNzVGhhbjogJ2xlc3MgdGhhbicsXG4gICAgICAgIGxlc3NUaGFuRXF1YWw6ICdsZXNzIHRoYW4gb3IgZXF1YWwgdG8nLFxuICAgICAgICBncmVhdGVyVGhhbjogJ2dyZWF0ZXIgdGhhbicsXG4gICAgICAgIGdyZWF0ZXJUaGFuRXF1YWw6ICdncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8nLFxuICAgICAgICBlbXB0eTogJ2VtcHR5JyxcbiAgICAgICAgbm90X2VxdWFsVG86ICdub3QgZXF1YWwgdG8nLFxuICAgICAgICBub3RfZW1wdHk6ICdub3QgZW1wdHknXG4gICAgfTtcblxuICAgIC8qKiBEaWFsb2cgb3V0cHV0cyAqL1xuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZmlsdGVycy90b2tlbnMgd2VyZSBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxWaGRWYWx1ZUNoYW5nZUV2ZW50PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgc3RhcnRlZC4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25EYXRhUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgZmluaXNoZWQuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRGF0YVJlY2VpdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gRml0bGVycyBmb3Igc2VhcmNoIHRhYmxlIGFuZCBkZWZpbmNlIGNvbmRpdGlvbnMgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFZoZEZpbHRlckNvbXBvbmVudClcbiAgICBmaWx0ZXJzOiBRdWVyeUxpc3Q8VmhkRmlsdGVyQ29tcG9uZW50PjtcblxuICAgIC8qKiBDb2x1bW4gZGVmaW5pdGlvbnMuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmUpXG4gICAgY29sdW1uRGVmOiBRdWVyeUxpc3Q8VmFsdWVIZWxwQ29sdW1uRGVmRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuIEludGVybmFsIGNvbnRhaW5lciBmb3IgZGlhbG9nICovXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIGRpYWxvZ0NvbnRhaW5lcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEhlYWRpbmcgbGV2ZWwgb2YgdGhlIGRpYWxvZyB0aXRsZS5cbiAgICAgKi9cbiAgICBoZWFkaW5nTGV2ZWwgPSBpbnB1dDxIZWFkaW5nTGV2ZWw+KDUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGVhZGluZ0xldmVsID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5oZWFkaW5nTGV2ZWwoKSA/IE51bWJlci5wYXJzZUludChgJHt0aGlzLmhlYWRpbmdMZXZlbCgpfWAucmVwbGFjZSgvXFxEL2csICcnKSwgMTApIDogdW5kZWZpbmVkXG4gICAgKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWN0aXZlRGlhbG9nPzogRGlhbG9nUmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiVHlwZXMgPSBWaGRUYWI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYXNBZHZhbmNlZCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5ZWRGaWx0ZXJzOiBWaGRGaWx0ZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheWVkRGF0YTogVFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tYWluU2VhcmNoID0gJyc7XG5cbiAgICAvKiogaGFuZGxlcyBydGwgc2VydmljZVxuICAgICAqIEBoaWRkZW4gKi9cbiAgICBfZGlyJCA9IGNvbXB1dGVkPERpcmVjdGlvbj4oKCkgPT4gKHRoaXMuX3J0bFNlcnZpY2U/LnJ0bFNpZ25hbCgpID8gJ3J0bCcgOiAnbHRyJykpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3RlZFRhYjogVmhkVGFiIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3duRmlsdGVyQ291bnQgPSBJbmZpbml0eTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZyA/PyB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBmaXJzdCBsb2FkaW5nIHdoZW4gc2tlbGV0b25zIGJlIHNob3duIGFuZCBzdWJzZXF1ZW50IGxvYWRpbmdzIHdoZW4gYnVzeSBpbmRpY2F0b3IgYmUgc2hvd25cbiAgICAgKi9cbiAgICBfZmlyc3RMb2FkaW5nRG9uZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2U6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuIGZvciBkYXRhIHNvdXJjZSBoYW5kbGluZyAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gUHJldmlvdXMgc3RhdGUgKi9cbiAgICBwcml2YXRlIF9wcmV2U3RhdGU6IFZoZFZhbHVlPFQ+ID0ge1xuICAgICAgICBzZWxlY3RlZDogW10sXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfTtcbiAgICAvKiogQGhpZGRlbiBDdXJyZW50IGRhdGEgZm9yIGxvY2FsIG1hbnVwdWxhdGlvbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRWYWx1ZTogVmhkVmFsdWU8VD4gPSB7XG4gICAgICAgIHNlbGVjdGVkOiBbXSxcbiAgICAgICAgY29uZGl0aW9uczogW11cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIERlZmF1bHQgZGlzcGxheSBmdW5jdGlvbiBmb3IgZGVmaW5lIGNvbmRpdGlvbnMgKi9cbiAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbkRpc3BsYXlGbiB8fCB0eXBlb2YgdGhpcy5jb25kaXRpb25EaXNwbGF5Rm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uRGlzcGxheUZuID0gZGVmYXVsdENvbmRpdGlvbkRpc3BsYXlGbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzTW9iaWxlQWR2YW5jZWRTZWFyY2hBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNPcGVuQWR2YW5jZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGhhc1NlbGVjdGVkVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRhYiAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRUYWIgaW4gVmhkVGFiO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNob3dTZWxlY3Rpb25UYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMgIT09ICdkZWZpbmUnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNob3dEZWZpbmVUYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMgIT09ICdzZWxlY3QnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzU2VsZWN0aW9uVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRhYiA9PT0gVmhkVGFiLnNlbGVjdEZyb21MaXN0IHx8IHRoaXMuc2VsZWN0ZWRUYWIgPT09IFZoZFRhYi5hZHZhbmNlZFNlYXJjaDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzZWxlY3RlZEl0ZW1zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWUuc2VsZWN0ZWQgfHwgW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY29uZGl0aW9uSXRlbXMoKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHZhbGlkQ29uZGl0aW9ucygpOiBCYXNlRW50aXR5W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VmFsaWRDb25kaXRpb24odGhpcy5jb25kaXRpb25JdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoICsgdGhpcy52YWxpZENvbmRpdGlvbnMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc1Nob3dBbGxGaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmxlbmd0aCA+IHRoaXMubWF4U2hvd25Jbml0aWFsRmlsdGVycyAmJiB0aGlzLnNob3duRmlsdGVyQ291bnQgPiB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmFjdGl2ZURpYWxvZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoJ2RhdGFTb3VyY2UnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRFMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW4gZGlhbG9nICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRPcHRpb25zKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIGNoZWNrIHJlcXVpcmVkIGZpZWxkcycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NhdmVQcmV2aW91c1N0YXRlKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURTKCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVUYWIoKTtcbiAgICAgICAgaWYgKCF0aGlzLmRpYWxvZ0NvbmZpZy5hcmlhTGFiZWxsZWRCeSkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb25maWcuYXJpYUxhYmVsbGVkQnkgPSB0aGlzLmhlYWRlcklkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuZGlhbG9nQ29udGFpbmVyLCB7XG4gICAgICAgICAgICBiYWNrZHJvcENsaWNrQ2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGVzY0tleUNsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBkaWFsb2dQYW5lbENsYXNzOiBgZmRwLXZhbHVlLWhlbHAtZGlhbG9nICR7dGhpcy5tb2JpbGUgPyAnZmRwLXZhbHVlLWhlbHAtZGlhbG9nLW1vYmlsZScgOiAnJ31gLFxuICAgICAgICAgICAgLi4udGhpcy5kaWFsb2dDb25maWcsXG5cbiAgICAgICAgICAgIG1vYmlsZTogdGhpcy5tb2JpbGUsXG4gICAgICAgICAgICBtYXhXaWR0aDogdGhpcy5tb2JpbGUgPyB1bmRlZmluZWQgOiAnOTIlJyxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLm1vYmlsZSA/IHVuZGVmaW5lZCA6ICcxMDgwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm1vYmlsZSA/IHVuZGVmaW5lZCA6ICc5OCUnXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9saXN0ZW5EaWFsb2dFdmVudHMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGUgYWR2YW5jZWQgc2VhcmNoIHBhbmVsXG4gICAgICovXG4gICAgdG9nZ2xlQWR2YW5jZWRTZWFyY2goc3RhdGU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gc3RhdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gIXRoaXMuaXNPcGVuQWR2YW5jZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0aGlzLmlzT3BlbkFkdmFuY2VkID8gVmhkVGFiLmFkdmFuY2VkU2VhcmNoIDogVmhkVGFiLnNlbGVjdEZyb21MaXN0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICovXG4gICAgY2xlYXJTZWxlY3RlZEFuZENvbmRpdGlvbkl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuc2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLmNvbmRpdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIFNlYXJjaCBieSBvbmx5IHRoZSBzZWFyY2ggdGVybS4gKi9cbiAgICBzZWFyY2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlYXJjaCBieSBhbGwgZmlsbGVkIGZpbHRlcnMsIGluY2x1ZGluZyB0aGUgc2VhcmNoIHRlcm0uXG4gICAgICovXG4gICAgZmlsdGVyKG9ubHlTZWFyY2ggPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBub25FbXB0eUZpbHRlcnMgPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgaWYgKCFvbmx5U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNwbGF5ZWRGaWx0ZXJzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoeyB2YWx1ZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS50cmltKCkubGVuZ3RoIDogdmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gbm9uRW1wdHlGaWx0ZXJzLnNldChlLmtleSwgZS52YWx1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX21haW5TZWFyY2gubGVuZ3RoKSB7XG4gICAgICAgICAgICBub25FbXB0eUZpbHRlcnMuc2V0KCcqJywgdGhpcy5fbWFpblNlYXJjaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhU291cmNlPy5tYXRjaChub25FbXB0eUZpbHRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGx5IHNlYXJjaCBmcm9tIGFkdmFuY2VkIGZpbHRlcnMgdmlldywgdXNpbmcgd2hlbiBtb2JpbGUgdmlldyBpcyBhY3RpdmVcbiAgICAgKi9cbiAgICBzZWFyY2hBZHZhbmNlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IFZoZFRhYi5zZWxlY3RGcm9tTGlzdDtcbiAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBSZW1vdmUgaXRlbSBmcm9tIHNlbGVjdGVkIGFycmF5ICovXG4gICAgcmVtb3ZlU2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBjb25kaXRpb24gaXRlbVxuICAgICAqL1xuICAgIHJlbW92ZUNvbmRpdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zID0gdGhpcy5jb25kaXRpb25JdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoIHRhYiBieSB0eXBlXG4gICAgICovXG4gICAgc3dpdGNoVGFiKHR5cGU6IFZoZFRhYiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0eXBlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGRpYWxvZyB3aXRoIHZhbHVlO1xuICAgICAqL1xuICAgIHN1Y2Nlc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVEaWFsb2cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZTogVmhkVmFsdWVDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICBjb25kaXRpb25zOiB0aGlzLnZhbGlkQ29uZGl0aW9uc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9nZXRWYWxpZGF0b3JGdW5jdGlvbih2YWx1ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHIpID0+IHIpLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3llZClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb3JtYXRUb2tlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFRva2VuKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2c/LmNsb3NlKHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgYWR2YW5jZWQgc2VhcmNoIG9uIG1vYmlsZSB2aWV3IGFuZCBpZiBpdCdzIG9wZW5lZFxuICAgICAqIENsb3NlIGRpYWxvZyB3aXRoIG51bGwgdmFsdWU7XG4gICAgICovXG4gICAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlICYmIHRoaXMuaXNPcGVuQWR2YW5jZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKFZoZFRhYi5zZWxlY3RGcm9tTGlzdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9wcmV2U3RhdGU7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEaWFsb2cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeVNlbGVjdGVkRm46IChfaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gbnVtYmVyIHwgc3RyaW5nID0gKF9pbmRleDogbnVtYmVyLCBpdGVtOiBUKSA9PlxuICAgICAgICBpdGVtICYmIGl0ZW1bdGhpcy51bmlxdWVLZXldO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUZpbHRlckZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBWaGRGaWx0ZXIpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbSAmJiBpdGVtLmtleTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Q29uZGl0aW9uRm4oX2luZGV4OiBudW1iZXIsIGl0ZW06IEJhc2VFbnRpdHkpOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaXRlbSA/IGl0ZW0udmFsdWUgKyBpdGVtLnZhbHVlVG8gKyBpdGVtLnN0cmF0ZWd5ICsgaXRlbS5rZXkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblNlbGVjdCgkZXZlbnQ6IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuc2VsZWN0ZWQgPSAkZXZlbnQ7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hTZWxlY3Rpb24gPT09ICdvbmNlJykge1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ29uZGl0aW9uQ2hhbmdlKCRldmVudDogQmFzZUVudGl0eVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zID0gJGV2ZW50O1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRvZ2dsZVNob3duRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93bkZpbHRlckNvdW50ID1cbiAgICAgICAgICAgIHRoaXMubWF4U2hvd25Jbml0aWFsRmlsdGVycyA9PT0gdGhpcy5zaG93bkZpbHRlckNvdW50ID8gSW5maW5pdHkgOiB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2hvd25GaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3duRmlsdGVyQ291bnQgPSB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgfHwgSW5maW5pdHk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRWYWxpZENvbmRpdGlvbihpdGVtczogQmFzZUVudGl0eVtdID0gW10pOiBCYXNlRW50aXR5W10ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaXRlbS5zdHJhdGVneSA9PT0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LmVtcHR5IHx8XG4gICAgICAgICAgICAgICAgaXRlbS5zdHJhdGVneSA9PT0gVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5Lm5vdF9lbXB0eVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5zdHJhdGVneSA9PT0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LmJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbihpdGVtLnZhbHVlLmxlbmd0aCAmJiBpdGVtLnZhbHVlVG8ubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXRlbS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBCb29sZWFuKGl0ZW0udmFsdWUubGVuZ3RoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRFMoZHM6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8YW55PiB8IHVuZGVmaW5lZCA9IHRoaXMuZGF0YVNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFNvdXJjZVN0cmVhbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgZHM/Lm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZXF1ZXN0ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgZHM/Lm9uRGF0YVJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlyc3RMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVjZWl2ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBkc1N1YiA9IHRoaXMub3BlbkRhdGFTdHJlYW0oKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcGxheWVkRGF0YSA9IGRhdGEuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChkc1N1Yik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTYXZlIHByZXZpb3VzIHN0YXRlICovXG4gICAgcHJpdmF0ZSBfc2F2ZVByZXZpb3VzU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc3RydWN0dXJlZENsb25lKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcHJldlN0YXRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplVGFiKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiICYmIHRoaXMuc2hvd0RlZmluZVRhYikge1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUYWIodGhpcy5tb2JpbGUgPyB1bmRlZmluZWQgOiB0aGlzLmluaXRpYWxUYWIpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYikge1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUYWIoVmhkVGFiLnNlbGVjdEZyb21MaXN0KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKFZoZFRhYi5kZWZpbmVDb25kaXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbml0U2hvd25GaWx0ZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5EaWFsb2dFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVEaWFsb2cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZy5hZnRlckNsb3NlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcmVzZXRTdGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFN0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFNvdXJjZVN0cmVhbSgpO1xuICAgICAgICB0aGlzLl9tYWluU2VhcmNoID0gJyc7XG4gICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheWVkRmlsdGVycyA9IHRoaXMuZmlsdGVycy5tYXAoKGUpID0+ICh7XG4gICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgbGFiZWw6IGUubGFiZWwgfHwgZS5rZXlcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuX2hhc0FkdmFuY2VkID0gdGhpcy5fZGlzcGxheWVkRmlsdGVycy5zb21lKChlOiBWaGRGaWx0ZXIpID0+ICEhZS5hZHZhbmNlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIG9wZW5EYXRhU3RyZWFtKCk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlLm1hdGNoKCk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtkYXRhU291cmNlXSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZWApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB0b0RhdGFTdHJlYW0oZHM6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4pOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShkcykpIHtcbiAgICAgICAgICAgIHJldHVybiBkcyBhcyBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPihkcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPihkcyBhcyBPYnNlcnZhYmxlPFRbXT4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U291cmNlU3RyZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBpc1ZhbGlkT3B0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAhIXRoaXMuZGF0YVNvdXJjZSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnVuaXF1ZUtleSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAodHlwZW9mIHRoaXMudG9rZW5WaWV3RmllbGQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0aGlzLnRva2VuaXplckZuID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRWYWxpZGF0b3JGdW5jdGlvbih2YWx1ZTogVmhkVmFsdWVDaGFuZ2VFdmVudCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSB0eXBlb2YgdGhpcy50b2tlblZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMudG9rZW5WYWxpZGF0b3IodmFsdWUpIDogb2YodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGlzT2JzZXJ2YWJsZSh2YWxpZGF0b3IpID8gdmFsaWRhdG9yIDogb2YodmFsaWRhdG9yKTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgW2ZkRGlhbG9nVGVtcGxhdGVdIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNjb250YWluZXI+XG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCI+XG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyIFthdHRyLmRpcl09XCJfZGlyJCgpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibW9iaWxlID8gbW9iaWxlRGlhbG9nVGl0bGUgOiBkZXNrdG9wRGlhbG9nVGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHkgW2F0dHIuZGlyXT1cIl9kaXIkKClcIj5cbiAgICAgICAgICAgIEBpZiAoIW1vYmlsZSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhZHZhbmNlZFNlYXJjaENvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXIgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2NvbnRlbnQtaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgQGlmIChtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkdmFuY2VkU2VhcmNoQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdCkge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0aW9uQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJkZWZpbmVDb25kaXRpb25zQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyIFthdHRyLmRpcl09XCJfZGlyJCgpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKCFpc01vYmlsZUFkdmFuY2VkU2VhcmNoQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19yb3cgZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19zZWxlY3Rpb24tcm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdGVkQW5kQ29uZGl0aW9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJoZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxldmVsXT1cIl9oZWFkaW5nTGV2ZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWFuZC1jb25kaXRpb24tdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctc2VsZWN0ZWQtaXRlbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RlZEFuZENvbmRpdGlvbkxhYmVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCArIHZhbGlkQ29uZGl0aW9ucy5sZW5ndGggfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RlZEVtcHR5TGFiZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2tlbnMtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3Rva2Vuc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIGl0ZW1zIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9rZW5pemVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIF90cmFja0J5U2VsZWN0ZWRGbihzZWxlY3RlZEluZGV4LCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbmRleCA9ICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJoaWdoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3NlbGVjdGlvbi10b2tlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsb3NlQ2xpY2spPVwicmVtb3ZlU2VsZWN0ZWQoc2VsZWN0ZWRJbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhdG9rZW5pemVyRm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChpdGVtIHwgZGlzcGxheUZuUGlwZTogdG9rZW5pemVyRm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtW3Rva2VuVmlld0ZpZWxkXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtIG9mIHZhbGlkQ29uZGl0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBfdHJhY2tCeUNvbmRpdGlvbkZuKGNvbmRpdGlvbkluZGV4LCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZGl0aW9uSW5kZXggPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b2tlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwiaGlnaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19zZWxlY3Rpb24tdG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cInJlbW92ZUNvbmRpdGlvbihjb25kaXRpb25JbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25WYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRva2VuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZkLWZvcm0tY29udHJvbCBmZC10b2tlbml6ZXItaW5wdXQgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRva2VuaXplcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGVkQW5kQ29uZGl0aW9uSXRlbXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2tlbnMtY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZm9vdGVyQ2xlYXJTZWxlY3RlZFRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJkZWNsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1WSEQuZm9vdGVyQ2xlYXJTZWxlY3RlZEFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hY3Rpb25zLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1vYmlsZSAmJiBpc09wZW5BZHZhbmNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ28tYWR2YW5jZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoQWR2YW5jZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZFRhYiAhPT0gX3RhYlR5cGVzLmFkdmFuY2VkU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zdWNjZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1N0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnN1Y2Nlc3NCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Y2Nlc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3MtZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELmNhbmNlbEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNhZHZhbmNlZFNlYXJjaENvbnRlbnQ+XG4gICAgQGlmIChpc1NlbGVjdGlvblRhYikge1xuICAgICAgICA8Zm9ybSBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fcm93IGZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWR2YW5jZWQtc2VhcmNoXCIgW2lkXT1cIidhZHZhbmNlZC1zZWFyY2gtJyArIGlkXCI+XG4gICAgICAgICAgICBAaWYgKCFtb2JpbGUgfHwgKG1vYmlsZSAmJiAhaXNPcGVuQWR2YW5jZWQpKSB7XG4gICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiIFtjb2xNZF09XCIxMlwiIFtjb2xMZ109XCJtb2JpbGUgPyAxMiA6IDZcIiBbY29sWGxdPVwibW9iaWxlID8gMTIgOiA2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5zZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2hTdWJtaXQpPVwic2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX21haW5TZWFyY2ggPSAkZXZlbnQudGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChfaGFzQWR2YW5jZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibW9iaWxlID8gMTIgOiA2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cIm1vYmlsZSA/IDEyIDogNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hZHZhbmNlZC1hY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b29sYmFyIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2hhc0FkdmFuY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVkhELnNlYXJjaEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc09wZW5BZHZhbmNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoSGlkZUFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVZIRC5zZWFyY2hTaG93QWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWR2YW5jZWRTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VhcmNoQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9mZC1sYXlvdXQtZ3JpZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaXNPcGVuQWR2YW5jZWQgJiYgX2hhc0FkdmFuY2VkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ2FkdmFuY2VkLXNlYXJjaC1jb250ZW50LScgKyBpZFwiIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hZHZhbmNlZC1maWx0ZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvciBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgX2ZpcnN0TG9hZGluZ0RvbmVcIiBbYmxvY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChfZmlyc3RMb2FkaW5nRG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmRwLXZhbHVlLWhlbHAtZGlhbG9nX193aXRoLXRvZ2dsZS1hbGxdPVwiZmlsdGVycy5sZW5ndGggPiBtYXhTaG93bkluaXRpYWxGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyIG9mIF9kaXNwbGF5ZWRGaWx0ZXJzIHwgc2xpY2U6IDAgOiBzaG93bkZpbHRlckNvdW50ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBfdHJhY2tCeUZpbHRlckZuKCRpbmRleCwgZmlsdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWx0ZXIuYWR2YW5jZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCIgW2NvbE1kXT1cIjEyXCIgW2NvbExnXT1cIjZcIiBbY29sWGxdPVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1mb3JtLWdyb3VwX19oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIidpbnB1dCcgKyBmaWx0ZXIua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgZmlsdGVyLmxhYmVsIH19OjwvbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVyLmZpbHRlckRlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXIuZmlsdGVyRGVmLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBmaWx0ZXIgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInc2VhcmNoLWJ5LScgKyBmaWx0ZXIubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2lucHV0JyArIGZpbHRlci5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVycy5sZW5ndGggPiBtYXhTaG93bkluaXRpYWxGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xHcm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwiNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RvZ2dsZS1maWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3duRmlsdGVycygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTaG93QWxsRmlsdGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVZIRC5zZWFyY2hIaWRlQWxsQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1WSEQuc2VhcmNoU2hvd0FsbEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2tlbGV0b24gd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwcHhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjBcIiByeD1cIjRcIiB3aWR0aD1cIjE1JVwiIGhlaWdodD1cIjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjBcIiB5PVwiMjBcIiByeD1cIjRcIiB3aWR0aD1cIjI1JVwiIGhlaWdodD1cIjE2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIzNSVcIiB5PVwiMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMTUlXCIgaGVpZ2h0PVwiOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMzUlXCIgeT1cIjIwXCIgcng9XCI0XCIgd2lkdGg9XCIyNSVcIiBoZWlnaHQ9XCIxNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCI2MFwiIHJ4PVwiNFwiIHdpZHRoPVwiMTUlXCIgaGVpZ2h0PVwiOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCI4MFwiIHJ4PVwiNFwiIHdpZHRoPVwiMjUlXCIgaGVpZ2h0PVwiMTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZm9ybT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNzZWxlY3Rpb25Db250ZW50PlxuICAgIDxmZC1idXN5LWluZGljYXRvclxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgX2ZpcnN0TG9hZGluZ0RvbmVcIlxuICAgICAgICBbYmxvY2tdPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJsZS1idXN5LWluZGljYXRvclwiXG4gICAgPlxuICAgICAgICA8ZmRwLXNlbGVjdC10YWJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZEl0ZW1zXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0ZSAmJiAhX2ZpcnN0TG9hZGluZ0RvbmVcIlxuICAgICAgICAgICAgW3VpZF09XCJpZFwiXG4gICAgICAgICAgICBbZGlzcGxheWVkRGF0YV09XCJfZGlzcGxheWVkRGF0YVwiXG4gICAgICAgICAgICBbdGFiVGl0bGVdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwibW9iaWxlXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwic2VhcmNoU2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFt1bmlxdWVLZXldPVwidW5pcXVlS2V5XCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJzZWFyY2hUYWJsZVBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtkZWZhdWx0TW9iaWxlSGVhZGVyc109XCJzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnNcIlxuICAgICAgICAgICAgW2ZpbHRlcnNdPVwiX2Rpc3BsYXllZEZpbHRlcnNcIlxuICAgICAgICAgICAgW2FsbG93U2VsZWN0QWxsXT1cImFsbG93U2VsZWN0QWxsXCJcbiAgICAgICAgICAgIChzZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgID48L2ZkcC1zZWxlY3QtdGFiPlxuICAgIDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZpbmVDb25kaXRpb25zQ29udGVudD5cbiAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgPGZkcC1kZWZpbmUtdGFiXG4gICAgICAgICAgICBbc3RyYXRlZ3lMYWJlbHNdPVwiZGVmaW5lU3RyYXRlZ3lMYWJlbHNcIlxuICAgICAgICAgICAgW2NvbmRpdGlvbnNdPVwiY29uZGl0aW9uSXRlbXNcIlxuICAgICAgICAgICAgW3VpZF09XCJpZFwiXG4gICAgICAgICAgICBbdGFiVGl0bGVdPVwiJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwibW9iaWxlXCJcbiAgICAgICAgICAgIChjb25kaXRpb25DaGFuZ2UpPVwib25Db25kaXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2ZkcC1kZWZpbmUtdGFiPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVGl0bGVUZXh0PlxuICAgIDxzcGFuIHJvbGU9XCJoZWFkaW5nXCIgW2F0dHIuYXJpYS1sZXZlbF09XCJfaGVhZGluZ0xldmVsKClcIiBbYXR0ci5pZF09XCJoZWFkZXJJZFwiIGZkLXRpdGxlPnt7IGRpYWxvZ1RpdGxlIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdGFiTGluayBsZXQtdGl0bGU9XCJ0aXRsZVwiIGxldC10eXBlPVwidHlwZVwiPlxuICAgIEBpZiAoc2VsZWN0ZWRUYWIgPT09IHR5cGUgJiYgc2hvd1NlbGVjdGlvblRhYiAmJiBzaG93RGVmaW5lVGFiKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIlxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYigpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiQmFja0J0blRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8c3BhbiByb2xlPVwiaGVhZGluZ1wiIFthdHRyLmFyaWEtbGV2ZWxdPVwiX2hlYWRpbmdMZXZlbCgpXCIgZmQtdGl0bGU+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgfVxuICAgIEBpZiAoc2VsZWN0ZWRUYWIgIT09IHR5cGUpIHtcbiAgICAgICAgPGFcbiAgICAgICAgICAgIGZkLWxpc3QtbGlua1xuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYih0eXBlKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYkJ0bk9wZW5EaWFsb2dMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCI+PC9pPlxuICAgICAgICA8L2E+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRIZWFkZXI+XG4gICAgPGJ1dHRvbiBmZC1idXR0b24gZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIChjbGljayk9XCJ0b2dnbGVBZHZhbmNlZFNlYXJjaCgpXCI+PC9idXR0b24+XG4gICAgPHNwYW4gcm9sZT1cImhlYWRpbmdcIiBbYXR0ci5hcmlhLWxldmVsXT1cIl9oZWFkaW5nTGV2ZWwoKVwiIGZkLXRpdGxlPnt7XG4gICAgICAgICdwbGF0Zm9ybVZIRC5zZWFyY2hBZHZhbmNlZFNlYXJjaExhYmVsJyB8IGZkVHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZXNrdG9wRGlhbG9nVGl0bGU+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRpYWxvZ1RpdGxlVGV4dFwiPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlc2t0b3BUYWJzXCI+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21vYmlsZURpYWxvZ1RpdGxlPlxuICAgIDxkaXYgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX21vYmlsZS10aXRsZVwiPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGVkVGFiKSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0ZWRUYWJIZWFkZXJcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJoZWFkaW5nXCIgW2F0dHIuYXJpYS1sZXZlbF09XCJfaGVhZGluZ0xldmVsKClcIiBbYXR0ci5pZF09XCJoZWFkZXJJZFwiIGZkLXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgZGlhbG9nVGl0bGVcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vYmlsZVRhYnNcIj48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcFRhYnM+XG4gICAgQGlmIChzaG93U2VsZWN0aW9uVGFiICYmIHNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgPG5hdiBmZC10YWItbmF2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJzXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLXRhYi1pdGVtIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0KVwiPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdCA/ICcwJyA6ICctMSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuIGZkLXRhYi10YWc+e3sgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLXRhYi1pdGVtIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC10YWItbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9ucyA/ICcwJyA6ICctMSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuIGZkLXRhYi10YWc+e3sgJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmF2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21vYmlsZVRhYnM+XG4gICAgQGlmICghaGFzU2VsZWN0ZWRUYWIgJiYgc2hvd1NlbGVjdGlvblRhYiAmJiBzaG93RGVmaW5lVGFiKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICBAaWYgKHNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBbaW5QYWdlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm5hdmlnYXRpb24tcmlnaHQtYXJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiVGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyB0aXRsZTogJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBbaW5QYWdlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm5hdmlnYXRpb24tcmlnaHQtYXJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiVGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyB0aXRsZTogJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYihfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9ucylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWRUYWJIZWFkZXI+XG4gICAgQHN3aXRjaCAoc2VsZWN0ZWRUYWIpIHtcbiAgICAgICAgQGNhc2UgKF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdCkge1xuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiTGlua1wiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogc2VsZWN0ZWRUYWJcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChfdGFiVHlwZXMuYWR2YW5jZWRTZWFyY2gpIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhZHZhbmNlZEhlYWRlclwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zKSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJMaW5rXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBzZWxlY3RlZFRhYlxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb25kaXRpb25WYWx1ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICBAaWYgKGl0ZW0uc3RyYXRlZ3kgIT09ICdlbXB0eScgJiYgaXRlbS5zdHJhdGVneSAhPT0gJ25vdF9lbXB0eScpIHtcbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICB7eyBpdGVtIHwgZGlzcGxheUZuUGlwZTogY29uZGl0aW9uRGlzcGxheUZuIDogX2Rpc3BsYXllZEZpbHRlcnMgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIH0gQGVsc2Uge1xuICAgICAgICBAaWYgKGl0ZW0uc3RyYXRlZ3kgPT09ICdub3RfZW1wdHknKSB7XG4gICAgICAgICAgICAhKDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eUNvbmRpdGlvblRleHRcIj48L25nLXRlbXBsYXRlPilcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAmbHQ7e3sgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZUNvbmRpdGlvbkVtcHR5JyB8IGZkVHJhbnNsYXRlIH19Jmd0O1xuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlDb25kaXRpb25UZXh0PiAmbHQ7e3sgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZUNvbmRpdGlvbkVtcHR5JyB8IGZkVHJhbnNsYXRlIH19Jmd0OyA8L25nLXRlbXBsYXRlPlxuIl19","import { NgModule } from '@angular/core';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { VhdFilterComponent } from './components/value-help-dialog-filter/value-help-dialog-filter.component';\nimport { PlatformValueHelpDialogComponent } from './value-help-dialog/value-help-dialog.component';\nimport * as i0 from \"@angular/core\";\nconst components = [PlatformValueHelpDialogComponent, VhdFilterComponent, ContentDensityModule];\nexport class PlatformValueHelpDialogModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, imports: [PlatformValueHelpDialogComponent, VhdFilterComponent, ContentDensityModule], exports: [PlatformValueHelpDialogComponent, VhdFilterComponent, ContentDensityModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, imports: [PlatformValueHelpDialogComponent, ContentDensityModule, ContentDensityModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformValueHelpDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...components],\n exports: [...components]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFFbkcsTUFBTSxVQUFVLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBTWhHLE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjsrR0FBN0IsNkJBQTZCLFlBTnRCLGdDQUFnQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixhQUExRSxnQ0FBZ0MsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0I7K0dBTWpGLDZCQUE2QixZQU50QixnQ0FBZ0MsRUFBc0Isb0JBQW9CLEVBQXBCLG9CQUFvQjs7MkZBTWpGLDZCQUE2QjtrQkFKekMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcblxuaW1wb3J0IHsgVmhkRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlci92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYXRmb3JtVmFsdWVIZWxwRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1BsYXRmb3JtVmFsdWVIZWxwRGlhbG9nQ29tcG9uZW50LCBWaGRGaWx0ZXJDb21wb25lbnQsIENvbnRlbnREZW5zaXR5TW9kdWxlXTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbLi4uY29tcG9uZW50c10sXG4gICAgZXhwb3J0czogWy4uLmNvbXBvbmVudHNdXG59KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVmFsdWVIZWxwRGlhbG9nTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLXZhbHVlLWhlbHAtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS92YWx1ZS1oZWxwLWRpYWxvZy9mdW5kYW1lbnRhbC1uZ3gtcGxhdGZvcm0tdmFsdWUtaGVscC1kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["titleUniqueId","take","i1","i3"],"mappings":"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"}
|