@fundamental-ngx/platform 0.58.2-rc.0 → 0.58.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +61 -47
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +47 -47
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +10 -8
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +327 -319
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +80 -80
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +10 -8
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +59 -59
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +14 -14
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +16 -16
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-attribute.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +10 -10
- package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-panel.mjs +31 -25
- package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +16 -16
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +36 -36
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +28 -28
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +34 -34
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +82 -82
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +131 -131
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +30 -30
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +19 -19
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +43 -43
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform.mjs.map +1 -1
- package/package.json +35 -35
- package/{types/fundamental-ngx-platform-panel.d.ts → panel/index.d.ts} +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/schematics/utils/package-utils.js +1 -1
- package/schematics/utils/package-utils.js.map +1 -1
- /package/{types/fundamental-ngx-platform-approval-flow.d.ts → approval-flow/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-button.d.ts → button/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-dynamic-page.d.ts → dynamic-page/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-feed-input.d.ts → feed-input/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-form.d.ts → form/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-icon-tab-bar.d.ts → icon-tab-bar/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform.d.ts → index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-info-label.d.ts → info-label/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-link.d.ts → link/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-list.d.ts → list/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-menu.d.ts → menu/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-menu-button.d.ts → menu-button/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-message-popover.d.ts → message-popover/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-object-attribute.d.ts → object-attribute/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-object-marker.d.ts → object-marker/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-object-status.d.ts → object-status/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-page-footer.d.ts → page-footer/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-search-field.d.ts → search-field/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-settings-generator.d.ts → settings-generator/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-shared.d.ts → shared/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-slider.d.ts → slider/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-smart-filter-bar.d.ts → smart-filter-bar/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-split-menu-button.d.ts → split-menu-button/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-table.d.ts → table/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-table-helpers.d.ts → table-helpers/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-value-help-dialog.d.ts → value-help-dialog/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-variant-management.d.ts → variant-management/index.d.ts} +0 -0
- /package/{types/fundamental-ngx-platform-wizard-generator.d.ts → wizard-generator/index.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-shared.mjs","sources":["../../../../libs/platform/shared/base.ts","../../../../libs/platform/shared/platform.config.ts","../../../../libs/platform/shared/utils/lang.ts","../../../../libs/platform/shared/domain/data-source.ts","../../../../libs/platform/shared/domain/base-data-provider.ts","../../../../libs/platform/shared/domain/array-data-source.ts","../../../../libs/platform/shared/domain/data-model.ts","../../../../libs/platform/shared/domain/observable-data-source.ts","../../../../libs/platform/shared/form/base.input.ts","../../../../libs/platform/shared/form/collection-base.input.ts","../../../../libs/platform/shared/form/form-field.ts","../../../../libs/platform/shared/form/form-options.ts","../../../../libs/platform/shared/form/inline-layout-collection-base.input.ts","../../../../libs/platform/shared/pipes/convert-bytes/convert-bytes.pipe.ts","../../../../libs/platform/shared/pipes/pipe.module.ts","../../../../libs/platform/shared/testing/event-objects.ts","../../../../libs/platform/shared/preset-management/preset-management.token.ts","../../../../libs/platform/shared/fundamental-ngx-platform-shared.ts"],"sourcesContent":["import { ChangeDetectorRef, Directive, Input, OnDestroy, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nlet randomId = 0;\n\n/**\n * This class contains common properties used across components.\n * this can be extended to reduce the code duplication across components.\n * @hidden for form related Base , see BaseInput.\n */\n@Directive()\nexport abstract class BaseComponent implements OnDestroy {\n /** Sets the `aria-label` attribute to the element. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Sets the `aria-labelledby` attribute to the element. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /**\n * @deprecated\n * Use `ariaLabelledBy` instead.\n */\n @Input()\n set ariaLabelledby(value: Nullable<string>) {\n this.ariaDescribedBy = value;\n }\n\n /** Sets the `aria-describedby` attribute to the element. */\n @Input()\n ariaDescribedBy: Nullable<string>;\n\n /** id for the Element */\n @Input()\n id = `fdp-id-${randomId++}`;\n\n /** name for the element */\n @Input()\n name: string;\n\n /** width of the element */\n @Input()\n width: string;\n\n /** disabled status of the element */\n @Input()\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /** @hidden */\n protected _disabled = false;\n\n /** @hidden */\n protected _subscriptions = new Subscription();\n\n /**\n * @hidden\n * Change detector ref.\n */\n protected readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /**\n * @hidden\n * For internal usage only\n *\n * Since all components use OnPush strategy in the fundamental lib\n * it's tricky to update a child input directly from a parent component class\n *\n */\n markForCheck(): void {\n this._cdr.markForCheck();\n }\n\n /**\n * @hidden\n * For internal usage only\n *\n * Since all components use OnPush strategy in the fundamental lib\n * it's tricky to update a child input directly from a parent component class\n *\n */\n detectChanges(): void {\n this._cdr.detectChanges();\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Platform lib Config\n */\n@Injectable({ providedIn: 'root' })\nexport class PlatformConfig {\n /** @hidden */\n private static injector: Injector | null = null;\n\n /**\n * Content Density of element. 'cozy' | 'compact' | 'condensed'\n */\n contentDensity: ContentDensity;\n\n /** @hidden */\n static setInjector(injector: Injector): void {\n PlatformConfig.injector = injector;\n }\n\n /** @hidden */\n static getInjector(): Injector | null {\n return PlatformConfig.injector;\n }\n}\n","import { Observable } from 'rxjs';\n\n/** @hidden */\nexport function objectValues(obj: any): any[] {\n return Object.keys(obj).map((key) => obj[key]);\n}\n\n/** @hidden */\nexport function objectToName(target: any): string {\n if (isBlank(target) || (!isStringMap(target) && !isType(target))) {\n throw new Error(' Cannot convert. Uknown object');\n }\n\n return isType(target) ? target.prototype.constructor.name : target.constructor.name;\n}\n\n/** @hidden */\nexport function isJsObject(o: any): boolean {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n\n/** @hidden */\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\n/** @hidden */\nexport function isBlank(obj: any): boolean {\n return obj === undefined || obj === null;\n}\n\n/** @hidden */\nexport function isBoolean(obj: any): boolean {\n return typeof obj === 'boolean';\n}\n\n/** @hidden */\nexport function isNumber(obj: any): boolean {\n return typeof obj === 'number';\n}\n\n/** @hidden */\nexport function isString(obj: any): obj is string {\n return typeof obj === 'string';\n}\n\n/** @hidden */\nexport function isFunction(obj: any): boolean {\n return typeof obj === 'function';\n}\n\n/** @hidden */\nexport function isType(obj: any): boolean {\n return isFunction(obj);\n}\n\n/** @hidden */\nexport function isStringMap(obj: any): obj is Record<string, any> {\n return typeof obj === 'object' && obj !== null;\n}\n\n/** @hidden */\nexport function isObject<T>(item: T): boolean {\n return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n\n/** @hidden */\nexport function isPromise<T = any>(obj: any): obj is Promise<T> {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && isFunction(obj.then);\n}\n\n/** @hidden */\nexport function isSubscribable(obj: any | Observable<any>): obj is Observable<any> {\n return !!obj && isFunction(obj.subscribe);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n *\n * When working with large set of data using components such as:\n * - Datatables\n * - InputSearch\n * - ComboBox (Autocomplete)\n * - Tree\n * - List\n * - etc..\n * and for these we need to unify the way we access a data. Currently we leave most of the complex\n * data access or data manipulation on application developer which leads to different\n * implementation approaches and allot of code duplication.\n *\n * It is common practice when working with different data input sources we try to apply some\n * Design patterns e.g. Adapter Pattern that provides us with guidelines how different interfaces\n * can talk to each other and from here we can derive another pattern so called Datasource pattern\n * which is high-level architectural pattern to abstract data and internal resources\n * access (DB calls, Rest calls, domain objects) with a mininal amount a code.\n *\n * What we want to achieve is to define abstract layer where each specific resource type needs to\n * implement and move all the related logic into reusable DataSources. (TableDataSource,\n * ComboBoxDataSource, ... )\n *\n * Observable<T[]> is a reactive stream, that changes its content based on what it pushed\n * into it using .next().\n *\n * Each type of data component such Autocomplete, DataTable, List,.. needs to provide its own\n * specific implementation to handle specific use-case.\n *\n * ```\n * export abstract class DataTableDataSource<T> implements DataSource<T> {\n * data: T[];\n * filterTerm: string;\n * paginator: Paginator | null\n *\n * filterPredicate: ((data: T, filter: string) => boolean;\n *\n * sortData: ((data: T[], sort: Sort) => T[]);\n *\n * //\n * create (t: T): T;\n * update (t: T): T;\n * remove (t: T): T;\n *\n * }\n * ```\n *\n * After we define a format we can start creating concrete implementations based on the usage or\n * resource .e.g:\n *\n *\n * ```\n * export abstract class RestAutoCompleteDataSource<T> extend DataChooserDataSource <T> {\n * // We can use a registry that is able to map a Entity Type = Endpoint\n * // have identical way how to fetch , search ,...\n * }\n * ```\n *\n * Probably when working with data only locally, it can be:\n *\n * ```\n * export abstract class LocalArrayAutoCompleteDataSource<T> extend DataChooserDataSource <T> {\n * }\n * ```\n *\n *\n */\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport enum MatchingStrategy {\n STARTS_WITH_PER_TERM = 'starts with per term',\n STARTS_WITH = 'starts with',\n CONTAINS = 'contains'\n}\n\nexport const DATA_PROVIDERS = new InjectionToken<Map<string, DataProvider<any>>>('DataProviderRegistry');\n\nexport interface DataSource<T, P = T[], L = boolean> {\n isDataLoading: L;\n open(): Observable<P>;\n close(): void;\n onDataRequested(): Observable<void>;\n onDataReceived(): Observable<void>;\n}\n\nexport type MatchBy = (item: any) => any;\n\nexport interface MatchingBy {\n firstBy: MatchBy;\n secondaryBy?: MatchBy;\n}\n\n/** Matching Strategy: StartsWithPerTerm - Reqexp */\nexport function getMatchingStrategyStartsWithPerTermReqexp(value: string): RegExp {\n // We need to escape all special characters in order not to break the regular expression.\n return new RegExp(`(\\\\s|^)(${value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')})`, 'gi');\n}\n\n/** @hidden */\nexport function isDataSource<T = any>(value: any): value is DataSource<T> {\n return value && typeof value.open === 'function';\n}\n\nexport type ProviderParams = ReadonlyMap<string, any>;\n/**\n * Provider is a data driver that can access data and retrieve them. It knows how to get 1\n * or more records, maybe do paging and some other things.\n *\n */\nexport abstract class DataProvider<T> {\n abstract fetch(params: ProviderParams, start?: number, end?: number): Observable<T[]>;\n\n /** @hidden */\n protected _keyPath: string;\n\n /** @hidden */\n protected _matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH;\n\n /** @hidden */\n protected _matchingBy: MatchingBy | null = null;\n\n /** @hidden */\n getTotalItems?(): Observable<number>;\n\n /**\n * Tells if this DataProvider supports INSERT, REMOVE\n *\n */\n canCRUD(): boolean {\n return false;\n }\n\n // Implement to support CRUD operations.\n\n /** @hidden */\n getOne(params: ProviderParams): Observable<T> {\n throw new Error('Not supported');\n }\n\n /** @hidden */\n insert(payload: any, params?: ProviderParams): Observable<T> {\n throw new Error('Not supported');\n }\n\n /** @hidden */\n remove(params: ProviderParams): Observable<boolean> {\n throw new Error('Not supported');\n }\n\n /** @hidden */\n update(payload: any, params?: ProviderParams): Observable<T> {\n throw new Error('Not supported');\n }\n\n /** @hidden */\n setLookupKey(key: string): void {\n this._keyPath = key;\n }\n\n /** @hidden */\n setMatchingBy(matchingBy: MatchingBy): void {\n this._matchingBy = matchingBy;\n }\n\n /** @hidden */\n setMatchingStrategy(strategy: MatchingStrategy): void {\n this._matchingStrategy = strategy;\n }\n}\n\nexport class ComboBoxDataSource<T> implements DataSource<T> {\n /** @hidden */\n static readonly MaxLimit = 5;\n\n /** @hidden */\n limitless = false;\n\n /** @hidden */\n protected readonly _dataChanges: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);\n /** @hidden */\n protected readonly _onDataRequested$ = new Subject<void>();\n /** @hidden */\n protected readonly _onDataReceived$ = new Subject<void>();\n /** @hidden */\n protected readonly _onDestroy$ = new Subject<void>();\n /** @hidden */\n protected _dataLoading = false;\n\n /** @hidden */\n get isDataLoading(): boolean {\n return this._dataLoading;\n }\n\n /** @hidden */\n constructor(public dataProvider: DataProvider<any>) {}\n\n /** @hidden */\n match(predicate: string | Map<string, string> = new Map<string, string>(), start = 0, end = Infinity): void {\n this._onDataRequested$.next();\n this._dataLoading = true;\n const searchParam = new Map();\n\n if (typeof predicate === 'string') {\n searchParam.set('query', predicate);\n } else if (predicate instanceof Map) {\n predicate.forEach((v, k) => searchParam.set(k, v));\n } else {\n throw new Error('DataSource.match() predicate can only accepts string and Map');\n }\n\n if (!searchParam.has('limit') && !this.limitless) {\n searchParam.set('limit', ComboBoxDataSource.MaxLimit);\n }\n\n this.dataProvider\n .fetch(searchParam, start, end)\n .pipe(takeUntil(this._onDestroy$))\n .subscribe({\n next: (result: T[]) => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n this._dataChanges.next(result);\n },\n error: () => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n }\n });\n }\n\n /** @hidden */\n open(): Observable<T[]> {\n return this._dataChanges.pipe(takeUntil(this._onDestroy$));\n }\n\n /** @hidden */\n close(): void {\n this._onDestroy$.next();\n }\n\n /** @hidden */\n onDataRequested(): Observable<void> {\n return this._onDataRequested$.asObservable();\n }\n\n /** @hidden */\n onDataReceived(): Observable<void> {\n return this._onDataReceived$.asObservable();\n }\n}\n\nexport class MultiComboBoxDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n constructor(public dataProvider: DataProvider<any>) {\n super(dataProvider);\n }\n}\n\nexport class SearchFieldDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n constructor(public dataProvider: DataProvider<any>) {\n super(dataProvider);\n }\n}\n\nexport class ListDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n limitless = true;\n /** @hidden */\n constructor(public dataProvider: DataProvider<any>) {\n super(dataProvider);\n }\n}\n\nexport class MultiInputDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n constructor(public dataProvider: DataProvider<any>) {\n super(dataProvider);\n }\n}\n\nexport class ApprovalFlowUserDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n constructor(public dataProvider: DataProvider<T>) {\n super(dataProvider);\n }\n}\n\nexport class ApprovalFlowTeamDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n constructor(public dataProvider: DataProvider<T>) {\n super(dataProvider);\n }\n}\n","/**\n * Default implementation for Observable Arrays and Arrays.\n */\nimport { Observable, isObservable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { isFunction, isJsObject, objectToName, objectValues } from '../utils/lang';\nimport { DataProvider, MatchBy, MatchingStrategy, getMatchingStrategyStartsWithPerTermReqexp } from './data-source';\n\n/**\n * In Memory implementation of DataProvider that supports fulltext search\n */\nexport class BaseDataProvider<T> extends DataProvider<T> {\n /** @hidden */\n constructor(protected values: Observable<T[]> | T[]) {\n super();\n }\n\n /** @hidden */\n fetch(params: Map<string, any>): Observable<T[]> {\n const observable = isObservable(this.values) ? this.values : of(this.values);\n\n const queryString = params.get('query');\n const limit = params.get('limit') || 50;\n\n if (!queryString || queryString === '*') {\n return observable.pipe(map((items) => this.withLimit(items, limit)));\n }\n\n const toLowerPattern = queryString.toLowerCase();\n\n return observable.pipe(\n map((items) => {\n const result: any[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (this.matches(item, toLowerPattern)) {\n result.push(item);\n if (result.length >= limit) {\n break;\n }\n }\n }\n\n return result;\n })\n );\n }\n\n /**\n * Warning: If you dont supply search Key and you want fulltext search and you use this\n * default implementation be aware that it can perform poorly as it is naive implementation\n * that does not do deep compare.\n */\n matches(item: T, pattern: string): boolean {\n if (!this._matchingBy) {\n return false;\n }\n const { firstBy, secondaryBy } = this._matchingBy;\n\n let matched = this.matchesBy(item, pattern, firstBy);\n if (!matched && secondaryBy) {\n matched = this.matchesBy(item, pattern, secondaryBy);\n }\n\n return matched;\n }\n\n /** @hidden */\n matchesBy(item: any, pattern: string, matchingBy: MatchBy): boolean {\n const value = isJsObject(item) && matchingBy ? matchingBy(item) : item;\n\n if (isFunction(value)) {\n return value.call(item);\n } else if (isJsObject(value)) {\n return this.hasObjectValue(item, pattern);\n } else if (this._matchingStrategy === MatchingStrategy.STARTS_WITH_PER_TERM) {\n const reqexp = getMatchingStrategyStartsWithPerTermReqexp(pattern);\n return !!pattern && !!value && !!value.match(reqexp);\n } else if (this._matchingStrategy === MatchingStrategy.STARTS_WITH) {\n return !!pattern && !!value && value.toString().toLowerCase().startsWith(pattern.toLowerCase());\n } else if (this._matchingStrategy === MatchingStrategy.CONTAINS) {\n return !!pattern && !!value && value.toString().toLowerCase().indexOf(pattern) > -1;\n } else {\n return !!pattern && !!value && value.toString().toLowerCase() === pattern;\n }\n }\n\n /** @hidden */\n protected hasObjectValue(obj: any, pattern: string): boolean {\n const values = objectValues(obj);\n const parentObj = objectToName(obj);\n const length2 = values.filter((value: any) => {\n if (!value || Array.isArray(value)) {\n return false;\n } else if (!isJsObject(value) && !isFunction(value)) {\n return value.toString().toLowerCase().indexOf(pattern) !== -1;\n } else if (isJsObject(value) && objectToName(value) !== parentObj) {\n return this.hasObjectValue(value, pattern);\n }\n\n return false;\n }).length;\n return length2 > 0;\n }\n\n /** @hidden */\n private withLimit(data: Array<T>, limit?: number): Array<T> {\n if (limit && data.length > limit) {\n return data.slice(0, limit);\n }\n return data;\n }\n}\n","/**\n * Default implementation for Arrays.\n */\nimport { BaseDataProvider } from './base-data-provider';\nimport { ComboBoxDataSource, ListDataSource, MultiComboBoxDataSource, MultiInputDataSource } from './data-source';\n\nexport class ArrayComboBoxDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n constructor(private data: T[]) {\n super(new BaseDataProvider(data));\n }\n}\n\nexport class ArrayMultiComboBoxDataSource<T> extends MultiComboBoxDataSource<T> {\n /** @hidden */\n constructor(private data: T[]) {\n super(new BaseDataProvider(data));\n }\n}\n\nexport class ArrayListDataSource<T> extends ListDataSource<T> {\n /** @hidden */\n constructor(private data: T[]) {\n super(new BaseDataProvider(data));\n }\n}\n\nexport class ArrayMultiInputDataSource<T> extends MultiInputDataSource<T> {\n /** @hidden */\n constructor(private data: T[]) {\n super(new BaseDataProvider(data));\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { TemplateRef } from '@angular/core';\nimport { isBlank } from '../utils/lang';\n\n/**\n * Interface SelectItem is used to deal with complex object in order to be able to format\n * custom label that is shown in the options.\n *\n * Used in various controls: Select, RadioGroup, CheckboxGroup, Combobox\n */\nexport interface SelectItem<T = any> {\n /**\n * Item text shown in the popup\n */\n label: string;\n\n /**\n * References to the object instance\n */\n value: T;\n disabled?: boolean;\n\n icon?: string;\n /**\n * Trigger values is a text for selected item\n */\n triggerValue?: string;\n\n isGroup?: boolean;\n secondaryText?: string;\n children?: SelectItem[];\n\n /**\n * @hidden\n * Used in settings generator only.\n */\n description?: string;\n\n /**\n * @hidden\n * Used in settings generator only.\n */\n template?: TemplateRef<any>;\n}\n\nexport interface OptionItem {\n /** Item text */\n label: string;\n\n /**\n * References to the object instance\n */\n value: any;\n id?: string;\n isGroup?: boolean;\n secondaryText?: string;\n children?: OptionItem[];\n}\n\nexport interface SelectableOptionItem extends OptionItem {\n selected?: boolean;\n children?: SelectableOptionItem[];\n}\n\n/** @hidden */\nexport function isSelectableItem(item: SelectItem): item is SelectItem {\n return (\n item &&\n item.label !== undefined &&\n item.value !== undefined &&\n Object.prototype.hasOwnProperty.call(item, 'selected')\n );\n}\n\n/** @hidden */\nexport function isSelectItem(item: SelectItem): item is SelectItem {\n return item && item.label !== undefined && item.value !== undefined;\n}\n\nexport interface MultiInputOption {\n /** Item text */\n label: string;\n\n /**\n * References to the object instance\n */\n value: any;\n\n /**\n * Item Avatar\n */\n avatarSrc?: string;\n\n isGroup?: boolean;\n description?: string;\n children?: MultiInputOption[];\n}\n\nexport const isOptionItem = isSelectItem;\nexport const isSelectableOptionItem = isSelectableItem;\n\n/**\n * Wraps the provided value in an array, unless it is an array already.\n * If `null` or `undefined` is received, will return an empty array.\n */\nexport function coerceArraySafe<T>(value: T | T[]): T[] {\n return isBlank(value) ? [] : coerceArray(value);\n}\n","/**\n * Default implementation for Observable Arrays.\n */\nimport { Observable } from 'rxjs';\n\nimport { BaseDataProvider } from './base-data-provider';\nimport { ComboBoxDataSource, ListDataSource, MultiComboBoxDataSource, MultiInputDataSource } from './data-source';\n\nexport class ObservableComboBoxDataSource<T> extends ComboBoxDataSource<T> {\n /** @hidden */\n constructor(private data: Observable<T[]>) {\n super(new BaseDataProvider(data));\n }\n}\n\nexport class ObservableMultiComboBoxDataSource<T> extends MultiComboBoxDataSource<T> {\n /** @hidden */\n constructor(private data: Observable<T[]>) {\n super(new BaseDataProvider(data));\n }\n}\n\nexport class ObservableListDataSource<T> extends ListDataSource<T> {\n /** @hidden */\n constructor(private data: Observable<T[]>) {\n super(new BaseDataProvider(data));\n }\n}\n\nexport class ObservableMultiInputDataSource<T> extends MultiInputDataSource<T> {\n /** @hidden */\n constructor(private data: Observable<T[]>) {\n super(new BaseDataProvider(data));\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n DoCheck,\n ElementRef,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject,\n isDevMode\n} from '@angular/core';\nimport { ControlContainer, ControlValueAccessor, FormControl, NgControl, NgForm } from '@angular/forms';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject, filter } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FD_FORM_FIELD,\n FD_FORM_FIELD_CONTROL,\n FormFieldAdvancedStateMessage,\n FormStates,\n isValidControlState\n} from '@fundamental-ngx/cdk/forms';\nimport { FormInputMessageGroupComponent } from '@fundamental-ngx/core/form';\nimport { TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { BaseComponent } from '../base';\nimport { PlatformFormField, PlatformFormFieldControl } from './form-field';\n\nexport const FDP_DO_CHECK = new InjectionToken<Observable<void>>('FdpInputDoCheckTrigger');\nexport const FDP_FORM_SUBMIT = new InjectionToken<Observable<void>>('FdpFormSubmitTrigger');\n\nlet randomId = 0;\n\n/**\n * All form components share the same information (value, name, placeholder,.. ) as well as\n * the same behavior given by ControlValueAccessor.\n *\n * Even this is not ideal solution there is no other way then use inheritance to reuse some of the\n * common logic. It should be possible to use some kind of compositions with Proxies but something\n * similar that exists in Aspect Oriented Programing.\n *\n * Usually try to fire stateChange only for things that can change dynamically in runtime. We don't expect\n * that e.g. placeholder will change after component is created\n */\n@Directive()\nexport abstract class BaseInput\n extends BaseComponent\n implements PlatformFormFieldControl, ControlValueAccessor, OnInit, DoCheck, AfterViewInit, OnDestroy, HasElementRef\n{\n /** Input placeholder */\n @Input()\n placeholder: string;\n\n /**\n * To allow user to determine what event he wants to trigger the messages to show\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n @Input()\n triggers: (string | TriggerConfig)[] = [\n {\n trigger: 'focusin',\n openAction: true,\n closeAction: false\n },\n {\n trigger: 'focusout',\n openAction: false,\n closeAction: true\n }\n ];\n\n /**\n * The state of the form control - applies css classes.\n * Can be 'success', 'error', 'warning', 'default', 'information'.\n *\n * @default 'default'\n */\n @Input()\n set state(state: FormStates | undefined) {\n if (!state || isValidControlState(state)) {\n this._state = state;\n } else if (isDevMode()) {\n console.warn(`Provided value \"${state}\" is not a valid option for FormStates type`);\n }\n }\n get state(): FormStates {\n if (this._state) {\n return this._state;\n }\n\n if (!this.controlInvalid) {\n return 'default';\n }\n\n return this.formField?.getPriorityState() || 'error';\n }\n\n /** Holds the message with respect to state */\n @Input()\n stateMessage: Nullable<string>;\n\n /** Advanced form message configuration. Used for components that can render form messages in its template. */\n @Input()\n stateMessageConfig: Nullable<TemplateRef<any>>;\n\n /** Whether the input is disabled */\n @Input()\n set disabled(value: boolean) {\n this.setDisabledState(value);\n }\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n\n /**\n * readOnly Value to Mark component read only\n */\n @Input()\n readonly: boolean;\n\n /**\n * Tell the component if we are in editing mode.\n */\n @Input({ transform: booleanAttribute })\n set editable(value: boolean) {\n if (this._editable === value) {\n return;\n }\n this._editable = value;\n this.markForCheck();\n this.stateChanges.next('editable');\n }\n get editable(): boolean {\n return this._editable;\n }\n\n /** Form control validation event strategy. */\n @Input()\n validationStrategy: ('touched' | 'dirty' | 'submitted')[] = ['touched', 'dirty', 'submitted'];\n\n /**\n * Reference to internal Input element\n */\n @ViewChild('inputElementRef', { static: true, read: ElementRef })\n protected _elementRef: ElementRef;\n\n /**\n * need to make these value accessor as abstract to be implemented by subclasses. Having them\n * in superclass have issue getting reference to them with Object.getOwnPropertyDescripton\n * which we need to programmatically wraps components set/get value\n *\n */\n abstract get value(): any;\n\n abstract set value(value: any);\n\n /** @hidden */\n formMessage: Nullable<FormInputMessageGroupComponent>;\n\n /**\n * See @FormFieldControl\n */\n focused = false;\n\n /** set when input field is mandatory form field */\n required: boolean;\n\n /** @hidden */\n innerErrorsTemplate?: TemplateRef<any>;\n\n /** Whether control has errors */\n get controlInvalid(): boolean {\n return this._controlInvalid;\n }\n\n /** @hidden */\n advancedStateMessage: Nullable<FormFieldAdvancedStateMessage>;\n\n /**\n * See @FormFieldControl\n */\n readonly stateChanges: Subject<any> = new Subject<any>();\n\n /** @hidden */\n readonly formField: PlatformFormField | null = null;\n\n /** @hidden */\n readonly _doCheck$ = inject(FDP_DO_CHECK, { optional: true });\n\n /** Element reference. */\n readonly elementRef = inject(ElementRef);\n\n /** NgControl reference. */\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true\n });\n\n /** Control container reference. */\n readonly controlContainer = inject(ControlContainer, {\n optional: true,\n skipSelf: true\n });\n\n /** Form reference. */\n readonly ngForm = inject(NgForm, {\n optional: true,\n skipSelf: true\n });\n\n /**\n * @hidden\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or 'default'\n */\n protected _state: FormStates | undefined;\n\n /** @hidden */\n protected defaultId = `fdp-input-id-${randomId++}`;\n\n /** @hidden */\n protected _value: any;\n /** @hidden */\n protected _editable = true;\n /** @hidden */\n protected _destroyed = inject(DestroyRef);\n\n /** @hidden */\n private readonly _externalSubmit = inject(FDP_FORM_SUBMIT, { optional: true });\n\n /** @hidden */\n private _externalFormSubmitted = false;\n\n /**\n * @hidden\n */\n private _controlInvalid = false;\n\n /** @hidden */\n constructor() {\n /**\n * We do not use Injector.get() approach here because there is a bug\n * with this signature https://github.com/angular/angular/issues/31776\n * where \"get()\" method doesn't take into account \"flag\" option\"\n *\n */\n super();\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n const formField = inject<PlatformFormField>(FD_FORM_FIELD, {\n optional: true,\n skipSelf: true,\n host: true\n });\n\n const formControl = inject<PlatformFormFieldControl>(FD_FORM_FIELD_CONTROL, {\n optional: true,\n skipSelf: true,\n host: true\n });\n\n // We have to ignore \"formField\" if there is \"formControl\" wrapper\n this.formField = formField && !formControl ? formField : null;\n\n this._doCheck$?.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n this.ngDoCheck();\n });\n this._externalSubmit?.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n this._externalFormSubmitted = true;\n });\n }\n\n /** @hidden */\n onChange: (value: any) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngOnInit(): void {\n if (this.formField) {\n this.formField.registerFormFieldControl(this);\n }\n }\n\n /**\n * Re-validate and emit event to parent container on every CD cycle as they are some errors\n * that we can't subscribe to.\n */\n ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.ngControl) {\n this._subscriptions.add(\n this.ngControl.statusChanges?.subscribe(() => {\n this.markForCheck();\n })\n );\n }\n\n const labelAndHelpId = `fdp-form-label-content-${this.id}`;\n // if not specified, associate label and inline help ids with the input,\n // else add these ids to the specified ones\n if (this.formField) {\n if (!this.ariaLabelledBy) {\n this.ariaLabelledBy = labelAndHelpId;\n } else {\n this.ariaLabelledBy += ' ' + labelAndHelpId;\n }\n }\n\n this.innerErrorsTemplate = this.formField?.innerErrorRenderers;\n\n this.stateChanges\n .pipe(\n filter(() => !!this.formField),\n takeUntilDestroyed(this._destroyed)\n )\n .subscribe(() => {\n this.advancedStateMessage = {\n template: this.formField!.innerErrorRenderers,\n hasErrors: this.formField!.hasErrors()\n };\n this.detectChanges();\n });\n\n this.detectChanges();\n }\n\n /** @hidden */\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.stateChanges.complete();\n if (this.formField) {\n this.formField.unregisterFormFieldControl(this);\n }\n }\n\n /** @hidden */\n setDisabledState(isDisabled: BooleanInput): void {\n const newState = booleanAttribute(isDisabled);\n this.markForCheck();\n if (newState !== this._disabled) {\n this._disabled = newState;\n this.stateChanges.next('setDisabledState');\n }\n }\n\n /**\n * Each sub class must override this method as inheritance does not work\n */\n writeValue(value: any): void {\n this._value = value;\n this.stateChanges.next('writeValue');\n this.markForCheck();\n }\n\n /**\n *\n * Keeps track of element focus\n */\n _onFocusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused && (!this.disabled || !isFocused)) {\n this.focused = isFocused;\n this.stateChanges.next('_onFocusChanged');\n }\n\n if (!isFocused) {\n this.onTouched();\n }\n }\n\n /**\n * Handles even when we click on parent container which is the FormField Wrapping this\n * control\n */\n onContainerClick(event: MouseEvent): void {\n this.focus(event);\n }\n\n /**\n * In most of the cases when working with input element directly you should be just find to assing\n * variable to this element\n *\n * ```\n * <input #inputElementRef fd-form-control ...>\n * ```\n *\n * and this default behavior used. For other cases implement focus.\n *\n */\n focus(event?: MouseEvent): void {\n if (this._elementRef && !this.focused) {\n this._elementRef.nativeElement.focus(event);\n }\n }\n\n /**\n * Need re-validates errors on every CD iteration to make sure we are also\n * covering non-control errors, errors that happens outside of this control\n */\n protected updateErrorState(): void {\n const parent = this.ngForm;\n const parentControlContainer = this.controlContainer;\n const control = this.ngControl ? (this.ngControl.control as FormControl) : null;\n const newStatusIsError = !!(\n control?.invalid &&\n ((this.validationStrategy.includes('dirty') && control.dirty) ||\n (this.validationStrategy.includes('touched') && control.touched) ||\n (this.validationStrategy.includes('submitted') && parent?.submitted) ||\n (parentControlContainer as any)?.submitted ||\n this._externalFormSubmitted)\n );\n\n if (newStatusIsError !== this.controlInvalid) {\n this._controlInvalid = newStatusIsError;\n this.stateChanges.next('updateErrorState');\n this.markForCheck();\n }\n }\n\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n protected setValue(value: any, emitOnChange = true): void {\n if (value !== this._value) {\n this.writeValue(value);\n if (emitOnChange) {\n this.onChange(value);\n }\n this.markForCheck();\n }\n }\n\n /** @hidden */\n protected getValue(): any {\n return this._value;\n }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { SelectItem, isSelectItem } from '../domain/data-model';\nimport { isFunction, isJsObject, isString } from '../utils/lang';\nimport { BaseInput } from './base.input';\n\n/**\n * Defines specific behavior for Input controls which deals with list of values including:\n * - Select\n * - RadioGroup\n * - CheckboxGroup\n * - ComboBox\n * ...\n *\n */\n@Directive()\nexport abstract class CollectionBaseInput extends BaseInput {\n /**\n * List of values, it can be of type SelectItem, string or any object.\n * Generic object type is among the list of types,\n * because we allow to get labels and values using `displayKey` and `lookupKey` inputs accordingly.\n */\n @Input()\n set list(value: Array<SelectItem | string | object>) {\n this._list = value;\n }\n get list(): Array<SelectItem | string | object> {\n return this._list;\n }\n\n /**\n * Used in filters and any kind of comparators when we work with objects and this identify\n * unique field name based on which we are going to do the job\n */\n @Input()\n lookupKey: string;\n\n /**\n * When we deal with unknown object we can use `displayKey` to retrieve value from specific\n * property of the object to act as display value.\n *\n * @See ComboBox, Select, RadioGroup, CheckBox Group\n */\n @Input()\n displayKey: string;\n\n /** @hidden */\n private _list: Array<SelectItem | string | object>;\n\n /** @hidden */\n public lookupValue(item: any): string {\n if (isSelectItem(item)) {\n return this.lookupKey && item && item.value ? item.value[this.lookupKey] : item.value;\n } else {\n return this.lookupKey && item ? item[this.lookupKey] : item;\n }\n }\n\n /** @hidden */\n public displayValue(item: any): string {\n if (isSelectItem(item)) {\n return item.label;\n } else if (isJsObject(item) && this.displayKey) {\n const currentItem = this.objectGet(item, this.displayKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return item;\n }\n }\n\n /** @hidden */\n public objectGet(obj: any, is: string | string[] | undefined): any {\n if (!isJsObject(obj)) {\n return obj;\n } else if (isString(is)) {\n return this.objectGet(obj, is.split('.'));\n } else if (!is?.length) {\n return obj;\n } else {\n return this.objectGet(obj[is[0]], is.slice(1));\n }\n }\n}\n","import { ElementRef, QueryList, TemplateRef } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, NgControl } from '@angular/forms';\nimport { FormField, FormFieldControl } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\n\nimport { FormInputMessageGroupComponent } from '@fundamental-ngx/core/form';\nimport { TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { FormError, FormFieldErrorDirectiveContext } from './form-error';\nimport { Column, ColumnLayout } from './form-options';\n\n/**\n * FormField base class.\n *\n * This class is used to create form field components.\n *\n */\nexport abstract class PlatformFormField extends FormField {\n /**\n * Form field id\n */\n id: string;\n /**\n * Rank is used for ordering.\n * Than lower number then higher priority\n */\n rank: number;\n /**\n * Form field template reference\n */\n renderer: TemplateRef<any>;\n /**\n * Form field custom width in columns must be between 1 - 12\n */\n columns: Column;\n /**\n * Define form field column belongs\n */\n column: number;\n /**\n * Translations template reference\n */\n i18Strings: TemplateRef<any>;\n /**\n * Indicates if field is editable\n */\n editable: boolean;\n /**\n * Indicates when form field label should not be displayed\n */\n noLabelLayout: boolean;\n\n /**\n * A reference to the underlying FormFieldControl.\n */\n control: PlatformFormFieldControl | null;\n /**\n * Set when form field is a mandatory one.\n */\n required: boolean;\n /** Form field label */\n label?: string;\n\n /** Form fields's group. */\n formFieldGroup: Nullable<FormFieldGroup>;\n\n /** Frm field's Form Container. */\n formGroupContainer: Nullable<FormGroupContainer>;\n\n /** Grouped errors. */\n groupedErrors: FormFieldErrorDirectiveContext[];\n\n /** Combined Error directives. */\n errorDirectives: FormError[];\n\n /** Form control */\n ngControl?: NgControl;\n\n /** @hidden */\n formControl?: FormControl;\n\n /** Event emitted when errors being changed. */\n errorsChange$: Subject<void>;\n\n /** @hidden */\n innerErrorRenderers?: TemplateRef<any>;\n\n /** Whether form field has validation errors. */\n hasErrors: () => boolean;\n}\n\nexport abstract class FormFieldGroup {\n /** Group header*/\n label: string;\n\n /** Group's form name */\n formName: string;\n\n /** Group fields */\n fields: QueryList<PlatformFormField>;\n\n /**\n * Defines label's column layout.\n */\n labelColumnLayout: ColumnLayout;\n\n /**\n * Defines field's column layout.\n */\n fieldColumnLayout: ColumnLayout;\n\n /**\n * Defines gap column layout.\n */\n gapColumnLayout: ColumnLayout;\n}\n\nexport type FdpFormFieldControl<T = any> = FormFieldControl<T>;\n\nexport abstract class PlatformFormFieldControl<T = any> implements FormFieldControl<T> {\n /**\n * To allow user to determine what event he wants to trigger the messages to show\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n abstract triggers: (string | TriggerConfig)[];\n\n /** State message configuration. Used for components that can render form message inside its template. */\n abstract stateMessageConfig: Nullable<TemplateRef<any>>;\n\n /** Method for focusing on the element */\n abstract focus(event?: MouseEvent): void;\n\n /**\n * Handles even when we click on parent container which is the FormField Wrapping this\n * control\n */\n abstract onContainerClick(event: MouseEvent): void;\n\n /** @hidden */\n formMessage: Nullable<FormInputMessageGroupComponent>;\n\n /**\n * Each input control has always a value. Need to make sure we keep a convention for\n * input fields\n */\n value: T | null;\n\n /**\n * Need to have a way to set placeholder to the input\n */\n placeholder: string;\n\n /**\n * Need to have a way to set Mandatory to the input field\n */\n required: boolean;\n\n /**\n * Sets id from FF to Input\n */\n id: string;\n\n /**\n * This should be coming from Parent.\n */\n editable: boolean;\n\n /**\n * The height of the extra content at the bottom of the form control,\n * which should not affect the alignment of form control and it's label\n */\n extraContentHeightPx?: number;\n\n /**\n *\n * Form Field listen for all the changes happening inside the input\n */\n readonly stateChanges: Observable<void>;\n\n /**\n * Each input should inject its own ngControl and we should retrieve it\n */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /**\n * Keeps track if the form element is in focus\n */\n readonly focused: boolean;\n\n /** Whether control has errors */\n readonly controlInvalid: boolean;\n\n /** Corresponding element reference. */\n readonly elementRef: ElementRef;\n\n /** Form field instance. */\n formField: Nullable<PlatformFormField>;\n}\n\n/**\n * FormGroup base class.\n *\n * This class is used to create form group components.\n *\n */\nexport abstract class FormGroupContainer {\n /**\n * Angular FormGroup where all underlying controls will be attached to.\n */\n formGroup: FormGroup;\n /**\n * Translations template reference.\n */\n i18Strings: TemplateRef<any>;\n /**\n * Indicates when form is editable.\n */\n editable: boolean;\n /**\n * Indicates when labels should not be displayed.\n */\n noLabelLayout: boolean;\n\n /**\n * Defines label's column layout.\n */\n labelColumnLayout: ColumnLayout;\n\n /**\n * Defines field's column layout.\n */\n fieldColumnLayout: ColumnLayout;\n\n /**\n * Defines gap column layout.\n */\n gapColumnLayout: ColumnLayout;\n\n /**\n * Form's main title.\n */\n mainTitle?: Nullable<string>;\n\n /**\n * Attach underlying form field.\n */\n addFormField: (formField: PlatformFormField) => void;\n /**\n * Detach underlying form field.\n */\n removeFormField: (formField: PlatformFormField) => void;\n /**\n * Attach formControl.\n */\n addFormControl: (name: string, control: AbstractControl) => void;\n /**\n * Detach form formControl.\n */\n removeFormControl: (name: string) => void;\n /**\n * Attach underlying form field group.\n */\n addFormFieldGroup: (formFieldGroup: FormFieldGroup) => void;\n /**\n * Detach underlying form field group.\n */\n removeFormFieldGroup: (formFieldGroup: FormFieldGroup) => void;\n}\n","export type LabelLayout = 'horizontal' | 'vertical';\n\nexport type HintPlacement = 'left' | 'right';\n\nexport type FormZone = 'zTop' | 'zBottom' | 'zLeft' | 'zRight';\n\nexport type Column = 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport interface ColumnLayout {\n XL?: number;\n L?: number;\n M?: number;\n S?: number;\n}\n\nexport enum ColumnLayoutGridClass {\n XL = 'xl',\n L = 'lg',\n M = 'md',\n S = 'sm'\n}\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { Directive, Injectable, InjectionToken, Input, OnInit, inject } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { CollectionBaseInput } from './collection-base.input';\n\nexport interface InlineLayout {\n XL?: boolean;\n L?: boolean;\n M?: boolean;\n S?: boolean;\n}\n\nexport enum RESPONSIVE_BREAKPOINTS {\n S = 600,\n M = 1024,\n L = 1440\n}\n\nexport const RESPONSIVE_BREAKPOINTS_CONFIG = new InjectionToken<ResponsiveBreakPointConfig>(\n 'Default Responsive breakpoint config'\n);\n\n@Injectable()\nexport class ResponsiveBreakPointConfig {\n /** Large screen */\n L: number = RESPONSIVE_BREAKPOINTS['L'];\n /** Medium screen */\n M: number = RESPONSIVE_BREAKPOINTS['M'];\n /** Small screen */\n S: number = RESPONSIVE_BREAKPOINTS['S'];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResponsiveBreakpointsService {\n /** @hidden */\n breakpoints: Record<string, any> = {};\n /** @hidden */\n activeBreakpoints: string[];\n /** @hidden */\n minWidth = 'min-width';\n /** @hidden */\n maxWidth = 'max-width';\n /** @hidden */\n unit = 'px';\n\n /** @hidden */\n constructor(readonly _breakpointObserver: BreakpointObserver) {}\n\n /** subscribe to get current screen size based on config provided */\n observeBreakpointByConfig(config: ResponsiveBreakPointConfig): Subject<any> {\n const breakPointName: Subject<string> = new BehaviorSubject('S');\n\n this._breakpointObserver.observe(this._getBreakpoints(config)).subscribe((matchValues) => {\n const breakPoint = this._breakPointMeet(matchValues);\n breakPointName.next(breakPoint);\n });\n\n return breakPointName;\n }\n\n /** @hidden when screen size changes from one breakpoint to another */\n private _breakPointMeet(breakPointMatches: BreakpointState): string {\n let breakPointName: string | undefined;\n\n if (breakPointMatches.matches) {\n for (const breakpoint in breakPointMatches.breakpoints) {\n if (breakPointMatches.breakpoints[breakpoint]) {\n breakPointName = this._getBreakpointName(breakpoint);\n }\n }\n }\n\n return breakPointName ?? 'S';\n }\n\n /** @hidden */\n private _getBreakpoints(config: ResponsiveBreakPointConfig): string[] {\n let breakPointStr: string;\n this.activeBreakpoints = [];\n\n for (const screenSize of Object.keys(config)) {\n switch (screenSize) {\n case 'S':\n breakPointStr = `(${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = screenSize;\n break;\n case 'M':\n breakPointStr = `(${this.minWidth}: ${config['S']}${this.unit}) and (${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = screenSize;\n break;\n case 'L':\n breakPointStr = `(${this.minWidth}: ${config['M']}${this.unit}) and (${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = screenSize;\n\n // create entry for XL screen\n breakPointStr = `(${this.minWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = 'XL';\n break;\n }\n }\n\n return this.activeBreakpoints;\n }\n\n /** @hidden */\n private _getBreakpointName(breakpointValue): string {\n return this.breakpoints[breakpointValue];\n }\n}\n\n@Directive()\nexport abstract class InLineLayoutCollectionBaseInput extends CollectionBaseInput implements OnInit {\n /** object to change isInline property based on screen size */\n @Input()\n set inlineLayout(layout: InlineLayout | undefined) {\n if (layout) {\n this._inlineLayout = layout;\n this._isInLineLayoutEnabled = true;\n }\n this._setFieldLayout(layout);\n }\n get inlineLayout(): InlineLayout {\n return this._inlineLayout;\n }\n\n /** @hidden */\n protected _inlineCurrentValue$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n protected readonly _responsiveBreakpointsService = inject(ResponsiveBreakpointsService);\n\n /** @hidden */\n protected readonly _responsiveBreakPointConfig =\n inject(RESPONSIVE_BREAKPOINTS_CONFIG, {\n optional: true\n }) || new ResponsiveBreakPointConfig();\n\n /** @hidden */\n private _inlineLayout: InlineLayout;\n\n /** @hidden */\n private _xlIsInline: boolean;\n\n /** @hidden */\n private _lgIsInline: boolean;\n\n /** @hidden */\n private _mdIsInline: boolean;\n\n /** @hidden */\n private _sIsInline: boolean;\n\n /** @hidden */\n private _isInLineLayoutEnabled = false;\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this._isInLineLayoutEnabled) {\n this._responsiveBreakpointsService\n .observeBreakpointByConfig(this._responsiveBreakPointConfig)\n .subscribe((breakPointName) => {\n this._updateLayout(breakPointName);\n });\n }\n }\n\n /** @hidden set values of inline for each screen layout */\n private _setFieldLayout(inlineLayout?: InlineLayout): void {\n if (!inlineLayout) {\n this._isInLineLayoutEnabled = false;\n return;\n }\n try {\n this._sIsInline = !!inlineLayout['S'];\n this._mdIsInline = !!inlineLayout['M'];\n this._lgIsInline = !!inlineLayout['L'];\n this._xlIsInline = !!inlineLayout['XL'];\n } catch {\n this._isInLineLayoutEnabled = false;\n }\n }\n\n /** @hidden */\n private _updateLayout(currentBreakingPointName: string): void {\n if (this._isInLineLayoutEnabled) {\n switch (currentBreakingPointName) {\n case 'S':\n this._inlineCurrentValue$.next(this._sIsInline);\n break;\n case 'M':\n this._inlineCurrentValue$.next(this._mdIsInline);\n break;\n case 'L':\n this._inlineCurrentValue$.next(this._lgIsInline);\n break;\n case 'XL':\n this._inlineCurrentValue$.next(this._xlIsInline);\n break;\n default:\n this._inlineCurrentValue$.next(this._xlIsInline);\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'convertBytes',\n standalone: true\n})\nexport class ConvertBytesPipe implements PipeTransform {\n /** @hidden */\n private readonly _sizes: string[] = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n /** @hidden */\n transform(bytes: number): string {\n return this._convertBytes(bytes);\n }\n\n /**\n * Convert bytes to KB, MB, GB, ...\n * @param bytes number\n * @param decimals number\n */\n private _convertBytes(bytes = 0, decimals = 2): string {\n if (bytes <= 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + this._sizes[i];\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ConvertBytesPipe } from './convert-bytes/convert-bytes.pipe';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [ConvertBytesPipe],\n exports: [ConvertBytesPipe]\n})\nexport class PlatformPipeModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ModifierKeys } from '@angular/cdk/testing';\n\n/**\n * Creates a browser MouseEvent with the specified options.\n * @docs-private\n */\nexport function createMouseEvent(type: string, x = 0, y = 0, button = 0): MouseEvent {\n const event = document.createEvent('MouseEvent');\n const originalPreventDefault = event.preventDefault.bind(event);\n\n event.initMouseEvent(\n type,\n true /* canBubble */,\n true /* cancelable */,\n window /* view */,\n 0 /* detail */,\n x /* screenX */,\n y /* screenY */,\n x /* clientX */,\n y /* clientY */,\n false /* ctrlKey */,\n false /* altKey */,\n false /* shiftKey */,\n false /* metaKey */,\n button /* button */,\n null /* relatedTarget */\n );\n\n // `initMouseEvent` doesn't allow us to pass the `buttons` and\n // defaults it to 0 which looks like a fake event.\n Object.defineProperty(event, 'buttons', { get: () => 1 });\n\n // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n event.preventDefault = function (): void {\n Object.defineProperty(event, 'defaultPrevented', { get: () => true, configurable: true });\n return originalPreventDefault();\n };\n\n return event;\n}\n\n/**\n * Creates a browser TouchEvent with the specified pointer coordinates.\n * @docs-private\n */\nexport function createTouchEvent(type: string, pageX = 0, pageY = 0): Event {\n // In favor of creating events that work for most of the browsers, the event is created\n // as a basic UI Event. The necessary details for the event will be set manually.\n const event = document.createEvent('UIEvent');\n const touchDetails = { pageX, pageY };\n\n // TS3.6 removes the initUIEvent method and suggests porting to \"new UIEvent()\".\n (event as any).initUIEvent(type, true, true, window, 0);\n\n // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n // the touch details.\n Object.defineProperties(event, {\n touches: { value: [touchDetails] },\n targetTouches: { value: [touchDetails] },\n changedTouches: { value: [touchDetails] }\n });\n\n return event;\n}\n\n/**\n * Dispatches a keydown event from an element.\n * @docs-private\n */\nexport function createKeyboardEvent(\n type: string,\n keyCode: number = 0,\n key: string = '',\n target?: Element,\n modifiers: ModifierKeys = {}\n): KeyboardEvent {\n const event = document.createEvent('KeyboardEvent') as any;\n const originalPreventDefault = event.preventDefault;\n\n // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n if (event.initKeyEvent) {\n event.initKeyEvent(\n type,\n true,\n true,\n window,\n modifiers.control,\n modifiers.alt,\n modifiers.shift,\n modifiers.meta,\n keyCode\n );\n } else {\n // `initKeyboardEvent` expects to receive modifiers as a whitespace-delimited string\n // See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/initKeyboardEvent\n let modifiersList = '';\n\n if (modifiers.control) {\n modifiersList += 'Control ';\n }\n\n if (modifiers.alt) {\n modifiersList += 'Alt ';\n }\n\n if (modifiers.shift) {\n modifiersList += 'Shift ';\n }\n\n if (modifiers.meta) {\n modifiersList += 'Meta ';\n }\n\n event.initKeyboardEvent(\n type,\n true /* canBubble */,\n true /* cancelable */,\n window /* view */,\n 0 /* char */,\n key /* key */,\n 0 /* location */,\n modifiersList.trim() /* modifiersList */,\n false /* repeat */\n );\n }\n\n // Webkit Browsers don't set the keyCode when calling the init function.\n // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n Object.defineProperties(event, {\n keyCode: { get: () => keyCode },\n key: { get: () => key },\n target: { get: () => target },\n ctrlKey: { get: () => !!modifiers.control },\n altKey: { get: () => !!modifiers.alt },\n shiftKey: { get: () => !!modifiers.shift },\n metaKey: { get: () => !!modifiers.meta }\n });\n\n // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n event.preventDefault = function (): Event {\n Object.defineProperty(event, 'defaultPrevented', { get: () => true, configurable: true });\n // eslint-disable-next-line prefer-rest-params\n return originalPreventDefault.apply(this, arguments);\n };\n\n return event;\n}\n\n/**\n * Creates a fake event object with any desired event type.\n * @docs-private\n */\nexport function createFakeEvent(type: string, canBubble = false, cancelable = true): Event {\n const event = document.createEvent('Event');\n event.initEvent(type, canBubble, cancelable);\n return event;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDP_PRESET_MANAGED_COMPONENT = new InjectionToken('FdpPresetManagedComponent');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["randomId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-shared.mjs","sources":["../tmp-esm2022/shared/base.js","../tmp-esm2022/shared/platform.config.js","../tmp-esm2022/shared/utils/lang.js","../tmp-esm2022/shared/domain/data-source.js","../tmp-esm2022/shared/domain/base-data-provider.js","../tmp-esm2022/shared/domain/array-data-source.js","../tmp-esm2022/shared/domain/data-model.js","../tmp-esm2022/shared/domain/observable-data-source.js","../tmp-esm2022/shared/form/base.input.js","../tmp-esm2022/shared/form/collection-base.input.js","../tmp-esm2022/shared/form/form-field.js","../tmp-esm2022/shared/form/form-options.js","../tmp-esm2022/shared/form/inline-layout-collection-base.input.js","../tmp-esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.js","../tmp-esm2022/shared/pipes/pipe.module.js","../tmp-esm2022/shared/testing/event-objects.js","../tmp-esm2022/shared/preset-management/preset-management.token.js","../tmp-esm2022/shared/fundamental-ngx-platform-shared.js"],"sourcesContent":["import { ChangeDetectorRef, Directive, Input, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nlet randomId = 0;\n/**\n * This class contains common properties used across components.\n * this can be extended to reduce the code duplication across components.\n * @hidden for form related Base , see BaseInput.\n */\nexport class BaseComponent {\n constructor() {\n /** id for the Element */\n this.id = `fdp-id-${randomId++}`;\n /** @hidden */\n this._disabled = false;\n /** @hidden */\n this._subscriptions = new Subscription();\n /**\n * @hidden\n * Change detector ref.\n */\n this._cdr = inject(ChangeDetectorRef);\n }\n /**\n * @deprecated\n * Use `ariaLabelledBy` instead.\n */\n set ariaLabelledby(value) {\n this.ariaDescribedBy = value;\n }\n /** disabled status of the element */\n set disabled(disabled) {\n this._disabled = disabled;\n }\n get disabled() {\n return this._disabled;\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /**\n * @hidden\n * For internal usage only\n *\n * Since all components use OnPush strategy in the fundamental lib\n * it's tricky to update a child input directly from a parent component class\n *\n */\n markForCheck() {\n this._cdr.markForCheck();\n }\n /**\n * @hidden\n * For internal usage only\n *\n * Since all components use OnPush strategy in the fundamental lib\n * it's tricky to update a child input directly from a parent component class\n *\n */\n detectChanges() {\n this._cdr.detectChanges();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: BaseComponent, isStandalone: true, inputs: { ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", ariaLabelledby: \"ariaLabelledby\", ariaDescribedBy: \"ariaDescribedBy\", id: \"id\", name: \"name\", width: \"width\", disabled: \"disabled\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseComponent, decorators: [{\n type: Directive\n }], propDecorators: { ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaLabelledby: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], id: [{\n type: Input\n }], name: [{\n type: Input\n }], width: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXBDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUVqQjs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQixhQUFhO0lBRG5DO1FBdUJJLHlCQUF5QjtRQUV6QixPQUFFLEdBQUcsVUFBVSxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBbUI1QixjQUFjO1FBQ0osY0FBUyxHQUFHLEtBQUssQ0FBQztRQUU1QixjQUFjO1FBQ0osbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlDOzs7V0FHRztRQUNnQixTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0E4QnZEO0lBMUVHOzs7T0FHRztJQUNILElBQ0ksY0FBYyxDQUFDLEtBQXVCO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFrQkQscUNBQXFDO0lBQ3JDLElBQ0ksUUFBUSxDQUFDLFFBQWlCO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQWNELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsYUFBYTtRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs4R0FsRmlCLGFBQWE7a0dBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEbEMsU0FBUzs4QkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQVFGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLEVBQUU7c0JBREQsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5sZXQgcmFuZG9tSWQgPSAwO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgY29udGFpbnMgY29tbW9uIHByb3BlcnRpZXMgdXNlZCBhY3Jvc3MgY29tcG9uZW50cy5cbiAqIHRoaXMgY2FuIGJlIGV4dGVuZGVkIHRvIHJlZHVjZSB0aGUgY29kZSBkdXBsaWNhdGlvbiBhY3Jvc3MgY29tcG9uZW50cy5cbiAqIEBoaWRkZW4gZm9yIGZvcm0gcmVsYXRlZCBCYXNlICwgc2VlIEJhc2VJbnB1dC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLyoqIFNldHMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogU2V0cyB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkQnk6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIFVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYXJpYUxhYmVsbGVkYnkodmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcbiAgICAgICAgdGhpcy5hcmlhRGVzY3JpYmVkQnkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyB0aGUgYGFyaWEtZGVzY3JpYmVkYnlgIGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFEZXNjcmliZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBpZCBmb3IgdGhlIEVsZW1lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkID0gYGZkcC1pZC0ke3JhbmRvbUlkKyt9YDtcblxuICAgIC8qKiBuYW1lIGZvciB0aGUgZWxlbWVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIHdpZHRoIG9mIHRoZSBlbGVtZW50ICovXG4gICAgQElucHV0KClcbiAgICB3aWR0aDogc3RyaW5nO1xuXG4gICAgLyoqIGRpc2FibGVkIHN0YXR1cyBvZiB0aGUgZWxlbWVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2hhbmdlIGRldGVjdG9yIHJlZi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG4gICAgICpcbiAgICAgKiBTaW5jZSBhbGwgY29tcG9uZW50cyB1c2UgT25QdXNoIHN0cmF0ZWd5IGluIHRoZSBmdW5kYW1lbnRhbCBsaWJcbiAgICAgKiBpdCdzIHRyaWNreSB0byB1cGRhdGUgYSBjaGlsZCBpbnB1dCBkaXJlY3RseSBmcm9tIGEgcGFyZW50IGNvbXBvbmVudCBjbGFzc1xuICAgICAqXG4gICAgICovXG4gICAgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG4gICAgICpcbiAgICAgKiBTaW5jZSBhbGwgY29tcG9uZW50cyB1c2UgT25QdXNoIHN0cmF0ZWd5IGluIHRoZSBmdW5kYW1lbnRhbCBsaWJcbiAgICAgKiBpdCdzIHRyaWNreSB0byB1cGRhdGUgYSBjaGlsZCBpbnB1dCBkaXJlY3RseSBmcm9tIGEgcGFyZW50IGNvbXBvbmVudCBjbGFzc1xuICAgICAqXG4gICAgICovXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Platform lib Config\n */\nexport class PlatformConfig {\n /** @hidden */\n static { this.injector = null; }\n /** @hidden */\n static setInjector(injector) {\n PlatformConfig.injector = injector;\n }\n /** @hidden */\n static getInjector() {\n return PlatformConfig.injector;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformConfig, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zaGFyZWQvcGxhdGZvcm0uY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7O0FBSXJEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFDdkIsY0FBYzthQUNDLGFBQVEsR0FBb0IsSUFBSSxBQUF4QixDQUF5QjtJQU9oRCxjQUFjO0lBQ2QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFrQjtRQUNqQyxjQUFjLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNkLE1BQU0sQ0FBQyxXQUFXO1FBQ2QsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDO0lBQ25DLENBQUM7OEdBakJRLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG4vKipcbiAqIFBsYXRmb3JtIGxpYiBDb25maWdcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybUNvbmZpZyB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbnRlbnQgRGVuc2l0eSBvZiBlbGVtZW50LiAnY296eScgfCAnY29tcGFjdCcgfCAnY29uZGVuc2VkJ1xuICAgICAqL1xuICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIHNldEluamVjdG9yKGluamVjdG9yOiBJbmplY3Rvcik6IHZvaWQge1xuICAgICAgICBQbGF0Zm9ybUNvbmZpZy5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIGdldEluamVjdG9yKCk6IEluamVjdG9yIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBQbGF0Zm9ybUNvbmZpZy5pbmplY3RvcjtcbiAgICB9XG59XG4iXX0=","/** @hidden */\nexport function objectValues(obj) {\n return Object.keys(obj).map((key) => obj[key]);\n}\n/** @hidden */\nexport function objectToName(target) {\n if (isBlank(target) || (!isStringMap(target) && !isType(target))) {\n throw new Error(' Cannot convert. Uknown object');\n }\n return isType(target) ? target.prototype.constructor.name : target.constructor.name;\n}\n/** @hidden */\nexport function isJsObject(o) {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n/** @hidden */\nexport function isPresent(obj) {\n return obj !== undefined && obj !== null;\n}\n/** @hidden */\nexport function isBlank(obj) {\n return obj === undefined || obj === null;\n}\n/** @hidden */\nexport function isBoolean(obj) {\n return typeof obj === 'boolean';\n}\n/** @hidden */\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\n/** @hidden */\nexport function isString(obj) {\n return typeof obj === 'string';\n}\n/** @hidden */\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\n/** @hidden */\nexport function isType(obj) {\n return isFunction(obj);\n}\n/** @hidden */\nexport function isStringMap(obj) {\n return typeof obj === 'object' && obj !== null;\n}\n/** @hidden */\nexport function isObject(item) {\n return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n/** @hidden */\nexport function isPromise(obj) {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && isFunction(obj.then);\n}\n/** @hidden */\nexport function isSubscribable(obj) {\n return !!obj && isFunction(obj.subscribe);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL3V0aWxzL2xhbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYztBQUNkLE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBUTtJQUNqQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBVztJQUNwQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0FBQ3hGLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBUTtJQUM5QixPQUFPLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQztBQUM3QyxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBUTtJQUM1QixPQUFPLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQztBQUM3QyxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBUTtJQUM5QixPQUFPLE9BQU8sR0FBRyxLQUFLLFNBQVMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBUTtJQUM3QixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztBQUNuQyxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBUTtJQUM3QixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztBQUNuQyxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBUTtJQUMvQixPQUFPLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBUTtJQUMzQixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBUTtJQUNoQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQ25ELENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLFFBQVEsQ0FBSSxJQUFPO0lBQy9CLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDO0FBQzdFLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLFNBQVMsQ0FBVSxHQUFRO0lBQ3ZDLDJDQUEyQztJQUMzQyxxRUFBcUU7SUFDckUsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQTBCO0lBQ3JELE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VmFsdWVzKG9iajogYW55KTogYW55W10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLm1hcCgoa2V5KSA9PiBvYmpba2V5XSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9OYW1lKHRhcmdldDogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoaXNCbGFuayh0YXJnZXQpIHx8ICghaXNTdHJpbmdNYXAodGFyZ2V0KSAmJiAhaXNUeXBlKHRhcmdldCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignIENhbm5vdCBjb252ZXJ0LiBVa25vd24gb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVHlwZSh0YXJnZXQpID8gdGFyZ2V0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lIDogdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWU7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNKc09iamVjdChvOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbyAhPT0gbnVsbCAmJiAodHlwZW9mIG8gPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIG8gPT09ICdvYmplY3QnKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXNlbnQob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqICE9PSB1bmRlZmluZWQgJiYgb2JqICE9PSBudWxsO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQmxhbmsob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQgfHwgb2JqID09PSBudWxsO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbihvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnYm9vbGVhbic7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ251bWJlcic7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcob2JqOiBhbnkpOiBvYmogaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbihvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKG9iaik7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNYXAob2JqOiBhbnkpOiBvYmogaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdDxUPihpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpdGVtKSAmJiBpdGVtICE9PSBudWxsO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZTxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBQcm9taXNlPFQ+IHtcbiAgICAvLyBhbGxvdyBhbnkgUHJvbWlzZS9BKyBjb21wbGlhbnQgdGhlbmFibGUuXG4gICAgLy8gSXQncyB1cCB0byB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGF0IG9iai50aGVuIGNvbmZvcm1zIHRvIHRoZSBzcGVjXG4gICAgcmV0dXJuICEhb2JqICYmIGlzRnVuY3Rpb24ob2JqLnRoZW4pO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3Vic2NyaWJhYmxlKG9iajogYW55IHwgT2JzZXJ2YWJsZTxhbnk+KTogb2JqIGlzIE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuICEhb2JqICYmIGlzRnVuY3Rpb24ob2JqLnN1YnNjcmliZSk7XG59XG4iXX0=","/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n *\n * When working with large set of data using components such as:\n * - Datatables\n * - InputSearch\n * - ComboBox (Autocomplete)\n * - Tree\n * - List\n * - etc..\n * and for these we need to unify the way we access a data. Currently we leave most of the complex\n * data access or data manipulation on application developer which leads to different\n * implementation approaches and allot of code duplication.\n *\n * It is common practice when working with different data input sources we try to apply some\n * Design patterns e.g. Adapter Pattern that provides us with guidelines how different interfaces\n * can talk to each other and from here we can derive another pattern so called Datasource pattern\n * which is high-level architectural pattern to abstract data and internal resources\n * access (DB calls, Rest calls, domain objects) with a mininal amount a code.\n *\n * What we want to achieve is to define abstract layer where each specific resource type needs to\n * implement and move all the related logic into reusable DataSources. (TableDataSource,\n * ComboBoxDataSource, ... )\n *\n * Observable<T[]> is a reactive stream, that changes its content based on what it pushed\n * into it using .next().\n *\n * Each type of data component such Autocomplete, DataTable, List,.. needs to provide its own\n * specific implementation to handle specific use-case.\n *\n * ```\n * export abstract class DataTableDataSource<T> implements DataSource<T> {\n * data: T[];\n * filterTerm: string;\n * paginator: Paginator | null\n *\n * filterPredicate: ((data: T, filter: string) => boolean;\n *\n * sortData: ((data: T[], sort: Sort) => T[]);\n *\n * //\n * create (t: T): T;\n * update (t: T): T;\n * remove (t: T): T;\n *\n * }\n * ```\n *\n * After we define a format we can start creating concrete implementations based on the usage or\n * resource .e.g:\n *\n *\n * ```\n * export abstract class RestAutoCompleteDataSource<T> extend DataChooserDataSource <T> {\n * // We can use a registry that is able to map a Entity Type = Endpoint\n * // have identical way how to fetch , search ,...\n * }\n * ```\n *\n * Probably when working with data only locally, it can be:\n *\n * ```\n * export abstract class LocalArrayAutoCompleteDataSource<T> extend DataChooserDataSource <T> {\n * }\n * ```\n *\n *\n */\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nexport var MatchingStrategy;\n(function (MatchingStrategy) {\n MatchingStrategy[\"STARTS_WITH_PER_TERM\"] = \"starts with per term\";\n MatchingStrategy[\"STARTS_WITH\"] = \"starts with\";\n MatchingStrategy[\"CONTAINS\"] = \"contains\";\n})(MatchingStrategy || (MatchingStrategy = {}));\nexport const DATA_PROVIDERS = new InjectionToken('DataProviderRegistry');\n/** Matching Strategy: StartsWithPerTerm - Reqexp */\nexport function getMatchingStrategyStartsWithPerTermReqexp(value) {\n // We need to escape all special characters in order not to break the regular expression.\n return new RegExp(`(\\\\s|^)(${value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')})`, 'gi');\n}\n/** @hidden */\nexport function isDataSource(value) {\n return value && typeof value.open === 'function';\n}\n/**\n * Provider is a data driver that can access data and retrieve them. It knows how to get 1\n * or more records, maybe do paging and some other things.\n *\n */\nexport class DataProvider {\n constructor() {\n /** @hidden */\n this._matchingStrategy = MatchingStrategy.STARTS_WITH;\n /** @hidden */\n this._matchingBy = null;\n }\n /**\n * Tells if this DataProvider supports INSERT, REMOVE\n *\n */\n canCRUD() {\n return false;\n }\n // Implement to support CRUD operations.\n /** @hidden */\n getOne(params) {\n throw new Error('Not supported');\n }\n /** @hidden */\n insert(payload, params) {\n throw new Error('Not supported');\n }\n /** @hidden */\n remove(params) {\n throw new Error('Not supported');\n }\n /** @hidden */\n update(payload, params) {\n throw new Error('Not supported');\n }\n /** @hidden */\n setLookupKey(key) {\n this._keyPath = key;\n }\n /** @hidden */\n setMatchingBy(matchingBy) {\n this._matchingBy = matchingBy;\n }\n /** @hidden */\n setMatchingStrategy(strategy) {\n this._matchingStrategy = strategy;\n }\n}\nexport class ComboBoxDataSource {\n /** @hidden */\n static { this.MaxLimit = 5; }\n /** @hidden */\n get isDataLoading() {\n return this._dataLoading;\n }\n /** @hidden */\n constructor(dataProvider) {\n this.dataProvider = dataProvider;\n /** @hidden */\n this.limitless = false;\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._onDestroy$ = new Subject();\n /** @hidden */\n this._dataLoading = false;\n }\n /** @hidden */\n match(predicate = new Map(), start = 0, end = Infinity) {\n this._onDataRequested$.next();\n this._dataLoading = true;\n const searchParam = new Map();\n if (typeof predicate === 'string') {\n searchParam.set('query', predicate);\n }\n else if (predicate instanceof Map) {\n predicate.forEach((v, k) => searchParam.set(k, v));\n }\n else {\n throw new Error('DataSource.match() predicate can only accepts string and Map');\n }\n if (!searchParam.has('limit') && !this.limitless) {\n searchParam.set('limit', ComboBoxDataSource.MaxLimit);\n }\n this.dataProvider\n .fetch(searchParam, start, end)\n .pipe(takeUntil(this._onDestroy$))\n .subscribe({\n next: (result) => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n this._dataChanges.next(result);\n },\n error: () => {\n this._onDataReceived$.next();\n this._dataLoading = false;\n }\n });\n }\n /** @hidden */\n open() {\n return this._dataChanges.pipe(takeUntil(this._onDestroy$));\n }\n /** @hidden */\n close() {\n this._onDestroy$.next();\n }\n /** @hidden */\n onDataRequested() {\n return this._onDataRequested$.asObservable();\n }\n /** @hidden */\n onDataReceived() {\n return this._onDataReceived$.asObservable();\n }\n}\nexport class MultiComboBoxDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(dataProvider) {\n super(dataProvider);\n this.dataProvider = dataProvider;\n }\n}\nexport class SearchFieldDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(dataProvider) {\n super(dataProvider);\n this.dataProvider = dataProvider;\n }\n}\nexport class ListDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(dataProvider) {\n super(dataProvider);\n this.dataProvider = dataProvider;\n /** @hidden */\n this.limitless = true;\n }\n}\nexport class MultiInputDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(dataProvider) {\n super(dataProvider);\n this.dataProvider = dataProvider;\n }\n}\nexport class ApprovalFlowUserDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(dataProvider) {\n super(dataProvider);\n this.dataProvider = dataProvider;\n }\n}\nexport class ApprovalFlowTeamDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(dataProvider) {\n super(dataProvider);\n this.dataProvider = dataProvider;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NoYXJlZC9kb21haW4vZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRUc7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQ3hCLGlFQUE2QyxDQUFBO0lBQzdDLCtDQUEyQixDQUFBO0lBQzNCLHlDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFpQyxzQkFBc0IsQ0FBQyxDQUFDO0FBaUJ6RyxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLDBDQUEwQyxDQUFDLEtBQWE7SUFDcEUseUZBQXlGO0lBQ3pGLE9BQU8sSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsWUFBWSxDQUFVLEtBQVU7SUFDNUMsT0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQUNyRCxDQUFDO0FBR0Q7Ozs7R0FJRztBQUNILE1BQU0sT0FBZ0IsWUFBWTtJQUFsQztRQU1JLGNB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cHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKipcbiAqXG4gKiBXaGVuIHdvcmtpbmcgd2l0aCBsYXJnZSBzZXQgb2YgZGF0YSB1c2luZyBjb21wb25lbnRzIHN1Y2ggYXM6XG4gKiAgLSBEYXRhdGFibGVzXG4gKiAgLSBJbnB1dFNlYXJjaFxuICogIC0gQ29tYm9Cb3ggKEF1dG9jb21wbGV0ZSlcbiAqICAtIFRyZWVcbiAqICAtIExpc3RcbiAqICAtIGV0Yy4uXG4gKiAgYW5kIGZvciB0aGVzZSB3ZSBuZWVkIHRvIHVuaWZ5IHRoZSB3YXkgd2UgYWNjZXNzIGEgZGF0YS4gQ3VycmVudGx5IHdlIGxlYXZlIG1vc3Qgb2YgdGhlIGNvbXBsZXhcbiAqICBkYXRhIGFjY2VzcyBvciBkYXRhIG1hbmlwdWxhdGlvbiBvbiBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgd2hpY2ggbGVhZHMgdG8gZGlmZmVyZW50XG4gKiAgaW1wbGVtZW50YXRpb24gYXBwcm9hY2hlcyBhbmQgYWxsb3Qgb2YgY29kZSBkdXBsaWNhdGlvbi5cbiAqXG4gKiAgSXQgaXMgY29tbW9uIHByYWN0aWNlIHdoZW4gd29ya2luZyB3aXRoIGRpZmZlcmVudCBkYXRhIGlucHV0IHNvdXJjZXMgd2UgdHJ5IHRvIGFwcGx5IHNvbWVcbiAqICBEZXNpZ24gcGF0dGVybnMgZS5nLiBBZGFwdGVyIFBhdHRlcm4gdGhhdCBwcm92aWRlcyB1cyB3aXRoIGd1aWRlbGluZXMgaG93IGRpZmZlcmVudCBpbnRlcmZhY2VzXG4gKiAgY2FuIHRhbGsgdG8gZWFjaCBvdGhlciBhbmQgZnJvbSBoZXJlIHdlIGNhbiBkZXJpdmUgYW5vdGhlciBwYXR0ZXJuIHNvIGNhbGxlZCBEYXRhc291cmNlIHBhdHRlcm5cbiAqICB3aGljaCBpcyBoaWdoLWxldmVsIGFyY2hpdGVjdHVyYWwgcGF0dGVybiB0byBhYnN0cmFjdCBkYXRhIGFuZCBpbnRlcm5hbCByZXNvdXJjZXNcbiAqICBhY2Nlc3MgKERCIGNhbGxzLCBSZXN0IGNhbGxzLCBkb21haW4gb2JqZWN0cykgd2l0aCBhIG1pbmluYWwgYW1vdW50IGEgY29kZS5cbiAqXG4gKiBXaGF0IHdlIHdhbnQgdG8gYWNoaWV2ZSBpcyB0byBkZWZpbmUgYWJzdHJhY3QgbGF5ZXIgd2hlcmUgZWFjaCBzcGVjaWZpYyByZXNvdXJjZSB0eXBlIG5lZWRzIHRvXG4gKiBpbXBsZW1lbnQgYW5kIG1vdmUgYWxsIHRoZSByZWxhdGVkIGxvZ2ljIGludG8gcmV1c2FibGUgRGF0YVNvdXJjZXMuIChUYWJsZURhdGFTb3VyY2UsXG4gKiBDb21ib0JveERhdGFTb3VyY2UsIC4uLiApXG4gKlxuICogT2JzZXJ2YWJsZTxUW10+IGlzIGEgcmVhY3RpdmUgc3RyZWFtLCB0aGF0IGNoYW5nZXMgaXRzIGNvbnRlbnQgYmFzZWQgb24gd2hhdCBpdCBwdXNoZWRcbiAqIGludG8gaXQgdXNpbmcgLm5leHQoKS5cbiAqXG4gKiBFYWNoIHR5cGUgb2YgZGF0YSBjb21wb25lbnQgc3VjaCBBdXRvY29tcGxldGUsIERhdGFUYWJsZSwgTGlzdCwuLiBuZWVkcyB0byBwcm92aWRlIGl0cyBvd25cbiAqIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZSBzcGVjaWZpYyB1c2UtY2FzZS5cbiAqXG4gKiBgYGBcbiAqICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0YVRhYmxlRGF0YVNvdXJjZTxUPiBpbXBsZW1lbnRzIERhdGFTb3VyY2U8VD4ge1xuICogICAgZGF0YTogVFtdO1xuICogICAgZmlsdGVyVGVybTogc3RyaW5nO1xuICogICAgcGFnaW5hdG9yOiBQYWdpbmF0b3IgfCBudWxsXG4gKlxuICogICAgZmlsdGVyUHJlZGljYXRlOiAoKGRhdGE6IFQsIGZpbHRlcjogc3RyaW5nKSA9PiBib29sZWFuO1xuICpcbiAqICAgIHNvcnREYXRhOiAoKGRhdGE6IFRbXSwgc29ydDogU29ydCkgPT4gVFtdKTtcbiAqXG4gKiAgICAvL1xuICogICAgY3JlYXRlICh0OiBUKTogVDtcbiAqICAgIHVwZGF0ZSAodDogVCk6IFQ7XG4gKiAgICByZW1vdmUgKHQ6IFQpOiBUO1xuICpcbiAqICB9XG4gKiBgYGBcbiAqXG4gKiBBZnRlciB3ZSBkZWZpbmUgYSBmb3JtYXQgd2UgY2FuIHN0YXJ0IGNyZWF0aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBiYXNlZCBvbiB0aGUgdXNhZ2Ugb3JcbiAqIHJlc291cmNlIC5lLmc6XG4gKlxuICpcbiAqIGBgYFxuICogZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc3RBdXRvQ29tcGxldGVEYXRhU291cmNlPFQ+IGV4dGVuZCBEYXRhQ2hvb3NlckRhdGFTb3VyY2UgPFQ+IHtcbiAqICAgLy8gV2UgY2FuIHVzZSBhIHJlZ2lzdHJ5IHRoYXQgaXMgYWJsZSB0byBtYXAgYSBFbnRpdHkgVHlwZSA9IEVuZHBvaW50XG4gKiAgIC8vIGhhdmUgaWRlbnRpY2FsIHdheSBob3cgdG8gZmV0Y2ggLCBzZWFyY2ggLC4uLlxuICogfVxuICogYGBgXG4gKlxuICogUHJvYmFibHkgd2hlbiB3b3JraW5nIHdpdGggZGF0YSBvbmx5IGxvY2FsbHksIGl0IGNhbiBiZTpcbiAqXG4gKiBgYGBcbiAqIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2NhbEFycmF5QXV0b0NvbXBsZXRlRGF0YVNvdXJjZTxUPiBleHRlbmQgRGF0YUNob29zZXJEYXRhU291cmNlIDxUPiB7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKlxuICovXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBlbnVtIE1hdGNoaW5nU3RyYXRlZ3kge1xuICAgIFNUQVJUU19XSVRIX1BFUl9URVJNID0gJ3N0YXJ0cyB3aXRoIHBlciB0ZXJtJyxcbiAgICBTVEFSVFNfV0lUSCA9ICdzdGFydHMgd2l0aCcsXG4gICAgQ09OVEFJTlMgPSAnY29udGFpbnMnXG59XG5cbmV4cG9ydCBjb25zdCBEQVRBX1BST1ZJREVSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNYXA8c3RyaW5nLCBEYXRhUHJvdmlkZXI8YW55Pj4+KCdEYXRhUHJvdmlkZXJSZWdpc3RyeScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTb3VyY2U8VCwgUCA9IFRbXSwgTCA9IGJvb2xlYW4+IHtcbiAgICBpc0RhdGFMb2FkaW5nOiBMO1xuICAgIG9wZW4oKTogT2JzZXJ2YWJsZTxQPjtcbiAgICBjbG9zZSgpOiB2b2lkO1xuICAgIG9uRGF0YVJlcXVlc3RlZCgpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAgIG9uRGF0YVJlY2VpdmVkKCk6IE9ic2VydmFibGU8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIE1hdGNoQnkgPSAoaXRlbTogYW55KSA9PiBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF0Y2hpbmdCeSB7XG4gICAgZmlyc3RCeTogTWF0Y2hCeTtcbiAgICBzZWNvbmRhcnlCeT86IE1hdGNoQnk7XG59XG5cbi8qKiBNYXRjaGluZyBTdHJhdGVneTogU3RhcnRzV2l0aFBlclRlcm0gLSBSZXFleHAgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGluZ1N0cmF0ZWd5U3RhcnRzV2l0aFBlclRlcm1SZXFleHAodmFsdWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgLy8gV2UgbmVlZCB0byBlc2NhcGUgYWxsIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBvcmRlciBub3QgdG8gYnJlYWsgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgKFxcXFxzfF4pKCR7dmFsdWUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKX0pYCwgJ2dpJyk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhU291cmNlPFQgPSBhbnk+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEYXRhU291cmNlPFQ+IHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLm9wZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCB0eXBlIFByb3ZpZGVyUGFyYW1zID0gUmVhZG9ubHlNYXA8c3RyaW5nLCBhbnk+O1xuLyoqXG4gKiBQcm92aWRlciBpcyBhIGRhdGEgZHJpdmVyIHRoYXQgY2FuIGFjY2VzcyBkYXRhIGFuZCByZXRyaWV2ZSB0aGVtLiBJdCBrbm93cyBob3cgdG8gZ2V0IDFcbiAqIG9yIG1vcmUgcmVjb3JkcywgbWF5YmUgZG8gcGFnaW5nIGFuZCBzb21lIG90aGVyIHRoaW5ncy5cbiAqXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhUHJvdmlkZXI8VD4ge1xuICAgIGFic3RyYWN0IGZldGNoKHBhcmFtczogUHJvdmlkZXJQYXJhbXMsIHN0YXJ0PzogbnVtYmVyLCBlbmQ/OiBudW1iZXIpOiBPYnNlcnZhYmxlPFRbXT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfa2V5UGF0aDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX21hdGNoaW5nU3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kgPSBNYXRjaGluZ1N0cmF0ZWd5LlNUQVJUU19XSVRIO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX21hdGNoaW5nQnk6IE1hdGNoaW5nQnkgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0VG90YWxJdGVtcz8oKTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gICAgLyoqXG4gICAgICogVGVsbHMgaWYgdGhpcyBEYXRhUHJvdmlkZXIgc3VwcG9ydHMgSU5TRVJULCBSRU1PVkVcbiAgICAgKlxuICAgICAqL1xuICAgIGNhbkNSVUQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnQgdG8gc3VwcG9ydCBDUlVEIG9wZXJhdGlvbnMuXG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldE9uZShwYXJhbXM6IFByb3ZpZGVyUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaW5zZXJ0KHBheWxvYWQ6IGFueSwgcGFyYW1zPzogUHJvdmlkZXJQYXJhbXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmUocGFyYW1zOiBQcm92aWRlclBhcmFtcyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZShwYXlsb2FkOiBhbnksIHBhcmFtcz86IFByb3ZpZGVyUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0TG9va3VwS2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleVBhdGggPSBrZXk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRNYXRjaGluZ0J5KG1hdGNoaW5nQnk6IE1hdGNoaW5nQnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWF0Y2hpbmdCeSA9IG1hdGNoaW5nQnk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRNYXRjaGluZ1N0cmF0ZWd5KHN0cmF0ZWd5OiBNYXRjaGluZ1N0cmF0ZWd5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21hdGNoaW5nU3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21ib0JveERhdGFTb3VyY2U8VD4gaW1wbGVtZW50cyBEYXRhU291cmNlPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyByZWFkb25seSBNYXhMaW1pdCA9IDU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxpbWl0bGVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFDaGFuZ2VzOiBCZWhhdmlvclN1YmplY3Q8VFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29uRGF0YVJlcXVlc3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vbkRhdGFSZWNlaXZlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGF0YUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzRGF0YUxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhTG9hZGluZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcjxhbnk+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtYXRjaChwcmVkaWNhdGU6IHN0cmluZyB8IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLCBzdGFydCA9IDAsIGVuZCA9IEluZmluaXR5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGF0YVJlcXVlc3RlZCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgc2VhcmNoUGFyYW0uc2V0KCdxdWVyeScsIHByZWRpY2F0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJlZGljYXRlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBwcmVkaWNhdGUuZm9yRWFjaCgodiwgaykgPT4gc2VhcmNoUGFyYW0uc2V0KGssIHYpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGF0YVNvdXJjZS5tYXRjaCgpIHByZWRpY2F0ZSBjYW4gb25seSBhY2NlcHRzIHN0cmluZyBhbmQgTWFwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNlYXJjaFBhcmFtLmhhcygnbGltaXQnKSAmJiAhdGhpcy5saW1pdGxlc3MpIHtcbiAgICAgICAgICAgIHNlYXJjaFBhcmFtLnNldCgnbGltaXQnLCBDb21ib0JveERhdGFTb3VyY2UuTWF4TGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIC5mZXRjaChzZWFyY2hQYXJhbSwgc3RhcnQsIGVuZClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRhdGFSZWNlaXZlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhQ2hhbmdlcy5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRhdGFSZWNlaXZlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3BlbigpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25EYXRhUmVxdWVzdGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVxdWVzdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uRGF0YVJlY2VpdmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVjZWl2ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE11bHRpQ29tYm9Cb3hEYXRhU291cmNlPFQ+IGV4dGVuZHMgQ29tYm9Cb3hEYXRhU291cmNlPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKGRhdGFQcm92aWRlcik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VhcmNoRmllbGREYXRhU291cmNlPFQ+IGV4dGVuZHMgQ29tYm9Cb3hEYXRhU291cmNlPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKGRhdGFQcm92aWRlcik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdERhdGFTb3VyY2U8VD4gZXh0ZW5kcyBDb21ib0JveERhdGFTb3VyY2U8VD4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGltaXRsZXNzID0gdHJ1ZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKGRhdGFQcm92aWRlcik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTXVsdGlJbnB1dERhdGFTb3VyY2U8VD4gZXh0ZW5kcyBDb21ib0JveERhdGFTb3VyY2U8VD4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyPGFueT4pIHtcbiAgICAgICAgc3VwZXIoZGF0YVByb3ZpZGVyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZTxUPiBleHRlbmRzIENvbWJvQm94RGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXI8VD4pIHtcbiAgICAgICAgc3VwZXIoZGF0YVByb3ZpZGVyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZTxUPiBleHRlbmRzIENvbWJvQm94RGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXI8VD4pIHtcbiAgICAgICAgc3VwZXIoZGF0YVByb3ZpZGVyKTtcbiAgICB9XG59XG4iXX0=","/**\n * Default implementation for Observable Arrays and Arrays.\n */\nimport { isObservable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { isFunction, isJsObject, objectToName, objectValues } from '../utils/lang';\nimport { DataProvider, MatchingStrategy, getMatchingStrategyStartsWithPerTermReqexp } from './data-source';\n/**\n * In Memory implementation of DataProvider that supports fulltext search\n */\nexport class BaseDataProvider extends DataProvider {\n /** @hidden */\n constructor(values) {\n super();\n this.values = values;\n }\n /** @hidden */\n fetch(params) {\n const observable = isObservable(this.values) ? this.values : of(this.values);\n const queryString = params.get('query');\n const limit = params.get('limit') || 50;\n if (!queryString || queryString === '*') {\n return observable.pipe(map((items) => this.withLimit(items, limit)));\n }\n const toLowerPattern = queryString.toLowerCase();\n return observable.pipe(map((items) => {\n const result = [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (this.matches(item, toLowerPattern)) {\n result.push(item);\n if (result.length >= limit) {\n break;\n }\n }\n }\n return result;\n }));\n }\n /**\n * Warning: If you dont supply search Key and you want fulltext search and you use this\n * default implementation be aware that it can perform poorly as it is naive implementation\n * that does not do deep compare.\n */\n matches(item, pattern) {\n if (!this._matchingBy) {\n return false;\n }\n const { firstBy, secondaryBy } = this._matchingBy;\n let matched = this.matchesBy(item, pattern, firstBy);\n if (!matched && secondaryBy) {\n matched = this.matchesBy(item, pattern, secondaryBy);\n }\n return matched;\n }\n /** @hidden */\n matchesBy(item, pattern, matchingBy) {\n const value = isJsObject(item) && matchingBy ? matchingBy(item) : item;\n if (isFunction(value)) {\n return value.call(item);\n }\n else if (isJsObject(value)) {\n return this.hasObjectValue(item, pattern);\n }\n else if (this._matchingStrategy === MatchingStrategy.STARTS_WITH_PER_TERM) {\n const reqexp = getMatchingStrategyStartsWithPerTermReqexp(pattern);\n return !!pattern && !!value && !!value.match(reqexp);\n }\n else if (this._matchingStrategy === MatchingStrategy.STARTS_WITH) {\n return !!pattern && !!value && value.toString().toLowerCase().startsWith(pattern.toLowerCase());\n }\n else if (this._matchingStrategy === MatchingStrategy.CONTAINS) {\n return !!pattern && !!value && value.toString().toLowerCase().indexOf(pattern) > -1;\n }\n else {\n return !!pattern && !!value && value.toString().toLowerCase() === pattern;\n }\n }\n /** @hidden */\n hasObjectValue(obj, pattern) {\n const values = objectValues(obj);\n const parentObj = objectToName(obj);\n const length2 = values.filter((value) => {\n if (!value || Array.isArray(value)) {\n return false;\n }\n else if (!isJsObject(value) && !isFunction(value)) {\n return value.toString().toLowerCase().indexOf(pattern) !== -1;\n }\n else if (isJsObject(value) && objectToName(value) !== parentObj) {\n return this.hasObjectValue(value, pattern);\n }\n return false;\n }).length;\n return length2 > 0;\n }\n /** @hidden */\n withLimit(data, limit) {\n if (limit && data.length > limit) {\n return data.slice(0, limit);\n }\n return data;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYXRhLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zaGFyZWQvZG9tYWluL2Jhc2UtZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBYyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQVcsZ0JBQWdCLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEg7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsWUFBZTtJQUNwRCxjQUFjO0lBQ2QsWUFBc0IsTUFBNkI7UUFDL0MsS0FBSyxFQUFFLENBQUM7UUFEVSxXQUFNLEdBQU4sTUFBTSxDQUF1QjtJQUVuRCxDQUFDO0lBRUQsY0FBYztJQUNkLEtBQUssQ0FBQyxNQUF3QjtRQUMxQixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDdEMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFD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QUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDVixPQUFPLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7SUFDTixTQUFTLENBQUMsSUFBYyxFQUFFLEtBQWM7UUFDNUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIE9ic2VydmFibGUgQXJyYXlzIGFuZCBBcnJheXMuXG4gKi9cbmltcG9ydCB7IE9ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNKc09iamVjdCwgb2JqZWN0VG9OYW1lLCBvYmplY3RWYWx1ZXMgfSBmcm9tICcuLi91dGlscy9sYW5nJztcbmltcG9ydCB7IERhdGFQcm92aWRlciwgTWF0Y2hCeSwgTWF0Y2hpbmdTdHJhdGVneSwgZ2V0TWF0Y2hpbmdTdHJhdGVneVN0YXJ0c1dpdGhQZXJUZXJtUmVxZXhwIH0gZnJvbSAnLi9kYXRhLXNvdXJjZSc7XG5cbi8qKlxuICogSW4gTWVtb3J5IGltcGxlbWVudGF0aW9uIG9mIERhdGFQcm92aWRlciB0aGF0IHN1cHBvcnRzIGZ1bGx0ZXh0IHNlYXJjaFxuICovXG5leHBvcnQgY2xhc3MgQmFzZURhdGFQcm92aWRlcjxUPiBleHRlbmRzIERhdGFQcm92aWRlcjxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdmFsdWVzOiBPYnNlcnZhYmxlPFRbXT4gfCBUW10pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZldGNoKHBhcmFtczogTWFwPHN0cmluZywgYW55Pik6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGUgPSBpc09ic2VydmFibGUodGhpcy52YWx1ZXMpID8gdGhpcy52YWx1ZXMgOiBvZih0aGlzLnZhbHVlcyk7XG5cbiAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXMuZ2V0KCdxdWVyeScpO1xuICAgICAgICBjb25zdCBsaW1pdCA9IHBhcmFtcy5nZXQoJ2xpbWl0JykgfHwgNTA7XG5cbiAgICAgICAgaWYgKCFxdWVyeVN0cmluZyB8fCBxdWVyeVN0cmluZyA9PT0gJyonKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKG1hcCgoaXRlbXMpID0+IHRoaXMud2l0aExpbWl0KGl0ZW1zLCBsaW1pdCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvTG93ZXJQYXR0ZXJuID0gcXVlcnlTdHJpbmcudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaGVzKGl0ZW0sIHRvTG93ZXJQYXR0ZXJuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+PSBsaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2FybmluZzogSWYgeW91IGRvbnQgc3VwcGx5IHNlYXJjaCBLZXkgYW5kIHlvdSB3YW50IGZ1bGx0ZXh0IHNlYXJjaCBhbmQgeW91IHVzZSB0aGlzXG4gICAgICogZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBiZSBhd2FyZSB0aGF0IGl0IGNhbiAgcGVyZm9ybSBwb29ybHkgYXMgaXQgaXMgbmFpdmUgaW1wbGVtZW50YXRpb25cbiAgICAgKiB0aGF0IGRvZXMgbm90IGRvIGRlZXAgY29tcGFyZS5cbiAgICAgKi9cbiAgICBtYXRjaGVzKGl0ZW06IFQsIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX21hdGNoaW5nQnkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGZpcnN0QnksIHNlY29uZGFyeUJ5IH0gPSB0aGlzLl9tYXRjaGluZ0J5O1xuXG4gICAgICAgIGxldCBtYXRjaGVkID0gdGhpcy5tYXRjaGVzQnkoaXRlbSwgcGF0dGVybiwgZmlyc3RCeSk7XG4gICAgICAgIGlmICghbWF0Y2hlZCAmJiBzZWNvbmRhcnlCeSkge1xuICAgICAgICAgICAgbWF0Y2hlZCA9IHRoaXMubWF0Y2hlc0J5KGl0ZW0sIHBhdHRlcm4sIHNlY29uZGFyeUJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbWF0Y2hlc0J5KGl0ZW06IGFueSwgcGF0dGVybjogc3RyaW5nLCBtYXRjaGluZ0J5OiBNYXRjaEJ5KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXNKc09iamVjdChpdGVtKSAmJiBtYXRjaGluZ0J5ID8gbWF0Y2hpbmdCeShpdGVtKSA6IGl0ZW07XG5cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuY2FsbChpdGVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0pzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzT2JqZWN0VmFsdWUoaXRlbSwgcGF0dGVybik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbWF0Y2hpbmdTdHJhdGVneSA9PT0gTWF0Y2hpbmdTdHJhdGVneS5TVEFSVFNfV0lUSF9QRVJfVEVSTSkge1xuICAgICAgICAgICAgY29uc3QgcmVxZXhwID0gZ2V0TWF0Y2hpbmdTdHJhdGVneVN0YXJ0c1dpdGhQZXJUZXJtUmVxZXhwKHBhdHRlcm4pO1xuICAgICAgICAgICAgcmV0dXJuICEhcGF0dGVybiAmJiAhIXZhbHVlICYmICEhdmFsdWUubWF0Y2gocmVxZXhwKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9tYXRjaGluZ1N0cmF0ZWd5ID09PSBNYXRjaGluZ1N0cmF0ZWd5LlNUQVJUU19XSVRIKSB7XG4gICAgICAgICAgICByZXR1cm4gISFwYXR0ZXJuICYmICEhdmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocGF0dGVybi50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9tYXRjaGluZ1N0cmF0ZWd5ID09PSBNYXRjaGluZ1N0cmF0ZWd5LkNPTlRBSU5TKSB7XG4gICAgICAgICAgICByZXR1cm4gISFwYXR0ZXJuICYmICEhdmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocGF0dGVybikgPiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAhIXBhdHRlcm4gJiYgISF2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IHBhdHRlcm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBoYXNPYmplY3RWYWx1ZShvYmo6IGFueSwgcGF0dGVybjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9iamVjdFZhbHVlcyhvYmopO1xuICAgICAgICBjb25zdCBwYXJlbnRPYmogPSBvYmplY3RUb05hbWUob2JqKTtcbiAgICAgICAgY29uc3QgbGVuZ3RoMiA9IHZhbHVlcy5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0pzT2JqZWN0KHZhbHVlKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocGF0dGVybikgIT09IC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pzT2JqZWN0KHZhbHVlKSAmJiBvYmplY3RUb05hbWUodmFsdWUpICE9PSBwYXJlbnRPYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNPYmplY3RWYWx1ZSh2YWx1ZSwgcGF0dGVybik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSkubGVuZ3RoO1xuICAgICAgICByZXR1cm4gbGVuZ3RoMiA+IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHdpdGhMaW1pdChkYXRhOiBBcnJheTxUPiwgbGltaXQ/OiBudW1iZXIpOiBBcnJheTxUPiB7XG4gICAgICAgIGlmIChsaW1pdCAmJiBkYXRhLmxlbmd0aCA+IGxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5zbGljZSgwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxufVxuIl19","/**\n * Default implementation for Arrays.\n */\nimport { BaseDataProvider } from './base-data-provider';\nimport { ComboBoxDataSource, ListDataSource, MultiComboBoxDataSource, MultiInputDataSource } from './data-source';\nexport class ArrayComboBoxDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\nexport class ArrayMultiComboBoxDataSource extends MultiComboBoxDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\nexport class ArrayListDataSource extends ListDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\nexport class ArrayMultiInputDataSource extends MultiInputDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NoYXJlZC9kb21haW4vYXJyYXktZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE1BQU0sT0FBTyx1QkFBMkIsU0FBUSxrQkFBcUI7SUFDakUsY0FBYztJQUNkLFlBQW9CLElBQVM7UUFDekIsS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQURsQixTQUFJLEdBQUosSUFBSSxDQUFLO0lBRTdCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyw0QkFBZ0MsU0FBUSx1QkFBMEI7SUFDM0UsY0FBYztJQUNkLFlBQW9CLElBQVM7UUFDekIsS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQURsQixTQUFJLEdBQUosSUFBSSxDQUFLO0lBRTdCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxtQkFBdUIsU0FBUSxjQUFpQjtJQUN6RCxjQUFjO0lBQ2QsWUFBb0IsSUFBUztRQUN6QixLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRGxCLFNBQUksR0FBSixJQUFJLENBQUs7SUFFN0IsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHlCQUE2QixTQUFRLG9CQUF1QjtJQUNyRSxjQUFjO0lBQ2QsWUFBb0IsSUFBUztRQUN6QixLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRGxCLFNBQUksR0FBSixJQUFJLENBQUs7SUFFN0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBBcnJheXMuXG4gKi9cbmltcG9ydCB7IEJhc2VEYXRhUHJvdmlkZXIgfSBmcm9tICcuL2Jhc2UtZGF0YS1wcm92aWRlcic7XG5pbXBvcnQgeyBDb21ib0JveERhdGFTb3VyY2UsIExpc3REYXRhU291cmNlLCBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZSwgTXVsdGlJbnB1dERhdGFTb3VyY2UgfSBmcm9tICcuL2RhdGEtc291cmNlJztcblxuZXhwb3J0IGNsYXNzIEFycmF5Q29tYm9Cb3hEYXRhU291cmNlPFQ+IGV4dGVuZHMgQ29tYm9Cb3hEYXRhU291cmNlPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogVFtdKSB7XG4gICAgICAgIHN1cGVyKG5ldyBCYXNlRGF0YVByb3ZpZGVyKGRhdGEpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheU11bHRpQ29tYm9Cb3hEYXRhU291cmNlPFQ+IGV4dGVuZHMgTXVsdGlDb21ib0JveERhdGFTb3VyY2U8VD4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhOiBUW10pIHtcbiAgICAgICAgc3VwZXIobmV3IEJhc2VEYXRhUHJvdmlkZXIoZGF0YSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFycmF5TGlzdERhdGFTb3VyY2U8VD4gZXh0ZW5kcyBMaXN0RGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IFRbXSkge1xuICAgICAgICBzdXBlcihuZXcgQmFzZURhdGFQcm92aWRlcihkYXRhKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXJyYXlNdWx0aUlucHV0RGF0YVNvdXJjZTxUPiBleHRlbmRzIE11bHRpSW5wdXREYXRhU291cmNlPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogVFtdKSB7XG4gICAgICAgIHN1cGVyKG5ldyBCYXNlRGF0YVByb3ZpZGVyKGRhdGEpKTtcbiAgICB9XG59XG4iXX0=","import { coerceArray } from '@angular/cdk/coercion';\nimport { isBlank } from '../utils/lang';\n/** @hidden */\nexport function isSelectableItem(item) {\n return (item &&\n item.label !== undefined &&\n item.value !== undefined &&\n Object.prototype.hasOwnProperty.call(item, 'selected'));\n}\n/** @hidden */\nexport function isSelectItem(item) {\n return item && item.label !== undefined && item.value !== undefined;\n}\nexport const isOptionItem = isSelectItem;\nexport const isSelectableOptionItem = isSelectableItem;\n/**\n * Wraps the provided value in an array, unless it is an array already.\n * If `null` or `undefined` is received, will return an empty array.\n */\nexport function coerceArraySafe(value) {\n return isBlank(value) ? [] : coerceArray(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL2RvbWFpbi9kYXRhLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBOER4QyxjQUFjO0FBQ2QsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQWdCO0lBQzdDLE9BQU8sQ0FDSCxJQUFJO1FBQ0osSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUztRQUN4QixNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUN6RCxDQUFDO0FBQ04sQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWdCO0lBQ3pDLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQ3hFLENBQUM7QUFxQkQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFJLEtBQWM7SUFDN0MsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNCbGFuayB9IGZyb20gJy4uL3V0aWxzL2xhbmcnO1xuXG4vKipcbiAqIEludGVyZmFjZSBTZWxlY3RJdGVtIGlzIHVzZWQgdG8gZGVhbCB3aXRoIGNvbXBsZXggb2JqZWN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZm9ybWF0XG4gKiBjdXN0b20gbGFiZWwgdGhhdCBpcyBzaG93biBpbiB0aGUgb3B0aW9ucy5cbiAqXG4gKiBVc2VkIGluIHZhcmlvdXMgY29udHJvbHM6IFNlbGVjdCwgUmFkaW9Hcm91cCwgQ2hlY2tib3hHcm91cCwgQ29tYm9ib3hcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RJdGVtPFQgPSBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBJdGVtIHRleHQgc2hvd24gaW4gdGhlIHBvcHVwXG4gICAgICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZXMgdG8gdGhlIG9iamVjdCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHZhbHVlOiBUO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVHJpZ2dlciB2YWx1ZXMgaXMgYSB0ZXh0IGZvciBzZWxlY3RlZCBpdGVtXG4gICAgICovXG4gICAgdHJpZ2dlclZhbHVlPzogc3RyaW5nO1xuXG4gICAgaXNHcm91cD86IGJvb2xlYW47XG4gICAgc2Vjb25kYXJ5VGV4dD86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IFNlbGVjdEl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBVc2VkIGluIHNldHRpbmdzIGdlbmVyYXRvciBvbmx5LlxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFVzZWQgaW4gc2V0dGluZ3MgZ2VuZXJhdG9yIG9ubHkuXG4gICAgICovXG4gICAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbkl0ZW0ge1xuICAgIC8qKiBJdGVtIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0IGluc3RhbmNlXG4gICAgICovXG4gICAgdmFsdWU6IGFueTtcbiAgICBpZD86IHN0cmluZztcbiAgICBpc0dyb3VwPzogYm9vbGVhbjtcbiAgICBzZWNvbmRhcnlUZXh0Pzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogT3B0aW9uSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGFibGVPcHRpb25JdGVtIGV4dGVuZHMgT3B0aW9uSXRlbSB7XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIGNoaWxkcmVuPzogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGFibGVJdGVtKGl0ZW06IFNlbGVjdEl0ZW0pOiBpdGVtIGlzIFNlbGVjdEl0ZW0ge1xuICAgIHJldHVybiAoXG4gICAgICAgIGl0ZW0gJiZcbiAgICAgICAgaXRlbS5sYWJlbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbSwgJ3NlbGVjdGVkJylcbiAgICApO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0SXRlbShpdGVtOiBTZWxlY3RJdGVtKTogaXRlbSBpcyBTZWxlY3RJdGVtIHtcbiAgICByZXR1cm4gaXRlbSAmJiBpdGVtLmxhYmVsICE9PSB1bmRlZmluZWQgJiYgaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpSW5wdXRPcHRpb24ge1xuICAgIC8qKiBJdGVtIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0IGluc3RhbmNlXG4gICAgICovXG4gICAgdmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEl0ZW0gQXZhdGFyXG4gICAgICovXG4gICAgYXZhdGFyU3JjPzogc3RyaW5nO1xuXG4gICAgaXNHcm91cD86IGJvb2xlYW47XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBNdWx0aUlucHV0T3B0aW9uW107XG59XG5cbmV4cG9ydCBjb25zdCBpc09wdGlvbkl0ZW0gPSBpc1NlbGVjdEl0ZW07XG5leHBvcnQgY29uc3QgaXNTZWxlY3RhYmxlT3B0aW9uSXRlbSA9IGlzU2VsZWN0YWJsZUl0ZW07XG5cbi8qKlxuICogV3JhcHMgdGhlIHByb3ZpZGVkIHZhbHVlIGluIGFuIGFycmF5LCB1bmxlc3MgaXQgaXMgYW4gYXJyYXkgYWxyZWFkeS5cbiAqIElmIGBudWxsYCBvciBgdW5kZWZpbmVkYCBpcyByZWNlaXZlZCwgd2lsbCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VBcnJheVNhZmU8VD4odmFsdWU6IFQgfCBUW10pOiBUW10ge1xuICAgIHJldHVybiBpc0JsYW5rKHZhbHVlKSA/IFtdIDogY29lcmNlQXJyYXkodmFsdWUpO1xufVxuIl19","import { BaseDataProvider } from './base-data-provider';\nimport { ComboBoxDataSource, ListDataSource, MultiComboBoxDataSource, MultiInputDataSource } from './data-source';\nexport class ObservableComboBoxDataSource extends ComboBoxDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\nexport class ObservableMultiComboBoxDataSource extends MultiComboBoxDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\nexport class ObservableListDataSource extends ListDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\nexport class ObservableMultiInputDataSource extends MultiInputDataSource {\n /** @hidden */\n constructor(data) {\n super(new BaseDataProvider(data));\n this.data = data;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL2RvbWFpbi9vYnNlcnZhYmxlLWRhdGEtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEgsTUFBTSxPQUFPLDRCQUFnQyxTQUFRLGtCQUFxQjtJQUN0RSxjQUFjO0lBQ2QsWUFBb0IsSUFBcUI7UUFDckMsS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQURsQixTQUFJLEdBQUosSUFBSSxDQUFpQjtJQUV6QyxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8saUNBQXFDLFNBQVEsdUJBQTBCO0lBQ2hGLGNBQWM7SUFDZCxZQUFvQixJQUFxQjtRQUNyQyxLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRGxCLFNBQUksR0FBSixJQUFJLENBQWlCO0lBRXpDLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx3QkFBNEIsU0FBUSxjQUFpQjtJQUM5RCxjQUFjO0lBQ2QsWUFBb0IsSUFBcUI7UUFDckMsS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQURsQixTQUFJLEdBQUosSUFBSSxDQUFpQjtJQUV6QyxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sOEJBQWtDLFNBQVEsb0JBQXVCO0lBQzFFLGNBQWM7SUFDZCxZQUFvQixJQUFxQjtRQUNyQyxLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRGxCLFNBQUksR0FBSixJQUFJLENBQWlCO0lBRXpDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgT2JzZXJ2YWJsZSBBcnJheXMuXG4gKi9cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmFzZURhdGFQcm92aWRlciB9IGZyb20gJy4vYmFzZS1kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7IENvbWJvQm94RGF0YVNvdXJjZSwgTGlzdERhdGFTb3VyY2UsIE11bHRpQ29tYm9Cb3hEYXRhU291cmNlLCBNdWx0aUlucHV0RGF0YVNvdXJjZSB9IGZyb20gJy4vZGF0YS1zb3VyY2UnO1xuXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZUNvbWJvQm94RGF0YVNvdXJjZTxUPiBleHRlbmRzIENvbWJvQm94RGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IE9ic2VydmFibGU8VFtdPikge1xuICAgICAgICBzdXBlcihuZXcgQmFzZURhdGFQcm92aWRlcihkYXRhKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZU11bHRpQ29tYm9Cb3hEYXRhU291cmNlPFQ+IGV4dGVuZHMgTXVsdGlDb21ib0JveERhdGFTb3VyY2U8VD4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhOiBPYnNlcnZhYmxlPFRbXT4pIHtcbiAgICAgICAgc3VwZXIobmV3IEJhc2VEYXRhUHJvdmlkZXIoZGF0YSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9ic2VydmFibGVMaXN0RGF0YVNvdXJjZTxUPiBleHRlbmRzIExpc3REYXRhU291cmNlPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogT2JzZXJ2YWJsZTxUW10+KSB7XG4gICAgICAgIHN1cGVyKG5ldyBCYXNlRGF0YVByb3ZpZGVyKGRhdGEpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPYnNlcnZhYmxlTXVsdGlJbnB1dERhdGFTb3VyY2U8VD4gZXh0ZW5kcyBNdWx0aUlucHV0RGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IE9ic2VydmFibGU8VFtdPikge1xuICAgICAgICBzdXBlcihuZXcgQmFzZURhdGFQcm92aWRlcihkYXRhKSk7XG4gICAgfVxufVxuIl19","import { DestroyRef, Directive, ElementRef, InjectionToken, Input, ViewChild, booleanAttribute, inject, isDevMode } from '@angular/core';\nimport { ControlContainer, NgControl, NgForm } from '@angular/forms';\nimport { Subject, filter } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, isValidControlState } from '@fundamental-ngx/cdk/forms';\nimport { BaseComponent } from '../base';\nimport * as i0 from \"@angular/core\";\nexport const FDP_DO_CHECK = new InjectionToken('FdpInputDoCheckTrigger');\nexport const FDP_FORM_SUBMIT = new InjectionToken('FdpFormSubmitTrigger');\nlet randomId = 0;\n/**\n * All form components share the same information (value, name, placeholder,.. ) as well as\n * the same behavior given by ControlValueAccessor.\n *\n * Even this is not ideal solution there is no other way then use inheritance to reuse some of the\n * common logic. It should be possible to use some kind of compositions with Proxies but something\n * similar that exists in Aspect Oriented Programing.\n *\n * Usually try to fire stateChange only for things that can change dynamically in runtime. We don't expect\n * that e.g. placeholder will change after component is created\n */\nexport class BaseInput extends BaseComponent {\n /**\n * The state of the form control - applies css classes.\n * Can be 'success', 'error', 'warning', 'default', 'information'.\n *\n * @default 'default'\n */\n set state(state) {\n if (!state || isValidControlState(state)) {\n this._state = state;\n }\n else if (isDevMode()) {\n console.warn(`Provided value \"${state}\" is not a valid option for FormStates type`);\n }\n }\n get state() {\n if (this._state) {\n return this._state;\n }\n if (!this.controlInvalid) {\n return 'default';\n }\n return this.formField?.getPriorityState() || 'error';\n }\n /** Whether the input is disabled */\n set disabled(value) {\n this.setDisabledState(value);\n }\n get disabled() {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n /**\n * Tell the component if we are in editing mode.\n */\n set editable(value) {\n if (this._editable === value) {\n return;\n }\n this._editable = value;\n this.markForCheck();\n this.stateChanges.next('editable');\n }\n get editable() {\n return this._editable;\n }\n /** Whether control has errors */\n get controlInvalid() {\n return this._controlInvalid;\n }\n /** @hidden */\n constructor() {\n /**\n * We do not use Injector.get() approach here because there is a bug\n * with this signature https://github.com/angular/angular/issues/31776\n * where \"get()\" method doesn't take into account \"flag\" option\"\n *\n */\n super();\n /**\n * To allow user to determine what event he wants to trigger the messages to show\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n this.triggers = [\n {\n trigger: 'focusin',\n openAction: true,\n closeAction: false\n },\n {\n trigger: 'focusout',\n openAction: false,\n closeAction: true\n }\n ];\n /** Form control validation event strategy. */\n this.validationStrategy = ['touched', 'dirty', 'submitted'];\n /**\n * See @FormFieldControl\n */\n this.focused = false;\n /**\n * See @FormFieldControl\n */\n this.stateChanges = new Subject();\n /** @hidden */\n this.formField = null;\n /** @hidden */\n this._doCheck$ = inject(FDP_DO_CHECK, { optional: true });\n /** Element reference. */\n this.elementRef = inject(ElementRef);\n /** NgControl reference. */\n this.ngControl = inject(NgControl, {\n optional: true,\n self: true\n });\n /** Control container reference. */\n this.controlContainer = inject(ControlContainer, {\n optional: true,\n skipSelf: true\n });\n /** Form reference. */\n this.ngForm = inject(NgForm, {\n optional: true,\n skipSelf: true\n });\n /** @hidden */\n this.defaultId = `fdp-input-id-${randomId++}`;\n /** @hidden */\n this._editable = true;\n /** @hidden */\n this._destroyed = inject(DestroyRef);\n /** @hidden */\n this._externalSubmit = inject(FDP_FORM_SUBMIT, { optional: true });\n /** @hidden */\n this._externalFormSubmitted = false;\n /**\n * @hidden\n */\n this._controlInvalid = false;\n /** @hidden */\n this.onChange = () => { };\n /** @hidden */\n this.onTouched = () => { };\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n const formField = inject(FD_FORM_FIELD, {\n optional: true,\n skipSelf: true,\n host: true\n });\n const formControl = inject(FD_FORM_FIELD_CONTROL, {\n optional: true,\n skipSelf: true,\n host: true\n });\n // We have to ignore \"formField\" if there is \"formControl\" wrapper\n this.formField = formField && !formControl ? formField : null;\n this._doCheck$?.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n this.ngDoCheck();\n });\n this._externalSubmit?.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n this._externalFormSubmitted = true;\n });\n }\n /** @hidden */\n ngOnInit() {\n if (this.formField) {\n this.formField.registerFormFieldControl(this);\n }\n }\n /**\n * Re-validate and emit event to parent container on every CD cycle as they are some errors\n * that we can't subscribe to.\n */\n ngDoCheck() {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n /** @hidden */\n ngAfterViewInit() {\n if (this.ngControl) {\n this._subscriptions.add(this.ngControl.statusChanges?.subscribe(() => {\n this.markForCheck();\n }));\n }\n const labelAndHelpId = `fdp-form-label-content-${this.id}`;\n // if not specified, associate label and inline help ids with the input,\n // else add these ids to the specified ones\n if (this.formField) {\n if (!this.ariaLabelledBy) {\n this.ariaLabelledBy = labelAndHelpId;\n }\n else {\n this.ariaLabelledBy += ' ' + labelAndHelpId;\n }\n }\n this.innerErrorsTemplate = this.formField?.innerErrorRenderers;\n this.stateChanges\n .pipe(filter(() => !!this.formField), takeUntilDestroyed(this._destroyed))\n .subscribe(() => {\n this.advancedStateMessage = {\n template: this.formField.innerErrorRenderers,\n hasErrors: this.formField.hasErrors()\n };\n this.detectChanges();\n });\n this.detectChanges();\n }\n /** @hidden */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /** @hidden */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /** @hidden */\n ngOnDestroy() {\n super.ngOnDestroy();\n this.stateChanges.complete();\n if (this.formField) {\n this.formField.unregisterFormFieldControl(this);\n }\n }\n /** @hidden */\n setDisabledState(isDisabled) {\n const newState = booleanAttribute(isDisabled);\n this.markForCheck();\n if (newState !== this._disabled) {\n this._disabled = newState;\n this.stateChanges.next('setDisabledState');\n }\n }\n /**\n * Each sub class must override this method as inheritance does not work\n */\n writeValue(value) {\n this._value = value;\n this.stateChanges.next('writeValue');\n this.markForCheck();\n }\n /**\n *\n * Keeps track of element focus\n */\n _onFocusChanged(isFocused) {\n if (isFocused !== this.focused && (!this.disabled || !isFocused)) {\n this.focused = isFocused;\n this.stateChanges.next('_onFocusChanged');\n }\n if (!isFocused) {\n this.onTouched();\n }\n }\n /**\n * Handles even when we click on parent container which is the FormField Wrapping this\n * control\n */\n onContainerClick(event) {\n this.focus(event);\n }\n /**\n * In most of the cases when working with input element directly you should be just find to assing\n * variable to this element\n *\n * ```\n * <input #inputElementRef fd-form-control ...>\n * ```\n *\n * and this default behavior used. For other cases implement focus.\n *\n */\n focus(event) {\n if (this._elementRef && !this.focused) {\n this._elementRef.nativeElement.focus(event);\n }\n }\n /**\n * Need re-validates errors on every CD iteration to make sure we are also\n * covering non-control errors, errors that happens outside of this control\n */\n updateErrorState() {\n const parent = this.ngForm;\n const parentControlContainer = this.controlContainer;\n const control = this.ngControl ? this.ngControl.control : null;\n const newStatusIsError = !!(control?.invalid &&\n ((this.validationStrategy.includes('dirty') && control.dirty) ||\n (this.validationStrategy.includes('touched') && control.touched) ||\n (this.validationStrategy.includes('submitted') && parent?.submitted) ||\n parentControlContainer?.submitted ||\n this._externalFormSubmitted));\n if (newStatusIsError !== this.controlInvalid) {\n this._controlInvalid = newStatusIsError;\n this.stateChanges.next('updateErrorState');\n this.markForCheck();\n }\n }\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n setValue(value, emitOnChange = true) {\n if (value !== this._value) {\n this.writeValue(value);\n if (emitOnChange) {\n this.onChange(value);\n }\n this.markForCheck();\n }\n }\n /** @hidden */\n getValue() {\n return this._value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: BaseInput, isStandalone: true, inputs: { placeholder: \"placeholder\", triggers: \"triggers\", state: \"state\", stateMessage: \"stateMessage\", stateMessageConfig: \"stateMessageConfig\", disabled: \"disabled\", readonly: \"readonly\", editable: [\"editable\", \"editable\", booleanAttribute], validationStrategy: \"validationStrategy\" }, viewQueries: [{ propertyName: \"_elementRef\", first: true, predicate: [\"inputElementRef\"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseInput, decorators: [{\n type: Directive\n }], ctorParameters: () => [], propDecorators: { placeholder: [{\n type: Input\n }], triggers: [{\n type: Input\n }], state: [{\n type: Input\n }], stateMessage: [{\n type: Input\n }], stateMessageConfig: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], editable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], validationStrategy: [{\n type: Input\n }], _elementRef: [{\n type: ViewChild,\n args: ['inputElementRef', { static: true, read: ElementRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL2Zvcm0vYmFzZS5pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUgsVUFBVSxFQUNWLFNBQVMsRUFFVCxVQUFVLEVBQ1YsY0FBYyxFQUNkLEtBQUssRUFJTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFxQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEcsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUNILGFBQWEsRUFDYixxQkFBcUIsRUFHckIsbUJBQW1CLEVBQ3RCLE1BQU0sNEJBQTRCLENBQUM7QUFHcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHeEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFtQix3QkFBd0IsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsc0JBQXNCLENBQUMsQ0FBQztBQUU1RixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFFakI7Ozs7Ozs7Ozs7R0FVRztBQUVILE1BQU0sT0FBZ0IsU0FDbEIsU0FBUSxhQUFhO0lBeUJyQjs7Ozs7T0FLRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQTZCO1FBQ25DLElBQUksQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFD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QztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFFBQVEsQ0FBQyxLQUFVLEVBQUUsWUFBWSxHQUFHLElBQUk7UUFDOUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ0osUUFBUTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDOzhHQWhhaUIsU0FBUztrR0FBVCxTQUFTLHlQQWlGUCxnQkFBZ0Isa0tBb0JnQixVQUFVOzsyRkFyRzVDLFNBQVM7a0JBRDlCLFNBQVM7d0RBT04sV0FBVztzQkFEVixLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSztnQkFxQkYsS0FBSztzQkFEUixLQUFLO2dCQXNCTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtGLFFBQVE7c0JBRFgsS0FBSztnQkFlTixRQUFRO3NCQURQLEtBQUs7Z0JBT0YsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWV0QyxrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBT0ksV0FBVztzQkFEcEIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgaW5qZWN0LFxuICAgIGlzRGV2TW9kZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmLCBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIEZEX0ZPUk1fRklFTEQsXG4gICAgRkRfRk9STV9GSUVMRF9DT05UUk9MLFxuICAgIEZvcm1GaWVsZEFkdmFuY2VkU3RhdGVNZXNzYWdlLFxuICAgIEZvcm1TdGF0ZXMsXG4gICAgaXNWYWxpZENvbnRyb2xTdGF0ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtSW5wdXRNZXNzYWdlR3JvdXBDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBUcmlnZ2VyQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IHsgUGxhdGZvcm1Gb3JtRmllbGQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJy4vZm9ybS1maWVsZCc7XG5cbmV4cG9ydCBjb25zdCBGRFBfRE9fQ0hFQ0sgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTx2b2lkPj4oJ0ZkcElucHV0RG9DaGVja1RyaWdnZXInKTtcbmV4cG9ydCBjb25zdCBGRFBfRk9STV9TVUJNSVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTx2b2lkPj4oJ0ZkcEZvcm1TdWJtaXRUcmlnZ2VyJyk7XG5cbmxldCByYW5kb21JZCA9IDA7XG5cbi8qKlxuICogQWxsIGZvcm0gY29tcG9uZW50cyBzaGFyZSB0aGUgc2FtZSBpbmZvcm1hdGlvbiAodmFsdWUsIG5hbWUsIHBsYWNlaG9sZGVyLC4uICkgYXMgd2VsbCBhc1xuICogdGhlIHNhbWUgYmVoYXZpb3IgZ2l2ZW4gYnkgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gKlxuICogRXZlbiB0aGlzIGlzIG5vdCBpZGVhbCBzb2x1dGlvbiB0aGVyZSBpcyBubyBvdGhlciB3YXkgdGhlbiB1c2UgaW5oZXJpdGFuY2UgdG8gcmV1c2Ugc29tZSBvZiB0aGVcbiAqIGNvbW1vbiBsb2dpYy4gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBzb21lIGtpbmQgb2YgY29tcG9zaXRpb25zIHdpdGggUHJveGllcyBidXQgc29tZXRoaW5nXG4gKiBzaW1pbGFyIHRoYXQgZXhpc3RzIGluIEFzcGVjdCBPcmllbnRlZCBQcm9ncmFtaW5nLlxuICpcbiAqIFVzdWFsbHkgdHJ5IHRvIGZpcmUgc3RhdGVDaGFuZ2Ugb25seSBmb3IgdGhpbmdzIHRoYXQgY2FuIGNoYW5nZSBkeW5hbWljYWxseSBpbiBydW50aW1lLiBXZSBkb24ndCBleHBlY3RcbiAqIHRoYXQgZS5nLiBwbGFjZWhvbGRlciB3aWxsIGNoYW5nZSBhZnRlciBjb21wb25lbnQgaXMgY3JlYXRlZFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSW5wdXRcbiAgICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBIYXNFbGVtZW50UmVmXG57XG4gICAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVG8gYWxsb3cgdXNlciB0byBkZXRlcm1pbmUgd2hhdCBldmVudCBoZSB3YW50cyB0byB0cmlnZ2VyIHRoZSBtZXNzYWdlcyB0byBzaG93XG4gICAgICogQWNjZXB0cyBhbnkgW0hUTUwgRE9NIEV2ZW50c10oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9kb21fb2JqX2V2ZW50LmFzcCkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0cmlnZ2VyczogKHN0cmluZyB8IFRyaWdnZXJDb25maWcpW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRyaWdnZXI6ICdmb2N1c2luJyxcbiAgICAgICAgICAgIG9wZW5BY3Rpb246IHRydWUsXG4gICAgICAgICAgICBjbG9zZUFjdGlvbjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdHJpZ2dlcjogJ2ZvY3Vzb3V0JyxcbiAgICAgICAgICAgIG9wZW5BY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgY2xvc2VBY3Rpb246IHRydWVcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICAvKipcbiAgICAgKiAgVGhlIHN0YXRlIG9mIHRoZSBmb3JtIGNvbnRyb2wgLSBhcHBsaWVzIGNzcyBjbGFzc2VzLlxuICAgICAqICBDYW4gYmUgJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnd2FybmluZycsICdkZWZhdWx0JywgJ2luZm9ybWF0aW9uJy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlKHN0YXRlOiBGb3JtU3RhdGVzIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghc3RhdGUgfHwgaXNWYWxpZENvbnRyb2xTdGF0ZShzdGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUHJvdmlkZWQgdmFsdWUgXCIke3N0YXRlfVwiIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgRm9ybVN0YXRlcyB0eXBlYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICBpZiAodGhpcy5fc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sSW52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuICdkZWZhdWx0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1GaWVsZD8uZ2V0UHJpb3JpdHlTdGF0ZSgpIHx8ICdlcnJvcic7XG4gICAgfVxuXG4gICAgLyoqIEhvbGRzIHRoZSBtZXNzYWdlIHdpdGggcmVzcGVjdCB0byBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFkdmFuY2VkIGZvcm0gbWVzc2FnZSBjb25maWd1cmF0aW9uLiBVc2VkIGZvciBjb21wb25lbnRzIHRoYXQgY2FuIHJlbmRlciBmb3JtIG1lc3NhZ2VzIGluIGl0cyB0ZW1wbGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXRlTWVzc2FnZUNvbmZpZzogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWFkT25seSBWYWx1ZSB0byBNYXJrIGNvbXBvbmVudCByZWFkIG9ubHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGVsbCB0aGUgY29tcG9uZW50IGlmIHdlIGFyZSBpbiBlZGl0aW5nIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IGVkaXRhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLl9lZGl0YWJsZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lZGl0YWJsZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCdlZGl0YWJsZScpO1xuICAgIH1cbiAgICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0YWJsZTtcbiAgICB9XG5cbiAgICAvKiogRm9ybSBjb250cm9sIHZhbGlkYXRpb24gZXZlbnQgc3RyYXRlZ3kuICovXG4gICAgQElucHV0KClcbiAgICB2YWxpZGF0aW9uU3RyYXRlZ3k6ICgndG91Y2hlZCcgfCAnZGlydHknIHwgJ3N1Ym1pdHRlZCcpW10gPSBbJ3RvdWNoZWQnLCAnZGlydHknLCAnc3VibWl0dGVkJ107XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gaW50ZXJuYWwgSW5wdXQgZWxlbWVudFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudFJlZicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogbmVlZCB0byBtYWtlICB0aGVzZSB2YWx1ZSBhY2Nlc3NvciBhcyBhYnN0cmFjdCB0byBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLiBIYXZpbmcgdGhlbVxuICAgICAqIGluIHN1cGVyY2xhc3MgaGF2ZSBpc3N1ZSBnZXR0aW5nIHJlZmVyZW5jZSB0byB0aGVtIHdpdGggT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvblxuICAgICAqIHdoaWNoIHdlIG5lZWQgdG8gcHJvZ3JhbW1hdGljYWxseSB3cmFwcyBjb21wb25lbnRzIHNldC9nZXQgdmFsdWVcbiAgICAgKlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldCB2YWx1ZSgpOiBhbnk7XG5cbiAgICBhYnN0cmFjdCBzZXQgdmFsdWUodmFsdWU6IGFueSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZvcm1NZXNzYWdlOiBOdWxsYWJsZTxGb3JtSW5wdXRNZXNzYWdlR3JvdXBDb21wb25lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogU2VlIEBGb3JtRmllbGRDb250cm9sXG4gICAgICovXG4gICAgZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIHNldCB3aGVuIGlucHV0IGZpZWxkIGlzIG1hbmRhdG9yeSBmb3JtIGZpZWxkICovXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGlubmVyRXJyb3JzVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIFdoZXRoZXIgY29udHJvbCBoYXMgZXJyb3JzICovXG4gICAgZ2V0IGNvbnRyb2xJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udHJvbEludmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZHZhbmNlZFN0YXRlTWVzc2FnZTogTnVsbGFibGU8Rm9ybUZpZWxkQWR2YW5jZWRTdGF0ZU1lc3NhZ2U+O1xuXG4gICAgLyoqXG4gICAgICogU2VlIEBGb3JtRmllbGRDb250cm9sXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2RvQ2hlY2skID0gaW5qZWN0KEZEUF9ET19DSEVDSywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKiBFbGVtZW50IHJlZmVyZW5jZS4gKi9cbiAgICByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIE5nQ29udHJvbCByZWZlcmVuY2UuICovXG4gICAgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2VsZjogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIENvbnRyb2wgY29udGFpbmVyIHJlZmVyZW5jZS4gKi9cbiAgICByZWFkb25seSBjb250cm9sQ29udGFpbmVyID0gaW5qZWN0KENvbnRyb2xDb250YWluZXIsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIHNraXBTZWxmOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogRm9ybSByZWZlcmVuY2UuICovXG4gICAgcmVhZG9ubHkgbmdGb3JtID0gaW5qZWN0KE5nRm9ybSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogQ2FuIGJlIGBzdWNjZXNzYCwgYGVycm9yYCwgYHdhcm5pbmdgLCBgaW5mb3JtYXRpb25gIG9yICdkZWZhdWx0J1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc3RhdGU6IEZvcm1TdGF0ZXMgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0SWQgPSBgZmRwLWlucHV0LWlkLSR7cmFuZG9tSWQrK31gO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3ZhbHVlOiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2VkaXRhYmxlID0gdHJ1ZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVzdHJveWVkID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9leHRlcm5hbFN1Ym1pdCA9IGluamVjdChGRFBfRk9STV9TVUJNSVQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4dGVybmFsRm9ybVN1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnRyb2xJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogV2UgZG8gbm90IHVzZSBJbmplY3Rvci5nZXQoKSBhcHByb2FjaCBoZXJlIGJlY2F1c2UgdGhlcmUgaXMgYSBidWdcbiAgICAgICAgICogd2l0aCB0aGlzIHNpZ25hdHVyZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zMTc3NlxuICAgICAgICAgKiB3aGVyZSBcImdldCgpXCIgbWV0aG9kIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgXCJmbGFnXCIgb3B0aW9uXCJcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGluamVjdDxQbGF0Zm9ybUZvcm1GaWVsZD4oRkRfRk9STV9GSUVMRCwge1xuICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICBza2lwU2VsZjogdHJ1ZSxcbiAgICAgICAgICAgIGhvc3Q6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSBpbmplY3Q8UGxhdGZvcm1Gb3JtRmllbGRDb250cm9sPihGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIHtcbiAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICAgICAgICBob3N0OiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdlIGhhdmUgdG8gaWdub3JlIFwiZm9ybUZpZWxkXCIgaWYgdGhlcmUgaXMgXCJmb3JtQ29udHJvbFwiIHdyYXBwZXJcbiAgICAgICAgdGhpcy5mb3JtRmllbGQgPSBmb3JtRmllbGQgJiYgIWZvcm1Db250cm9sID8gZm9ybUZpZWxkIDogbnVsbDtcblxuICAgICAgICB0aGlzLl9kb0NoZWNrJD8ucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdEb0NoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9leHRlcm5hbFN1Ym1pdD8ucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2V4dGVybmFsRm9ybVN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1GaWVsZC5yZWdpc3RlckZvcm1GaWVsZENvbnRyb2wodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZS12YWxpZGF0ZSBhbmQgZW1pdCBldmVudCB0byBwYXJlbnQgY29udGFpbmVyIG9uIGV2ZXJ5IENEIGN5Y2xlIGFzIHRoZXkgYXJlIHNvbWUgZXJyb3JzXG4gICAgICogdGhhdCB3ZSBjYW4ndCBzdWJzY3JpYmUgdG8uXG4gICAgICovXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhYmVsQW5kSGVscElkID0gYGZkcC1mb3JtLWxhYmVsLWNvbnRlbnQtJHt0aGlzLmlkfWA7XG4gICAgICAgIC8vIGlmIG5vdCBzcGVjaWZpZWQsIGFzc29jaWF0ZSBsYWJlbCBhbmQgaW5saW5lIGhlbHAgaWRzIHdpdGggdGhlIGlucHV0LFxuICAgICAgICAvLyBlbHNlIGFkZCB0aGVzZSBpZHMgdG8gdGhlIHNwZWNpZmllZCBvbmVzXG4gICAgICAgIGlmICh0aGlzLmZvcm1GaWVsZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFyaWFMYWJlbGxlZEJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmlhTGFiZWxsZWRCeSA9IGxhYmVsQW5kSGVscElkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyaWFMYWJlbGxlZEJ5ICs9ICcgJyArIGxhYmVsQW5kSGVscElkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbm5lckVycm9yc1RlbXBsYXRlID0gdGhpcy5mb3JtRmllbGQ/LmlubmVyRXJyb3JSZW5kZXJlcnM7XG5cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuZm9ybUZpZWxkKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZHZhbmNlZFN0YXRlTWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuZm9ybUZpZWxkIS5pbm5lckVycm9yUmVuZGVyZXJzLFxuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnM6IHRoaXMuZm9ybUZpZWxkIS5oYXNFcnJvcnMoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtRmllbGQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUZpZWxkLnVucmVnaXN0ZXJGb3JtRmllbGRDb250cm9sKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IEJvb2xlYW5JbnB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IGJvb2xlYW5BdHRyaWJ1dGUoaXNEaXNhYmxlZCk7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIGlmIChuZXdTdGF0ZSAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3U3RhdGU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCdzZXREaXNhYmxlZFN0YXRlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFYWNoIHN1YiBjbGFzcyBtdXN0IG92ZXJyaWRlIHRoaXMgbWV0aG9kIGFzIGluaGVyaXRhbmNlIGRvZXMgbm90IHdvcmtcbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgnd3JpdGVWYWx1ZScpO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogS2VlcHMgdHJhY2sgb2YgZWxlbWVudCBmb2N1c1xuICAgICAqL1xuICAgIF9vbkZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRm9jdXNlZCAhPT0gdGhpcy5mb2N1c2VkICYmICghdGhpcy5kaXNhYmxlZCB8fCAhaXNGb2N1c2VkKSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgnX29uRm9jdXNDaGFuZ2VkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgZXZlbiB3aGVuIHdlIGNsaWNrIG9uIHBhcmVudCBjb250YWluZXIgd2hpY2ggaXMgdGhlIEZvcm1GaWVsZCBXcmFwcGluZyB0aGlzXG4gICAgICogY29udHJvbFxuICAgICAqL1xuICAgIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1cyhldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW4gbW9zdCBvZiB0aGUgY2FzZXMgd2hlbiB3b3JraW5nIHdpdGggaW5wdXQgZWxlbWVudCBkaXJlY3RseSB5b3Ugc2hvdWxkIGJlIGp1c3QgZmluZCB0byBhc3NpbmdcbiAgICAgKiB2YXJpYWJsZSB0byB0aGlzIGVsZW1lbnRcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIDxpbnB1dCAjaW5wdXRFbGVtZW50UmVmIGZkLWZvcm0tY29udHJvbCAuLi4+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBhbmQgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIHVzZWQuIEZvciBvdGhlciBjYXNlcyBpbXBsZW1lbnQgZm9jdXMuXG4gICAgICpcbiAgICAgKi9cbiAgICBmb2N1cyhldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRSZWYgJiYgIXRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBOZWVkIHJlLXZhbGlkYXRlcyBlcnJvcnMgb24gZXZlcnkgQ0QgaXRlcmF0aW9uIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYWxzb1xuICAgICAqICBjb3ZlcmluZyBub24tY29udHJvbCBlcnJvcnMsIGVycm9ycyB0aGF0IGhhcHBlbnMgb3V0c2lkZSBvZiB0aGlzIGNvbnRyb2xcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRXJyb3JTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5uZ0Zvcm07XG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRyb2xDb250YWluZXIgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbCA/ICh0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIEZvcm1Db250cm9sKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1c0lzRXJyb3IgPSAhIShcbiAgICAgICAgICAgIGNvbnRyb2w/LmludmFsaWQgJiZcbiAgICAgICAgICAgICgodGhpcy52YWxpZGF0aW9uU3RyYXRlZ3kuaW5jbHVkZXMoJ2RpcnR5JykgJiYgY29udHJvbC5kaXJ0eSkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy52YWxpZGF0aW9uU3RyYXRlZ3kuaW5jbHVkZXMoJ3RvdWNoZWQnKSAmJiBjb250cm9sLnRvdWNoZWQpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMudmFsaWRhdGlvblN0cmF0ZWd5LmluY2x1ZGVzKCdzdWJtaXR0ZWQnKSAmJiBwYXJlbnQ/LnN1Ym1pdHRlZCkgfHxcbiAgICAgICAgICAgICAgICAocGFyZW50Q29udHJvbENvbnRhaW5lciBhcyBhbnkpPy5zdWJtaXR0ZWQgfHxcbiAgICAgICAgICAgICAgICB0aGlzLl9leHRlcm5hbEZvcm1TdWJtaXR0ZWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKG5ld1N0YXR1c0lzRXJyb3IgIT09IHRoaXMuY29udHJvbEludmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xJbnZhbGlkID0gbmV3U3RhdHVzSXNFcnJvcjtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3VwZGF0ZUVycm9yU3RhdGUnKTtcbiAgICAgICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBlbWl0T25DaGFuZ2Ugd2hldGhlciB0byBlbWl0IFwib25DaGFuZ2VcIiBldmVudC5cbiAgICAgKiBTaG91bGQgYmUgXCJmYWxzZVwiLCBpZiB0aGUgY2hhbmdlIGlzIG1hZGUgcHJvZ3JhbW1hdGljYWxseSAoaW50ZXJuYWxseSkgYnkgdGhlIGNvbnRyb2wsIFwidHJ1ZVwiIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZTogYW55LCBlbWl0T25DaGFuZ2UgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZW1pdE9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cbn1cbiJdfQ==","import { Directive, Input } from '@angular/core';\nimport { isSelectItem } from '../domain/data-model';\nimport { isFunction, isJsObject, isString } from '../utils/lang';\nimport { BaseInput } from './base.input';\nimport * as i0 from \"@angular/core\";\n/**\n * Defines specific behavior for Input controls which deals with list of values including:\n * - Select\n * - RadioGroup\n * - CheckboxGroup\n * - ComboBox\n * ...\n *\n */\nexport class CollectionBaseInput extends BaseInput {\n /**\n * List of values, it can be of type SelectItem, string or any object.\n * Generic object type is among the list of types,\n * because we allow to get labels and values using `displayKey` and `lookupKey` inputs accordingly.\n */\n set list(value) {\n this._list = value;\n }\n get list() {\n return this._list;\n }\n /** @hidden */\n lookupValue(item) {\n if (isSelectItem(item)) {\n return this.lookupKey && item && item.value ? item.value[this.lookupKey] : item.value;\n }\n else {\n return this.lookupKey && item ? item[this.lookupKey] : item;\n }\n }\n /** @hidden */\n displayValue(item) {\n if (isSelectItem(item)) {\n return item.label;\n }\n else if (isJsObject(item) && this.displayKey) {\n const currentItem = this.objectGet(item, this.displayKey);\n return isFunction(currentItem) ? currentItem() : currentItem;\n }\n else {\n return item;\n }\n }\n /** @hidden */\n objectGet(obj, is) {\n if (!isJsObject(obj)) {\n return obj;\n }\n else if (isString(is)) {\n return this.objectGet(obj, is.split('.'));\n }\n else if (!is?.length) {\n return obj;\n }\n else {\n return this.objectGet(obj[is[0]], is.slice(1));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: CollectionBaseInput, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: CollectionBaseInput, isStandalone: true, inputs: { list: \"list\", lookupKey: \"lookupKey\", displayKey: \"displayKey\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: CollectionBaseInput, decorators: [{\n type: Directive\n }], propDecorators: { list: [{\n type: Input\n }], lookupKey: [{\n type: Input\n }], displayKey: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1iYXNlLmlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zaGFyZWQvZm9ybS9jb2xsZWN0aW9uLWJhc2UuaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUV6Qzs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sT0FBZ0IsbUJBQW9CLFNBQVEsU0FBUztJQUN2RDs7OztPQUlHO0lBQ0gsSUFDSSxJQUFJLENBQUMsS0FBMEM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBcUJELGNBQWM7SUFDUCxXQUFXLENBQUMsSUFBUztRQUN4QixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDMUYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEUsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ1AsWUFBWSxDQUFDLElBQVM7UUFDekIsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQzthQUFNLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFMUQsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDUCxTQUFTLENBQUMsR0FBUSxFQUFFLEVBQWlDO1FBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQixPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7YUFBTSxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0wsQ0FBQzs4R0FsRWlCLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTOzhCQVFGLElBQUk7c0JBRFAsS0FBSztnQkFhTixTQUFTO3NCQURSLEtBQUs7Z0JBVU4sVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTZWxlY3RJdGVtLCBpc1NlbGVjdEl0ZW0gfSBmcm9tICcuLi9kb21haW4vZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc0pzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJy4uL3V0aWxzL2xhbmcnO1xuaW1wb3J0IHsgQmFzZUlucHV0IH0gZnJvbSAnLi9iYXNlLmlucHV0JztcblxuLyoqXG4gKiBEZWZpbmVzIHNwZWNpZmljIGJlaGF2aW9yIGZvciBJbnB1dCBjb250cm9scyB3aGljaCBkZWFscyB3aXRoIGxpc3Qgb2YgdmFsdWVzIGluY2x1ZGluZzpcbiAqICAtIFNlbGVjdFxuICogIC0gUmFkaW9Hcm91cFxuICogIC0gQ2hlY2tib3hHcm91cFxuICogIC0gQ29tYm9Cb3hcbiAqICAuLi5cbiAqXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbGxlY3Rpb25CYXNlSW5wdXQgZXh0ZW5kcyBCYXNlSW5wdXQge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgdmFsdWVzLCBpdCBjYW4gYmUgb2YgdHlwZSBTZWxlY3RJdGVtLCBzdHJpbmcgb3IgYW55IG9iamVjdC5cbiAgICAgKiBHZW5lcmljIG9iamVjdCB0eXBlIGlzIGFtb25nIHRoZSBsaXN0IG9mIHR5cGVzLFxuICAgICAqIGJlY2F1c2Ugd2UgYWxsb3cgdG8gZ2V0IGxhYmVscyBhbmQgdmFsdWVzIHVzaW5nIGBkaXNwbGF5S2V5YCBhbmQgYGxvb2t1cEtleWAgaW5wdXRzIGFjY29yZGluZ2x5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxpc3QodmFsdWU6IEFycmF5PFNlbGVjdEl0ZW0gfCBzdHJpbmcgfCBvYmplY3Q+KSB7XG4gICAgICAgIHRoaXMuX2xpc3QgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGxpc3QoKTogQXJyYXk8U2VsZWN0SXRlbSB8IHN0cmluZyB8IG9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGluIGZpbHRlcnMgYW5kIGFueSBraW5kIG9mIGNvbXBhcmF0b3JzIHdoZW4gd2Ugd29yayB3aXRoIG9iamVjdHMgYW5kIHRoaXMgaWRlbnRpZnlcbiAgICAgKiB1bmlxdWUgZmllbGQgbmFtZSBiYXNlZCBvbiB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gZG8gdGhlIGpvYlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbG9va3VwS2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIGRlYWwgd2l0aCB1bmtub3duIG9iamVjdCB3ZSBjYW4gdXNlIGBkaXNwbGF5S2V5YCB0byByZXRyaWV2ZSB2YWx1ZSBmcm9tIHNwZWNpZmljXG4gICAgICogcHJvcGVydHkgb2YgdGhlIG9iamVjdCB0byBhY3QgYXMgZGlzcGxheSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBTZWUgQ29tYm9Cb3gsIFNlbGVjdCwgUmFkaW9Hcm91cCwgQ2hlY2tCb3ggR3JvdXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlLZXk6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdDogQXJyYXk8U2VsZWN0SXRlbSB8IHN0cmluZyB8IG9iamVjdD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBsb29rdXBWYWx1ZShpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaXNTZWxlY3RJdGVtKGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb29rdXBLZXkgJiYgaXRlbSAmJiBpdGVtLnZhbHVlID8gaXRlbS52YWx1ZVt0aGlzLmxvb2t1cEtleV0gOiBpdGVtLnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9va3VwS2V5ICYmIGl0ZW0gPyBpdGVtW3RoaXMubG9va3VwS2V5XSA6IGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWUoaXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGlzU2VsZWN0SXRlbShpdGVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdChpdGVtKSAmJiB0aGlzLmRpc3BsYXlLZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5vYmplY3RHZXQoaXRlbSwgdGhpcy5kaXNwbGF5S2V5KTtcblxuICAgICAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oY3VycmVudEl0ZW0pID8gY3VycmVudEl0ZW0oKSA6IGN1cnJlbnRJdGVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBvYmplY3RHZXQob2JqOiBhbnksIGlzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgICAgIGlmICghaXNKc09iamVjdChvYmopKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0R2V0KG9iaiwgaXMuc3BsaXQoJy4nKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RHZXQob2JqW2lzWzBdXSwgaXMuc2xpY2UoMSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { FormField } from '@fundamental-ngx/cdk/forms';\n/**\n * FormField base class.\n *\n * This class is used to create form field components.\n *\n */\nexport class PlatformFormField extends FormField {\n}\nexport class FormFieldGroup {\n}\nexport class PlatformFormFieldControl {\n}\n/**\n * FormGroup base class.\n *\n * This class is used to create form group components.\n *\n */\nexport class FormGroupContainer {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL2Zvcm0vZm9ybS1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLDRCQUE0QixDQUFDO0FBU3pFOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxTQUFTO0NBd0V4RDtBQUVELE1BQU0sT0FBZ0IsY0FBYztDQXdCbkM7QUFJRCxNQUFNLE9BQWdCLHdCQUF3QjtDQWlGN0M7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBZ0Isa0JBQWtCO0NBOER2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkLCBGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IFRyaWdnZXJDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBGb3JtRXJyb3IsIEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlQ29udGV4dCB9IGZyb20gJy4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBDb2x1bW4sIENvbHVtbkxheW91dCB9IGZyb20gJy4vZm9ybS1vcHRpb25zJztcblxuLyoqXG4gKiBGb3JtRmllbGQgYmFzZSBjbGFzcy5cbiAqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gY3JlYXRlIGZvcm0gZmllbGQgY29tcG9uZW50cy5cbiAqXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbGF0Zm9ybUZvcm1GaWVsZCBleHRlbmRzIEZvcm1GaWVsZCB7XG4gICAgLyoqXG4gICAgICogRm9ybSBmaWVsZCBpZFxuICAgICAqL1xuICAgIGlkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUmFuayBpcyB1c2VkIGZvciBvcmRlcmluZy5cbiAgICAgKiBUaGFuIGxvd2VyIG51bWJlciB0aGVuIGhpZ2hlciBwcmlvcml0eVxuICAgICAqL1xuICAgIHJhbms6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBGb3JtIGZpZWxkIHRlbXBsYXRlIHJlZmVyZW5jZVxuICAgICAqL1xuICAgIHJlbmRlcmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEZvcm0gZmllbGQgY3VzdG9tIHdpZHRoIGluIGNvbHVtbnMgbXVzdCBiZSBiZXR3ZWVuIDEgLSAxMlxuICAgICAqL1xuICAgIGNvbHVtbnM6IENvbHVtbjtcbiAgICAvKipcbiAgICAgKiBEZWZpbmUgZm9ybSBmaWVsZCBjb2x1bW4gYmVsb25nc1xuICAgICAqL1xuICAgIGNvbHVtbjogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIFRyYW5zbGF0aW9ucyB0ZW1wbGF0ZSByZWZlcmVuY2VcbiAgICAgKi9cbiAgICBpMThTdHJpbmdzOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBpZiBmaWVsZCBpcyBlZGl0YWJsZVxuICAgICAqL1xuICAgIGVkaXRhYmxlOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGVuIGZvcm0gZmllbGQgbGFiZWwgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBub0xhYmVsTGF5b3V0OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIHVuZGVybHlpbmcgRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKi9cbiAgICBjb250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wgfCBudWxsO1xuICAgIC8qKlxuICAgICAqIFNldCB3aGVuIGZvcm0gZmllbGQgaXMgYSBtYW5kYXRvcnkgb25lLlxuICAgICAqL1xuICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIC8qKiBGb3JtIGZpZWxkIGxhYmVsICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogRm9ybSBmaWVsZHMncyBncm91cC4gKi9cbiAgICBmb3JtRmllbGRHcm91cDogTnVsbGFibGU8Rm9ybUZpZWxkR3JvdXA+O1xuXG4gICAgLyoqIEZybSBmaWVsZCdzIEZvcm0gQ29udGFpbmVyLiAqL1xuICAgIGZvcm1Hcm91cENvbnRhaW5lcjogTnVsbGFibGU8Rm9ybUdyb3VwQ29udGFpbmVyPjtcblxuICAgIC8qKiBHcm91cGVkIGVycm9ycy4gKi9cbiAgICBncm91cGVkRXJyb3JzOiBGb3JtRmllbGRFcnJvckRpcmVjdGl2ZUNvbnRleHRbXTtcblxuICAgIC8qKiBDb21iaW5lZCBFcnJvciBkaXJlY3RpdmVzLiAqL1xuICAgIGVycm9yRGlyZWN0aXZlczogRm9ybUVycm9yW107XG5cbiAgICAvKiogRm9ybSBjb250cm9sICovXG4gICAgbmdDb250cm9sPzogTmdDb250cm9sO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb3JtQ29udHJvbD86IEZvcm1Db250cm9sO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBlcnJvcnMgYmVpbmcgY2hhbmdlZC4gKi9cbiAgICBlcnJvcnNDaGFuZ2UkOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbm5lckVycm9yUmVuZGVyZXJzPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBXaGV0aGVyIGZvcm0gZmllbGQgaGFzIHZhbGlkYXRpb24gZXJyb3JzLiAqL1xuICAgIGhhc0Vycm9yczogKCkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1GaWVsZEdyb3VwIHtcbiAgICAvKiogR3JvdXAgaGVhZGVyKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEdyb3VwJ3MgZm9ybSBuYW1lICovXG4gICAgZm9ybU5hbWU6IHN0cmluZztcblxuICAgIC8qKiBHcm91cCBmaWVsZHMgKi9cbiAgICBmaWVsZHM6IFF1ZXJ5TGlzdDxQbGF0Zm9ybUZvcm1GaWVsZD47XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGxhYmVsJ3MgY29sdW1uIGxheW91dC5cbiAgICAgKi9cbiAgICBsYWJlbENvbHVtbkxheW91dDogQ29sdW1uTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBmaWVsZCdzIGNvbHVtbiBsYXlvdXQuXG4gICAgICovXG4gICAgZmllbGRDb2x1bW5MYXlvdXQ6IENvbHVtbkxheW91dDtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgZ2FwIGNvbHVtbiBsYXlvdXQuXG4gICAgICovXG4gICAgZ2FwQ29sdW1uTGF5b3V0OiBDb2x1bW5MYXlvdXQ7XG59XG5cbmV4cG9ydCB0eXBlIEZkcEZvcm1GaWVsZENvbnRyb2w8VCA9IGFueT4gPSBGb3JtRmllbGRDb250cm9sPFQ+O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sPFQgPSBhbnk+IGltcGxlbWVudHMgRm9ybUZpZWxkQ29udHJvbDxUPiB7XG4gICAgLyoqXG4gICAgICogVG8gYWxsb3cgdXNlciB0byBkZXRlcm1pbmUgd2hhdCBldmVudCBoZSB3YW50cyB0byB0cmlnZ2VyIHRoZSBtZXNzYWdlcyB0byBzaG93XG4gICAgICogQWNjZXB0cyBhbnkgW0hUTUwgRE9NIEV2ZW50c10oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9kb21fb2JqX2V2ZW50LmFzcCkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdHJpZ2dlcnM6IChzdHJpbmcgfCBUcmlnZ2VyQ29uZmlnKVtdO1xuXG4gICAgLyoqIFN0YXRlIG1lc3NhZ2UgY29uZmlndXJhdGlvbi4gVXNlZCBmb3IgY29tcG9uZW50cyB0aGF0IGNhbiByZW5kZXIgZm9ybSBtZXNzYWdlIGluc2lkZSBpdHMgdGVtcGxhdGUuICovXG4gICAgYWJzdHJhY3Qgc3RhdGVNZXNzYWdlQ29uZmlnOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKiBNZXRob2QgZm9yIGZvY3VzaW5nIG9uIHRoZSBlbGVtZW50ICovXG4gICAgYWJzdHJhY3QgZm9jdXMoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgZXZlbiB3aGVuIHdlIGNsaWNrIG9uIHBhcmVudCBjb250YWluZXIgd2hpY2ggaXMgdGhlIEZvcm1GaWVsZCBXcmFwcGluZyB0aGlzXG4gICAgICogY29udHJvbFxuICAgICAqL1xuICAgIGFic3RyYWN0IG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb3JtTWVzc2FnZTogTnVsbGFibGU8Rm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIEVhY2ggaW5wdXQgY29udHJvbCBoYXMgYWx3YXlzIGEgdmFsdWUuIE5lZWQgdG8gbWFrZSBzdXJlIHdlIGtlZXAgYSBjb252ZW50aW9uIGZvclxuICAgICAqIGlucHV0IGZpZWxkc1xuICAgICAqL1xuICAgIHZhbHVlOiBUIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIE5lZWQgdG8gaGF2ZSBhIHdheSB0byBzZXQgcGxhY2Vob2xkZXIgdG8gdGhlIGlucHV0XG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5lZWQgdG8gaGF2ZSBhIHdheSB0byBzZXQgTWFuZGF0b3J5IHRvIHRoZSBpbnB1dCBmaWVsZFxuICAgICAqL1xuICAgIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBpZCBmcm9tIEZGIHRvIElucHV0XG4gICAgICovXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoaXMgc2hvdWxkIGJlIGNvbWluZyBmcm9tIFBhcmVudC5cbiAgICAgKi9cbiAgICBlZGl0YWJsZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBoZWlnaHQgb2YgdGhlIGV4dHJhIGNvbnRlbnQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZm9ybSBjb250cm9sLFxuICAgICAqIHdoaWNoIHNob3VsZCBub3QgYWZmZWN0IHRoZSBhbGlnbm1lbnQgb2YgZm9ybSBjb250cm9sIGFuZCBpdCdzIGxhYmVsXG4gICAgICovXG4gICAgZXh0cmFDb250ZW50SGVpZ2h0UHg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEZvcm0gRmllbGQgbGlzdGVuIGZvciBhbGwgdGhlIGNoYW5nZXMgaGFwcGVuaW5nIGluc2lkZSB0aGUgaW5wdXRcbiAgICAgKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiAgRWFjaCBpbnB1dCBzaG91bGQgaW5qZWN0IGl0cyBvd24gbmdDb250cm9sIGFuZCB3ZSBzaG91bGQgcmV0cmlldmUgaXRcbiAgICAgKi9cbiAgICByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC4gKi9cbiAgICByZWFkb25seSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEtlZXBzIHRyYWNrIGlmIHRoZSBmb3JtIGVsZW1lbnQgaXMgaW4gZm9jdXNcbiAgICAgKi9cbiAgICByZWFkb25seSBmb2N1c2VkOiBib29sZWFuO1xuXG4gICAgLyoqIFdoZXRoZXIgY29udHJvbCBoYXMgZXJyb3JzICovXG4gICAgcmVhZG9ubHkgY29udHJvbEludmFsaWQ6IGJvb2xlYW47XG5cbiAgICAvKiogQ29ycmVzcG9uZGluZyBlbGVtZW50IHJlZmVyZW5jZS4gKi9cbiAgICByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEZvcm0gZmllbGQgaW5zdGFuY2UuICovXG4gICAgZm9ybUZpZWxkOiBOdWxsYWJsZTxQbGF0Zm9ybUZvcm1GaWVsZD47XG59XG5cbi8qKlxuICogRm9ybUdyb3VwIGJhc2UgY2xhc3MuXG4gKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNyZWF0ZSBmb3JtIGdyb3VwIGNvbXBvbmVudHMuXG4gKlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRm9ybUdyb3VwQ29udGFpbmVyIHtcbiAgICAvKipcbiAgICAgKiBBbmd1bGFyIEZvcm1Hcm91cCB3aGVyZSBhbGwgdW5kZXJseWluZyBjb250cm9scyB3aWxsIGJlIGF0dGFjaGVkIHRvLlxuICAgICAqL1xuICAgIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIC8qKlxuICAgICAqIFRyYW5zbGF0aW9ucyB0ZW1wbGF0ZSByZWZlcmVuY2UuXG4gICAgICovXG4gICAgaTE4U3RyaW5nczogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hlbiBmb3JtIGlzIGVkaXRhYmxlLlxuICAgICAqL1xuICAgIGVkaXRhYmxlOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGVuIGxhYmVscyBzaG91bGQgbm90IGJlIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBub0xhYmVsTGF5b3V0OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBsYWJlbCdzIGNvbHVtbiBsYXlvdXQuXG4gICAgICovXG4gICAgbGFiZWxDb2x1bW5MYXlvdXQ6IENvbHVtbkxheW91dDtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgZmllbGQncyBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIGZpZWxkQ29sdW1uTGF5b3V0OiBDb2x1bW5MYXlvdXQ7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGdhcCBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIGdhcENvbHVtbkxheW91dDogQ29sdW1uTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogRm9ybSdzIG1haW4gdGl0bGUuXG4gICAgICovXG4gICAgbWFpblRpdGxlPzogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEF0dGFjaCB1bmRlcmx5aW5nIGZvcm0gZmllbGQuXG4gICAgICovXG4gICAgYWRkRm9ybUZpZWxkOiAoZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCkgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBEZXRhY2ggdW5kZXJseWluZyBmb3JtIGZpZWxkLlxuICAgICAqL1xuICAgIHJlbW92ZUZvcm1GaWVsZDogKGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogQXR0YWNoIGZvcm1Db250cm9sLlxuICAgICAqL1xuICAgIGFkZEZvcm1Db250cm9sOiAobmFtZTogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogRGV0YWNoIGZvcm0gZm9ybUNvbnRyb2wuXG4gICAgICovXG4gICAgcmVtb3ZlRm9ybUNvbnRyb2w6IChuYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogQXR0YWNoIHVuZGVybHlpbmcgZm9ybSBmaWVsZCBncm91cC5cbiAgICAgKi9cbiAgICBhZGRGb3JtRmllbGRHcm91cDogKGZvcm1GaWVsZEdyb3VwOiBGb3JtRmllbGRHcm91cCkgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBEZXRhY2ggdW5kZXJseWluZyBmb3JtIGZpZWxkIGdyb3VwLlxuICAgICAqL1xuICAgIHJlbW92ZUZvcm1GaWVsZEdyb3VwOiAoZm9ybUZpZWxkR3JvdXA6IEZvcm1GaWVsZEdyb3VwKSA9PiB2b2lkO1xufVxuIl19","export var ColumnLayoutGridClass;\n(function (ColumnLayoutGridClass) {\n ColumnLayoutGridClass[\"XL\"] = \"xl\";\n ColumnLayoutGridClass[\"L\"] = \"lg\";\n ColumnLayoutGridClass[\"M\"] = \"md\";\n ColumnLayoutGridClass[\"S\"] = \"sm\";\n})(ColumnLayoutGridClass || (ColumnLayoutGridClass = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zaGFyZWQvZm9ybS9mb3JtLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxDQUFOLElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUM3QixrQ0FBUyxDQUFBO0lBQ1QsaUNBQVEsQ0FBQTtJQUNSLGlDQUFRLENBQUE7SUFDUixpQ0FBUSxDQUFBO0FBQ1osQ0FBQyxFQUxXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFLaEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBMYWJlbExheW91dCA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG5cbmV4cG9ydCB0eXBlIEhpbnRQbGFjZW1lbnQgPSAnbGVmdCcgfCAncmlnaHQnO1xuXG5leHBvcnQgdHlwZSBGb3JtWm9uZSA9ICd6VG9wJyB8ICd6Qm90dG9tJyB8ICd6TGVmdCcgfCAnelJpZ2h0JztcblxuZXhwb3J0IHR5cGUgQ29sdW1uID0gMSB8IDIgfCAzIHwgNSB8IDYgfCA3IHwgOCB8IDkgfCAxMCB8IDExIHwgMTI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uTGF5b3V0IHtcbiAgICBYTD86IG51bWJlcjtcbiAgICBMPzogbnVtYmVyO1xuICAgIE0/OiBudW1iZXI7XG4gICAgUz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gQ29sdW1uTGF5b3V0R3JpZENsYXNzIHtcbiAgICBYTCA9ICd4bCcsXG4gICAgTCA9ICdsZycsXG4gICAgTSA9ICdtZCcsXG4gICAgUyA9ICdzbSdcbn1cbiJdfQ==","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Directive, Injectable, InjectionToken, Input, inject } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CollectionBaseInput } from './collection-base.input';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/layout\";\nexport var RESPONSIVE_BREAKPOINTS;\n(function (RESPONSIVE_BREAKPOINTS) {\n RESPONSIVE_BREAKPOINTS[RESPONSIVE_BREAKPOINTS[\"S\"] = 600] = \"S\";\n RESPONSIVE_BREAKPOINTS[RESPONSIVE_BREAKPOINTS[\"M\"] = 1024] = \"M\";\n RESPONSIVE_BREAKPOINTS[RESPONSIVE_BREAKPOINTS[\"L\"] = 1440] = \"L\";\n})(RESPONSIVE_BREAKPOINTS || (RESPONSIVE_BREAKPOINTS = {}));\nexport const RESPONSIVE_BREAKPOINTS_CONFIG = new InjectionToken('Default Responsive breakpoint config');\nexport class ResponsiveBreakPointConfig {\n constructor() {\n /** Large screen */\n this.L = RESPONSIVE_BREAKPOINTS['L'];\n /** Medium screen */\n this.M = RESPONSIVE_BREAKPOINTS['M'];\n /** Small screen */\n this.S = RESPONSIVE_BREAKPOINTS['S'];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResponsiveBreakPointConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResponsiveBreakPointConfig }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResponsiveBreakPointConfig, decorators: [{\n type: Injectable\n }] });\nexport class ResponsiveBreakpointsService {\n /** @hidden */\n constructor(_breakpointObserver) {\n this._breakpointObserver = _breakpointObserver;\n /** @hidden */\n this.breakpoints = {};\n /** @hidden */\n this.minWidth = 'min-width';\n /** @hidden */\n this.maxWidth = 'max-width';\n /** @hidden */\n this.unit = 'px';\n }\n /** subscribe to get current screen size based on config provided */\n observeBreakpointByConfig(config) {\n const breakPointName = new BehaviorSubject('S');\n this._breakpointObserver.observe(this._getBreakpoints(config)).subscribe((matchValues) => {\n const breakPoint = this._breakPointMeet(matchValues);\n breakPointName.next(breakPoint);\n });\n return breakPointName;\n }\n /** @hidden when screen size changes from one breakpoint to another */\n _breakPointMeet(breakPointMatches) {\n let breakPointName;\n if (breakPointMatches.matches) {\n for (const breakpoint in breakPointMatches.breakpoints) {\n if (breakPointMatches.breakpoints[breakpoint]) {\n breakPointName = this._getBreakpointName(breakpoint);\n }\n }\n }\n return breakPointName ?? 'S';\n }\n /** @hidden */\n _getBreakpoints(config) {\n let breakPointStr;\n this.activeBreakpoints = [];\n for (const screenSize of Object.keys(config)) {\n switch (screenSize) {\n case 'S':\n breakPointStr = `(${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = screenSize;\n break;\n case 'M':\n breakPointStr = `(${this.minWidth}: ${config['S']}${this.unit}) and (${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = screenSize;\n break;\n case 'L':\n breakPointStr = `(${this.minWidth}: ${config['M']}${this.unit}) and (${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = screenSize;\n // create entry for XL screen\n breakPointStr = `(${this.minWidth}: ${config[screenSize]}${this.unit})`;\n this.activeBreakpoints.push(breakPointStr);\n this.breakpoints[breakPointStr] = 'XL';\n break;\n }\n }\n return this.activeBreakpoints;\n }\n /** @hidden */\n _getBreakpointName(breakpointValue) {\n return this.breakpoints[breakpointValue];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResponsiveBreakpointsService, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResponsiveBreakpointsService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResponsiveBreakpointsService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i1.BreakpointObserver }] });\nexport class InLineLayoutCollectionBaseInput extends CollectionBaseInput {\n constructor() {\n super(...arguments);\n /** @hidden */\n this._inlineCurrentValue$ = new BehaviorSubject(false);\n /** @hidden */\n this._responsiveBreakpointsService = inject(ResponsiveBreakpointsService);\n /** @hidden */\n this._responsiveBreakPointConfig = inject(RESPONSIVE_BREAKPOINTS_CONFIG, {\n optional: true\n }) || new ResponsiveBreakPointConfig();\n /** @hidden */\n this._isInLineLayoutEnabled = false;\n }\n /** object to change isInline property based on screen size */\n set inlineLayout(layout) {\n if (layout) {\n this._inlineLayout = layout;\n this._isInLineLayoutEnabled = true;\n }\n this._setFieldLayout(layout);\n }\n get inlineLayout() {\n return this._inlineLayout;\n }\n /** @hidden */\n ngOnInit() {\n super.ngOnInit();\n if (this._isInLineLayoutEnabled) {\n this._responsiveBreakpointsService\n .observeBreakpointByConfig(this._responsiveBreakPointConfig)\n .subscribe((breakPointName) => {\n this._updateLayout(breakPointName);\n });\n }\n }\n /** @hidden set values of inline for each screen layout */\n _setFieldLayout(inlineLayout) {\n if (!inlineLayout) {\n this._isInLineLayoutEnabled = false;\n return;\n }\n try {\n this._sIsInline = !!inlineLayout['S'];\n this._mdIsInline = !!inlineLayout['M'];\n this._lgIsInline = !!inlineLayout['L'];\n this._xlIsInline = !!inlineLayout['XL'];\n }\n catch {\n this._isInLineLayoutEnabled = false;\n }\n }\n /** @hidden */\n _updateLayout(currentBreakingPointName) {\n if (this._isInLineLayoutEnabled) {\n switch (currentBreakingPointName) {\n case 'S':\n this._inlineCurrentValue$.next(this._sIsInline);\n break;\n case 'M':\n this._inlineCurrentValue$.next(this._mdIsInline);\n break;\n case 'L':\n this._inlineCurrentValue$.next(this._lgIsInline);\n break;\n case 'XL':\n this._inlineCurrentValue$.next(this._xlIsInline);\n break;\n default:\n this._inlineCurrentValue$.next(this._xlIsInline);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: InLineLayoutCollectionBaseInput, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: InLineLayoutCollectionBaseInput, isStandalone: true, inputs: { inlineLayout: \"inlineLayout\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: InLineLayoutCollectionBaseInput, decorators: [{\n type: Directive\n }], propDecorators: { inlineLayout: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWxheW91dC1jb2xsZWN0aW9uLWJhc2UuaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NoYXJlZC9mb3JtL2lubGluZS1sYXlvdXQtY29sbGVjdGlvbi1iYXNlLmlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTOUQsTUFBTSxDQUFOLElBQVksc0JBSVg7QUFKRCxXQUFZLHNCQUFzQjtJQUM5QiwrREFBTyxDQUFBO0lBQ1AsZ0VBQVEsQ0FBQTtJQUNSLGdFQUFRLENBQUE7QUFDWixDQUFDLEVBSlcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQUlqQztBQUVELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUMzRCxzQ0FBc0MsQ0FDekMsQ0FBQztBQUdGLE1BQU0sT0FBTywwQkFBMEI7SUFEdkM7UUFFSSxtQkFBbUI7UUFDbkIsTUFBQyxHQUFXLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLG9CQUFvQjtRQUNwQixNQUFDLEdBQVcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsbUJBQW1CO1FBQ25CLE1BQUMsR0FBVyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMzQzs4R0FQWSwwQkFBMEI7a0hBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVTs7QUFhWCxNQUFNLE9BQU8sNEJBQTRCO0lBWXJDLGNBQWM7SUFDZCxZQUFxQixtQkFBdUM7UUFBdkMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQVo1RCxjQUFjO1FBQ2QsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBR3RDLGNBQWM7UUFDZCxhQUFRLEdBQUcsV0FBVyxDQUFDO1FBQ3ZCLGNBQWM7UUFDZCxhQUFRLEdBQUcsV0FBVyxDQUFDO1FBQ3ZCLGNBQWM7UUFDZCxTQUFJLEdBQUcsSUFBSSxDQUFDO0lBR21ELENBQUM7SUFFaEUsb0VBQW9FO0lBQ3BFLHlCQUF5QixDQUFDLE1BQWtDO1FBQ3hELE1BQU0sY0FBYyxHQUFvQixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JELGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRUQsc0VBQXNFO0lBQzlELGVBQWUsQ0FBQyxpQkFBa0M7UUFDdEQsSUFBSSxjQUFrQyxDQUFDO1FBRXZDLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsS0FBSyxNQUFNLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDNUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDekQsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxjQUFjLElBQUksR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjO0lBQ04sZUFBZSxDQUFDLE1BQWtDO1FBQ3RELElBQUksYUFBcUIsQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBRTVCLEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLFFBQVEsVUFBVSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssR0FBRztvQkFDSixhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7b0JBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUM3QyxNQUFNO2dCQUNWLEtBQUssR0FBRztvQkFDSixhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxVQUFVLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztvQkFDM0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdDLE1BQU07Z0JBQ1YsS0FBSyxHQUFHO29CQUNKLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO29CQUMzSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFVBQVUsQ0FBQztvQkFFN0MsNkJBQTZCO29CQUM3QixhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7b0JBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUN2QyxNQUFNO1lBQ2QsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQixDQUFDLGVBQWU7UUFDdEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7OEdBOUVRLDRCQUE0QjtrSEFBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzJGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7O0FBbUZELE1BQU0sT0FBZ0IsK0JBQWdDLFNBQVEsbUJBQW1CO0lBRGpGOztRQWVJLGNBQWM7UUFDSix5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVyRSxjQUFjO1FBQ0ssa0NBQTZCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFeEYsY0FBYztRQUNLLGdDQUEyQixHQUMxQyxNQUFNLENBQUMsNkJBQTZCLEVBQUU7WUFDbEMsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxJQUFJLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQWlCM0MsY0FBYztRQUNOLDJCQUFzQixHQUFHLEtBQUssQ0FBQztLQW9EMUM7SUE3RkcsOERBQThEO0lBQzlELElBQ0ksWUFBWSxDQUFDLE1BQWdDO1FBQzdDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztZQUM1QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQWdDRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyw2QkFBNkI7aUJBQzdCLHlCQUF5QixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQztpQkFDM0QsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0wsQ0FBQztJQUVELDBEQUEwRDtJQUNsRCxlQUFlLENBQUMsWUFBMkI7UUFDL0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7WUFDcEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNMLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sYUFBYSxDQUFDLHdCQUFnQztRQUNsRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlCLFFBQVEsd0JBQXdCLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxHQUFHO29CQUNKLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNoRCxNQUFNO2dCQUNWLEtBQUssR0FBRztvQkFDSixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDakQsTUFBTTtnQkFDVixLQUFLLEdBQUc7b0JBQ0osSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ2pELE1BQU07Z0JBQ1YsS0FBSyxJQUFJO29CQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNqRCxNQUFNO2dCQUNWO29CQUNJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0E3RmlCLCtCQUErQjtrR0FBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQURwRCxTQUFTOzhCQUlGLFlBQVk7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludFN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb2xsZWN0aW9uQmFzZUlucHV0IH0gZnJvbSAnLi9jb2xsZWN0aW9uLWJhc2UuaW5wdXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZUxheW91dCB7XG4gICAgWEw/OiBib29sZWFuO1xuICAgIEw/OiBib29sZWFuO1xuICAgIE0/OiBib29sZWFuO1xuICAgIFM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBSRVNQT05TSVZFX0JSRUFLUE9JTlRTIHtcbiAgICBTID0gNjAwLFxuICAgIE0gPSAxMDI0LFxuICAgIEwgPSAxNDQwXG59XG5cbmV4cG9ydCBjb25zdCBSRVNQT05TSVZFX0JSRUFLUE9JTlRTX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZXNwb25zaXZlQnJlYWtQb2ludENvbmZpZz4oXG4gICAgJ0RlZmF1bHQgUmVzcG9uc2l2ZSBicmVha3BvaW50IGNvbmZpZydcbik7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXNwb25zaXZlQnJlYWtQb2ludENvbmZpZyB7XG4gICAgLyoqIExhcmdlIHNjcmVlbiAqL1xuICAgIEw6IG51bWJlciA9IFJFU1BPTlNJVkVfQlJFQUtQT0lOVFNbJ0wnXTtcbiAgICAvKiogTWVkaXVtIHNjcmVlbiAqL1xuICAgIE06IG51bWJlciA9IFJFU1BPTlNJVkVfQlJFQUtQT0lOVFNbJ00nXTtcbiAgICAvKiogU21hbGwgc2NyZWVuICovXG4gICAgUzogbnVtYmVyID0gUkVTUE9OU0lWRV9CUkVBS1BPSU5UU1snUyddO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlc3BvbnNpdmVCcmVha3BvaW50c1NlcnZpY2Uge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYnJlYWtwb2ludHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFjdGl2ZUJyZWFrcG9pbnRzOiBzdHJpbmdbXTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1pbldpZHRoID0gJ21pbi13aWR0aCc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtYXhXaWR0aCA9ICdtYXgtd2lkdGgnO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdW5pdCA9ICdweCc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IF9icmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcikge31cblxuICAgIC8qKiBzdWJzY3JpYmUgdG8gZ2V0IGN1cnJlbnQgc2NyZWVuIHNpemUgYmFzZWQgb24gY29uZmlnIHByb3ZpZGVkICovXG4gICAgb2JzZXJ2ZUJyZWFrcG9pbnRCeUNvbmZpZyhjb25maWc6IFJlc3BvbnNpdmVCcmVha1BvaW50Q29uZmlnKTogU3ViamVjdDxhbnk+IHtcbiAgICAgICAgY29uc3QgYnJlYWtQb2ludE5hbWU6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJ1MnKTtcblxuICAgICAgICB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9nZXRCcmVha3BvaW50cyhjb25maWcpKS5zdWJzY3JpYmUoKG1hdGNoVmFsdWVzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBicmVha1BvaW50ID0gdGhpcy5fYnJlYWtQb2ludE1lZXQobWF0Y2hWYWx1ZXMpO1xuICAgICAgICAgICAgYnJlYWtQb2ludE5hbWUubmV4dChicmVha1BvaW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGJyZWFrUG9pbnROYW1lO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIHdoZW4gc2NyZWVuIHNpemUgY2hhbmdlcyBmcm9tIG9uZSBicmVha3BvaW50IHRvIGFub3RoZXIgKi9cbiAgICBwcml2YXRlIF9icmVha1BvaW50TWVldChicmVha1BvaW50TWF0Y2hlczogQnJlYWtwb2ludFN0YXRlKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGJyZWFrUG9pbnROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGJyZWFrUG9pbnRNYXRjaGVzLm1hdGNoZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYnJlYWtwb2ludCBpbiBicmVha1BvaW50TWF0Y2hlcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGlmIChicmVha1BvaW50TWF0Y2hlcy5icmVha3BvaW50c1ticmVha3BvaW50XSkge1xuICAgICAgICAgICAgICAgICAgICBicmVha1BvaW50TmFtZSA9IHRoaXMuX2dldEJyZWFrcG9pbnROYW1lKGJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBicmVha1BvaW50TmFtZSA/PyAnUyc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRCcmVha3BvaW50cyhjb25maWc6IFJlc3BvbnNpdmVCcmVha1BvaW50Q29uZmlnKTogc3RyaW5nW10ge1xuICAgICAgICBsZXQgYnJlYWtQb2ludFN0cjogc3RyaW5nO1xuICAgICAgICB0aGlzLmFjdGl2ZUJyZWFrcG9pbnRzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBzY3JlZW5TaXplIG9mIE9iamVjdC5rZXlzKGNvbmZpZykpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc2NyZWVuU2l6ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgICAgICAgICBicmVha1BvaW50U3RyID0gYCgke3RoaXMubWF4V2lkdGh9OiAke2NvbmZpZ1tzY3JlZW5TaXplXX0ke3RoaXMudW5pdH0pYDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVCcmVha3BvaW50cy5wdXNoKGJyZWFrUG9pbnRTdHIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzW2JyZWFrUG9pbnRTdHJdID0gc2NyZWVuU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrUG9pbnRTdHIgPSBgKCR7dGhpcy5taW5XaWR0aH06ICR7Y29uZmlnWydTJ119JHt0aGlzLnVuaXR9KSBhbmQgKCR7dGhpcy5tYXhXaWR0aH06ICR7Y29uZmlnW3NjcmVlblNpemVdfSR7dGhpcy51bml0fSlgO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUJyZWFrcG9pbnRzLnB1c2goYnJlYWtQb2ludFN0cik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJlYWtwb2ludHNbYnJlYWtQb2ludFN0cl0gPSBzY3JlZW5TaXplO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtQb2ludFN0ciA9IGAoJHt0aGlzLm1pbldpZHRofTogJHtjb25maWdbJ00nXX0ke3RoaXMudW5pdH0pIGFuZCAoJHt0aGlzLm1heFdpZHRofTogJHtjb25maWdbc2NyZWVuU2l6ZV19JHt0aGlzLnVuaXR9KWA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlQnJlYWtwb2ludHMucHVzaChicmVha1BvaW50U3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icmVha3BvaW50c1ticmVha1BvaW50U3RyXSA9IHNjcmVlblNpemU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGVudHJ5IGZvciBYTCBzY3JlZW5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWtQb2ludFN0ciA9IGAoJHt0aGlzLm1pbldpZHRofTogJHtjb25maWdbc2NyZWVuU2l6ZV19JHt0aGlzLnVuaXR9KWA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlQnJlYWtwb2ludHMucHVzaChicmVha1BvaW50U3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icmVha3BvaW50c1ticmVha1BvaW50U3RyXSA9ICdYTCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlQnJlYWtwb2ludHM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRCcmVha3BvaW50TmFtZShicmVha3BvaW50VmFsdWUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5icmVha3BvaW50c1ticmVha3BvaW50VmFsdWVdO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5MaW5lTGF5b3V0Q29sbGVjdGlvbkJhc2VJbnB1dCBleHRlbmRzIENvbGxlY3Rpb25CYXNlSW5wdXQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKiBvYmplY3QgdG8gY2hhbmdlIGlzSW5saW5lIHByb3BlcnR5IGJhc2VkIG9uIHNjcmVlbiBzaXplICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaW5saW5lTGF5b3V0KGxheW91dDogSW5saW5lTGF5b3V0IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChsYXlvdXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lubGluZUxheW91dCA9IGxheW91dDtcbiAgICAgICAgICAgIHRoaXMuX2lzSW5MaW5lTGF5b3V0RW5hYmxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0RmllbGRMYXlvdXQobGF5b3V0KTtcbiAgICB9XG4gICAgZ2V0IGlubGluZUxheW91dCgpOiBJbmxpbmVMYXlvdXQge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lTGF5b3V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9pbmxpbmVDdXJyZW50VmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcmVzcG9uc2l2ZUJyZWFrcG9pbnRzU2VydmljZSA9IGluamVjdChSZXNwb25zaXZlQnJlYWtwb2ludHNTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yZXNwb25zaXZlQnJlYWtQb2ludENvbmZpZyA9XG4gICAgICAgIGluamVjdChSRVNQT05TSVZFX0JSRUFLUE9JTlRTX0NPTkZJRywge1xuICAgICAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICAgICAgfSkgfHwgbmV3IFJlc3BvbnNpdmVCcmVha1BvaW50Q29uZmlnKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lubGluZUxheW91dDogSW5saW5lTGF5b3V0O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF94bElzSW5saW5lOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sZ0lzSW5saW5lOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tZElzSW5saW5lOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zSXNJbmxpbmU6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzSW5MaW5lTGF5b3V0RW5hYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAodGhpcy5faXNJbkxpbmVMYXlvdXRFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNwb25zaXZlQnJlYWtwb2ludHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLm9ic2VydmVCcmVha3BvaW50QnlDb25maWcodGhpcy5fcmVzcG9uc2l2ZUJyZWFrUG9pbnRDb25maWcpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoYnJlYWtQb2ludE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0KGJyZWFrUG9pbnROYW1lKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIHNldCB2YWx1ZXMgb2YgaW5saW5lIGZvciBlYWNoIHNjcmVlbiBsYXlvdXQgKi9cbiAgICBwcml2YXRlIF9zZXRGaWVsZExheW91dChpbmxpbmVMYXlvdXQ/OiBJbmxpbmVMYXlvdXQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpbmxpbmVMYXlvdXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzSW5MaW5lTGF5b3V0RW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9zSXNJbmxpbmUgPSAhIWlubGluZUxheW91dFsnUyddO1xuICAgICAgICAgICAgdGhpcy5fbWRJc0lubGluZSA9ICEhaW5saW5lTGF5b3V0WydNJ107XG4gICAgICAgICAgICB0aGlzLl9sZ0lzSW5saW5lID0gISFpbmxpbmVMYXlvdXRbJ0wnXTtcbiAgICAgICAgICAgIHRoaXMuX3hsSXNJbmxpbmUgPSAhIWlubGluZUxheW91dFsnWEwnXTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICB0aGlzLl9pc0luTGluZUxheW91dEVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlTGF5b3V0KGN1cnJlbnRCcmVha2luZ1BvaW50TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc0luTGluZUxheW91dEVuYWJsZWQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoY3VycmVudEJyZWFraW5nUG9pbnROYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lubGluZUN1cnJlbnRWYWx1ZSQubmV4dCh0aGlzLl9zSXNJbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5saW5lQ3VycmVudFZhbHVlJC5uZXh0KHRoaXMuX21kSXNJbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5saW5lQ3VycmVudFZhbHVlJC5uZXh0KHRoaXMuX2xnSXNJbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdYTCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lubGluZUN1cnJlbnRWYWx1ZSQubmV4dCh0aGlzLl94bElzSW5saW5lKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5saW5lQ3VycmVudFZhbHVlJC5uZXh0KHRoaXMuX3hsSXNJbmxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ConvertBytesPipe {\n constructor() {\n /** @hidden */\n this._sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n }\n /** @hidden */\n transform(bytes) {\n return this._convertBytes(bytes);\n }\n /**\n * Convert bytes to KB, MB, GB, ...\n * @param bytes number\n * @param decimals number\n */\n _convertBytes(bytes = 0, decimals = 2) {\n if (bytes <= 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + this._sizes[i];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConvertBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ConvertBytesPipe, isStandalone: true, name: \"convertBytes\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConvertBytesPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'convertBytes',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC1ieXRlcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zaGFyZWQvcGlwZXMvY29udmVydC1ieXRlcy9jb252ZXJ0LWJ5dGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxnQkFBZ0I7SUFKN0I7UUFLSSxjQUFjO1FBQ0csV0FBTSxHQUFhLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQXVCakc7SUFyQkcsY0FBYztJQUNkLFNBQVMsQ0FBQyxLQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDO1FBQ3pDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2IsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEQsT0FBTyxVQUFVLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDOzhHQXhCUSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsY0FBYztvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2NvbnZlcnRCeXRlcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb252ZXJ0Qnl0ZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zaXplczogc3RyaW5nW10gPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zZm9ybShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRCeXRlcyhieXRlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBieXRlcyB0byBLQiwgTUIsIEdCLCAuLi5cbiAgICAgKiBAcGFyYW0gYnl0ZXMgbnVtYmVyXG4gICAgICogQHBhcmFtIGRlY2ltYWxzIG51bWJlclxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRCeXRlcyhieXRlcyA9IDAsIGRlY2ltYWxzID0gMik6IHN0cmluZyB7XG4gICAgICAgIGlmIChieXRlcyA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJzAgQnl0ZXMnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgayA9IDEwMjQ7XG4gICAgICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPCAwID8gMCA6IGRlY2ltYWxzO1xuICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArICcgJyArIHRoaXMuX3NpemVzW2ldO1xuICAgIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { ConvertBytesPipe } from './convert-bytes/convert-bytes.pipe';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class PlatformPipeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformPipeModule, imports: [ConvertBytesPipe], exports: [ConvertBytesPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformPipeModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformPipeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ConvertBytesPipe],\n exports: [ConvertBytesPipe]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NoYXJlZC9waXBlcy9waXBlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUV0RTs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixZQUhqQixnQkFBZ0IsYUFDaEIsZ0JBQWdCOytHQUVqQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnZlcnRCeXRlc1BpcGUgfSBmcm9tICcuL2NvbnZlcnQtYnl0ZXMvY29udmVydC1ieXRlcy5waXBlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbnZlcnRCeXRlc1BpcGVdLFxuICAgIGV4cG9ydHM6IFtDb252ZXJ0Qnl0ZXNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVBpcGVNb2R1bGUge31cbiJdfQ==","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Creates a browser MouseEvent with the specified options.\n * @docs-private\n */\nexport function createMouseEvent(type, x = 0, y = 0, button = 0) {\n const event = document.createEvent('MouseEvent');\n const originalPreventDefault = event.preventDefault.bind(event);\n event.initMouseEvent(type, true /* canBubble */, true /* cancelable */, window /* view */, 0 /* detail */, x /* screenX */, y /* screenY */, x /* clientX */, y /* clientY */, false /* ctrlKey */, false /* altKey */, false /* shiftKey */, false /* metaKey */, button /* button */, null /* relatedTarget */);\n // `initMouseEvent` doesn't allow us to pass the `buttons` and\n // defaults it to 0 which looks like a fake event.\n Object.defineProperty(event, 'buttons', { get: () => 1 });\n // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n event.preventDefault = function () {\n Object.defineProperty(event, 'defaultPrevented', { get: () => true, configurable: true });\n return originalPreventDefault();\n };\n return event;\n}\n/**\n * Creates a browser TouchEvent with the specified pointer coordinates.\n * @docs-private\n */\nexport function createTouchEvent(type, pageX = 0, pageY = 0) {\n // In favor of creating events that work for most of the browsers, the event is created\n // as a basic UI Event. The necessary details for the event will be set manually.\n const event = document.createEvent('UIEvent');\n const touchDetails = { pageX, pageY };\n // TS3.6 removes the initUIEvent method and suggests porting to \"new UIEvent()\".\n event.initUIEvent(type, true, true, window, 0);\n // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n // the touch details.\n Object.defineProperties(event, {\n touches: { value: [touchDetails] },\n targetTouches: { value: [touchDetails] },\n changedTouches: { value: [touchDetails] }\n });\n return event;\n}\n/**\n * Dispatches a keydown event from an element.\n * @docs-private\n */\nexport function createKeyboardEvent(type, keyCode = 0, key = '', target, modifiers = {}) {\n const event = document.createEvent('KeyboardEvent');\n const originalPreventDefault = event.preventDefault;\n // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n if (event.initKeyEvent) {\n event.initKeyEvent(type, true, true, window, modifiers.control, modifiers.alt, modifiers.shift, modifiers.meta, keyCode);\n }\n else {\n // `initKeyboardEvent` expects to receive modifiers as a whitespace-delimited string\n // See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/initKeyboardEvent\n let modifiersList = '';\n if (modifiers.control) {\n modifiersList += 'Control ';\n }\n if (modifiers.alt) {\n modifiersList += 'Alt ';\n }\n if (modifiers.shift) {\n modifiersList += 'Shift ';\n }\n if (modifiers.meta) {\n modifiersList += 'Meta ';\n }\n event.initKeyboardEvent(type, true /* canBubble */, true /* cancelable */, window /* view */, 0 /* char */, key /* key */, 0 /* location */, modifiersList.trim() /* modifiersList */, false /* repeat */);\n }\n // Webkit Browsers don't set the keyCode when calling the init function.\n // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n Object.defineProperties(event, {\n keyCode: { get: () => keyCode },\n key: { get: () => key },\n target: { get: () => target },\n ctrlKey: { get: () => !!modifiers.control },\n altKey: { get: () => !!modifiers.alt },\n shiftKey: { get: () => !!modifiers.shift },\n metaKey: { get: () => !!modifiers.meta }\n });\n // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n event.preventDefault = function () {\n Object.defineProperty(event, 'defaultPrevented', { get: () => true, configurable: true });\n // eslint-disable-next-line prefer-rest-params\n return originalPreventDefault.apply(this, arguments);\n };\n return event;\n}\n/**\n * Creates a fake event object with any desired event type.\n * @docs-private\n */\nexport function createFakeEvent(type, canBubble = false, cancelable = true) {\n const event = document.createEvent('Event');\n event.initEvent(type, canBubble, cancelable);\n return event;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtb2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL3Rlc3RpbmcvZXZlbnQtb2JqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFJSDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUNuRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pELE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFaEUsS0FBSyxDQUFDLGNBQWMsQ0FDaEIsSUFBSSxFQUNKLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsTUFBTSxDQUFDLFVBQVUsRUFDakIsQ0FBQyxDQUFDLFlBQVksRUFDZCxDQUFDLENBQUMsYUFBYSxFQUNmLENBQUMsQ0FBQyxhQUFhLEVBQ2YsQ0FBQyxDQUFDLGFBQWEsRUFDZixDQUFDLENBQUMsYUFBYSxFQUNmLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQ3BCLEtBQUssQ0FBQyxhQUFhLEVBQ25CLE1BQU0sQ0FBQyxZQUFZLEVBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FDM0IsQ0FBQztJQUVGLDhEQUE4RDtJQUM5RCxrREFBa0Q7SUFDbEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFMUQsb0ZBQW9GO0lBQ3BGLEtBQUssQ0FBQyxjQUFjLEdBQUc7UUFDbkIs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QUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0MsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBNb2RpZmllcktleXMgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJyb3dzZXIgTW91c2VFdmVudCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vdXNlRXZlbnQodHlwZTogc3RyaW5nLCB4ID0gMCwgeSA9IDAsIGJ1dHRvbiA9IDApOiBNb3VzZUV2ZW50IHtcbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7XG4gICAgY29uc3Qgb3JpZ2luYWxQcmV2ZW50RGVmYXVsdCA9IGV2ZW50LnByZXZlbnREZWZhdWx0LmJpbmQoZXZlbnQpO1xuXG4gICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHRydWUgLyogY2FuQnViYmxlICovLFxuICAgICAgICB0cnVlIC8qIGNhbmNlbGFibGUgKi8sXG4gICAgICAgIHdpbmRvdyAvKiB2aWV3ICovLFxuICAgICAgICAwIC8qIGRldGFpbCAqLyxcbiAgICAgICAgeCAvKiBzY3JlZW5YICovLFxuICAgICAgICB5IC8qIHNjcmVlblkgKi8sXG4gICAgICAgIHggLyogY2xpZW50WCAqLyxcbiAgICAgICAgeSAvKiBjbGllbnRZICovLFxuICAgICAgICBmYWxzZSAvKiBjdHJsS2V5ICovLFxuICAgICAgICBmYWxzZSAvKiBhbHRLZXkgKi8sXG4gICAgICAgIGZhbHNlIC8qIHNoaWZ0S2V5ICovLFxuICAgICAgICBmYWxzZSAvKiBtZXRhS2V5ICovLFxuICAgICAgICBidXR0b24gLyogYnV0dG9uICovLFxuICAgICAgICBudWxsIC8qIHJlbGF0ZWRUYXJnZXQgKi9cbiAgICApO1xuXG4gICAgLy8gYGluaXRNb3VzZUV2ZW50YCBkb2Vzbid0IGFsbG93IHVzIHRvIHBhc3MgdGhlIGBidXR0b25zYCBhbmRcbiAgICAvLyBkZWZhdWx0cyBpdCB0byAwIHdoaWNoIGxvb2tzIGxpa2UgYSBmYWtlIGV2ZW50LlxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ2J1dHRvbnMnLCB7IGdldDogKCkgPT4gMSB9KTtcblxuICAgIC8vIElFIHdvbid0IHNldCBgZGVmYXVsdFByZXZlbnRlZGAgb24gc3ludGhldGljIGV2ZW50cyBzbyB3ZSBuZWVkIHRvIGRvIGl0IG1hbnVhbGx5LlxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdkZWZhdWx0UHJldmVudGVkJywgeyBnZXQ6ICgpID0+IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGV2ZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBicm93c2VyIFRvdWNoRXZlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIHBvaW50ZXIgY29vcmRpbmF0ZXMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb3VjaEV2ZW50KHR5cGU6IHN0cmluZywgcGFnZVggPSAwLCBwYWdlWSA9IDApOiBFdmVudCB7XG4gICAgLy8gSW4gZmF2b3Igb2YgY3JlYXRpbmcgZXZlbnRzIHRoYXQgd29yayBmb3IgbW9zdCBvZiB0aGUgYnJvd3NlcnMsIHRoZSBldmVudCBpcyBjcmVhdGVkXG4gICAgLy8gYXMgYSBiYXNpYyBVSSBFdmVudC4gVGhlIG5lY2Vzc2FyeSBkZXRhaWxzIGZvciB0aGUgZXZlbnQgd2lsbCBiZSBzZXQgbWFudWFsbHkuXG4gICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnVUlFdmVudCcpO1xuICAgIGNvbnN0IHRvdWNoRGV0YWlscyA9IHsgcGFnZVgsIHBhZ2VZIH07XG5cbiAgICAvLyBUUzMuNiByZW1vdmVzIHRoZSBpbml0VUlFdmVudCBtZXRob2QgYW5kIHN1Z2dlc3RzIHBvcnRpbmcgdG8gXCJuZXcgVUlFdmVudCgpXCIuXG4gICAgKGV2ZW50IGFzIGFueSkuaW5pdFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwKTtcblxuICAgIC8vIE1vc3Qgb2YgdGhlIGJyb3dzZXJzIGRvbid0IGhhdmUgYSBcImluaXRUb3VjaEV2ZW50XCIgbWV0aG9kIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lXG4gICAgLy8gdGhlIHRvdWNoIGRldGFpbHMuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZXZlbnQsIHtcbiAgICAgICAgdG91Y2hlczogeyB2YWx1ZTogW3RvdWNoRGV0YWlsc10gfSxcbiAgICAgICAgdGFyZ2V0VG91Y2hlczogeyB2YWx1ZTogW3RvdWNoRGV0YWlsc10gfSxcbiAgICAgICAgY2hhbmdlZFRvdWNoZXM6IHsgdmFsdWU6IFt0b3VjaERldGFpbHNdIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBldmVudDtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaGVzIGEga2V5ZG93biBldmVudCBmcm9tIGFuIGVsZW1lbnQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVLZXlib2FyZEV2ZW50KFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBrZXlDb2RlOiBudW1iZXIgPSAwLFxuICAgIGtleTogc3RyaW5nID0gJycsXG4gICAgdGFyZ2V0PzogRWxlbWVudCxcbiAgICBtb2RpZmllcnM6IE1vZGlmaWVyS2V5cyA9IHt9XG4pOiBLZXlib2FyZEV2ZW50IHtcbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2FyZEV2ZW50JykgYXMgYW55O1xuICAgIGNvbnN0IG9yaWdpbmFsUHJldmVudERlZmF1bHQgPSBldmVudC5wcmV2ZW50RGVmYXVsdDtcblxuICAgIC8vIEZpcmVmb3ggZG9lcyBub3Qgc3VwcG9ydCBgaW5pdEtleWJvYXJkRXZlbnRgLCBidXQgc3VwcG9ydHMgYGluaXRLZXlFdmVudGAuXG4gICAgaWYgKGV2ZW50LmluaXRLZXlFdmVudCkge1xuICAgICAgICBldmVudC5pbml0S2V5RXZlbnQoXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB3aW5kb3csXG4gICAgICAgICAgICBtb2RpZmllcnMuY29udHJvbCxcbiAgICAgICAgICAgIG1vZGlmaWVycy5hbHQsXG4gICAgICAgICAgICBtb2RpZmllcnMuc2hpZnQsXG4gICAgICAgICAgICBtb2RpZmllcnMubWV0YSxcbiAgICAgICAgICAgIGtleUNvZGVcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBgaW5pdEtleWJvYXJkRXZlbnRgIGV4cGVjdHMgdG8gcmVjZWl2ZSBtb2RpZmllcnMgYXMgYSB3aGl0ZXNwYWNlLWRlbGltaXRlZCBzdHJpbmdcbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2luaXRLZXlib2FyZEV2ZW50XG4gICAgICAgIGxldCBtb2RpZmllcnNMaXN0ID0gJyc7XG5cbiAgICAgICAgaWYgKG1vZGlmaWVycy5jb250cm9sKSB7XG4gICAgICAgICAgICBtb2RpZmllcnNMaXN0ICs9ICdDb250cm9sICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kaWZpZXJzLmFsdCkge1xuICAgICAgICAgICAgbW9kaWZpZXJzTGlzdCArPSAnQWx0ICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kaWZpZXJzLnNoaWZ0KSB7XG4gICAgICAgICAgICBtb2RpZmllcnNMaXN0ICs9ICdTaGlmdCAnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGlmaWVycy5tZXRhKSB7XG4gICAgICAgICAgICBtb2RpZmllcnNMaXN0ICs9ICdNZXRhICc7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5pbml0S2V5Ym9hcmRFdmVudChcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICB0cnVlIC8qIGNhbkJ1YmJsZSAqLyxcbiAgICAgICAgICAgIHRydWUgLyogY2FuY2VsYWJsZSAqLyxcbiAgICAgICAgICAgIHdpbmRvdyAvKiB2aWV3ICovLFxuICAgICAgICAgICAgMCAvKiBjaGFyICovLFxuICAgICAgICAgICAga2V5IC8qIGtleSAqLyxcbiAgICAgICAgICAgIDAgLyogbG9jYXRpb24gKi8sXG4gICAgICAgICAgICBtb2RpZmllcnNMaXN0LnRyaW0oKSAvKiBtb2RpZmllcnNMaXN0ICovLFxuICAgICAgICAgICAgZmFsc2UgLyogcmVwZWF0ICovXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gV2Via2l0IEJyb3dzZXJzIGRvbid0IHNldCB0aGUga2V5Q29kZSB3aGVuIGNhbGxpbmcgdGhlIGluaXQgZnVuY3Rpb24uXG4gICAgLy8gU2VlIHJlbGF0ZWQgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjczNVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGV2ZW50LCB7XG4gICAgICAgIGtleUNvZGU6IHsgZ2V0OiAoKSA9PiBrZXlDb2RlIH0sXG4gICAgICAgIGtleTogeyBnZXQ6ICgpID0+IGtleSB9LFxuICAgICAgICB0YXJnZXQ6IHsgZ2V0OiAoKSA9PiB0YXJnZXQgfSxcbiAgICAgICAgY3RybEtleTogeyBnZXQ6ICgpID0+ICEhbW9kaWZpZXJzLmNvbnRyb2wgfSxcbiAgICAgICAgYWx0S2V5OiB7IGdldDogKCkgPT4gISFtb2RpZmllcnMuYWx0IH0sXG4gICAgICAgIHNoaWZ0S2V5OiB7IGdldDogKCkgPT4gISFtb2RpZmllcnMuc2hpZnQgfSxcbiAgICAgICAgbWV0YUtleTogeyBnZXQ6ICgpID0+ICEhbW9kaWZpZXJzLm1ldGEgfVxuICAgIH0pO1xuXG4gICAgLy8gSUUgd29uJ3Qgc2V0IGBkZWZhdWx0UHJldmVudGVkYCBvbiBzeW50aGV0aWMgZXZlbnRzIHNvIHdlIG5lZWQgdG8gZG8gaXQgbWFudWFsbHkuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiAoKTogRXZlbnQge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdkZWZhdWx0UHJldmVudGVkJywgeyBnZXQ6ICgpID0+IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxQcmV2ZW50RGVmYXVsdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZha2UgZXZlbnQgb2JqZWN0IHdpdGggYW55IGRlc2lyZWQgZXZlbnQgdHlwZS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZha2VFdmVudCh0eXBlOiBzdHJpbmcsIGNhbkJ1YmJsZSA9IGZhbHNlLCBjYW5jZWxhYmxlID0gdHJ1ZSk6IEV2ZW50IHtcbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LmluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpO1xuICAgIHJldHVybiBldmVudDtcbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const FDP_PRESET_MANAGED_COMPONENT = new InjectionToken('FdpPresetManagedComponent');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LW1hbmFnZW1lbnQudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NoYXJlZC9wcmVzZXQtbWFuYWdlbWVudC9wcmVzZXQtbWFuYWdlbWVudC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFDLDJCQUEyQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRkRQX1BSRVNFVF9NQU5BR0VEX0NPTVBPTkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbignRmRwUHJlc2V0TWFuYWdlZENvbXBvbmVudCcpO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLXNoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc2hhcmVkL2Z1bmRhbWVudGFsLW5neC1wbGF0Zm9ybS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["randomId"],"mappings":"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"}
|