@acorex/components 21.0.2-next.57 → 21.0.2-next.59
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../tmp-esm2022/data-table/lib/base-data-table.class.js","../tmp-esm2022/data-table/lib/columns/data-table-column.js","../tmp-esm2022/data-table/lib/columns/data-table-column-resizable.directive.js","../tmp-esm2022/data-table/lib/columns/data-text-column.component.js","../tmp-esm2022/data-table/lib/columns/row-command-column.component.js","../tmp-esm2022/data-table/lib/columns/row-expand-column.component.js","../tmp-esm2022/data-table/lib/columns/row-index-column.component.js","../tmp-esm2022/data-table/lib/columns/row-select-column.component.js","../tmp-esm2022/data-table/lib/data-table/data-table.component.js","../tmp-esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.js","../tmp-esm2022/data-table/lib/data-table.module.js","../tmp-esm2022/data-table/acorex-components-data-table.js"],"sourcesContent":["import { AXDataSource, MXBaseComponent, convertArrayToDataSource, } from '@acorex/cdk/common';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport const AX_DATA_TABLE_ROW_COLOR_TYPES = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n];\nexport const AX_DATA_TABLE_ROW_HIGHLIGHT_DEFAULT_BADGE = '@acorex:dataTable.rowHighlight.new';\nexport class AXBaseDataTable extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.dataSource = convertArrayToDataSource([]);\n /**\n * For handle nested rows.\n *\n * @defaultValue `parentId`\n */\n this.parentField = undefined;\n /**\n * Field name on each row that indicates whether the row has children (for showing expand icon).\n *\n * @defaultValue `hasChild`\n */\n this.hasChildrenField = 'hasChild';\n this.selectedRowsChange = new EventEmitter();\n this.highlightedRows = signal(new Map(), ...(ngDevMode ? [{ debugName: \"highlightedRows\" }] : []));\n this.highlightOrder = 0;\n this._selectedRows = signal([], ...(ngDevMode ? [{ debugName: \"_selectedRows\" }] : []));\n }\n /**\n * Gets the data source key field name.\n *\n * @returns string - The key field name for the data source.\n */\n getDataSourceKey() {\n return this.dataSource.config.key || 'id';\n }\n /**\n * Temporarily highlights a row with optional pin, badge, and pulse styling.\n * Highlights are cleared on the next grid `refresh()` unless `preserveHighlights` is set.\n */\n highlightRow(row, options = {}) {\n const key = this.resolveRowKey(row);\n if (key == null) {\n return;\n }\n const entry = {\n row: typeof row === 'object' && row !== null ? row : { [this.getDataSourceKey()]: row },\n color: options.color ?? 'success',\n badge: options.badge !== undefined ? options.badge : AX_DATA_TABLE_ROW_HIGHLIGHT_DEFAULT_BADGE,\n pulse: options.pulse ?? true,\n pinned: options.pinned ?? true,\n order: ++this.highlightOrder,\n };\n this.highlightedRows.update((map) => {\n const next = new Map(map);\n next.set(key, entry);\n return next;\n });\n this.onRowHighlightsChanged();\n }\n /**\n * Temporarily highlights multiple rows.\n */\n highlightRows(rows, options = {}) {\n rows.forEach((row) => this.highlightRow(row, options));\n }\n /**\n * Clears all temporary row highlights.\n */\n clearRowHighlights() {\n if (this.highlightedRows().size === 0) {\n return;\n }\n this.highlightedRows.set(new Map());\n this.onRowHighlightsChanged();\n }\n /**\n * Returns the temporary highlight state for a row, if any.\n */\n getRowHighlight(row) {\n const key = this.resolveRowKey(row);\n if (key == null) {\n return null;\n }\n return this.highlightedRows().get(key) ?? null;\n }\n /**\n * Returns the translation key for the row highlight badge, if any.\n */\n getRowHighlightBadge(row) {\n return this.getRowHighlight(row)?.badge ?? null;\n }\n /**\n * Returns the semantic background color for the given row, if any.\n */\n getRowColor(row, rowIndex) {\n const highlight = this.getRowHighlight(row);\n if (highlight) {\n return highlight.color;\n }\n const fromCallback = this.rowColor?.(row, rowIndex);\n if (fromCallback && AX_DATA_TABLE_ROW_COLOR_TYPES.includes(fromCallback)) {\n return fromCallback;\n }\n if (this.rowColorField && row && typeof row === 'object') {\n const value = row[this.rowColorField];\n if (typeof value === 'string' && AX_DATA_TABLE_ROW_COLOR_TYPES.includes(value)) {\n return value;\n }\n }\n return null;\n }\n /**\n * Returns the CSS class name for the row background color, if any.\n */\n getRowColorClass(row, rowIndex) {\n const highlight = this.getRowHighlight(row);\n const color = this.getRowColor(row, rowIndex);\n if (!color) {\n return '';\n }\n const classes = [`ax-row-color-${color}`];\n if (highlight?.pulse) {\n classes.push('ax-row-color-pulse');\n }\n return classes.join(' ');\n }\n /**\n * Merges pinned highlighted rows with loaded items.\n */\n mergeRowsWithHighlights(items) {\n const highlights = this.highlightedRows();\n if (highlights.size === 0) {\n return items;\n }\n const itemsByKey = new Map();\n for (const item of items) {\n const itemKey = this.resolveRowKey(item);\n if (itemKey != null) {\n itemsByKey.set(itemKey, item);\n }\n }\n const pinnedEntries = [...highlights.values()]\n .filter((entry) => entry.pinned)\n .sort((a, b) => a.order - b.order);\n const pinnedRows = pinnedEntries.map((entry) => {\n const entryKey = this.resolveRowKey(entry.row);\n if (entryKey != null && itemsByKey.has(entryKey)) {\n return itemsByKey.get(entryKey);\n }\n return entry.row;\n });\n const pinnedKeys = new Set(pinnedEntries.map((entry) => this.resolveRowKey(entry.row)).filter((key) => key != null));\n const rest = items.filter((item) => {\n const itemKey = this.resolveRowKey(item);\n return itemKey == null || !pinnedKeys.has(itemKey);\n });\n return [...pinnedRows, ...rest];\n }\n resolveRowKey(row) {\n const keyField = this.getDataSourceKey();\n if (row == null) {\n return null;\n }\n if (typeof row === 'object') {\n const value = row[keyField];\n if (value == null || value === '') {\n return null;\n }\n return value;\n }\n return row;\n }\n get selectedRows() {\n return this._selectedRows();\n }\n set selectedRows(v) {\n if (!isEqual(this._selectedRows(), v)) {\n this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n }\n /**\n * Expands a row to show its children.\n *\n * @param row - The row data to expand.\n * @returns Promise<void> - Promise that resolves when expansion is complete.\n */\n async expandRow(row) {\n // Scenario 1: Row details template without nested children\n if (this.rowDetailsTemplate && !this.parentField) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: null,\n });\n }\n // Scenario 2: Children already exist in the row data\n else if (row.data['__meta__.expanded'] || row.data.children != undefined) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: row.data.children,\n });\n }\n // Scenario 3: Fetch children from datasource using parentField\n else {\n const key = this.getDataSourceKey();\n const filter = {\n field: this.parentField,\n operator: {\n type: 'equal',\n },\n value: row['data'][key],\n };\n const expandedItems = await this.dataSource.getItemsByFilter(filter);\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: expandedItems.items,\n });\n }\n }\n /**\n * Refreshes the children of a specific item.\n *\n * @param id - The ID of the item whose children should be refreshed.\n * @returns Promise<void> - Promise that resolves when refresh is complete.\n */\n async refreshItemChildren(id) {\n this.dataSource.onItemRefreshChildren.next({\n id,\n });\n }\n /**\n * Selects one or more rows.\n *\n * @param rows - The rows to select.\n * @returns void - No return value.\n */\n selectRows(...rows) {\n const key = this.getDataSourceKey();\n const selectRowIds = this.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n const newRows = rows.filter((nr) => !selectRowIds.includes(typeof nr === 'object' ? nr[key] : nr));\n this.selectedRows = this.selectedRows.concat(newRows);\n //this.selectedRows = _.uniq(this.selectedRows.concat(rows));\n }\n /**\n * Unselects one or more rows.\n *\n * @param rows - The rows to unselect.\n * @returns void - No return value.\n */\n unSelectRows(...rows) {\n const key = this.getDataSourceKey();\n const removedRowIds = rows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n this.selectedRows = this.selectedRows.filter((c) => !removedRowIds.includes(typeof c === 'object' ? c[key] : c));\n //this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, decorators: [{\n type: Injectable\n }], propDecorators: { dataSource: [{\n type: Input\n }], parentField: [{\n type: Input\n }], hasChildrenField: [{\n type: Input\n }], rowDetailsTemplate: [{\n type: Input\n }], rowColor: [{\n type: Input\n }], rowColorField: [{\n type: Input\n }], selectedRowsChange: [{\n type: Output\n }], selectedRows: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYXRhLXRhYmxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvYmFzZS1kYXRhLXRhYmxlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBSVosZUFBZSxFQUNmLHdCQUF3QixHQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUEyQnBDLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUE4QjtJQUN0RSxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxTQUFTO0lBQ1QsUUFBUTtDQUNULENBQUM7QUE2QkYsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsb0NBQW9DLENBQUM7QUFHOUYsTUFBTSxPQUFnQixlQUFnQixTQUFRLGVBQWU7SUFEN0Q7O1FBRVcsZUFBVSxHQUEwQix3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxRTs7OztXQUlHO1FBRUgsZ0JBQVcsR0FBdUIsU0FBUyxDQUFDO1FBRTVDOzs7O1dBSUc7UUFFSCxxQkFBZ0IsR0FBRyxVQUFVLENBQUM7UUF1QjlCLHVCQUFrQixHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBRXpELG9CQUFlLEdBQWtFLE1BQU0sQ0FDeEcsSUFBSSxHQUFHLEVBQUUsMkRBQ1YsQ0FBQztRQUVNLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBcUxuQixrQkFBYSxHQUE4QixNQUFNLENBQUMsRUFBRSx5REFBQyxDQUFDO0tBMEYvRDtJQTdRQzs7OztPQUlHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFB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QUtHO0lBQ0ksWUFBWSxDQUFDLEdBQUcsSUFBZTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCx5RUFBeUU7SUFDM0UsQ0FBQzs4R0E1VG1CLGVBQWU7a0hBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEcEMsVUFBVTs4QkFFQSxVQUFVO3NCQUFsQixLQUFLO2dCQVFOLFdBQVc7c0JBRFYsS0FBSztnQkFTTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLE1BQU07Z0JBOExJLFlBQVk7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWERhdGFTb3VyY2UsXG4gIEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbixcbiAgQVhFdmVudCxcbiAgQVhTdHlsZUNvbG9yVHlwZSxcbiAgTVhCYXNlQ29tcG9uZW50LFxuICBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCBleHRlbmRzIEFYRXZlbnQge1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93Q2xpY2sgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICBkYXRhPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgdHlwZTogJ3N0YXJ0JyB8ICdlbmQnO1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93RGJDbGljayBleHRlbmRzIEFYRGF0YVRhYmxlUm93Q2xpY2sge31cblxuZXhwb3J0IHR5cGUgQVhEYXRhVGFibGVMb29rID0gJ2NsYXNzaWMnIHwgJ21pbmltYWwnO1xuXG4vKipcbiAqIFNlbWFudGljIHJvdyBiYWNrZ3JvdW5kIGNvbG9ycyBzdXBwb3J0ZWQgYnkgdGhlIGRhdGEgdGFibGUuXG4gKi9cbmV4cG9ydCB0eXBlIEFYRGF0YVRhYmxlUm93Q29sb3JUeXBlID0gRXhjbHVkZTxBWFN0eWxlQ29sb3JUeXBlLCAnZGVmYXVsdCc+O1xuXG5leHBvcnQgY29uc3QgQVhfREFUQV9UQUJMRV9ST1dfQ09MT1JfVFlQRVM6IEFYRGF0YVRhYmxlUm93Q29sb3JUeXBlW10gPSBbXG4gICdwcmltYXJ5JyxcbiAgJ3NlY29uZGFyeScsXG4gICdzdWNjZXNzJyxcbiAgJ3dhcm5pbmcnLFxuICAnZGFuZ2VyJyxcbl07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGVtcG9yYXJpbHkgaGlnaGxpZ2h0aW5nIGEgcm93IChlLmcuIGFmdGVyIGNyZWF0ZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRhVGFibGVSb3dIaWdobGlnaHRPcHRpb25zIHtcbiAgLyoqIFNlbWFudGljIHJvdyBiYWNrZ3JvdW5kIGNvbG9yLiBAZGVmYXVsdFZhbHVlIGAnc3VjY2VzcydgICovXG4gIGNvbG9yPzogQVhEYXRhVGFibGVSb3dDb2xvclR5cGU7XG4gIC8qKlxuICAgKiBUcmFuc2xhdGlvbiBrZXkgZm9yIHRoZSByb3cgYmFkZ2UuXG4gICAqIFBhc3MgYG51bGxgIHRvIGhpZGUgdGhlIGJhZGdlLlxuICAgKiBAZGVmYXVsdFZhbHVlIGAnQGFjb3JleDpkYXRhVGFibGUucm93SGlnaGxpZ2h0Lm5ldydgXG4gICAqL1xuICBiYWRnZT86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBXaGV0aGVyIHRoZSByb3cgYmFja2dyb3VuZCBzaG91bGQgcHVsc2UuIEBkZWZhdWx0VmFsdWUgYHRydWVgICovXG4gIHB1bHNlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIHJvdyBzaG91bGQgYmUgcGlubmVkIGFib3ZlIG90aGVyIHJvd3MgdW50aWwgcmVmcmVzaC4gQGRlZmF1bHRWYWx1ZSBgdHJ1ZWAgKi9cbiAgcGlubmVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFUYWJsZVJvd0hpZ2hsaWdodCB7XG4gIHJvdzogdW5rbm93bjtcbiAgY29sb3I6IEFYRGF0YVRhYmxlUm93Q29sb3JUeXBlO1xuICBiYWRnZTogc3RyaW5nIHwgbnVsbDtcbiAgcHVsc2U6IGJvb2xlYW47XG4gIHBpbm5lZDogYm9vbGVhbjtcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IEFYX0RBVEFfVEFCTEVfUk9XX0hJR0hMSUdIVF9ERUZBVUxUX0JBREdFID0gJ0BhY29yZXg6ZGF0YVRhYmxlLnJvd0hpZ2hsaWdodC5uZXcnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhCYXNlRGF0YVRhYmxlIGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGF0YVNvdXJjZTogQVhEYXRhU291cmNlPHVua25vd24+ID0gY29udmVydEFycmF5VG9EYXRhU291cmNlKFtdKTtcblxuICAvKipcbiAgICogRm9yIGhhbmRsZSBuZXN0ZWQgcm93cy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgcGFyZW50SWRgXG4gICAqL1xuICBASW5wdXQoKVxuICBwYXJlbnRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaWVsZCBuYW1lIG9uIGVhY2ggcm93IHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJvdyBoYXMgY2hpbGRyZW4gKGZvciBzaG93aW5nIGV4cGFuZCBpY29uKS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgaGFzQ2hpbGRgXG4gICAqL1xuICBASW5wdXQoKVxuICBoYXNDaGlsZHJlbkZpZWxkID0gJ2hhc0NoaWxkJztcblxuICAvKipcbiAgICogVGVtcGxhdGUgZm9yIGV4cGFuZGVkIGN1c3RvbSByb3cgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd0RldGFpbHNUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgc2VtYW50aWMgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByb3cuXG4gICAqIFRha2VzIHByZWNlZGVuY2Ugb3ZlciBgcm93Q29sb3JGaWVsZGAgd2hlbiBwcm92aWRlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd0NvbG9yPzogKHJvdzogdW5rbm93biwgcm93SW5kZXg6IG51bWJlcikgPT4gQVhEYXRhVGFibGVSb3dDb2xvclR5cGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaWVsZCBuYW1lIG9uIGVhY2ggcm93IG9iamVjdCB0aGF0IGhvbGRzIGFuIGBBWERhdGFUYWJsZVJvd0NvbG9yVHlwZWAgdmFsdWUuXG4gICAqIFVzZWQgd2hlbiBgcm93Q29sb3JgIGlzIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd0NvbG9yRmllbGQ/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdGVkUm93c0NoYW5nZTogRXZlbnRFbWl0dGVyPHVua25vd25bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd25bXT4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRSb3dzOiBXcml0YWJsZVNpZ25hbDxNYXA8c3RyaW5nIHwgbnVtYmVyLCBBWERhdGFUYWJsZVJvd0hpZ2hsaWdodD4+ID0gc2lnbmFsKFxuICAgIG5ldyBNYXAoKSxcbiAgKTtcblxuICBwcml2YXRlIGhpZ2hsaWdodE9yZGVyID0gMDtcblxuICAvKipcbiAgICogR2V0cyB0aGUgZGF0YSBzb3VyY2Uga2V5IGZpZWxkIG5hbWUuXG4gICAqXG4gICAqIEByZXR1cm5zIHN0cmluZyAtIFRoZSBrZXkgZmllbGQgbmFtZSBmb3IgdGhlIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGdldERhdGFTb3VyY2VLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlLmNvbmZpZy5rZXkgfHwgJ2lkJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBoaWdobGlnaHRzIGEgcm93IHdpdGggb3B0aW9uYWwgcGluLCBiYWRnZSwgYW5kIHB1bHNlIHN0eWxpbmcuXG4gICAqIEhpZ2hsaWdodHMgYXJlIGNsZWFyZWQgb24gdGhlIG5leHQgZ3JpZCBgcmVmcmVzaCgpYCB1bmxlc3MgYHByZXNlcnZlSGlnaGxpZ2h0c2AgaXMgc2V0LlxuICAgKi9cbiAgcHVibGljIGhpZ2hsaWdodFJvdyhyb3c6IHVua25vd24sIG9wdGlvbnM6IEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5yZXNvbHZlUm93S2V5KHJvdyk7XG4gICAgaWYgKGtleSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0ID0ge1xuICAgICAgcm93OiB0eXBlb2Ygcm93ID09PSAnb2JqZWN0JyAmJiByb3cgIT09IG51bGwgPyByb3cgOiB7IFt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV06IHJvdyB9LFxuICAgICAgY29sb3I6IG9wdGlvbnMuY29sb3IgPz8gJ3N1Y2Nlc3MnLFxuICAgICAgYmFkZ2U6IG9wdGlvbnMuYmFkZ2UgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuYmFkZ2UgOiBBWF9EQVRBX1RBQkxFX1JPV19ISUdITElHSFRfREVGQVVMVF9CQURHRSxcbiAgICAgIHB1bHNlOiBvcHRpb25zLnB1bHNlID8/IHRydWUsXG4gICAgICBwaW5uZWQ6IG9wdGlvbnMucGlubmVkID8/IHRydWUsXG4gICAgICBvcmRlcjogKyt0aGlzLmhpZ2hsaWdodE9yZGVyLFxuICAgIH07XG5cbiAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIG5leHQuc2V0KGtleSwgZW50cnkpO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uUm93SGlnaGxpZ2h0c0NoYW5nZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBoaWdobGlnaHRzIG11bHRpcGxlIHJvd3MuXG4gICAqL1xuICBwdWJsaWMgaGlnaGxpZ2h0Um93cyhyb3dzOiB1bmtub3duW10sIG9wdGlvbnM6IEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHRoaXMuaGlnaGxpZ2h0Um93KHJvdywgb3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGVtcG9yYXJ5IHJvdyBoaWdobGlnaHRzLlxuICAgKi9cbiAgcHVibGljIGNsZWFyUm93SGlnaGxpZ2h0cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZFJvd3MoKS5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc2V0KG5ldyBNYXAoKSk7XG4gICAgdGhpcy5vblJvd0hpZ2hsaWdodHNDaGFuZ2VkKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IGhpZ2hsaWdodCBzdGF0ZSBmb3IgYSByb3csIGlmIGFueS5cbiAgICovXG4gIHB1YmxpYyBnZXRSb3dIaWdobGlnaHQocm93OiB1bmtub3duKTogQVhEYXRhVGFibGVSb3dIaWdobGlnaHQgfCBudWxsIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnJlc29sdmVSb3dLZXkocm93KTtcbiAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkUm93cygpLmdldChrZXkpID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdHJhbnNsYXRpb24ga2V5IGZvciB0aGUgcm93IGhpZ2hsaWdodCBiYWRnZSwgaWYgYW55LlxuICAgKi9cbiAgcHVibGljIGdldFJvd0hpZ2hsaWdodEJhZGdlKHJvdzogdW5rbm93bik6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldFJvd0hpZ2hsaWdodChyb3cpPy5iYWRnZSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNlbWFudGljIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBnaXZlbiByb3csIGlmIGFueS5cbiAgICovXG4gIHB1YmxpYyBnZXRSb3dDb2xvcihyb3c6IHVua25vd24sIHJvd0luZGV4OiBudW1iZXIpOiBBWERhdGFUYWJsZVJvd0NvbG9yVHlwZSB8IG51bGwge1xuICAgIGNvbnN0IGhpZ2hsaWdodCA9IHRoaXMuZ2V0Um93SGlnaGxpZ2h0KHJvdyk7XG4gICAgaWYgKGhpZ2hsaWdodCkge1xuICAgICAgcmV0dXJuIGhpZ2hsaWdodC5jb2xvcjtcbiAgICB9XG5cbiAgICBjb25zdCBmcm9tQ2FsbGJhY2sgPSB0aGlzLnJvd0NvbG9yPy4ocm93LCByb3dJbmRleCk7XG4gICAgaWYgKGZyb21DYWxsYmFjayAmJiBBWF9EQVRBX1RBQkxFX1JPV19DT0xPUl9UWVBFUy5pbmNsdWRlcyhmcm9tQ2FsbGJhY2spKSB7XG4gICAgICByZXR1cm4gZnJvbUNhbGxiYWNrO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvd0NvbG9yRmllbGQgJiYgcm93ICYmIHR5cGVvZiByb3cgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IChyb3cgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3RoaXMucm93Q29sb3JGaWVsZF07XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBBWF9EQVRBX1RBQkxFX1JPV19DT0xPUl9UWVBFUy5pbmNsdWRlcyh2YWx1ZSBhcyBBWERhdGFUYWJsZVJvd0NvbG9yVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIEFYRGF0YVRhYmxlUm93Q29sb3JUeXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIENTUyBjbGFzcyBuYW1lIGZvciB0aGUgcm93IGJhY2tncm91bmQgY29sb3IsIGlmIGFueS5cbiAgICovXG4gIHB1YmxpYyBnZXRSb3dDb2xvckNsYXNzKHJvdzogdW5rbm93biwgcm93SW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgaGlnaGxpZ2h0ID0gdGhpcy5nZXRSb3dIaWdobGlnaHQocm93KTtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMuZ2V0Um93Q29sb3Iocm93LCByb3dJbmRleCk7XG4gICAgaWYgKCFjb2xvcikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzZXMgPSBbYGF4LXJvdy1jb2xvci0ke2NvbG9yfWBdO1xuICAgIGlmIChoaWdobGlnaHQ/LnB1bHNlKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2F4LXJvdy1jb2xvci1wdWxzZScpO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgcGlubmVkIGhpZ2hsaWdodGVkIHJvd3Mgd2l0aCBsb2FkZWQgaXRlbXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgbWVyZ2VSb3dzV2l0aEhpZ2hsaWdodHMoaXRlbXM6IHVua25vd25bXSk6IHVua25vd25bXSB7XG4gICAgY29uc3QgaGlnaGxpZ2h0cyA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzKCk7XG4gICAgaWYgKGhpZ2hsaWdodHMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zQnlLZXkgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgdW5rbm93bj4oKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLnJlc29sdmVSb3dLZXkoaXRlbSk7XG4gICAgICBpZiAoaXRlbUtleSAhPSBudWxsKSB7XG4gICAgICAgIGl0ZW1zQnlLZXkuc2V0KGl0ZW1LZXksIGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBpbm5lZEVudHJpZXMgPSBbLi4uaGlnaGxpZ2h0cy52YWx1ZXMoKV1cbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5waW5uZWQpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuXG4gICAgY29uc3QgcGlubmVkUm93cyA9IHBpbm5lZEVudHJpZXMubWFwKChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlLZXkgPSB0aGlzLnJlc29sdmVSb3dLZXkoZW50cnkucm93KTtcbiAgICAgIGlmIChlbnRyeUtleSAhPSBudWxsICYmIGl0ZW1zQnlLZXkuaGFzKGVudHJ5S2V5KSkge1xuICAgICAgICByZXR1cm4gaXRlbXNCeUtleS5nZXQoZW50cnlLZXkpIGFzIHVua25vd247XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbnRyeS5yb3c7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwaW5uZWRLZXlzID0gbmV3IFNldChcbiAgICAgIHBpbm5lZEVudHJpZXMubWFwKChlbnRyeSkgPT4gdGhpcy5yZXNvbHZlUm93S2V5KGVudHJ5LnJvdykpLmZpbHRlcigoa2V5KToga2V5IGlzIHN0cmluZyB8IG51bWJlciA9PiBrZXkgIT0gbnVsbCksXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3QgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLnJlc29sdmVSb3dLZXkoaXRlbSk7XG4gICAgICByZXR1cm4gaXRlbUtleSA9PSBudWxsIHx8ICFwaW5uZWRLZXlzLmhhcyhpdGVtS2V5KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBbLi4ucGlubmVkUm93cywgLi4ucmVzdF07XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzb2x2ZVJvd0tleShyb3c6IHVua25vd24pOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCBrZXlGaWVsZCA9IHRoaXMuZ2V0RGF0YVNvdXJjZUtleSgpO1xuICAgIGlmIChyb3cgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByb3cgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IChyb3cgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleUZpZWxkXTtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZyB8IG51bWJlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93IGFzIHN0cmluZyB8IG51bWJlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvblJvd0hpZ2hsaWdodHNDaGFuZ2VkKCk6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSb3dzOiBXcml0YWJsZVNpZ25hbDx1bmtub3duW10+ID0gc2lnbmFsKFtdKTtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBzZWxlY3RlZFJvd3MoKTogdW5rbm93bltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzKCk7XG4gIH1cbiAgcHVibGljIHNldCBzZWxlY3RlZFJvd3ModjogdW5rbm93bltdKSB7XG4gICAgaWYgKCFpc0VxdWFsKHRoaXMuX3NlbGVjdGVkUm93cygpLCB2KSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLnNldCh2KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlLmVtaXQodik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZHMgYSByb3cgdG8gc2hvdyBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBwYXJhbSByb3cgLSBUaGUgcm93IGRhdGEgdG8gZXhwYW5kLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+IC0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXhwYW5zaW9uIGlzIGNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGV4cGFuZFJvdyhyb3c6IGFueSkge1xuICAgIC8vIFNjZW5hcmlvIDE6IFJvdyBkZXRhaWxzIHRlbXBsYXRlIHdpdGhvdXQgbmVzdGVkIGNoaWxkcmVuXG4gICAgaWYgKHRoaXMucm93RGV0YWlsc1RlbXBsYXRlICYmICF0aGlzLnBhcmVudEZpZWxkKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uub25JdGVtRXhwYW5kZWQubmV4dCh7XG4gICAgICAgIGV4cGFuZGVkSXRlbTogcm93LmRhdGEsXG4gICAgICAgIGNoaWxkcmVuOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFNjZW5hcmlvIDI6IENoaWxkcmVuIGFscmVhZHkgZXhpc3QgaW4gdGhlIHJvdyBkYXRhXG4gICAgZWxzZSBpZiAocm93LmRhdGFbJ19fbWV0YV9fLmV4cGFuZGVkJ10gfHwgcm93LmRhdGEuY2hpbGRyZW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uub25JdGVtRXhwYW5kZWQubmV4dCh7XG4gICAgICAgIGV4cGFuZGVkSXRlbTogcm93LmRhdGEsXG4gICAgICAgIGNoaWxkcmVuOiByb3cuZGF0YS5jaGlsZHJlbixcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBTY2VuYXJpbyAzOiBGZXRjaCBjaGlsZHJlbiBmcm9tIGRhdGFzb3VyY2UgdXNpbmcgcGFyZW50RmllbGRcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RGF0YVNvdXJjZUtleSgpO1xuICAgICAgY29uc3QgZmlsdGVyOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24gPSB7XG4gICAgICAgIGZpZWxkOiB0aGlzLnBhcmVudEZpZWxkLFxuICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgIHR5cGU6ICdlcXVhbCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlOiByb3dbJ2RhdGEnXVtrZXldLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4cGFuZGVkSXRlbXMgPSBhd2FpdCB0aGlzLmRhdGFTb3VyY2UuZ2V0SXRlbXNCeUZpbHRlcihmaWx0ZXIpO1xuXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uub25JdGVtRXhwYW5kZWQubmV4dCh7XG4gICAgICAgIGV4cGFuZGVkSXRlbTogcm93LmRhdGEsXG4gICAgICAgIGNoaWxkcmVuOiBleHBhbmRlZEl0ZW1zLml0ZW1zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgY2hpbGRyZW4gb2YgYSBzcGVjaWZpYyBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGl0ZW0gd2hvc2UgY2hpbGRyZW4gc2hvdWxkIGJlIHJlZnJlc2hlZC5cbiAgICogQHJldHVybnMgUHJvbWlzZTx2b2lkPiAtIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHJlZnJlc2ggaXMgY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVmcmVzaEl0ZW1DaGlsZHJlbihpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kYXRhU291cmNlLm9uSXRlbVJlZnJlc2hDaGlsZHJlbi5uZXh0KHtcbiAgICAgIGlkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgb25lIG9yIG1vcmUgcm93cy5cbiAgICpcbiAgICogQHBhcmFtIHJvd3MgLSBUaGUgcm93cyB0byBzZWxlY3QuXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0Um93cyguLi5yb3dzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldERhdGFTb3VyY2VLZXkoKTtcbiAgICBjb25zdCBzZWxlY3RSb3dJZHMgPSB0aGlzLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuICAgIGNvbnN0IG5ld1Jvd3MgPSByb3dzLmZpbHRlcigobnIpID0+ICFzZWxlY3RSb3dJZHMuaW5jbHVkZXModHlwZW9mIG5yID09PSAnb2JqZWN0JyA/IG5yW2tleV0gOiBucikpO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5zZWxlY3RlZFJvd3MuY29uY2F0KG5ld1Jvd3MpO1xuICAgIC8vdGhpcy5zZWxlY3RlZFJvd3MgPSBfLnVuaXEodGhpcy5zZWxlY3RlZFJvd3MuY29uY2F0KHJvd3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnNlbGVjdHMgb25lIG9yIG1vcmUgcm93cy5cbiAgICpcbiAgICogQHBhcmFtIHJvd3MgLSBUaGUgcm93cyB0byB1bnNlbGVjdC5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyB1blNlbGVjdFJvd3MoLi4ucm93czogdW5rbm93bltdKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3QgcmVtb3ZlZFJvd0lkcyA9IHJvd3MubWFwKChzcikgPT4gKHR5cGVvZiBzciA9PT0gJ29iamVjdCcgPyBzcltrZXldIDogc3IpKTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzLmZpbHRlcigoYykgPT4gIXJlbW92ZWRSb3dJZHMuaW5jbHVkZXModHlwZW9mIGMgPT09ICdvYmplY3QnID8gY1trZXldIDogYykpO1xuICAgIC8vdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5maWx0ZXIoKGMpID0+ICFyb3dzLmluY2x1ZGVzKGMpKTtcbiAgfVxufVxuIl19","import { Injectable, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnComponent {\n constructor() {\n /**\n * Width of the column.\n * - string: e.g., '180px', '20%'\n * - number: e.g., 180 (treated as pixels)\n * - 'auto': sizes from headers when the table first renders, then refits from row content once data loads\n *\n * @defaultValue 'auto'\n */\n this.width = 'auto';\n this.allowSorting = false;\n this.allowResizing = false;\n /**\n * When true, shows the cell content as tooltip on hover (via `axTooltip`).\n */\n this.hasTitle = false;\n this.sortIndex = undefined;\n this.sortOrder = undefined;\n }\n get cssClass() {\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, decorators: [{\n type: Injectable\n }], propDecorators: { caption: [{\n type: Input\n }], width: [{\n type: Input\n }], fixed: [{\n type: Input\n }], allowSorting: [{\n type: Input\n }], allowResizing: [{\n type: Input\n }], hasTitle: [{\n type: Input\n }], sortIndex: [{\n type: Input\n }], sortOrder: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDOztBQUcvRCxNQUFNLE9BQWdCLDBCQUEwQjtJQURoRDtRQUtFOzs7Ozs7O1dBT0c7UUFFSCxVQUFLLEdBQTZCLE1BQU0sQ0FBQztRQU16QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUVILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsY0FBUyxHQUF1QixTQUFTLENBQUM7UUFHMUMsY0FBUyxHQUE0QixTQUFTLENBQUM7S0FhaEQ7SUFIQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBOUNtQiwwQkFBMEI7a0hBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEL0MsVUFBVTs4QkFHVCxPQUFPO3NCQUROLEtBQUs7Z0JBWU4sS0FBSztzQkFESixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhTb3J0T3JkZXIgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGNhcHRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2lkdGggb2YgdGhlIGNvbHVtbi5cbiAgICogLSBzdHJpbmc6IGUuZy4sICcxODBweCcsICcyMCUnXG4gICAqIC0gbnVtYmVyOiBlLmcuLCAxODAgKHRyZWF0ZWQgYXMgcGl4ZWxzKVxuICAgKiAtICdhdXRvJzogc2l6ZXMgZnJvbSBoZWFkZXJzIHdoZW4gdGhlIHRhYmxlIGZpcnN0IHJlbmRlcnMsIHRoZW4gcmVmaXRzIGZyb20gcm93IGNvbnRlbnQgb25jZSBkYXRhIGxvYWRzXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgJ2F1dG8nXG4gICAqL1xuICBASW5wdXQoKVxuICB3aWR0aDogc3RyaW5nIHwgbnVtYmVyIHwgJ2F1dG8nID0gJ2F1dG8nO1xuXG4gIEBJbnB1dCgpXG4gIGZpeGVkOiAnc3RhcnQnIHwgJ2VuZCcgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgYWxsb3dTb3J0aW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYWxsb3dSZXNpemluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHNob3dzIHRoZSBjZWxsIGNvbnRlbnQgYXMgdG9vbHRpcCBvbiBob3ZlciAodmlhIGBheFRvb2x0aXBgKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhhc1RpdGxlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc29ydEluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgc29ydE9yZGVyOiBBWFNvcnRPcmRlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBhYnN0cmFjdCBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBhYnN0cmFjdCBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIGFic3RyYWN0IGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBhYnN0cmFjdCBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBnZXQgbmFtZSgpOiBzdHJpbmc7XG5cbiAgZ2V0IGNzc0NsYXNzKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, DOCUMENT, ElementRef, HostListener, inject, Input, NgZone, PLATFORM_ID, Renderer2, } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnResizableDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.renderer = inject(Renderer2);\n this.ngZone = inject(NgZone);\n this.cdr = inject(ChangeDetectorRef);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.resize$ = new Subject();\n this.onMouseMoveRawBound = this.onMouseMoveRaw.bind(this);\n this.onMouseUpBound = this.onMouseUp.bind(this);\n this.resize$.pipe(debounceTime(10)).subscribe((event) => this.onMouseMove(event));\n }\n /**\n * Handles mouse down events to initiate column resizing.\n *\n * @param event - The mouse down event.\n * @returns void - No return value.\n */\n onMouseDown(event) {\n if (isPlatformBrowser(this.platformID)) {\n event.stopPropagation();\n this.ngZone.runOutsideAngular(() => {\n this.startX = event.pageX;\n this.startWidth = this.el?.nativeElement?.parentElement.offsetWidth;\n this.document.addEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.addEventListener('mouseup', this.onMouseUpBound);\n });\n this.cdr.detach(); // Detach the change detector\n }\n }\n /**\n * Handles raw mouse move events and forwards them to the debounced resize stream.\n * This method acts as a bridge between the raw DOM event and the debounced onMouseMove method.\n *\n * @param event - The raw mouse move event.\n * @returns void - No return value.\n */\n onMouseMoveRaw(event) {\n this.resize$.next(event);\n }\n /**\n * Handles mouse move events during column resizing.\n *\n * @param event - The mouse move event.\n * @returns void - No return value.\n */\n onMouseMove(event) {\n const newWidth = this.startWidth + (event.pageX - this.startX);\n this.renderer.setStyle(this.el?.nativeElement?.parentElement, 'width', `${newWidth}px`);\n this.column.width = `${newWidth}px`;\n }\n /**\n * Handles mouse up events to complete column resizing.\n *\n * @returns void - No return value.\n */\n onMouseUp() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.removeEventListener('mouseup', this.onMouseUpBound);\n this.cdr.reattach(); // Reattach the change detector\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXDataTableColumnResizableDirective, isStandalone: true, selector: \"[ax-table-column-resizble]\", inputs: { column: [\"ax-table-column-resizble\", \"column\"] }, host: { listeners: { \"mousedown\": \"onMouseDown($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ax-table-column-resizble]' }]\n }], ctorParameters: () => [], propDecorators: { column: [{\n type: Input,\n args: ['ax-table-column-resizble']\n }], onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdqRSxNQUFNLE9BQU8sbUNBQW1DO0lBZ0I5QztRQWZRLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVoQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFHakMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFPMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQywrQkFBK0I7UUFDdEQsQ0FBQztJQUNILENBQUM7OEdBNUVVLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFO3dEQVU1QyxNQUFNO3NCQURaLEtBQUs7dUJBQUMsMEJBQTBCO2dCQXFCakMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theC10YWJsZS1jb2x1bW4tcmVzaXpibGVdJyB9KVxuZXhwb3J0IGNsYXNzIEFYRGF0YVRhYmxlQ29sdW1uUmVzaXphYmxlRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIEBJbnB1dCgnYXgtdGFibGUtY29sdW1uLXJlc2l6YmxlJylcbiAgcHVibGljIGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ7XG4gIHByaXZhdGUgcmVzaXplJCA9IG5ldyBTdWJqZWN0PE1vdXNlRXZlbnQ+KCk7XG4gIHByaXZhdGUgc3RhcnRYOiBudW1iZXI7XG4gIHByaXZhdGUgc3RhcnRXaWR0aDogbnVtYmVyO1xuICBwcml2YXRlIG9uTW91c2VNb3ZlUmF3Qm91bmQ6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbk1vdXNlVXBCb3VuZDogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9uTW91c2VNb3ZlUmF3Qm91bmQgPSB0aGlzLm9uTW91c2VNb3ZlUmF3LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbk1vdXNlVXBCb3VuZCA9IHRoaXMub25Nb3VzZVVwLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZXNpemUkLnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbk1vdXNlTW92ZShldmVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2UgZG93biBldmVudHMgdG8gaW5pdGlhdGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgbW91c2UgZG93biBldmVudC5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xuICAgICAgICB0aGlzLnN0YXJ0V2lkdGggPSB0aGlzLmVsPy5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25Nb3VzZVVwQm91bmQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNkci5kZXRhY2goKTsgLy8gRGV0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyByYXcgbW91c2UgbW92ZSBldmVudHMgYW5kIGZvcndhcmRzIHRoZW0gdG8gdGhlIGRlYm91bmNlZCByZXNpemUgc3RyZWFtLlxuICAgKiBUaGlzIG1ldGhvZCBhY3RzIGFzIGEgYnJpZGdlIGJldHdlZW4gdGhlIHJhdyBET00gZXZlbnQgYW5kIHRoZSBkZWJvdW5jZWQgb25Nb3VzZU1vdmUgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgcmF3IG1vdXNlIG1vdmUgZXZlbnQuXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbk1vdXNlTW92ZVJhdyhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVzaXplJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIG1vdXNlIG1vdmUgZXZlbnRzIGR1cmluZyBjb2x1bW4gcmVzaXppbmcuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBtb3ZlIGV2ZW50LlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIChldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRYKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWw/Lm5hdGl2ZUVsZW1lbnQ/LnBhcmVudEVsZW1lbnQsICd3aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgdGhpcy5jb2x1bW4ud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZSB1cCBldmVudHMgdG8gY29tcGxldGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZVVwKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uTW91c2VVcEJvdW5kKTtcbiAgICAgIHRoaXMuY2RyLnJlYXR0YWNoKCk7IC8vIFJlYXR0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { __decorate, __metadata } from \"tslib\";\nimport { AXComponent } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport { Memoize } from '@acorex/core/memoize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a text column in a data table, supporting header, cell, and footer templates.\n *\n * @category Components\n */\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.initialWidth = '';\n /**\n * Controls the display of an expandable arrow icon beside the cell text.\n * If set to `true`, an arrow icon is shown next to the text, indicating expandability.\n *\n * @defaultValue false\n *\n */\n this.expandHandler = false;\n /**\n * Toggles text wrapping in the cell.\n *\n * @defaultValue false\n */\n this.wrapText = false;\n /**\n * @ignore\n */\n this.formatService = inject(AXFormatService);\n }\n /**\n * Returns the template used for rendering cells.\n * Falls back to a default template if no custom template is provided.\n */\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n /**\n * Returns the template used for rendering the column footer,\n * falling back to a default if not provided.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Retrieves the template used for rendering the column header.\n * Falls back to a default template if none is provided.\n */\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n /**\n * Indicates whether loading functionality is enabled.\n */\n get loadingEnabled() {\n return true;\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Generates a unique name based on the `dataField` value.\n */\n get name() {\n return `cl-${this.dataField}`;\n }\n /**\n * Returns the display text for a row cell. Used for cell tooltip when the column has `hasTitle`.\n */\n getCellDisplayText(rowData) {\n if (rowData == null)\n return '';\n const text = this.getDisplayText(rowData, this.dataField);\n return text != null ? String(text) : '';\n }\n getDisplayText(rowData, dataField) {\n const value = rowData[dataField];\n return !this.format ? value : this.formatService.format(value, this.format, this.formatOptions);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableTextColumnComponent, isStandalone: true, selector: \"ax-text-column\", inputs: { width: \"width\", caption: \"caption\", allowSorting: \"allowSorting\", allowResizing: \"allowResizing\", fixed: \"fixed\", hasTitle: \"hasTitle\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", dataField: \"dataField\", expandHandler: \"expandHandler\", wrapText: \"wrapText\", cellTemplate: \"cellTemplate\", footerTemplate: \"footerTemplate\", headerTemplate: \"headerTemplate\", format: \"format\", formatOptions: \"formatOptions\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ], viewQueries: [{ propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler && (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0)) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\n__decorate([\n Memoize(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, String]),\n __metadata(\"design:returntype\", String)\n], AXDataTableTextColumnComponent.prototype, \"getDisplayText\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler && (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0)) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed', 'hasTitle'],\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], dataField: [{\n type: Input\n }], expandHandler: [{\n type: Input\n }], wrapText: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], getDisplayText: [], format: [{\n type: Input\n }], formatOptions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBeUNILE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwwQkFBMEI7SUF4QzlFOztRQXlDWSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9CLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO1FBRTFCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBVzVCOzs7Ozs7V0FNRztRQUVILGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCOzs7O1dBSUc7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBOEZqQjs7V0FFRztRQUNLLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBbUJqRDtJQXRHQzs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3hELENBQUM7SUFjRDs7O09BR0c7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQzVELENBQUM7SUFjRDs7O09BR0c7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQzVELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNPLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBUTtRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksa0JBQWtCLENBQUMsT0FBZ0I7UUFDeEMsSUFBSSxPQUFPLElBQUksSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFRUyxjQUFjLENBQUMsT0FBZ0IsRUFBRSxTQUFpQjtRQUMxRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7OEdBdElVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG1nQkFUOUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxXQUFXLEVBQUUsOEJBQThCO2FBQzVDO1lBQ0QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRTtTQUN0RSxxV0FuQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJUOztBQStJUztJQURULE9BQU8sRUFBRTs7OztvRUFJVDsyRkF0SVUsOEJBQThCO2tCQXhDMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsZ0NBQWdDO3lCQUM1Qzt3QkFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxnQ0FBZ0MsRUFBRTtxQkFDdEU7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUM7aUJBQ25GOzhCQU9VLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBTU4sU0FBUztzQkFEUixLQUFLO2dCQVdOLGFBQWE7c0JBRFosS0FBSztnQkFTTixRQUFRO3NCQURQLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPRSxvQkFBb0I7c0JBRDNCLFNBQVM7dUJBQUMsTUFBTTtnQkFlVixjQUFjO3NCQURwQixLQUFLO2dCQU9FLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWVaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0Usc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBaURULGNBQWMsTUFTeEIsTUFBTTtzQkFETCxLQUFLO2dCQU9OLGFBQWE7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQGFjb3JleC9jb3JlL21lbW9pemUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUgfSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGEgdGV4dCBjb2x1bW4gaW4gYSBkYXRhIHRhYmxlLCBzdXBwb3J0aW5nIGhlYWRlciwgY2VsbCwgYW5kIGZvb3RlciB0ZW1wbGF0ZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdGV4dC1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPnt7IGNhcHRpb24gfX08L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yXCI+XG4gICAgICAgIEBpZiAoZXhwYW5kSGFuZGxlciAmJiAocm93LmRhdGE/LltncmlkLmhhc0NoaWxkcmVuRmllbGRdICE9PSBmYWxzZSB8fCAocm93LmRhdGE/LmNoaWxkcmVuPy5sZW5ndGggPz8gMCkgPiAwKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVFeHBhbmRSb3cocm93KVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWV4cGFuZC1oYW5kbGVyXCJcbiAgICAgICAgICAgIGlkPVwiYXgtZXhwYW5kLWhhbmRsZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWlubGluZS1zdGFydC5yZW1dPVwicm93LmRhdGE/Ll9fbWV0YV9fPy5sZXZlbCAqIDJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZ1JvdygpID09PSByb3cpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lci10aGlyZCBheC1hbmltYXRlLXR3U3BpbiBheC1hbmltYXRlLWluZmluaXRlXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBpZiAocm93LmRhdGE/Ll9fbWV0YV9fPy5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjdXN0b21Db2xsYXBzZUljb24gfHwgJ2ZhcyBmYS1jaGV2cm9uLWRvd24nXCI+PC9pPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY3VzdG9tRXhwYW5kSWNvbiB8fCAnZmFzIGZhLWNoZXZyb24tcmlnaHQnXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAge3sgZ2V0RGlzcGxheVRleHQocm93LmRhdGEsIHRoaXMuZGF0YUZpZWxkKSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdhbGxvd1NvcnRpbmcnLCAnYWxsb3dSZXNpemluZycsICdmaXhlZCcsICdoYXNUaXRsZSddLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG4gIHByb3RlY3RlZCBsb2FkaW5nUm93ID0gc2lnbmFsKG51bGwpO1xuXG4gIHByb3RlY3RlZCBpbml0aWFsV2lkdGggPSAnJztcblxuICBASW5wdXQoKSBjdXN0b21FeHBhbmRJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1c3RvbUNvbGxhcHNlSWNvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBkYXRhIGZpZWxkIHRvIGRpc3BsYXkgaW4gdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRhdGFGaWVsZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgZGlzcGxheSBvZiBhbiBleHBhbmRhYmxlIGFycm93IGljb24gYmVzaWRlIHRoZSBjZWxsIHRleHQuXG4gICAqIElmIHNldCB0byBgdHJ1ZWAsIGFuIGFycm93IGljb24gaXMgc2hvd24gbmV4dCB0byB0aGUgdGV4dCwgaW5kaWNhdGluZyBleHBhbmRhYmlsaXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBleHBhbmRIYW5kbGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGV4dCB3cmFwcGluZyBpbiB0aGUgY2VsbC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgd3JhcFRleHQgPSBmYWxzZTtcblxuICAvKipcbiAgICogUHJvdmlkZXMgYSBjdXN0b20gdGVtcGxhdGUgZm9yIHJlbmRlcmluZyBjZWxscyB3aXRoaW4gdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NvbnRlbnRDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgY2VsbHMuXG4gICAqIEZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vIGN1c3RvbSB0ZW1wbGF0ZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIGdldCByZW5kZXJDZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmNlbGxUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Q2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBjb2x1bW4gZm9vdGVyLFxuICAgKiBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHRlbXBsYXRlIGZvciByZW5kZXJpbmcgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqIEZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vbmUgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBsb2FkaW5nIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC5cbiAgICovXG4gIGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV4cGFuZFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQocm93KTtcbiAgICBhd2FpdCB0aGlzLmdyaWQuZXhwYW5kUm93KHJvdyk7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgYGRhdGFGaWVsZGAgdmFsdWUuXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY2wtJHt0aGlzLmRhdGFGaWVsZH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpc3BsYXkgdGV4dCBmb3IgYSByb3cgY2VsbC4gVXNlZCBmb3IgY2VsbCB0b29sdGlwIHdoZW4gdGhlIGNvbHVtbiBoYXMgYGhhc1RpdGxlYC5cbiAgICovXG4gIHB1YmxpYyBnZXRDZWxsRGlzcGxheVRleHQocm93RGF0YTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgPT0gbnVsbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmdldERpc3BsYXlUZXh0KHJvd0RhdGEsIHRoaXMuZGF0YUZpZWxkKTtcbiAgICByZXR1cm4gdGV4dCAhPSBudWxsID8gU3RyaW5nKHRleHQpIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuXG4gIEBNZW1vaXplKClcbiAgcHJvdGVjdGVkIGdldERpc3BsYXlUZXh0KHJvd0RhdGE6IHVua25vd24sIGRhdGFGaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJvd0RhdGFbZGF0YUZpZWxkXTtcbiAgICByZXR1cm4gIXRoaXMuZm9ybWF0ID8gdmFsdWUgOiB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHZhbHVlLCB0aGlzLmZvcm1hdCBhcyBhbnksIHRoaXMuZm9ybWF0T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZm9ybWF0IHN0cmluZyBmb3IgZGlzcGxheWluZyB2YWx1ZXMgaW4gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGZvcm1hdHRpbmcgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9ybWF0T3B0aW9uczogQVhGb3JtYXRPcHRpb25zO1xufVxuIl19","import { AXComponent, AXRippleDirective, } from '@acorex/cdk/common';\nimport { AXButtonComponent, AXButtonItemListComponent, } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, TemplateRef, ViewChild, ViewEncapsulation, effect, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.cdr = inject(ChangeDetectorRef);\n this.commandLoading = signal(null, ...(ngDevMode ? [{ debugName: \"commandLoading\" }] : []));\n this.rowIdentityMap = new WeakMap();\n this.rowIdentitySeq = 0;\n this.allowSorting = false;\n this.onItemClick = new EventEmitter();\n }\n get loadingEnabled() {\n return false;\n }\n get cssClass() {\n return 'ax-command-column';\n }\n resolveCommandId(rowData, commandName) {\n if (rowData && typeof rowData === 'object') {\n const record = rowData;\n const keyValue = record[this.grid.getDataSourceKey()];\n if (typeof keyValue === 'string' || typeof keyValue === 'number') {\n return `${keyValue}:${commandName}`;\n }\n let fallbackKey = this.rowIdentityMap.get(record);\n if (!fallbackKey) {\n fallbackKey = `row-${++this.rowIdentitySeq}`;\n this.rowIdentityMap.set(record, fallbackKey);\n }\n return `${fallbackKey}:${commandName}`;\n }\n return `unknown:${commandName}`;\n }\n setCommandLoadingState(commandId, loading) {\n this.commandLoading.set(loading ? commandId : null);\n }\n}\n/**\n * A column for displaying dropdown command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n this.emptyStateText = '@acorex:dataTable.rowCommandColumn.emptyStateText';\n this.itemsLoading = signal(false, ...(ngDevMode ? [{ debugName: \"itemsLoading\" }] : []));\n this.itemsFetched = signal(false, ...(ngDevMode ? [{ debugName: \"itemsFetched\" }] : []));\n /**\n * @ignore\n */\n this._items = [];\n this.items = [];\n this.dropdownLoadingEffect = effect(() => {\n this.applyLoadingState(this.commandLoading());\n }, ...(ngDevMode ? [{ debugName: \"dropdownLoadingEffect\" }] : []));\n }\n /**\n * Returns the template used for rendering cell content.\n * This method provides the cell template used in the data table column, falling back to a default template if none is provided.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * This method provides the header template used in the data table column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer content.\n * This method provides the footer template used in the data table column.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Returns the name identifier for the column component.\n */\n get name() {\n return 'cl-dd-cmd';\n }\n /**\n * @ignore\n */\n async handleOnOpened(rowData) {\n this.itemsLoading.set(true);\n this.itemsFetched.set(false);\n try {\n let resolvedItems = [];\n if (Array.isArray(this.items)) {\n resolvedItems = this.items;\n }\n else\n typeof this.items == 'function';\n {\n const result = this['items'](rowData);\n if (Array.isArray(result)) {\n resolvedItems = result;\n }\n else if (result instanceof Promise) {\n resolvedItems = await result;\n }\n }\n this._items = this.decorateItems(rowData, resolvedItems);\n this.applyLoadingState(this.commandLoading());\n this.itemsFetched.set(true);\n }\n finally {\n this.itemsLoading.set(false);\n this.cdr.detectChanges();\n }\n }\n /**\n * @ignore\n */\n handleOnClosed() {\n this._items = [];\n this.itemsFetched.set(false);\n this.itemsLoading.set(false);\n }\n decorateItems(rowData, items) {\n return items.map((item) => ({\n ...item,\n commandId: this.resolveCommandId(rowData, item.name ?? 'command'),\n loading: false,\n }));\n }\n applyLoadingState(activeCommandId) {\n if (!this._items.length) {\n return;\n }\n let hasChanges = false;\n const updatedItems = this._items.map((item) => {\n const nextLoading = !!activeCommandId && item.commandId === activeCommandId;\n if (item.loading !== nextLoading) {\n hasChanges = true;\n return { ...item, loading: nextLoading };\n }\n return item;\n });\n if (hasChanges) {\n this._items = updatedItems;\n this.cdr.markForCheck();\n }\n }\n /**\n * @ignore\n */\n handleOnItemClick(e, data) {\n const commandName = e.name ?? 'command';\n const commandId = this.resolveCommandId(data, commandName);\n const itemList = e.component;\n let pendingAutoClose = setTimeout(() => {\n itemList?.closeParent();\n pendingAutoClose = undefined;\n });\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: commandName,\n setLoading: (loading) => {\n if (pendingAutoClose) {\n clearTimeout(pendingAutoClose);\n pendingAutoClose = undefined;\n }\n this.setCommandLoadingState(commandId, loading);\n if (!loading) {\n itemList?.closeParent();\n }\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowDropdownCommandColumnComponent, isStandalone: true, selector: \"ax-dropdown-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", emptyStateTemplate: \"emptyStateTemplate\", emptyStateText: \"emptyStateText\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-dropdown-command-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n CommonModule,\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXButtonItemListComponent,\n AXLoadingComponent,\n NgTemplateOutlet,\n AXTranslationModule,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], emptyStateTemplate: [{\n type: Input\n }], emptyStateText: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n/**\n * A column for displaying command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n /**\n * Defines the command items to display in the column.\n * @defaultValue []\n */\n this.items = [];\n }\n /**\n * Returns the template used for rendering the cell content.\n * Uses the specified cell template if provided; otherwise, falls back to a default template.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * Overrides the base implementation to provide a specific template for the command column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used for rendering the footer content of the column.\n * Returns `footerTemplate` if provided; otherwise, returns `_contentFooterTemplate`.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique name identifier for the command column.\n */\n get name() {\n return 'cl-in-cmd';\n }\n /**\n * @ignore\n */\n getItems(rowData) {\n if (Array.isArray(this.items)) {\n return this.items;\n }\n else\n typeof this.items == 'function';\n {\n return this.items(rowData);\n }\n return [];\n }\n getItemsWithIds(rowData) {\n return this.getItems(rowData).map((item) => ({\n item,\n commandId: this.getCommandId(rowData, item),\n }));\n }\n /**\n * @ignore\n */\n getCommandId(rowData, item) {\n const commandName = item.name ?? 'command';\n return this.resolveCommandId(rowData, commandName);\n }\n handleOnItemClick(e, item, data) {\n const commandId = this.getCommandId(data, item);\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e.nativeEvent,\n data,\n name: item.name ?? 'command',\n setLoading: (loading) => {\n this.setCommandLoadingState(commandId, loading);\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowCommandColumnComponent, isStandalone: true, selector: \"ax-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-command-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXButtonComponent,\n AXLoadingComponent,\n AXTranslatorPipe,\n AsyncPipe,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvcm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsV0FBVyxFQUVYLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIseUJBQXlCLEdBRTFCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFXakUsTUFBTSxPQUFnQiwrQkFBZ0MsU0FBUSwwQkFBMEI7SUFBeEY7O1FBQ1ksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FB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QkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lDQXVCNkI7b0JBQ3ZDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsNkJBQTZCO3lCQUN6QztxQkFDRjtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLFNBQVM7cUJBQ1Y7aUJBQ0Y7OEJBT1MsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxNQUFNO2dCQWVULHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWVaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0Usc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBdUJuQixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWEJ1dHRvbkNsaWNrRXZlbnQsXG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYSXRlbUNsaWNrRXZlbnQsXG4gIEFYUmlwcGxlRGlyZWN0aXZlLFxuICBBWFN0eWxlTG9va1R5cGUsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQge1xuICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgQVhCdXR0b25JdGVtQ29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duUGFuZWxDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbmV4cG9ydCB0eXBlIEFYUm93Q29tbWFuZEl0ZW0gPSBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSAmIHtcbiAgY29tbWFuZElkPzogc3RyaW5nO1xuICBsb29rPzogQVhTdHlsZUxvb2tUeXBlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCBleHRlbmRzIEFYQnV0dG9uQ2xpY2tFdmVudCB7XG4gIHNldExvYWRpbmc/OiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZVJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG4gIHByb3RlY3RlZCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgY29tbWFuZExvYWRpbmcgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcm93SWRlbnRpdHlNYXAgPSBuZXcgV2Vha01hcDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgc3RyaW5nPigpO1xuICBwcml2YXRlIHJvd0lkZW50aXR5U2VxID0gMDtcblxuICBvdmVycmlkZSBhbGxvd1NvcnRpbmcgPSBmYWxzZTtcblxuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGNzc0NsYXNzKCkge1xuICAgIHJldHVybiAnYXgtY29tbWFuZC1jb2x1bW4nO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVDb21tYW5kSWQocm93RGF0YTogdW5rbm93biwgY29tbWFuZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgJiYgdHlwZW9mIHJvd0RhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCByZWNvcmQgPSByb3dEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3Qga2V5VmFsdWUgPSByZWNvcmRbdGhpcy5ncmlkLmdldERhdGFTb3VyY2VLZXkoKV07XG4gICAgICBpZiAodHlwZW9mIGtleVZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5VmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBgJHtrZXlWYWx1ZX06JHtjb21tYW5kTmFtZX1gO1xuICAgICAgfVxuICAgICAgbGV0IGZhbGxiYWNrS2V5ID0gdGhpcy5yb3dJZGVudGl0eU1hcC5nZXQocmVjb3JkKTtcbiAgICAgIGlmICghZmFsbGJhY2tLZXkpIHtcbiAgICAgICAgZmFsbGJhY2tLZXkgPSBgcm93LSR7Kyt0aGlzLnJvd0lkZW50aXR5U2VxfWA7XG4gICAgICAgIHRoaXMucm93SWRlbnRpdHlNYXAuc2V0KHJlY29yZCwgZmFsbGJhY2tLZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAke2ZhbGxiYWNrS2V5fToke2NvbW1hbmROYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBgdW5rbm93bjoke2NvbW1hbmROYW1lfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q29tbWFuZExvYWRpbmdTdGF0ZShjb21tYW5kSWQ6IHN0cmluZywgbG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29tbWFuZExvYWRpbmcuc2V0KGxvYWRpbmcgPyBjb21tYW5kSWQgOiBudWxsKTtcbiAgfVxuXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudD4oKTtcbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBkcm9wZG93biBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b24gW2F4UmlwcGxlXT5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWxcbiAgICAgICAgICAgICAgW2FkYXB0aXZpdHlFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25PcGVuZWQpPVwiaGFuZGxlT25PcGVuZWQocm93LmRhdGEpXCJcbiAgICAgICAgICAgICAgKG9uQ2xvc2VkKT1cImhhbmRsZU9uQ2xvc2VkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW1zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBwYW5lbCBzdHlsZT1cInBhZGRpbmc6IDAuODc1cmVtO1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmICghX2l0ZW1zLmxlbmd0aCAmJiBpdGVtc0ZldGNoZWQoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlTdGF0ZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1kcm9wZG93bi1jb21tYW5kLWVtcHR5LXN0YXRlLXRleHRcIj57eyBlbXB0eVN0YXRlVGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChfaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3RcbiAgICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsIHJvdy5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiX2l0ZW1zXCJcbiAgICAgICAgICAgICAgICAgIFtjbG9zZVBhcmVudE9uQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2xvY2tPbkxvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBvdXRwdXRzOiBbJ29uSXRlbUNsaWNrJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICAgIEFYTG9hZGluZ0NvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93RHJvcGRvd25Db21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyBjZWxsIGNvbnRlbnQuXG4gICAqIFRoaXMgbWV0aG9kIHByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLCBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vbmUgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGhlYWRlciBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLlxuICAgKi9cblxuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbXB0eVN0YXRlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW1wdHlTdGF0ZVRleHQgPSAnQGFjb3JleDpkYXRhVGFibGUucm93Q29tbWFuZENvbHVtbi5lbXB0eVN0YXRlVGV4dCc7XG5cbiAgcHJvdGVjdGVkIGl0ZW1zTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBpdGVtc0ZldGNoZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudC5cbiAgICogVGhpcyBtZXRob2QgcHJvdmlkZXMgdGhlIGZvb3RlciB0ZW1wbGF0ZSB1c2VkIGluIHRoZSBkYXRhIHRhYmxlIGNvbHVtbi5cbiAgICovXG4gIGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbHVtbiBjb21wb25lbnQuXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2wtZGQtY21kJztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9pdGVtczogQVhSb3dDb21tYW5kSXRlbVtdID0gW107XG5cbiAgQElucHV0KClcbiAgaXRlbXM6IEFYUm93Q29tbWFuZEl0ZW1bXSB8ICgocm93RGF0YTogdW5rbm93bikgPT4gQVhSb3dDb21tYW5kSXRlbVtdIHwgUHJvbWlzZTxBWFJvd0NvbW1hbmRJdGVtW10+KSA9IFtdO1xuXG4gIHByaXZhdGUgZHJvcGRvd25Mb2FkaW5nRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLmFwcGx5TG9hZGluZ1N0YXRlKHRoaXMuY29tbWFuZExvYWRpbmcoKSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZU9uT3BlbmVkKHJvd0RhdGEpIHtcbiAgICB0aGlzLml0ZW1zTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5pdGVtc0ZldGNoZWQuc2V0KGZhbHNlKTtcbiAgICB0cnkge1xuICAgICAgbGV0IHJlc29sdmVkSXRlbXM6IEFYUm93Q29tbWFuZEl0ZW1bXSA9IFtdO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgICAgcmVzb2x2ZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICB9IGVsc2UgdHlwZW9mIHRoaXMuaXRlbXMgPT0gJ2Z1bmN0aW9uJztcbiAgICAgIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKHRoaXNbJ2l0ZW1zJ10gYXMgYW55KShyb3dEYXRhKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgIHJlc29sdmVkSXRlbXMgPSByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHJlc29sdmVkSXRlbXMgPSBhd2FpdCByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuX2l0ZW1zID0gdGhpcy5kZWNvcmF0ZUl0ZW1zKHJvd0RhdGEsIHJlc29sdmVkSXRlbXMpO1xuICAgICAgdGhpcy5hcHBseUxvYWRpbmdTdGF0ZSh0aGlzLmNvbW1hbmRMb2FkaW5nKCkpO1xuICAgICAgdGhpcy5pdGVtc0ZldGNoZWQuc2V0KHRydWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLml0ZW1zTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uQ2xvc2VkKCkge1xuICAgIHRoaXMuX2l0ZW1zID0gW107XG4gICAgdGhpcy5pdGVtc0ZldGNoZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLml0ZW1zTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNvcmF0ZUl0ZW1zKHJvd0RhdGE6IHVua25vd24sIGl0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10pOiBBWFJvd0NvbW1hbmRJdGVtW10ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgY29tbWFuZElkOiB0aGlzLnJlc29sdmVDb21tYW5kSWQocm93RGF0YSwgaXRlbS5uYW1lID8/ICdjb21tYW5kJyksXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5TG9hZGluZ1N0YXRlKGFjdGl2ZUNvbW1hbmRJZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5faXRlbXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gdGhpcy5faXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBuZXh0TG9hZGluZyA9ICEhYWN0aXZlQ29tbWFuZElkICYmIGl0ZW0uY29tbWFuZElkID09PSBhY3RpdmVDb21tYW5kSWQ7XG4gICAgICBpZiAoaXRlbS5sb2FkaW5nICE9PSBuZXh0TG9hZGluZykge1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgbG9hZGluZzogbmV4dExvYWRpbmcgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLl9pdGVtcyA9IHVwZGF0ZWRJdGVtcztcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uSXRlbUNsaWNrKGU6IEFYSXRlbUNsaWNrRXZlbnQ8QVhCdXR0b25JdGVtQ29tcG9uZW50PiwgZGF0YTogdW5rbm93bikge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gZS5uYW1lID8/ICdjb21tYW5kJztcbiAgICBjb25zdCBjb21tYW5kSWQgPSB0aGlzLnJlc29sdmVDb21tYW5kSWQoZGF0YSwgY29tbWFuZE5hbWUpO1xuICAgIGNvbnN0IGl0ZW1MaXN0ID0gZS5jb21wb25lbnQgYXMgQVhCdXR0b25JdGVtTGlzdENvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgcGVuZGluZ0F1dG9DbG9zZTogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGl0ZW1MaXN0Py5jbG9zZVBhcmVudCgpO1xuICAgICAgcGVuZGluZ0F1dG9DbG9zZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBjb25zdCBhcmdzOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCA9IHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5ncmlkLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgIGRhdGEsXG4gICAgICBuYW1lOiBjb21tYW5kTmFtZSxcbiAgICAgIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChwZW5kaW5nQXV0b0Nsb3NlKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHBlbmRpbmdBdXRvQ2xvc2UpO1xuICAgICAgICAgIHBlbmRpbmdBdXRvQ2xvc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRDb21tYW5kTG9hZGluZ1N0YXRlKGNvbW1hbmRJZCwgbG9hZGluZyk7XG4gICAgICAgIGlmICghbG9hZGluZykge1xuICAgICAgICAgIGl0ZW1MaXN0Py5jbG9zZVBhcmVudCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KGFyZ3MpO1xuICB9XG59XG5cbi8qKlxuICogQSBjb2x1bW4gZm9yIGRpc3BsYXlpbmcgY29tbWFuZCBidXR0b25zIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb21tYW5kLWNvbHVtbicsXG4gIHRlbXBsYXRlOiBgPG5nLXRlbXBsYXRlICNoZWFkZXI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIEBpZiAocm93LmRhdGEpIHtcbiAgICAgICAgQGZvciAoY29tbWFuZCBvZiBnZXRJdGVtc1dpdGhJZHMocm93LmRhdGEpOyB0cmFjayBjb21tYW5kLmNvbW1hbmRJZCkge1xuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIFtpY29uT25seV09XCJjb21tYW5kLml0ZW0uaWNvbk9ubHkgPz8gdHJ1ZVwiXG4gICAgICAgICAgICBbdGV4dF09XCJjb21tYW5kLml0ZW0udGV4dFwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjb21tYW5kLml0ZW0udGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIncmdiYSh2YXIoLS1heC1zeXMtY29sb3ItJyArIChjb21tYW5kLml0ZW0uY29sb3IgPz8gJ3ByaW1hcnkpJykgKyAnLTUwMCkpJ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbWFuZC5pdGVtLmRpc2FibGVkIHx8IGNvbW1hbmRMb2FkaW5nKClcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImNvbW1hbmQuaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXhSaXBwbGVdPVwiIWNvbW1hbmQuaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbbG9va109XCJjb21tYW5kLml0ZW0ubG9vayA/PyAnc29saWQnXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uSXRlbUNsaWNrKCRldmVudCwgY29tbWFuZC5pdGVtLCByb3cuZGF0YSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cImNvbW1hbmQuaXRlbS5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgQGlmIChjb21tYW5kTG9hZGluZygpID09PSBjb21tYW5kLmNvbW1hbmRJZCkge1xuICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+IGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbiAgb3V0cHV0czogWydvbkl0ZW1DbGljayddLFxuICBpbXBvcnRzOiBbXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFYTG9hZGluZ0NvbXBvbmVudCxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cblxuICBAVmlld0NoaWxkKCdjZWxsJylcbiAgcHJpdmF0ZSBfY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBjZWxsIGNvbnRlbnQuXG4gICAqIFVzZXMgdGhlIHNwZWNpZmllZCBjZWxsIHRlbXBsYXRlIGlmIHByb3ZpZGVkOyBvdGhlcndpc2UsIGZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBoZWFkZXIgY29udGVudC5cbiAgICogT3ZlcnJpZGVzIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHRvIHByb3ZpZGUgYSBzcGVjaWZpYyB0ZW1wbGF0ZSBmb3IgdGhlIGNvbW1hbmQgY29sdW1uLlxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0IHJlbmRlckhlYWRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEhlYWRlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIGNvbnRlbnQgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdmb290ZXInKVxuICBwcml2YXRlIF9jb250ZW50Rm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGZvb3RlciBjb250ZW50IG9mIHRoZSBjb2x1bW4uXG4gICAqIFJldHVybnMgYGZvb3RlclRlbXBsYXRlYCBpZiBwcm92aWRlZDsgb3RoZXJ3aXNlLCByZXR1cm5zIGBfY29udGVudEZvb3RlclRlbXBsYXRlYC5cbiAgICovXG4gIGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBuYW1lIGlkZW50aWZpZXIgZm9yIHRoZSBjb21tYW5kIGNvbHVtbi5cbiAgICovXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjbC1pbi1jbWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGNvbW1hbmQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLlxuICAgKiBAZGVmYXVsdFZhbHVlIFtdXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtczogQVhSb3dDb21tYW5kSXRlbVtdIHwgKChyb3dEYXRhOiB1bmtub3duKSA9PiBBWFJvd0NvbW1hbmRJdGVtW10pID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0SXRlbXMocm93RGF0YTogdW5rbm93bik6IEFYUm93Q29tbWFuZEl0ZW1bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIH0gZWxzZSB0eXBlb2YgdGhpcy5pdGVtcyA9PSAnZnVuY3Rpb24nO1xuICAgIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zKHJvd0RhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SXRlbXNXaXRoSWRzKHJvd0RhdGE6IHVua25vd24pOiBBcnJheTx7IGl0ZW06IEFYUm93Q29tbWFuZEl0ZW07IGNvbW1hbmRJZDogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyhyb3dEYXRhKS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICBpdGVtLFxuICAgICAgY29tbWFuZElkOiB0aGlzLmdldENvbW1hbmRJZChyb3dEYXRhLCBpdGVtKSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRDb21tYW5kSWQocm93RGF0YTogdW5rbm93biwgaXRlbTogQVhSb3dDb21tYW5kSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tbWFuZE5hbWUgPSBpdGVtLm5hbWUgPz8gJ2NvbW1hbmQnO1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVDb21tYW5kSWQocm93RGF0YSwgY29tbWFuZE5hbWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9uSXRlbUNsaWNrKGU6IEFYQ2xpY2tFdmVudCwgaXRlbTogQVhSb3dDb21tYW5kSXRlbSwgZGF0YTogdW5rbm93bikge1xuICAgIGNvbnN0IGNvbW1hbmRJZCA9IHRoaXMuZ2V0Q29tbWFuZElkKGRhdGEsIGl0ZW0pO1xuICAgIGNvbnN0IGFyZ3M6IEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50ID0ge1xuICAgICAgY29tcG9uZW50OiB0aGlzLmdyaWQsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLm5hdGl2ZUV2ZW50LFxuICAgICAgZGF0YSxcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSA/PyAnY29tbWFuZCcsXG4gICAgICBzZXRMb2FkaW5nOiAobG9hZGluZzogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLnNldENvbW1hbmRMb2FkaW5nU3RhdGUoY29tbWFuZElkLCBsb2FkaW5nKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoYXJncyk7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowExpandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-expand';\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowExpandColumnComponent, isStandalone: true, selector: \"ax-expand-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-expand-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWV4cGFuZC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctZXhwYW5kLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBcUNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSwwQkFBMEI7SUFwQzFFOztRQXFDWSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9CLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO0tBK0RyQztJQXZEQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQVE7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWpFVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiwrSEFUMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxXQUFXLEVBQUUsMEJBQTBCO2FBQ3hDO1lBQ0QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRTtTQUNsRSw4VkEvQlM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7OzJGQVlVLDBCQUEwQjtrQkFwQ3RDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsNEJBQTRCO3lCQUN4Qzt3QkFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyw0QkFBNEIsRUFBRTtxQkFDbEU7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7aUJBQ3RDOzhCQVVTLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsTUFBTTtnQkFjVCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFjWCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUgfSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcblxuLyoqXG4gKiBDb2x1bW4gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgY2hlY2tib3hlcyBmb3Igcm93IHNlbGVjdGlvbiBpbiBhIGRhdGEgdGFibGUuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZXhwYW5kLWNvbHVtbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIEBpZiAocm93LmRhdGE/LltncmlkLmhhc0NoaWxkcmVuRmllbGRdICE9PSBmYWxzZSB8fCAocm93LmRhdGE/LmNoaWxkcmVuPy5sZW5ndGggPz8gMCkgPiAwKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIChjbGljayk9XCJoYW5kbGVFeHBhbmRSb3cocm93KVwiXG4gICAgICAgIGNsYXNzPVwiYXgtZXhwYW5kLWhhbmRsZXJcIlxuICAgICAgICBbc3R5bGUucGFkZGluZy1pbmxpbmUtc3RhcnQucmVtXT1cInJvdy5kYXRhPy5fX21ldGFfXz8ubGV2ZWwgKiAxLjVcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGxvYWRpbmdSb3coKSA9PT0gcm93KSB7XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lci10aGlyZCBheC1hbmltYXRlLXR3U3BpbiBheC1hbmltYXRlLWluZmluaXRlXCI+PC9pPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAaWYgKHJvdy5kYXRhPy5fX21ldGFfXz8uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiPjwvaT5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCBleHRlbmRzIEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZ1JvdyA9IHNpZ25hbChudWxsKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBjZWxscyBpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRoZSBjb2x1bW4gZm9vdGVyLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWV4cGFuZCc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFeHBhbmRSb3cocm93OiBhbnkpIHtcbiAgICB0aGlzLmxvYWRpbmdSb3cuc2V0KHJvdyk7XG4gICAgYXdhaXQgdGhpcy5ncmlkLmV4cGFuZFJvdyhyb3cpO1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgbG9hZGluZyBpcyBlbmFibGVkIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IGxvYWRpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { AXBadgeComponent } from '@acorex/components/badge';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying row indices in a data table column.\n *\n * @category Components\n */\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.unsubscriber = inject(AXUnsubscriber);\n /**\n * Determines whether the index should be zero-padded.\n * @defaultValue false\n */\n this.padZero = false;\n /**\n * @ignore\n */\n this.formatCount = 1;\n /**\n * Disables sorting for this column.\n *\n * @defaultValue false\n */\n this.allowSorting = false;\n }\n /**\n * Provides the cell template for custom rendering if defined.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Provides the header template for custom rendering if defined.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer of the column.\n * This method returns the `footerTemplate` if it is provided; otherwise, it defaults to the `_contentFooterTemplate`. This allows for custom footer content while falling back to a default template if no custom template is specified.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier name for the column.\n */\n get name() {\n return 'cl-inx';\n }\n /**\n * @ignore\n */\n ngOnInit() {\n if (this.padZero) {\n this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.formatCount = c.totalCount.toString().length;\n });\n }\n }\n /**\n * Indicates whether loading is enabled for this component.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-index-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowIndexColumnComponent, isStandalone: true, selector: \"ax-index-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", padZero: \"padZero\" }, providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if (grid.getRowHighlightBadge(row.data); as badgeKey) {\n <ax-badge\n class=\"ax-data-table-row-highlight-badge\"\n [color]=\"grid.getRowHighlight(row.data)?.color ?? 'success'\"\n [text]=\"badgeKey | translate | async\"\n />\n } @else {\n {{\n row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async\n }}\n }\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"component\", type: AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-index-column',\n template: `<ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if (grid.getRowHighlightBadge(row.data); as badgeKey) {\n <ax-badge\n class=\"ax-data-table-row-highlight-badge\"\n [color]=\"grid.getRowHighlight(row.data)?.color ?? 'success'\"\n [text]=\"badgeKey | translate | async\"\n />\n } @else {\n {{\n row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async\n }}\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n imports: [AsyncPipe, AXFormatPipe, AXBadgeComponent, AXTranslatorPipe],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], padZero: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWluZGV4LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL3Jvdy1pbmRleC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFakU7Ozs7R0FJRztBQStCSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsMEJBQTBCO0lBOUJ6RTs7UUErQlksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQXVEOUM7OztXQUdHO1FBRUgsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBYTFCOzs7O1dBSUc7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztLQWUvQjtJQTFGQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBY0Q7OztPQUdHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBY0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQVNEOztPQUVHO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxRQUFRO1FBQ25CLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs4R0FuR1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0xBWHpCO1lBQ1QsY0FBYztZQUNkO2dCQUNFLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFdBQVcsRUFBRSx5QkFBeUI7YUFDdkM7WUFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFO1NBQ2pFLDhWQXhCUzs7Ozs7Ozs7Ozs7Ozs7eUNBYzZCLDREQVlKLGdCQUFnQixtRkFBekMsU0FBUyx5Q0FBRSxZQUFZLDBDQUFvQixnQkFBZ0I7OzJGQUUxRCx5QkFBeUI7a0JBOUJyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7eUNBYzZCO29CQUN2QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDVCxjQUFjO3dCQUNkOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsMkJBQTJCO3lCQUN2Qzt3QkFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVywyQkFBMkIsRUFBRTtxQkFDakU7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3ZFOzhCQVNTLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsTUFBTTtnQkFjVCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFjWixjQUFjO3NCQURwQixLQUFLO2dCQU9FLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQXVCbkIsT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhCYWRnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRvclBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHJvdyBpbmRpY2VzIGluIGEgZGF0YSB0YWJsZSBjb2x1bW4uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtaW5kZXgtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlcj57eyBjYXB0aW9uIH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIEBpZiAoZ3JpZC5nZXRSb3dIaWdobGlnaHRCYWRnZShyb3cuZGF0YSk7IGFzIGJhZGdlS2V5KSB7XG4gICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1yb3ctaGlnaGxpZ2h0LWJhZGdlXCJcbiAgICAgICAgICBbY29sb3JdPVwiZ3JpZC5nZXRSb3dIaWdobGlnaHQocm93LmRhdGEpPy5jb2xvciA/PyAnc3VjY2VzcydcIlxuICAgICAgICAgIFt0ZXh0XT1cImJhZGdlS2V5IHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7XG4gICAgICAgICAgcm93LnJvd0luZGV4ICsgMSB8IGZvcm1hdDogJ251bWJlcicgOiB7IHplcm9QYWRMZW5ndGg6IHRoaXMuZm9ybWF0Q291bnQsIHRob3VzYW5kU2VwYXJhdG9yOiBmYWxzZSB9IHwgYXN5bmNcbiAgICAgICAgfX1cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+IGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0luZGV4Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZSwgQVhGb3JtYXRQaXBlLCBBWEJhZGdlQ29tcG9uZW50LCBBWFRyYW5zbGF0b3JQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dJbmRleENvbHVtbkNvbXBvbmVudCBleHRlbmRzIEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGBmb290ZXJUZW1wbGF0ZWAgaWYgaXQgaXMgcHJvdmlkZWQ7IG90aGVyd2lzZSwgaXQgZGVmYXVsdHMgdG8gdGhlIGBfY29udGVudEZvb3RlclRlbXBsYXRlYC4gVGhpcyBhbGxvd3MgZm9yIGN1c3RvbSBmb290ZXIgY29udGVudCB3aGlsZSBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vIGN1c3RvbSB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBuYW1lIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWlueCc7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBzaG91bGQgYmUgemVyby1wYWRkZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhZFplcm8gPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXRDb3VudCA9IDE7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wYWRaZXJvKSB7XG4gICAgICB0aGlzLmdyaWQuZGF0YVNvdXJjZS5vbkNoYW5nZWQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtYXRDb3VudCA9IGMudG90YWxDb3VudC50b1N0cmluZygpLmxlbmd0aDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgb3ZlcnJpZGUgYWxsb3dTb3J0aW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gJ2F4LWluZGV4LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/check-box\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowSelectColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-select';\n }\n /**\n * @ignore\n */\n getDataSourceKey() {\n return this.grid.dataSource.config.key || 'id';\n }\n /**\n * @ignore\n */\n isSelected(item) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);\n }\n /**\n * @ignore\n */\n checkAllSelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n if (!rows || !rows.length || !selectedRowKeys.length) {\n return false;\n }\n const allSelected = rows.every((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n const anySelected = rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n if (allSelected) {\n return true;\n }\n if (anySelected) {\n return null;\n }\n return false;\n }\n /**\n * @ignore\n */\n handleChange(e, item) {\n if (e.isUserInteraction) {\n if (this.isSelected(item)) {\n this.grid.unSelectRows(item);\n }\n else {\n this.grid.selectRows(item);\n }\n }\n }\n /**\n * @ignore\n */\n handleSelectAll(e, rows) {\n if (e.isUserInteraction) {\n if (this.checkAllSelected(rows)) {\n this.grid.unSelectRows(...rows);\n }\n else {\n this.grid.selectRows(...rows);\n }\n }\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-select-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXRowSelectColumnComponent, isStandalone: true, selector: \"ax-select-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i2.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-select-column',\n template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ],\n imports: [FormsModule, AXCheckBoxModule],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctc2VsZWN0LWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFakU7Ozs7R0FJRztBQXNDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsMEJBQTBCO0lBckMxRTs7UUFzQ1UsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQW1JeEM7SUEzSEM7O09BRUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBYSxvQkFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJ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UyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLE1BQU07Z0JBY1Qsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBY1gsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NoZWNrLWJveCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4nO1xuXG4vKipcbiAqIENvbHVtbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjaGVja2JveGVzIGZvciByb3cgc2VsZWN0aW9uIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zZWxlY3QtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlciBsZXQtY29sPlxuICAgICAgPGF4LWNoZWNrLWJveFxuICAgICAgICBbbmdNb2RlbF09XCJjaGVja0FsbFNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cInRydWVcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlU2VsZWN0QWxsKCRldmVudCwgY29sLnJvd3MpXCJcbiAgICAgID48L2F4LWNoZWNrLWJveD5cbiAgICAgIDwhLS0gPGlucHV0XG4gICAgICAgIGNsYXNzPVwiYXgtY2hlY2tib3hcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbChjb2wucm93cylcIlxuICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJjaGVja0FueVNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtjaGVja2VkXT1cImNoZWNrQWxsU2VsZWN0ZWQoY29sLnJvd3MpXCJcbiAgICAgIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICA8YXgtY2hlY2stYm94XG4gICAgICAgIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlKCRldmVudCwgcm93LmRhdGEpXCJcbiAgICAgICAgW25nTW9kZWxdPVwiaXNTZWxlY3RlZChyb3cuZGF0YSlcIlxuICAgICAgPjwvYXgtY2hlY2stYm94PlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJheC1jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIiAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZShyb3cuZGF0YSlcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHJvdy5kYXRhKVwiIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgQVhDaGVja0JveE1vZHVsZV0sXG4gIGlucHV0czogWyd3aWR0aCcsICdjYXB0aW9uJywgJ2ZpeGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBjZWxscyBpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRoZSBjb2x1bW4gZm9vdGVyLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLXNlbGVjdCc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkLmRhdGFTb3VyY2UuY29uZmlnLmtleSB8fCAnaWQnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNTZWxlY3RlZChpdGVtOiB1bmtub3duKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuICAgIHJldHVybiBpdGVtICE9IG51bGwgJiYgc2VsZWN0ZWRSb3dLZXlzLmluY2x1ZGVzKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW1ba2V5XSA6IGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2tBbGxTZWxlY3RlZChyb3dzKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuXG4gICAgaWYgKCFyb3dzIHx8ICFyb3dzLmxlbmd0aCB8fCAhc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcm93cy5ldmVyeSgoZWxlbWVudCkgPT5cbiAgICAgIHNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyh0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcgPyBlbGVtZW50W2tleV0gOiBlbGVtZW50KSxcbiAgICApO1xuXG4gICAgY29uc3QgYW55U2VsZWN0ZWQgPSByb3dzLnNvbWUoKGVsZW1lbnQpID0+XG4gICAgICBzZWxlY3RlZFJvd0tleXMuaW5jbHVkZXModHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnID8gZWxlbWVudFtrZXldIDogZWxlbWVudCksXG4gICAgKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChhbnlTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNoYW5nZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5ncmlkLnVuU2VsZWN0Um93cyhpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNlbGVjdEFsbChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCByb3dzOiBhbnkpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgaWYgKHRoaXMuY2hlY2tBbGxTZWxlY3RlZChyb3dzKSkge1xuICAgICAgICB0aGlzLmdyaWQudW5TZWxlY3RSb3dzKC4uLnJvd3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvd3MoLi4ucm93cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQ1NTIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIG92ZXJyaWRlIGdldCBjc3NDbGFzcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAnYXgtc2VsZWN0LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDataPagerComponent, AXDataPagerInfoComponent, AXDataPagerInputSelectorComponent, AXDataPagerNextButtonsComponent, AXDataPagerNumericSelectorComponent, AXDataPagerPageSizesComponent, AXDataPagerPrevButtonsComponent, } from '@acorex/components/data-pager';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkDrag, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, DOCUMENT, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, computed, effect, inject, input, signal, untracked, } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying and managing a data table with advanced features.\n *\n * @category Components\n */\nexport class AXDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n /**\n * Controls the table look.\n *\n * - `classic` — classic look (default).\n * - `minimal` — minimal look.\n *\n * @defaultValue `'classic'`\n */\n this.look = input('classic', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n this._unsubscriber = inject(AXUnsubscriber);\n this._zone = inject(NgZone);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @ignore\n */\n this.displayedRows = signal([], ...(ngDevMode ? [{ debugName: \"displayedRows\" }] : []));\n /**\n * @ignore\n */\n this.page = signal(0, ...(ngDevMode ? [{ debugName: \"page\" }] : []));\n /**\n * @ignore\n */\n this.pageSize = signal(0, ...(ngDevMode ? [{ debugName: \"pageSize\" }] : []));\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.columnsList = signal([], ...(ngDevMode ? [{ debugName: \"columnsList\" }] : []));\n /**\n * @ignore\n */\n this.endFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'end'), ...(ngDevMode ? [{ debugName: \"endFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.startFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'start'), ...(ngDevMode ? [{ debugName: \"startFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.normalColumnsList = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'), ...(ngDevMode ? [{ debugName: \"normalColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n /**\n * Columns that used `width=\"auto\"` and received header-only sizing before rows were available.\n * They get a full content measurement once data is present.\n * @ignore\n */\n this.pendingContentAutoFitColumns = new WeakSet();\n /**\n * Columns that were configured with `width=\"auto\"` (intent), even if we later set a pixel width.\n * Used to re-measure on every page/data change.\n * @ignore\n */\n this.autoFitIntentColumns = new WeakSet();\n /**\n * Columns the user manually resized by dragging. Auto-fit should not override user choice.\n * @ignore\n */\n this.userResizedColumns = new WeakSet();\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * Defines if alternative row styling should be applied.\n *\n * @defaultValue `true`\n */\n this.alternative = true;\n /**\n * Indicates if the table header should be displayed.\n *\n * @defaultValue `true`\n */\n this.showHeader = true;\n /**\n * Indicates if the table header should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedHeader = true;\n /**\n * Indicates if the table footer should be displayed.\n *\n * @defaultValue `false`\n */\n this.showFooter = false;\n /**\n * Indicates if the table footer should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedFooter = true;\n /**\n * Specifies the height of each item in the table.\n *\n * @defaultValue `40`\n */\n this.itemHeight = 40;\n /**\n * Enables or disables row reordering.\n *\n * @defaultValue `false`\n */\n this.allowReordering = false;\n /**\n * Enables or disables paging.\n *\n * @defaultValue `true`\n */\n this.paging = true;\n /**\n * Specifies how data should be fetched.\n *\n * @defaultValue `'auto'`\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for loading state.\n *\n * @defaultValue `{ enabled: true, animation: true }`\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * Emits when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Emits when a row is clicked.\n *\n * @event onRowClick\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits when a row is double-clicked.\n *\n * @event onRowDbClick\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Emits when the order of columns changes.\n *\n * @event onColumnsOrderChanged\n */\n this.onColumnsOrderChanged = new EventEmitter();\n /**\n * Emits when the size of columns changes.\n *\n * @event onColumnSizeChanged\n */\n this.onColumnSizeChanged = new EventEmitter();\n /**\n * Emits when page changes.\n *\n * @event onColumnSizeChanged\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * @ignore\n */\n this.isRefreshCalled = signal(false, ...(ngDevMode ? [{ debugName: \"isRefreshCalled\" }] : []));\n /**\n * Root rows from the latest data source load (before highlight merge).\n * @ignore\n */\n this.lastLoadedRows = [];\n /**\n * @ignore\n */\n this.#effect = effect(() => {\n if (this.customDataPager) {\n this.customDataPager.total = this.dataSource.totalCount;\n this.customDataPager.size = this.dataSource.pageSize;\n this.customDataPager.isLoading = this.isLoading();\n }\n }, ...(ngDevMode ? [{ debugName: \"#effect\" }] : []));\n /**\n * @ignore\n */\n this.onResizeColumnMove = (event) => {\n const diffX = event.pageX - this.resizeColumnProp.startX;\n const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;\n this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;\n this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);\n };\n /**\n * @ignore\n */\n this.onResizeColumnEnd = () => {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onResizeColumnMove);\n this.document.removeEventListener('mouseup', this.onResizeColumnEnd);\n }\n const newWidth = parseInt(this.resizeColumnProp.thElement.attributes.getNamedItem('new-width')?.value);\n const column = this.columns.get(this.resizeColumnProp.columnIndex);\n column.width = `${Math.max(100, newWidth)}px`;\n this.userResizedColumns.add(column);\n this.pendingContentAutoFitColumns.delete(column);\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: this.resizeColumnProp.columnIndex,\n width: this.columns.get(this.resizeColumnProp.columnIndex).width,\n dataField: this.columns.get(this.resizeColumnProp.columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n this.resetResizingProcess();\n };\n }\n /**\n * Gets the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits the change event.\n *\n * @param v - The row to be focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n /**\n * Returns true if in manual mode and no data has been loaded yet.\n */\n get showNoDataLoadedYet() {\n return this.fetchDataMode === 'manual' && !this.isRefreshCalled();\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (this.customDataPager) {\n this.applyDataPagerMethods();\n }\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n this.dataSource.useCache = false;\n if (this.fetchDataMode == 'auto') {\n this.dataSource.setPage(0);\n }\n this.displayedRows.set(new Array(this.dataSource.pageSize));\n this.totalRows = this.dataSource.items.length;\n this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const shouldMoveToPreviousPage = data.totalCount > 0 && data.items.length === 0 && data.page > 0;\n if (shouldMoveToPreviousPage) {\n this.goToPage(data.page);\n return;\n }\n this.lastLoadedRows = data.items.filter((item) => !item[this.parentField]);\n this.displayedRows.set(this.mergeRowsWithHighlights(this.lastLoadedRows));\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n });\n this.dataSource.onItemExpanded.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { expandedItem, children } = data;\n // If children is null, it means we only want to toggle row details without managing children\n if (children === null) {\n this.displayedRows.update((prev) => this.toggleExpandedState(prev, expandedItem));\n }\n else {\n this.displayedRows.update((prev) => this.toggleExpanded(prev, expandedItem, children));\n }\n });\n this.dataSource.onItemRefreshChildren.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { id } = data;\n this.refreshExpandedItem(id);\n });\n this.pageSize.set(this.dataSource.pageSize);\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this.calculateStickyColumnsPositions();\n this.columnsList.set(this.columns.toArray());\n this.columns.changes.pipe(this._unsubscriber.takeUntilDestroy).subscribe((cols) => {\n this.columnsList.set(cols.toArray());\n this.captureAutoFitIntentColumns();\n setTimeout(() => this.autoFitColumnsWithAutoWidth({ headerOnly: true }), 0);\n });\n // Header-only auto-fit for width='auto' so columns do not collapse before data loads\n this.captureAutoFitIntentColumns();\n setTimeout(() => this.autoFitColumnsWithAutoWidth({ headerOnly: true }), 0);\n // Full auto-fit for width='auto' (and pending header-only columns) after data load\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n if (data.items.length > 0) {\n // Delay to ensure DOM is ready\n setTimeout(() => {\n this.autoFitColumnsWithAutoWidth();\n }, 100);\n }\n });\n }\n captureAutoFitIntentColumns() {\n this.columns.forEach((column) => {\n if (column.width === 'auto') {\n this.autoFitIntentColumns.add(column);\n }\n });\n }\n /**\n * Returns the display text for a cell. Used for the cell tooltip when the column has `hasTitle`.\n */\n getCellTooltipText(column, rowData) {\n if (rowData == null || typeof rowData !== 'object')\n return '';\n if (column instanceof AXDataTableTextColumnComponent) {\n return column.getCellDisplayText(rowData);\n }\n const col = column;\n if (col.dataField != null && col.dataField in rowData) {\n const v = rowData[col.dataField];\n return v != null ? String(v) : '';\n }\n return '';\n }\n /**\n * @ignore\n */\n #effect;\n /**\n * Toggles the expanded state of a row without managing children.\n * Used for row details template without nested hierarchy.\n *\n * @param rows - The array of rows to search in\n * @param expandedItem - The item to toggle\n * @returns Updated rows array with toggled state\n */\n toggleExpandedState(rows, expandedItem) {\n return rows.map((item) => {\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n };\n }\n return item;\n });\n }\n toggleExpanded(rows, expandedItem, children) {\n return rows.map((item) => {\n children.forEach((c) => {\n if (!c.__meta__) {\n c.__meta__ = { level: (expandedItem?.__meta__?.level ?? 0) + 1 };\n }\n });\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n const nextChildren = children ? this.toggleExpanded(children, expandedItem, item.children || []) : null;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n children: nextChildren,\n [this.hasChildrenField]: nextChildren != null && nextChildren.length > 0,\n };\n }\n else if (item.children) {\n return { ...item, children: this.toggleExpanded(item.children, expandedItem, children) };\n }\n return item;\n });\n }\n async refreshExpandedItem(id) {\n const newChildren = await this.dataSource.getItemsByFilter({\n field: this.parentField,\n operator: { type: 'equal' },\n value: id,\n });\n this.displayedRows.update((prev) => this.updateChildren(prev, id, newChildren.items));\n }\n updateChildren(items, id, newChildren) {\n return items.map((item) => {\n if (item[this.getDataSourceKey()] === id) {\n newChildren.forEach((child) => {\n child.__meta__ = { ...child.__meta__, level: (item.__meta__?.level || 0) + 1 };\n });\n return {\n ...item,\n children: cloneDeep(newChildren),\n [this.hasChildrenField]: newChildren.length > 0,\n };\n }\n else if (item.children) {\n return { ...item, children: this.updateChildren(item.children, id, newChildren) };\n }\n return item;\n });\n }\n /**\n * @ignore\n */\n drop(event) {\n const clonedColumns = [...this.columnsList()];\n moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);\n this.columnsList.set(clonedColumns);\n this.onColumnsOrderChanged.emit({ component: this, data: { event }, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleChangePage(event) {\n this.onPageChanged.emit(event);\n if (event.isUserInteraction) {\n const pageChanged = event.page - 1 != this.page();\n const pageSizeChanged = event.take != this.pageSize();\n if (pageChanged || pageSizeChanged) {\n if (pageChanged) {\n this.page.set(event.page - 1);\n this.dataSource.setPage(this.page());\n }\n if (pageSizeChanged) {\n this.pageSize.set(event.take);\n this.dataSource.setPageSize(this.pageSize());\n }\n // Update displayed rows and data source\n this.displayedRows.set(new Array(this.pageSize()));\n }\n }\n }\n goToPage(pageIndex) {\n const pagerPage = Math.max(1, pageIndex);\n if (this.customDataPager) {\n this.customDataPager.goToPage(pagerPage);\n return;\n }\n if (this.dataPager) {\n this.dataPager.goToPage(pagerPage);\n return;\n }\n this.page.set(pagerPage - 1);\n this.dataSource.setPage(this.page());\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n applyDataPagerMethods() {\n this.customDataPager.onChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe((event) => this.handleChangePage(event));\n this.customDataPager.displayMode = 'custom';\n }\n /**\n * Handles the click event on a column header.\n * Toggles the sorting direction or removes the sort if already sorted.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({ field: column.dataField, dir: 'asc' });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * Re-applies pinned highlighted rows to the current view.\n * @ignore\n */\n onRowHighlightsChanged() {\n this.displayedRows.set(this.mergeRowsWithHighlights(this.lastLoadedRows));\n }\n /**\n * Refreshes the data table with optional reset options.\n *\n * @param options - Configuration options for refresh operation.\n * @param options.reset - Whether to reset pagination state.\n * @returns void - No return value.\n */\n refresh(options = { reset: true }) {\n if (!options.preserveHighlights) {\n this.clearRowHighlights();\n }\n this.dataSource.refresh(options);\n const isRefreshCalled = untracked(() => this.isRefreshCalled());\n if (this.fetchDataMode === 'manual' && !isRefreshCalled) {\n this.isRefreshCalled.set(true);\n }\n if (this.dataPager && options.reset) {\n this.dataPager.goFirstPage();\n }\n }\n /**\n * @ignore\n */\n calculateRowIndex(index) {\n const highlightOffset = this.countHighlightBadgeRowsBefore(index);\n return this.dataSource.pageSize * this.page() + index - highlightOffset;\n }\n countHighlightBadgeRowsBefore(displayIndex) {\n let count = 0;\n const rows = this.displayedRows();\n for (let i = 0; i < displayIndex && i < rows.length; i++) {\n if (this.getRowHighlightBadge(rows[i])) {\n count++;\n }\n }\n return count;\n }\n /**\n * Handles double-click on resize handle to auto-fit column width.\n *\n * @param event - The mouse event from the double-click\n * @param columnIndex - The index of the column to auto-fit\n * @ignore\n */\n onResizeHandlerDoubleClick(event, columnIndex) {\n event.preventDefault();\n event.stopPropagation();\n this.autoFitColumn(columnIndex);\n }\n /**\n * @ignore\n */\n onResizeColumnStart(event, columnIndex) {\n this.onColumnSizeChanged.emit({\n type: 'start',\n data: {\n columnIndex: columnIndex,\n width: this.columns.get(columnIndex).width,\n dataField: this.columns.get(columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n event.preventDefault();\n event.stopPropagation();\n this.resizeColumnProp.startX = event.pageX;\n this.resizeColumnProp.thElement = event.target.parentElement;\n this.resizeColumnProp.startWidth = parseInt(this.resizeColumnProp.thElement.style.width);\n this.resizeColumnProp.columnIndex = columnIndex;\n if (isPlatformBrowser(this.platformID)) {\n this._zone.runOutsideAngular(() => {\n this.document.addEventListener('mousemove', this.onResizeColumnMove);\n this.document.addEventListener('mouseup', this.onResizeColumnEnd);\n });\n }\n }\n /**\n * @ignore\n */\n resetResizingProcess() {\n this.resizeColumnProp.thElement.removeAttribute('new-width');\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n }\n /**\n * @ignore\n */\n calculateStickyColumnsPositions() {\n let accumulatedWidthFromStart = 0;\n let lastStartColumn;\n this.columns.forEach((column) => {\n const width = parseInt(column.width);\n if (column.fixed === 'start' && !isNaN(width)) {\n column['stickyStart'] = accumulatedWidthFromStart + 'px';\n lastStartColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromStart += width;\n }\n });\n if (lastStartColumn)\n lastStartColumn['isLastFixedColumn'] = true;\n let accumulatedWidthFromEnd = 0;\n let firstEndColumn;\n for (let i = this.columns.length - 1; i >= 0; i--) {\n const column = this.columns.get(i);\n const width = parseInt(column.width);\n if (column.fixed === 'end' && !isNaN(width)) {\n column['stickyEnd'] = accumulatedWidthFromEnd + 'px';\n firstEndColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromEnd += width;\n }\n }\n if (firstEndColumn)\n firstEndColumn['isFirstFixedColumn'] = true;\n }\n /**\n * Auto-fits columns that have width='auto'.\n * Runs header-only sizing after view init (`headerOnly: true`) and full measurement after data load.\n *\n * @ignore\n */\n autoFitColumnsWithAutoWidth(options = {}) {\n const headerOnly = options.headerOnly ?? false;\n const autoWidthColumns = [];\n this.columns.forEach((column, index) => {\n const fitsByIntent = this.autoFitIntentColumns.has(column);\n const fitsPendingHeaderOnly = !headerOnly && this.pendingContentAutoFitColumns.has(column);\n if (!fitsByIntent && !fitsPendingHeaderOnly) {\n return;\n }\n if (this.userResizedColumns.has(column)) {\n return;\n }\n if (fitsByIntent && headerOnly && column.width === 'auto') {\n this.pendingContentAutoFitColumns.add(column);\n }\n autoWidthColumns.push(index);\n try {\n this.autoFitColumn(index, { maxWidth: 500, headerOnly });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n });\n if (!headerOnly && autoWidthColumns.length > 0) {\n console.warn(`Auto-fitted ${autoWidthColumns.length} column(s) with width='auto': indices ${autoWidthColumns.join(', ')}`);\n }\n }\n /**\n * Auto-fits all columns width based on their content.\n *\n * @param options - Configuration options\n * @param options.skipFixed - If true, skips fixed columns (default: true)\n * @param options.skipLoading - If true, skips if data is loading (default: true)\n * @param options.maxWidth - Maximum width for any column in pixels (default: 500)\n * @returns void\n */\n autoFitAllColumns(options = {}) {\n const { skipFixed = true, skipLoading = true, maxWidth = 500 } = options;\n // Skip if loading\n if (skipLoading && this.isLoading()) {\n console.warn('Cannot auto-fit columns while data is loading');\n return;\n }\n // Auto-fit each column\n this.columns.forEach((column, index) => {\n // Skip fixed columns if requested\n if (skipFixed && column.fixed) {\n return;\n }\n // Skip if column doesn't allow resizing\n if (!column.allowResizing) {\n return;\n }\n try {\n this.autoFitColumn(index, { maxWidth });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n });\n }\n /**\n * Auto-fits a column width based on its content.\n * Similar to Excel's \"AutoFit Column Width\" feature.\n * Uses an invisible helper table to measure actual content width without affecting the main table.\n *\n * @param columnIndex - The index of the column to auto-fit (0-based, based on columns QueryList)\n * @param options - Configuration options\n * @param options.maxWidth - Maximum width for the column in pixels (default: none)\n * @param options.headerOnly - When true, only the header cell is measured (e.g. before row data exists)\n * @returns void\n */\n autoFitColumn(columnIndex, options = {}) {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const column = this.columns.get(columnIndex);\n if (!column) {\n console.warn(`Column at index ${columnIndex} not found`);\n return;\n }\n const hostElement = this.getHostElement();\n if (!hostElement) {\n return;\n }\n const mainTable = hostElement.querySelector('table');\n if (!mainTable) {\n return;\n }\n // Find actual column index in rendered table (accounting for fixed columns)\n const allColumns = [...this.startFixedColumnsList(), ...this.normalColumnsList(), ...this.endFixedColumnsList()];\n const actualColumnIndex = allColumns.findIndex((c) => c === column);\n if (actualColumnIndex === -1) {\n console.warn('Column not found in rendered table');\n return;\n }\n // Create invisible helper table\n const helperTable = this.document.createElement('table');\n helperTable.style.position = 'absolute';\n helperTable.style.visibility = 'hidden';\n helperTable.style.tableLayout = 'auto';\n helperTable.style.width = 'auto';\n helperTable.style.top = '-9999px';\n helperTable.style.left = '-9999px';\n // Copy styles from main table\n const mainTableStyle = this.document.defaultView?.getComputedStyle(mainTable);\n if (mainTableStyle) {\n helperTable.style.fontSize = mainTableStyle.fontSize;\n helperTable.style.fontFamily = mainTableStyle.fontFamily;\n helperTable.style.fontWeight = mainTableStyle.fontWeight;\n }\n this.document.body.appendChild(helperTable);\n let maxWidth = 0;\n try {\n // Measure header cell\n const headerRow = mainTable.querySelector('thead tr');\n if (headerRow) {\n const headerCells = headerRow.querySelectorAll('th');\n if (headerCells.length > actualColumnIndex) {\n const headerCell = headerCells[actualColumnIndex];\n // Clone header cell to helper table\n const helperThead = this.document.createElement('thead');\n const helperTr = this.document.createElement('tr');\n const helperTh = headerCell.cloneNode(true);\n helperTh.style.width = 'auto';\n helperTh.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTh);\n helperThead.appendChild(helperTr);\n helperTable.appendChild(helperThead);\n // Force layout calculation\n const headerWidth = helperTh.offsetWidth;\n maxWidth = Math.max(maxWidth, headerWidth);\n helperTable.removeChild(helperThead);\n }\n }\n if (!(options.headerOnly ?? false)) {\n // Measure body cells\n const bodyRows = mainTable.querySelectorAll('tbody tr:not(.empty-row)');\n const helperTbody = this.document.createElement('tbody');\n helperTable.appendChild(helperTbody);\n // Sample first 20 rows for performance (you can adjust this)\n const sampleSize = Math.min(20, bodyRows.length);\n for (let i = 0; i < sampleSize; i++) {\n const row = bodyRows[i];\n const cells = row.querySelectorAll('td');\n if (cells.length > actualColumnIndex) {\n const cell = cells[actualColumnIndex];\n // Clone cell to helper table\n const helperTr = this.document.createElement('tr');\n const helperTd = cell.cloneNode(true);\n helperTd.style.width = 'auto';\n helperTd.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTd);\n helperTbody.appendChild(helperTr);\n // Force layout calculation\n const cellWidth = helperTd.offsetWidth;\n maxWidth = Math.max(maxWidth, cellWidth);\n helperTbody.removeChild(helperTr);\n }\n }\n }\n // Add some padding for better UX\n let finalWidth = Math.max(maxWidth + 40, 100); // Minimum 100px, add 40px padding\n // Apply max width if specified\n if (options.maxWidth) {\n finalWidth = Math.min(finalWidth, options.maxWidth);\n }\n // Set column width\n column.width = `${finalWidth}px`;\n if (!(options.headerOnly ?? false)) {\n this.pendingContentAutoFitColumns.delete(column);\n }\n // Trigger change detection to update the view\n this.columnsList.set([...this.columnsList()]);\n // Recalculate sticky positions if column is fixed\n if (column.fixed) {\n setTimeout(() => {\n this.calculateStickyColumnsPositions();\n }, 0);\n }\n // Emit column size changed event\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: columnIndex,\n width: column.width,\n dataField: column.name,\n },\n isUserInteraction: true,\n component: this,\n });\n }\n finally {\n // Clean up helper table\n if (helperTable.parentNode) {\n this.document.body.removeChild(helperTable);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableComponent, isStandalone: true, selector: \"ax-data-table\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, selectedRows: { classPropertyName: \"selectedRows\", publicName: \"selectedRows\", isSignal: false, isRequired: false, transformFunction: null }, parentField: { classPropertyName: \"parentField\", publicName: \"parentField\", isSignal: false, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: \"hasChildrenField\", publicName: \"hasChildrenField\", isSignal: false, isRequired: false, transformFunction: null }, rowDetailsTemplate: { classPropertyName: \"rowDetailsTemplate\", publicName: \"rowDetailsTemplate\", isSignal: false, isRequired: false, transformFunction: null }, rowColor: { classPropertyName: \"rowColor\", publicName: \"rowColor\", isSignal: false, isRequired: false, transformFunction: null }, rowColorField: { classPropertyName: \"rowColorField\", publicName: \"rowColorField\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: \"rowTemplate\", publicName: \"rowTemplate\", isSignal: false, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: false, isRequired: false, transformFunction: null }, noDataTemplate: { classPropertyName: \"noDataTemplate\", publicName: \"noDataTemplate\", isSignal: false, isRequired: false, transformFunction: null }, alternative: { classPropertyName: \"alternative\", publicName: \"alternative\", isSignal: false, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: \"showHeader\", publicName: \"showHeader\", isSignal: false, isRequired: false, transformFunction: null }, fixedHeader: { classPropertyName: \"fixedHeader\", publicName: \"fixedHeader\", isSignal: false, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: \"showFooter\", publicName: \"showFooter\", isSignal: false, isRequired: false, transformFunction: null }, fixedFooter: { classPropertyName: \"fixedFooter\", publicName: \"fixedFooter\", isSignal: false, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: false, isRequired: false, transformFunction: null }, allowReordering: { classPropertyName: \"allowReordering\", publicName: \"allowReordering\", isSignal: false, isRequired: false, transformFunction: null }, paging: { classPropertyName: \"paging\", publicName: \"paging\", isSignal: false, isRequired: false, transformFunction: null }, fetchDataMode: { classPropertyName: \"fetchDataMode\", publicName: \"fetchDataMode\", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: \"loading\", publicName: \"loading\", isSignal: false, isRequired: false, transformFunction: null }, focusedRow: { classPropertyName: \"focusedRow\", publicName: \"focusedRow\", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectedRowsChange: \"selectedRowsChange\", focusedRowChange: \"focusedRowChange\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", onColumnsOrderChanged: \"onColumnsOrderChanged\", onColumnSizeChanged: \"onColumnSizeChanged\", onPageChanged: \"onPageChanged\" }, host: { attributes: { \"ngSkipHydration\": \"true\" }, properties: { \"class.ax-data-table-look-minimal\": \"look() === \\\"minimal\\\"\" } }, providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], queries: [{ propertyName: \"customDataPager\", first: true, predicate: AXDataPagerComponent, descendants: true, static: true }, { propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"dataPager\", first: true, predicate: [\"dataPager\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n [ngClass]=\\\"getRowColorClass(data.row, data.rowIndex)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0;position:relative}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-data-table-cell-tooltip-wrapper{position:relative;min-height:inherit}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-dark-surface));opacity:1}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-cell-tooltip-wrapper{display:flex;align-items:center;justify-content:center;width:100%}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-row-highlight-badge{position:static;display:inline-flex;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem;min-height:max-content}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead th{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead.ax-data-table-sticky-header{box-shadow:inset 0 1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:none}}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr td .ax-bg{border-inline-end:none}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody td{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr td{border-inline-end-width:0;border-inline-start-width:0}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{box-shadow:0 -1px rgba(var(--ax-comp-data-table-border-color))}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\" }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXDataPagerComponent, selector: \"ax-data-pager\", inputs: [\"value\", \"name\", \"disabled\", \"readonly\", \"isLoading\", \"size\", \"total\", \"displayMode\"], outputs: [\"valueChange\", \"onValueChanged\", \"disabledChange\", \"readonlyChange\", \"displayModeChange\", \"onChanged\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDataPagerNumericSelectorComponent, selector: \"ax-data-pager-numeric-selector\" }, { kind: \"component\", type: AXDataPagerPageSizesComponent, selector: \"ax-data-pager-page-sizes\", inputs: [\"sizes\"] }, { kind: \"component\", type: AXDataPagerPrevButtonsComponent, selector: \"ax-data-pager-prev-buttons\" }, { kind: \"component\", type: AXDataPagerInputSelectorComponent, selector: \"ax-data-pager-input-selector\" }, { kind: \"component\", type: AXDataPagerNextButtonsComponent, selector: \"ax-data-pager-next-buttons\" }, { kind: \"component\", type: AXDataPagerInfoComponent, selector: \"ax-data-pager-info\", inputs: [\"text\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-data-table', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n ngSkipHydration: 'true',\n '[class.ax-data-table-look-minimal]': 'look() === \"minimal\"',\n }, inputs: [\n 'dataSource',\n 'selectedRows',\n 'parentField',\n 'hasChildrenField',\n 'rowDetailsTemplate',\n 'rowColor',\n 'rowColorField',\n ], outputs: ['selectedRowsChange'], providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], imports: [\n NgTemplateOutlet,\n NgClass,\n CdkDropList,\n CdkScrollable,\n CdkDrag,\n AXDecoratorIconComponent,\n AXSkeletonComponent,\n AXDataPagerComponent,\n AXDecoratorGenericComponent,\n AXDataPagerNumericSelectorComponent,\n AXDataPagerPageSizesComponent,\n AXDataPagerPrevButtonsComponent,\n AXDataPagerInputSelectorComponent,\n AXDataPagerNextButtonsComponent,\n AXDataPagerInfoComponent,\n AXButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXTooltipDirective,\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n [ngClass]=\\\"getRowColorClass(data.row, data.rowIndex)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0;position:relative}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-data-table-cell-tooltip-wrapper{position:relative;min-height:inherit}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-dark-surface));opacity:1}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-cell-tooltip-wrapper{display:flex;align-items:center;justify-content:center;width:100%}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-row-highlight-badge{position:static;display:inline-flex;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem;min-height:max-content}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead th{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead.ax-data-table-sticky-header{box-shadow:inset 0 1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:none}}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr td .ax-bg{border-inline-end:none}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody td{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr td{border-inline-end-width:0;border-inline-start-width:0}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{box-shadow:0 -1px rgba(var(--ax-comp-data-table-border-color))}\\n\"] }]\n }], propDecorators: { dataPager: [{\n type: ViewChild,\n args: ['dataPager']\n }], customDataPager: [{\n type: ContentChild,\n args: [AXDataPagerComponent, {\n static: true,\n }]\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], noDataTemplate: [{\n type: Input\n }], alternative: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fixedHeader: [{\n type: Input\n }], showFooter: [{\n type: Input\n }], fixedFooter: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], allowReordering: [{\n type: Input\n }], paging: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRow: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], onColumnsOrderChanged: [{\n type: Output\n }], onColumnSizeChanged: [{\n type: Output\n }], onPageChanged: [{\n type: Output\n }], columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixpQ0FBaUMsRUFDakMsK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0IsK0JBQStCLEdBQ2hDLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVB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VixLQUFLO2dCQVNOLFVBQVU7c0JBRFQsS0FBSztnQkFTTixXQUFXO3NCQURWLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLO2dCQVNOLGVBQWU7c0JBRGQsS0FBSztnQkFTTixNQUFNO3NCQURMLEtBQUs7Z0JBU04sYUFBYTtzQkFEWixLQUFLO2dCQVNOLE9BQU87c0JBRE4sS0FBSztnQkFlSyxVQUFVO3NCQURwQixLQUFLO2dCQXFCTixnQkFBZ0I7c0JBRGYsTUFBTTtnQkFTUCxVQUFVO3NCQURULE1BQU07Z0JBU1AsWUFBWTtzQkFEWCxNQUFNO2dCQVNQLHFCQUFxQjtzQkFEcEIsTUFBTTtnQkFTUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBU1AsYUFBYTtzQkFEWixNQUFNO2dCQThCRyxPQUFPO3NCQURoQixlQUFlO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICBBWERhdGFQYWdlckNoYW5nZWRFdmVudCxcbiAgQVhEYXRhUGFnZXJDb21wb25lbnQsXG4gIEFYRGF0YVBhZ2VySW5mb0NvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJJbnB1dFNlbGVjdG9yQ29tcG9uZW50LFxuICBBWERhdGFQYWdlck5leHRCdXR0b25zQ29tcG9uZW50LFxuICBBWERhdGFQYWdlck51bWVyaWNTZWxlY3RvckNvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJQYWdlU2l6ZXNDb21wb25lbnQsXG4gIEFYRGF0YVBhZ2VyUHJldkJ1dHRvbnNDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXBhZ2VyJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCwgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBET0NVTUVOVCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBWEJhc2VEYXRhVGFibGUsXG4gIEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50LFxuICBBWERhdGFUYWJsZUxvb2ssXG4gIEFYRGF0YVRhYmxlUm93Q2xpY2ssXG4gIEFYRGF0YVRhYmxlUm93RGJDbGljayxcbiAgb25Db2x1bW5TaXplQ2hhbmdlZEV2ZW50LFxufSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgYSBkYXRhIHRhYmxlIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnLFxuICAgICdbY2xhc3MuYXgtZGF0YS10YWJsZS1sb29rLW1pbmltYWxdJzogJ2xvb2soKSA9PT0gXCJtaW5pbWFsXCInLFxuICB9LFxuICBpbnB1dHM6IFtcbiAgICAnZGF0YVNvdXJjZScsXG4gICAgJ3NlbGVjdGVkUm93cycsXG4gICAgJ3BhcmVudEZpZWxkJyxcbiAgICAnaGFzQ2hpbGRyZW5GaWVsZCcsXG4gICAgJ3Jvd0RldGFpbHNUZW1wbGF0ZScsXG4gICAgJ3Jvd0NvbG9yJyxcbiAgICAncm93Q29sb3JGaWVsZCcsXG4gIF0sXG4gIG91dHB1dHM6IFsnc2VsZWN0ZWRSb3dzQ2hhbmdlJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhCYXNlRGF0YVRhYmxlLCB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTmdDbGFzcyxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtTY3JvbGxhYmxlLFxuICAgIENka0RyYWcsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYU2tlbGV0b25Db21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyTnVtZXJpY1NlbGVjdG9yQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyUGFnZVNpemVzQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyUHJldkJ1dHRvbnNDb21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJJbnB1dFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyTmV4dEJ1dHRvbnNDb21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJJbmZvQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFYVG9vbHRpcERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEYXRhVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHRhYmxlIGxvb2suXG4gICAqXG4gICAqIC0gYGNsYXNzaWNgIOKAlCBjbGFzc2ljIGxvb2sgKGRlZmF1bHQpLlxuICAgKiAtIGBtaW5pbWFsYCDigJQgbWluaW1hbCBsb29rLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGAnY2xhc3NpYydgXG4gICAqL1xuICBsb29rID0gaW5wdXQ8QVhEYXRhVGFibGVMb29rPignY2xhc3NpYycpO1xuXG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG4gIHByaXZhdGUgX3pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdkYXRhUGFnZXInKSBkYXRhUGFnZXI7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChBWERhdGFQYWdlckNvbXBvbmVudCwge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgY3VzdG9tRGF0YVBhZ2VyOiBBWERhdGFQYWdlckNvbXBvbmVudDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBydGwhOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRpc3BsYXllZFJvd3M6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFnZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBwYWdlU2l6ZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0xvYWRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKHRydWUpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbHVtbnNMaXN0OiBXcml0YWJsZVNpZ25hbDxhbnlbXT4gPSBzaWduYWwoW10pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbHVtbnNMaXN0KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09PSAnZW5kJykpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdDogU2lnbmFsPGFueVtdPiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zTGlzdCgpLmZpbHRlcigoYykgPT4gYy5maXhlZCA9PT0gJ3N0YXJ0JyksXG4gICk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm9ybWFsQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuY29sdW1uc0xpc3QoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgIT09ICdlbmQnICYmIGMuZml4ZWQgIT09ICdzdGFydCcpLFxuICApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc2l6ZUNvbHVtblByb3AgPSB7IHN0YXJ0WDogMCwgc3RhcnRXaWR0aDogMCwgY29sdW1uSW5kZXg6IDAsIG5ld0NvbHVtbldpZHRoOiAwLCB0aEVsZW1lbnQ6IG51bGwgfTtcblxuICAvKipcbiAgICogQ29sdW1ucyB0aGF0IHVzZWQgYHdpZHRoPVwiYXV0b1wiYCBhbmQgcmVjZWl2ZWQgaGVhZGVyLW9ubHkgc2l6aW5nIGJlZm9yZSByb3dzIHdlcmUgYXZhaWxhYmxlLlxuICAgKiBUaGV5IGdldCBhIGZ1bGwgY29udGVudCBtZWFzdXJlbWVudCBvbmNlIGRhdGEgaXMgcHJlc2VudC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBwZW5kaW5nQ29udGVudEF1dG9GaXRDb2x1bW5zID0gbmV3IFdlYWtTZXQ8QVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENvbHVtbnMgdGhhdCB3ZXJlIGNvbmZpZ3VyZWQgd2l0aCBgd2lkdGg9XCJhdXRvXCJgIChpbnRlbnQpLCBldmVuIGlmIHdlIGxhdGVyIHNldCBhIHBpeGVsIHdpZHRoLlxuICAgKiBVc2VkIHRvIHJlLW1lYXN1cmUgb24gZXZlcnkgcGFnZS9kYXRhIGNoYW5nZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBhdXRvRml0SW50ZW50Q29sdW1ucyA9IG5ldyBXZWFrU2V0PEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50PigpO1xuXG4gIC8qKlxuICAgKiBDb2x1bW5zIHRoZSB1c2VyIG1hbnVhbGx5IHJlc2l6ZWQgYnkgZHJhZ2dpbmcuIEF1dG8tZml0IHNob3VsZCBub3Qgb3ZlcnJpZGUgdXNlciBjaG9pY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXNlclJlc2l6ZWRDb2x1bW5zID0gbmV3IFdlYWtTZXQ8QVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFzSXRlbXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFJvd3MgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRQYWdlID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFBhZ2VzID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzdGFydFJvd0luZGV4ID0gMDtcblxuICAvKipcbiAgICogVGVtcGxhdGUgZm9yIGN1c3RvbSByb3cgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHRvIGRpc3BsYXkgd2hlbiB0aGUgdGFibGUgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHRvIGRpc3BsYXkgd2hlbiBubyBkYXRhIGlzIGxvYWRlZCB5ZXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBub0RhdGFUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGlmIGFsdGVybmF0aXZlIHJvdyBzdHlsaW5nIHNob3VsZCBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgYWx0ZXJuYXRpdmUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHRhYmxlIGhlYWRlciBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSBmaXhlZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZpeGVkSGVhZGVyID0gdHJ1ZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSB0YWJsZSBmb290ZXIgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93Rm9vdGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGFibGUgZm9vdGVyIHNob3VsZCBiZSBmaXhlZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZpeGVkRm9vdGVyID0gdHJ1ZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBoZWlnaHQgb2YgZWFjaCBpdGVtIGluIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgNDBgXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtSGVpZ2h0OiBudW1iZXIgfCAnYXV0bycgPSA0MDtcblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyByb3cgcmVvcmRlcmluZy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGxvd1Jlb3JkZXJpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBwYWdpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG4gICAqL1xuICBASW5wdXQoKVxuICBwYWdpbmcgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IGRhdGEgc2hvdWxkIGJlIGZldGNoZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYCdhdXRvJ2BcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZldGNoRGF0YU1vZGU6ICdhdXRvJyB8ICdtYW51YWwnID0gJ2F1dG8nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBsb2FkaW5nIHN0YXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9YFxuICAgKi9cbiAgQElucHV0KClcbiAgbG9hZGluZzogeyBlbmFibGVkOiBib29sZWFuOyBhbmltYXRpb246IGJvb2xlYW47IGxvYWRpbmdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+IH0gPSB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBhbmltYXRpb246IHRydWUsXG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb2N1c2VkUm93OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCByb3cuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGZvY3VzZWRSb3coKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRSb3c7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY3VycmVudGx5IGZvY3VzZWQgcm93IGFuZCBlbWl0cyB0aGUgY2hhbmdlIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdiAtIFRoZSByb3cgdG8gYmUgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBzZXQgZm9jdXNlZFJvdyh2OiB1bmtub3duKSB7XG4gICAgdGhpcy5fZm9jdXNlZFJvdyA9IHY7XG4gICAgdGhpcy5mb2N1c2VkUm93Q2hhbmdlLmVtaXQodik7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgZm9jdXNlZCByb3cgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgZm9jdXNlZFJvd0NoYW5nZTogRXZlbnRFbWl0dGVyPHVua25vd24+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudCBvblJvd0NsaWNrXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dDbGljazogRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93Q2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0NsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcm93IGlzIGRvdWJsZS1jbGlja2VkLlxuICAgKlxuICAgKiBAZXZlbnQgb25Sb3dEYkNsaWNrXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBvcmRlciBvZiBjb2x1bW5zIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudCBvbkNvbHVtbnNPcmRlckNoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNvbHVtbnNPcmRlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaXplIG9mIGNvbHVtbnMgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50IG9uQ29sdW1uU2l6ZUNoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNvbHVtblNpemVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8b25Db2x1bW5TaXplQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8b25Db2x1bW5TaXplQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHBhZ2UgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50IG9uQ29sdW1uU2l6ZUNoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFQYWdlckNoYW5nZWRFdmVudD4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2xpY2tTdWJqZWN0ID0gbmV3IFN1YmplY3Q8eyBldmVudDogTW91c2VFdmVudDsgaXRlbTogYW55IH0+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGlzUmVmcmVzaENhbGxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBpbiBtYW51YWwgbW9kZSBhbmQgbm8gZGF0YSBoYXMgYmVlbiBsb2FkZWQgeWV0LlxuICAgKi9cbiAgcHVibGljIGdldCBzaG93Tm9EYXRhTG9hZGVkWWV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZldGNoRGF0YU1vZGUgPT09ICdtYW51YWwnICYmICF0aGlzLmlzUmVmcmVzaENhbGxlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvb3Qgcm93cyBmcm9tIHRoZSBsYXRlc3QgZGF0YSBzb3VyY2UgbG9hZCAoYmVmb3JlIGhpZ2hsaWdodCBtZXJnZSkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbGFzdExvYWRlZFJvd3M6IHVua25vd25bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IFF1ZXJ5TGlzdDxBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGlmICh0aGlzLmN1c3RvbURhdGFQYWdlcikge1xuICAgICAgdGhpcy5hcHBseURhdGFQYWdlck1ldGhvZHMoKTtcbiAgICB9XG4gICAgdGhpcy5ydGwgPSBBWEh0bWxVdGlsLmlzUnRsKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnVzZUNhY2hlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZmV0Y2hEYXRhTW9kZSA9PSAnYXV0bycpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlKDApO1xuICAgIH1cbiAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KG5ldyBBcnJheSh0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUpKTtcbiAgICB0aGlzLnRvdGFsUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcy5sZW5ndGg7XG4gICAgdGhpcy5kYXRhU291cmNlLm9uTG9hZGluZ0NoYW5nZWQucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZGF0YSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25DaGFuZ2VkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgY29uc3Qgc2hvdWxkTW92ZVRvUHJldmlvdXNQYWdlID0gZGF0YS50b3RhbENvdW50ID4gMCAmJiBkYXRhLml0ZW1zLmxlbmd0aCA9PT0gMCAmJiBkYXRhLnBhZ2UgPiAwO1xuICAgICAgaWYgKHNob3VsZE1vdmVUb1ByZXZpb3VzUGFnZSkge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKGRhdGEucGFnZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0TG9hZGVkUm93cyA9IGRhdGEuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbVt0aGlzLnBhcmVudEZpZWxkXSk7XG4gICAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KHRoaXMubWVyZ2VSb3dzV2l0aEhpZ2hsaWdodHModGhpcy5sYXN0TG9hZGVkUm93cykpO1xuICAgICAgdGhpcy50b3RhbFJvd3MgPSBkYXRhLnRvdGFsQ291bnQ7XG4gICAgICB0aGlzLmhhc0l0ZW1zID0gZGF0YS50b3RhbENvdW50ID4gMDtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHsgZXhwYW5kZWRJdGVtLCBjaGlsZHJlbiB9ID0gZGF0YTtcbiAgICAgIC8vIElmIGNoaWxkcmVuIGlzIG51bGwsIGl0IG1lYW5zIHdlIG9ubHkgd2FudCB0byB0b2dnbGUgcm93IGRldGFpbHMgd2l0aG91dCBtYW5hZ2luZyBjaGlsZHJlblxuICAgICAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkUm93cy51cGRhdGUoKHByZXYpID0+IHRoaXMudG9nZ2xlRXhwYW5kZWRTdGF0ZShwcmV2LCBleHBhbmRlZEl0ZW0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkUm93cy51cGRhdGUoKHByZXYpID0+IHRoaXMudG9nZ2xlRXhwYW5kZWQocHJldiwgZXhwYW5kZWRJdGVtLCBjaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLm9uSXRlbVJlZnJlc2hDaGlsZHJlbi5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGRhdGE7XG4gICAgICB0aGlzLnJlZnJlc2hFeHBhbmRlZEl0ZW0oaWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYWdlU2l6ZS5zZXQodGhpcy5kYXRhU291cmNlLnBhZ2VTaXplKTtcblxuICAgIC8vXG4gICAgdGhpcy5jbGlja1N1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICBidWZmZXIodGhpcy5jbGlja1N1YmplY3QucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkpLFxuICAgICAgICBmaWx0ZXIoKGNsaWNrQXJyYXkpID0+IGNsaWNrQXJyYXkubGVuZ3RoID09PSAyKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNsaWNrQXJyYXkpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVSb3dEb3VibGVDbGljayhjbGlja0FycmF5WzBdLmV2ZW50LCBjbGlja0FycmF5WzBdLml0ZW0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGN1bGF0ZVN0aWNreUNvbHVtbnNQb3NpdGlvbnMoKTtcbiAgICB0aGlzLmNvbHVtbnNMaXN0LnNldCh0aGlzLmNvbHVtbnMudG9BcnJheSgpKTtcbiAgICB0aGlzLmNvbHVtbnMuY2hhbmdlcy5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGNvbHMpID0+IHtcbiAgICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KGNvbHMudG9BcnJheSgpKTtcbiAgICAgIHRoaXMuY2FwdHVyZUF1dG9GaXRJbnRlbnRDb2x1bW5zKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b0ZpdENvbHVtbnNXaXRoQXV0b1dpZHRoKHsgaGVhZGVyT25seTogdHJ1ZSB9KSwgMCk7XG4gICAgfSk7XG5cbiAgICAvLyBIZWFkZXItb25seSBhdXRvLWZpdCBmb3Igd2lkdGg9J2F1dG8nIHNvIGNvbHVtbnMgZG8gbm90IGNvbGxhcHNlIGJlZm9yZSBkYXRhIGxvYWRzXG4gICAgdGhpcy5jYXB0dXJlQXV0b0ZpdEludGVudENvbHVtbnMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b0ZpdENvbHVtbnNXaXRoQXV0b1dpZHRoKHsgaGVhZGVyT25seTogdHJ1ZSB9KSwgMCk7XG5cbiAgICAvLyBGdWxsIGF1dG8tZml0IGZvciB3aWR0aD0nYXV0bycgKGFuZCBwZW5kaW5nIGhlYWRlci1vbmx5IGNvbHVtbnMpIGFmdGVyIGRhdGEgbG9hZFxuXG4gICAgdGhpcy5kYXRhU291cmNlLm9uQ2hhbmdlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGlmIChkYXRhLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gRGVsYXkgdG8gZW5zdXJlIERPTSBpcyByZWFkeVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmF1dG9GaXRDb2x1bW5zV2l0aEF1dG9XaWR0aCgpO1xuICAgICAgICB9LCAxMDApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlQXV0b0ZpdEludGVudENvbHVtbnMoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgaWYgKGNvbHVtbi53aWR0aCA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHRoaXMuYXV0b0ZpdEludGVudENvbHVtbnMuYWRkKGNvbHVtbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhIGNlbGwuIFVzZWQgZm9yIHRoZSBjZWxsIHRvb2x0aXAgd2hlbiB0aGUgY29sdW1uIGhhcyBgaGFzVGl0bGVgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENlbGxUb29sdGlwVGV4dChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LCByb3dEYXRhOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAocm93RGF0YSA9PSBudWxsIHx8IHR5cGVvZiByb3dEYXRhICE9PSAnb2JqZWN0JykgcmV0dXJuICcnO1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uZ2V0Q2VsbERpc3BsYXlUZXh0KHJvd0RhdGEpO1xuICAgIH1cbiAgICBjb25zdCBjb2wgPSBjb2x1bW4gYXMgeyBkYXRhRmllbGQ/OiBzdHJpbmcgfTtcbiAgICBpZiAoY29sLmRhdGFGaWVsZCAhPSBudWxsICYmIGNvbC5kYXRhRmllbGQgaW4gKHJvd0RhdGEgYXMgb2JqZWN0KSkge1xuICAgICAgY29uc3QgdiA9IChyb3dEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtjb2wuZGF0YUZpZWxkXTtcbiAgICAgIHJldHVybiB2ICE9IG51bGwgPyBTdHJpbmcodikgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICAjZWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5jdXN0b21EYXRhUGFnZXIpIHtcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLnRvdGFsID0gdGhpcy5kYXRhU291cmNlLnRvdGFsQ291bnQ7XG4gICAgICB0aGlzLmN1c3RvbURhdGFQYWdlci5zaXplID0gdGhpcy5kYXRhU291cmNlLnBhZ2VTaXplO1xuICAgICAgdGhpcy5jdXN0b21EYXRhUGFnZXIuaXNMb2FkaW5nID0gdGhpcy5pc0xvYWRpbmcoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiBhIHJvdyB3aXRob3V0IG1hbmFnaW5nIGNoaWxkcmVuLlxuICAgKiBVc2VkIGZvciByb3cgZGV0YWlscyB0ZW1wbGF0ZSB3aXRob3V0IG5lc3RlZCBoaWVyYXJjaHkuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzIC0gVGhlIGFycmF5IG9mIHJvd3MgdG8gc2VhcmNoIGluXG4gICAqIEBwYXJhbSBleHBhbmRlZEl0ZW0gLSBUaGUgaXRlbSB0byB0b2dnbGVcbiAgICogQHJldHVybnMgVXBkYXRlZCByb3dzIGFycmF5IHdpdGggdG9nZ2xlZCBzdGF0ZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvZ2dsZUV4cGFuZGVkU3RhdGUocm93czogYW55W10sIGV4cGFuZGVkSXRlbTogYW55KTogYW55W10ge1xuICAgIHJldHVybiByb3dzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGV4cGFuZGVkSXRlbVt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV0gPT09IGl0ZW1bdGhpcy5nZXREYXRhU291cmNlS2V5KCldKSB7XG4gICAgICAgIGNvbnN0IGlzRXhwYW5kZWQgPSAhaXRlbT8uX19tZXRhX18/LmV4cGFuZGVkO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgX19tZXRhX186IHsgZXhwYW5kZWQ6IGlzRXhwYW5kZWQsIGxldmVsOiBleHBhbmRlZEl0ZW0/Ll9fbWV0YV9fPy5sZXZlbCA/PyAwIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVFeHBhbmRlZChyb3dzOiBhbnlbXSwgZXhwYW5kZWRJdGVtOiBhbnksIGNoaWxkcmVuOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgaWYgKCFjLl9fbWV0YV9fKSB7XG4gICAgICAgICAgYy5fX21ldGFfXyA9IHsgbGV2ZWw6IChleHBhbmRlZEl0ZW0/Ll9fbWV0YV9fPy5sZXZlbCA/PyAwKSArIDEgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChleHBhbmRlZEl0ZW1bdGhpcy5nZXREYXRhU291cmNlS2V5KCldID09PSBpdGVtW3RoaXMuZ2V0RGF0YVNvdXJjZUtleSgpXSkge1xuICAgICAgICBjb25zdCBpc0V4cGFuZGVkID0gIWl0ZW0/Ll9fbWV0YV9fPy5leHBhbmRlZDtcbiAgICAgICAgY29uc3QgbmV4dENoaWxkcmVuID0gY2hpbGRyZW4gPyB0aGlzLnRvZ2dsZUV4cGFuZGVkKGNoaWxkcmVuLCBleHBhbmRlZEl0ZW0sIGl0ZW0uY2hpbGRyZW4gfHwgW10pIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIF9fbWV0YV9fOiB7IGV4cGFuZGVkOiBpc0V4cGFuZGVkLCBsZXZlbDogZXhwYW5kZWRJdGVtPy5fX21ldGFfXz8ubGV2ZWwgPz8gMCB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBuZXh0Q2hpbGRyZW4sXG4gICAgICAgICAgW3RoaXMuaGFzQ2hpbGRyZW5GaWVsZF06IG5leHRDaGlsZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJlbi5sZW5ndGggPiAwLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGNoaWxkcmVuOiB0aGlzLnRvZ2dsZUV4cGFuZGVkKGl0ZW0uY2hpbGRyZW4sIGV4cGFuZGVkSXRlbSwgY2hpbGRyZW4pIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaEV4cGFuZGVkSXRlbShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBhd2FpdCB0aGlzLmRhdGFTb3VyY2UuZ2V0SXRlbXNCeUZpbHRlcih7XG4gICAgICBmaWVsZDogdGhpcy5wYXJlbnRGaWVsZCxcbiAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgIHZhbHVlOiBpZCxcbiAgICB9KTtcblxuICAgIHRoaXMuZGlzcGxheWVkUm93cy51cGRhdGUoKHByZXYpID0+IHRoaXMudXBkYXRlQ2hpbGRyZW4ocHJldiwgaWQsIG5ld0NoaWxkcmVuLml0ZW1zKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoaWxkcmVuKGl0ZW1zOiBhbnlbXSwgaWQ6IHN0cmluZyB8IG51bWJlciwgbmV3Q2hpbGRyZW46IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtW3RoaXMuZ2V0RGF0YVNvdXJjZUtleSgpXSA9PT0gaWQpIHtcbiAgICAgICAgbmV3Q2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICBjaGlsZC5fX21ldGFfXyA9IHsgLi4uY2hpbGQuX19tZXRhX18sIGxldmVsOiAoaXRlbS5fX21ldGFfXz8ubGV2ZWwgfHwgMCkgKyAxIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgY2hpbGRyZW46IGNsb25lRGVlcChuZXdDaGlsZHJlbiksXG4gICAgICAgICAgW3RoaXMuaGFzQ2hpbGRyZW5GaWVsZF06IG5ld0NoaWxkcmVuLmxlbmd0aCA+IDAsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgY2hpbGRyZW46IHRoaXMudXBkYXRlQ2hpbGRyZW4oaXRlbS5jaGlsZHJlbiwgaWQsIG5ld0NoaWxkcmVuKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnksIGFueSwgYW55Pikge1xuICAgIGNvbnN0IGNsb25lZENvbHVtbnMgPSBbLi4udGhpcy5jb2x1bW5zTGlzdCgpXTtcbiAgICBtb3ZlSXRlbUluQXJyYXkoY2xvbmVkQ29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmNvbHVtbnNMaXN0LnNldChjbG9uZWRDb2x1bW5zKTtcblxuICAgIHRoaXMub25Db2x1bW5zT3JkZXJDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHsgZXZlbnQgfSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQsIGl0ZW0pO1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0Lm5leHQoeyBldmVudCwgaXRlbSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSb3dTaW5nbGVDbGljayhldmVudDogRXZlbnQsIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvY3VzZWRSb3cgPT0gaXRlbSkge1xuICAgICAgdGhpcy5mb2N1c2VkUm93ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c2VkUm93ID0gaXRlbTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLm9uUm93Q2xpY2suZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogaXRlbSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFuZ2VQYWdlKGV2ZW50OiBBWERhdGFQYWdlckNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMub25QYWdlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICBpZiAoZXZlbnQuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2VDaGFuZ2VkID0gZXZlbnQucGFnZSAtIDEgIT0gdGhpcy5wYWdlKCk7XG4gICAgICBjb25zdCBwYWdlU2l6ZUNoYW5nZWQgPSBldmVudC50YWtlICE9IHRoaXMucGFnZVNpemUoKTtcblxuICAgICAgaWYgKHBhZ2VDaGFuZ2VkIHx8IHBhZ2VTaXplQ2hhbmdlZCkge1xuICAgICAgICBpZiAocGFnZUNoYW5nZWQpIHtcbiAgICAgICAgICB0aGlzLnBhZ2Uuc2V0KGV2ZW50LnBhZ2UgLSAxKTtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0UGFnZSh0aGlzLnBhZ2UoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFnZVNpemVDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYWdlU2l6ZS5zZXQoZXZlbnQudGFrZSk7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldFBhZ2VTaXplKHRoaXMucGFnZVNpemUoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgZGlzcGxheWVkIHJvd3MgYW5kIGRhdGEgc291cmNlXG4gICAgICAgIHRoaXMuZGlzcGxheWVkUm93cy5zZXQobmV3IEFycmF5KHRoaXMucGFnZVNpemUoKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ29Ub1BhZ2UocGFnZUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlclBhZ2UgPSBNYXRoLm1heCgxLCBwYWdlSW5kZXgpO1xuICAgIGlmICh0aGlzLmN1c3RvbURhdGFQYWdlcikge1xuICAgICAgdGhpcy5jdXN0b21EYXRhUGFnZXIuZ29Ub1BhZ2UocGFnZXJQYWdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YVBhZ2VyKSB7XG4gICAgICB0aGlzLmRhdGFQYWdlci5nb1RvUGFnZShwYWdlclBhZ2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhZ2Uuc2V0KHBhZ2VyUGFnZSAtIDEpO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlKHRoaXMucGFnZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RvdWJsZUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIC8vXG4gICAgdGhpcy5vblJvd0RiQ2xpY2suZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogaXRlbSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgYXBwbHlEYXRhUGFnZXJNZXRob2RzKCkge1xuICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLm9uQ2hhbmdlZFxuICAgICAgLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQpID0+IHRoaXMuaGFuZGxlQ2hhbmdlUGFnZShldmVudCkpO1xuICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLmRpc3BsYXlNb2RlID0gJ2N1c3RvbSc7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgb24gYSBjb2x1bW4gaGVhZGVyLlxuICAgKiBUb2dnbGVzIHRoZSBzb3J0aW5nIGRpcmVjdGlvbiBvciByZW1vdmVzIHRoZSBzb3J0IGlmIGFscmVhZHkgc29ydGVkLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRoZSBtb3VzZSBldmVudCB0cmlnZ2VyZWQgYnkgdGhlIGNsaWNrLlxuICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIGNvbHVtbiB0aGF0IHdhcyBjbGlja2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ29sdW1uQ2xpY2soZTogTW91c2VFdmVudCwgY29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5maW5kKChjKSA9PiBjLmZpZWxkID09IGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgaWYgKCFzb3J0KSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LnB1c2goeyBmaWVsZDogY29sdW1uLmRhdGFGaWVsZCwgZGlyOiAnYXNjJyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzb3J0LmRpciA9PSAnYXNjJykge1xuICAgICAgICAgIHNvcnQuZGlyID0gJ2Rlc2MnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmlsdGVyKChjKSA9PiBjICE9IHNvcnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRTb3J0KGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5maW5kKChjKSA9PiBjLmZpZWxkID09IGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgcmV0dXJuIHNvcnQgPyAoc29ydC5kaXIgPT0gJ2FzYycgPyAnYXgtaWNvbi1hcnJvdy1sb25nLWRvd24nIDogJ2F4LWljb24tYXJyb3ctbG9uZy11cCcpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWFwcGxpZXMgcGlubmVkIGhpZ2hsaWdodGVkIHJvd3MgdG8gdGhlIGN1cnJlbnQgdmlldy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uUm93SGlnaGxpZ2h0c0NoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRSb3dzLnNldCh0aGlzLm1lcmdlUm93c1dpdGhIaWdobGlnaHRzKHRoaXMubGFzdExvYWRlZFJvd3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgdGhlIGRhdGEgdGFibGUgd2l0aCBvcHRpb25hbCByZXNldCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgcmVmcmVzaCBvcGVyYXRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zLnJlc2V0IC0gV2hldGhlciB0byByZXNldCBwYWdpbmF0aW9uIHN0YXRlLlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgcmVmcmVzaChvcHRpb25zOiB7IHJlc2V0PzogYm9vbGVhbjsgcHJlc2VydmVIaWdobGlnaHRzPzogYm9vbGVhbiB9ID0geyByZXNldDogdHJ1ZSB9KSB7XG4gICAgaWYgKCFvcHRpb25zLnByZXNlcnZlSGlnaGxpZ2h0cykge1xuICAgICAgdGhpcy5jbGVhclJvd0hpZ2hsaWdodHMoKTtcbiAgICB9XG4gICAgdGhpcy5kYXRhU291cmNlLnJlZnJlc2gob3B0aW9ucyk7XG4gICAgY29uc3QgaXNSZWZyZXNoQ2FsbGVkID0gdW50cmFja2VkKCgpID0+IHRoaXMuaXNSZWZyZXNoQ2FsbGVkKCkpO1xuICAgIGlmICh0aGlzLmZldGNoRGF0YU1vZGUgPT09ICdtYW51YWwnICYmICFpc1JlZnJlc2hDYWxsZWQpIHtcbiAgICAgIHRoaXMuaXNSZWZyZXNoQ2FsbGVkLnNldCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YVBhZ2VyICYmIG9wdGlvbnMucmVzZXQpIHtcbiAgICAgIHRoaXMuZGF0YVBhZ2VyLmdvRmlyc3RQYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlUm93SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGhpZ2hsaWdodE9mZnNldCA9IHRoaXMuY291bnRIaWdobGlnaHRCYWRnZVJvd3NCZWZvcmUoaW5kZXgpO1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUgKiB0aGlzLnBhZ2UoKSArIGluZGV4IC0gaGlnaGxpZ2h0T2Zmc2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBjb3VudEhpZ2hsaWdodEJhZGdlUm93c0JlZm9yZShkaXNwbGF5SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kaXNwbGF5ZWRSb3dzKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3BsYXlJbmRleCAmJiBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0Um93SGlnaGxpZ2h0QmFkZ2Uocm93c1tpXSkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBkb3VibGUtY2xpY2sgb24gcmVzaXplIGhhbmRsZSB0byBhdXRvLWZpdCBjb2x1bW4gd2lkdGguXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBldmVudCBmcm9tIHRoZSBkb3VibGUtY2xpY2tcbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYXV0by1maXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uUmVzaXplSGFuZGxlckRvdWJsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmF1dG9GaXRDb2x1bW4oY29sdW1uSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25SZXNpemVDb2x1bW5TdGFydChldmVudDogTW91c2VFdmVudCwgY29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMub25Db2x1bW5TaXplQ2hhbmdlZC5lbWl0KHtcbiAgICAgIHR5cGU6ICdzdGFydCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgd2lkdGg6IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSW5kZXgpLndpZHRoLFxuICAgICAgICBkYXRhRmllbGQ6IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSW5kZXgpLm5hbWUsXG4gICAgICB9LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgfSk7XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50O1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFdpZHRoID0gcGFyc2VJbnQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5zdHlsZS53aWR0aCk7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4ID0gY29sdW1uSW5kZXg7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVDb2x1bW5Nb3ZlKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUNvbHVtbkVuZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgb25SZXNpemVDb2x1bW5Nb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgZGlmZlggPSBldmVudC5wYWdlWCAtIHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFg7XG4gICAgY29uc3QgbmV3V2lkdGggPSB0aGlzLnJ0bCA/IHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFdpZHRoIC0gZGlmZlggOiB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRXaWR0aCArIGRpZmZYO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtNYXRoLm1heCgxMDAsIG5ld1dpZHRoKX1weGA7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25ldy13aWR0aCcsIGAke25ld1dpZHRofWApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBvblJlc2l6ZUNvbHVtbkVuZCA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplQ29sdW1uTW92ZSk7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplQ29sdW1uRW5kKTtcbiAgICB9XG4gICAgY29uc3QgbmV3V2lkdGggPSBwYXJzZUludCh0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCduZXctd2lkdGgnKT8udmFsdWUpO1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5nZXQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4KTtcbiAgICBjb2x1bW4ud2lkdGggPSBgJHtNYXRoLm1heCgxMDAsIG5ld1dpZHRoKX1weGA7XG4gICAgdGhpcy51c2VyUmVzaXplZENvbHVtbnMuYWRkKGNvbHVtbik7XG4gICAgdGhpcy5wZW5kaW5nQ29udGVudEF1dG9GaXRDb2x1bW5zLmRlbGV0ZShjb2x1bW4pO1xuXG4gICAgdGhpcy5vbkNvbHVtblNpemVDaGFuZ2VkLmVtaXQoe1xuICAgICAgdHlwZTogJ2VuZCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbHVtbkluZGV4OiB0aGlzLnJlc2l6ZUNvbHVtblByb3AuY29sdW1uSW5kZXgsXG4gICAgICAgIHdpZHRoOiB0aGlzLmNvbHVtbnMuZ2V0KHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCkud2lkdGgsXG4gICAgICAgIGRhdGFGaWVsZDogdGhpcy5jb2x1bW5zLmdldCh0aGlzLnJlc2l6ZUNvbHVtblByb3AuY29sdW1uSW5kZXgpLm5hbWUsXG4gICAgICB9LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2V0UmVzaXppbmdQcm9jZXNzKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHJlc2V0UmVzaXppbmdQcm9jZXNzKCkge1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZXctd2lkdGgnKTtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AgPSB7IHN0YXJ0WDogMCwgc3RhcnRXaWR0aDogMCwgY29sdW1uSW5kZXg6IDAsIG5ld0NvbHVtbldpZHRoOiAwLCB0aEVsZW1lbnQ6IG51bGwgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVTdGlja3lDb2x1bW5zUG9zaXRpb25zKCkge1xuICAgIGxldCBhY2N1bXVsYXRlZFdpZHRoRnJvbVN0YXJ0ID0gMDtcbiAgICBsZXQgbGFzdFN0YXJ0Q29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudDtcblxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoY29sdW1uLndpZHRoIGFzIHN0cmluZyk7XG5cbiAgICAgIGlmIChjb2x1bW4uZml4ZWQgPT09ICdzdGFydCcgJiYgIWlzTmFOKHdpZHRoKSkge1xuICAgICAgICBjb2x1bW5bJ3N0aWNreVN0YXJ0J10gPSBhY2N1bXVsYXRlZFdpZHRoRnJvbVN0YXJ0ICsgJ3B4JztcbiAgICAgICAgbGFzdFN0YXJ0Q29sdW1uID0gY29sdW1uO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKHdpZHRoKSkge1xuICAgICAgICBhY2N1bXVsYXRlZFdpZHRoRnJvbVN0YXJ0ICs9IHdpZHRoO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChsYXN0U3RhcnRDb2x1bW4pIGxhc3RTdGFydENvbHVtblsnaXNMYXN0Rml4ZWRDb2x1bW4nXSA9IHRydWU7XG5cbiAgICBsZXQgYWNjdW11bGF0ZWRXaWR0aEZyb21FbmQgPSAwO1xuICAgIGxldCBmaXJzdEVuZENvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ7XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5jb2x1bW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZ2V0KGkpO1xuXG4gICAgICBjb25zdCB3aWR0aCA9IHBhcnNlSW50KGNvbHVtbi53aWR0aCBhcyBzdHJpbmcpO1xuXG4gICAgICBpZiAoY29sdW1uLmZpeGVkID09PSAnZW5kJyAmJiAhaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGNvbHVtblsnc3RpY2t5RW5kJ10gPSBhY2N1bXVsYXRlZFdpZHRoRnJvbUVuZCArICdweCc7XG4gICAgICAgIGZpcnN0RW5kQ29sdW1uID0gY29sdW1uO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKHdpZHRoKSkge1xuICAgICAgICBhY2N1bXVsYXRlZFdpZHRoRnJvbUVuZCArPSB3aWR0aDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZpcnN0RW5kQ29sdW1uKSBmaXJzdEVuZENvbHVtblsnaXNGaXJzdEZpeGVkQ29sdW1uJ10gPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZml0cyBjb2x1bW5zIHRoYXQgaGF2ZSB3aWR0aD0nYXV0bycuXG4gICAqIFJ1bnMgaGVhZGVyLW9ubHkgc2l6aW5nIGFmdGVyIHZpZXcgaW5pdCAoYGhlYWRlck9ubHk6IHRydWVgKSBhbmQgZnVsbCBtZWFzdXJlbWVudCBhZnRlciBkYXRhIGxvYWQuXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgYXV0b0ZpdENvbHVtbnNXaXRoQXV0b1dpZHRoKG9wdGlvbnM6IHsgaGVhZGVyT25seT86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCB7XG4gICAgY29uc3QgaGVhZGVyT25seSA9IG9wdGlvbnMuaGVhZGVyT25seSA/PyBmYWxzZTtcbiAgICBjb25zdCBhdXRvV2lkdGhDb2x1bW5zOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGZpdHNCeUludGVudCA9IHRoaXMuYXV0b0ZpdEludGVudENvbHVtbnMuaGFzKGNvbHVtbik7XG4gICAgICBjb25zdCBmaXRzUGVuZGluZ0hlYWRlck9ubHkgPSAhaGVhZGVyT25seSAmJiB0aGlzLnBlbmRpbmdDb250ZW50QXV0b0ZpdENvbHVtbnMuaGFzKGNvbHVtbik7XG5cbiAgICAgIGlmICghZml0c0J5SW50ZW50ICYmICFmaXRzUGVuZGluZ0hlYWRlck9ubHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy51c2VyUmVzaXplZENvbHVtbnMuaGFzKGNvbHVtbikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZml0c0J5SW50ZW50ICYmIGhlYWRlck9ubHkgJiYgY29sdW1uLndpZHRoID09PSAnYXV0bycpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ29udGVudEF1dG9GaXRDb2x1bW5zLmFkZChjb2x1bW4pO1xuICAgICAgfVxuXG4gICAgICBhdXRvV2lkdGhDb2x1bW5zLnB1c2goaW5kZXgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5hdXRvRml0Q29sdW1uKGluZGV4LCB7IG1heFdpZHRoOiA1MDAsIGhlYWRlck9ubHkgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gYXV0by1maXQgY29sdW1uICR7aW5kZXh9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghaGVhZGVyT25seSAmJiBhdXRvV2lkdGhDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEF1dG8tZml0dGVkICR7YXV0b1dpZHRoQ29sdW1ucy5sZW5ndGh9IGNvbHVtbihzKSB3aXRoIHdpZHRoPSdhdXRvJzogaW5kaWNlcyAke2F1dG9XaWR0aENvbHVtbnMuam9pbignLCAnKX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXV0by1maXRzIGFsbCBjb2x1bW5zIHdpZHRoIGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLnNraXBGaXhlZCAtIElmIHRydWUsIHNraXBzIGZpeGVkIGNvbHVtbnMgKGRlZmF1bHQ6IHRydWUpXG4gICAqIEBwYXJhbSBvcHRpb25zLnNraXBMb2FkaW5nIC0gSWYgdHJ1ZSwgc2tpcHMgaWYgZGF0YSBpcyBsb2FkaW5nIChkZWZhdWx0OiB0cnVlKVxuICAgKiBAcGFyYW0gb3B0aW9ucy5tYXhXaWR0aCAtIE1heGltdW0gd2lkdGggZm9yIGFueSBjb2x1bW4gaW4gcGl4ZWxzIChkZWZhdWx0OiA1MDApXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIHB1YmxpYyBhdXRvRml0QWxsQ29sdW1ucyhcbiAgICBvcHRpb25zOiB7XG4gICAgICBza2lwRml4ZWQ/OiBib29sZWFuO1xuICAgICAgc2tpcExvYWRpbmc/OiBib29sZWFuO1xuICAgICAgbWF4V2lkdGg/OiBudW1iZXI7XG4gICAgfSA9IHt9LFxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IHNraXBGaXhlZCA9IHRydWUsIHNraXBMb2FkaW5nID0gdHJ1ZSwgbWF4V2lkdGggPSA1MDAgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBTa2lwIGlmIGxvYWRpbmdcbiAgICBpZiAoc2tpcExvYWRpbmcgJiYgdGhpcy5pc0xvYWRpbmcoKSkge1xuICAgICAgY29uc29sZS53YXJuKCdDYW5ub3QgYXV0by1maXQgY29sdW1ucyB3aGlsZSBkYXRhIGlzIGxvYWRpbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBdXRvLWZpdCBlYWNoIGNvbHVtblxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAvLyBTa2lwIGZpeGVkIGNvbHVtbnMgaWYgcmVxdWVzdGVkXG4gICAgICBpZiAoc2tpcEZpeGVkICYmIGNvbHVtbi5maXhlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgaWYgY29sdW1uIGRvZXNuJ3QgYWxsb3cgcmVzaXppbmdcbiAgICAgIGlmICghY29sdW1uLmFsbG93UmVzaXppbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmF1dG9GaXRDb2x1bW4oaW5kZXgsIHsgbWF4V2lkdGggfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gYXV0by1maXQgY29sdW1uICR7aW5kZXh9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRvLWZpdHMgYSBjb2x1bW4gd2lkdGggYmFzZWQgb24gaXRzIGNvbnRlbnQuXG4gICAqIFNpbWlsYXIgdG8gRXhjZWwncyBcIkF1dG9GaXQgQ29sdW1uIFdpZHRoXCIgZmVhdHVyZS5cbiAgICogVXNlcyBhbiBpbnZpc2libGUgaGVscGVyIHRhYmxlIHRvIG1lYXN1cmUgYWN0dWFsIGNvbnRlbnQgd2lkdGggd2l0aG91dCBhZmZlY3RpbmcgdGhlIG1haW4gdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgY29sdW1uIHRvIGF1dG8tZml0ICgwLWJhc2VkLCBiYXNlZCBvbiBjb2x1bW5zIFF1ZXJ5TGlzdClcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnMubWF4V2lkdGggLSBNYXhpbXVtIHdpZHRoIGZvciB0aGUgY29sdW1uIGluIHBpeGVscyAoZGVmYXVsdDogbm9uZSlcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVhZGVyT25seSAtIFdoZW4gdHJ1ZSwgb25seSB0aGUgaGVhZGVyIGNlbGwgaXMgbWVhc3VyZWQgKGUuZy4gYmVmb3JlIHJvdyBkYXRhIGV4aXN0cylcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgcHVibGljIGF1dG9GaXRDb2x1bW4oY29sdW1uSW5kZXg6IG51bWJlciwgb3B0aW9uczogeyBtYXhXaWR0aD86IG51bWJlcjsgaGVhZGVyT25seT86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmdldChjb2x1bW5JbmRleCk7XG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIGNvbnNvbGUud2FybihgQ29sdW1uIGF0IGluZGV4ICR7Y29sdW1uSW5kZXh9IG5vdCBmb3VuZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpO1xuICAgIGlmICghaG9zdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYWluVGFibGUgPSBob3N0RWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0YWJsZScpO1xuICAgIGlmICghbWFpblRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmluZCBhY3R1YWwgY29sdW1uIGluZGV4IGluIHJlbmRlcmVkIHRhYmxlIChhY2NvdW50aW5nIGZvciBmaXhlZCBjb2x1bW5zKVxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBbLi4udGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKSwgLi4udGhpcy5ub3JtYWxDb2x1bW5zTGlzdCgpLCAuLi50aGlzLmVuZEZpeGVkQ29sdW1uc0xpc3QoKV07XG4gICAgY29uc3QgYWN0dWFsQ29sdW1uSW5kZXggPSBhbGxDb2x1bW5zLmZpbmRJbmRleCgoYykgPT4gYyA9PT0gY29sdW1uKTtcblxuICAgIGlmIChhY3R1YWxDb2x1bW5JbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ29sdW1uIG5vdCBmb3VuZCBpbiByZW5kZXJlZCB0YWJsZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBpbnZpc2libGUgaGVscGVyIHRhYmxlXG4gICAgY29uc3QgaGVscGVyVGFibGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgaGVscGVyVGFibGUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGhlbHBlclRhYmxlLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS50YWJsZUxheW91dCA9ICdhdXRvJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS53aWR0aCA9ICdhdXRvJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS50b3AgPSAnLTk5OTlweCc7XG4gICAgaGVscGVyVGFibGUuc3R5bGUubGVmdCA9ICctOTk5OXB4JztcblxuICAgIC8vIENvcHkgc3R5bGVzIGZyb20gbWFpbiB0YWJsZVxuICAgIGNvbnN0IG1haW5UYWJsZVN0eWxlID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uZ2V0Q29tcHV0ZWRTdHlsZShtYWluVGFibGUpO1xuICAgIGlmIChtYWluVGFibGVTdHlsZSkge1xuICAgICAgaGVscGVyVGFibGUuc3R5bGUuZm9udFNpemUgPSBtYWluVGFibGVTdHlsZS5mb250U2l6ZTtcbiAgICAgIGhlbHBlclRhYmxlLnN0eWxlLmZvbnRGYW1pbHkgPSBtYWluVGFibGVTdHlsZS5mb250RmFtaWx5O1xuICAgICAgaGVscGVyVGFibGUuc3R5bGUuZm9udFdlaWdodCA9IG1haW5UYWJsZVN0eWxlLmZvbnRXZWlnaHQ7XG4gICAgfVxuXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhlbHBlclRhYmxlKTtcblxuICAgIGxldCBtYXhXaWR0aCA9IDA7XG5cbiAgICB0cnkge1xuICAgICAgLy8gTWVhc3VyZSBoZWFkZXIgY2VsbFxuICAgICAgY29uc3QgaGVhZGVyUm93ID0gbWFpblRhYmxlLnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkIHRyJyk7XG4gICAgICBpZiAoaGVhZGVyUm93KSB7XG4gICAgICAgIGNvbnN0IGhlYWRlckNlbGxzID0gaGVhZGVyUm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJyk7XG4gICAgICAgIGlmIChoZWFkZXJDZWxscy5sZW5ndGggPiBhY3R1YWxDb2x1bW5JbmRleCkge1xuICAgICAgICAgIGNvbnN0IGhlYWRlckNlbGwgPSBoZWFkZXJDZWxsc1thY3R1YWxDb2x1bW5JbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAvLyBDbG9uZSBoZWFkZXIgY2VsbCB0byBoZWxwZXIgdGFibGVcbiAgICAgICAgICBjb25zdCBoZWxwZXJUaGVhZCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhlYWQnKTtcbiAgICAgICAgICBjb25zdCBoZWxwZXJUciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcbiAgICAgICAgICBjb25zdCBoZWxwZXJUaCA9IGhlYWRlckNlbGwuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGhlbHBlclRoLnN0eWxlLndpZHRoID0gJ2F1dG8nO1xuICAgICAgICAgIGhlbHBlclRoLnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJztcbiAgICAgICAgICBoZWxwZXJUci5hcHBlbmRDaGlsZChoZWxwZXJUaCk7XG4gICAgICAgICAgaGVscGVyVGhlYWQuYXBwZW5kQ2hpbGQoaGVscGVyVHIpO1xuICAgICAgICAgIGhlbHBlclRhYmxlLmFwcGVuZENoaWxkKGhlbHBlclRoZWFkKTtcblxuICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBjYWxjdWxhdGlvblxuICAgICAgICAgIGNvbnN0IGhlYWRlcldpZHRoID0gaGVscGVyVGgub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgaGVhZGVyV2lkdGgpO1xuXG4gICAgICAgICAgaGVscGVyVGFibGUucmVtb3ZlQ2hpbGQoaGVscGVyVGhlYWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghKG9wdGlvbnMuaGVhZGVyT25seSA/PyBmYWxzZSkpIHtcbiAgICAgICAgLy8gTWVhc3VyZSBib2R5IGNlbGxzXG4gICAgICAgIGNvbnN0IGJvZHlSb3dzID0gbWFpblRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5IHRyOm5vdCguZW1wdHktcm93KScpO1xuICAgICAgICBjb25zdCBoZWxwZXJUYm9keSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTtcbiAgICAgICAgaGVscGVyVGFibGUuYXBwZW5kQ2hpbGQoaGVscGVyVGJvZHkpO1xuXG4gICAgICAgIC8vIFNhbXBsZSBmaXJzdCAyMCByb3dzIGZvciBwZXJmb3JtYW5jZSAoeW91IGNhbiBhZGp1c3QgdGhpcylcbiAgICAgICAgY29uc3Qgc2FtcGxlU2l6ZSA9IE1hdGgubWluKDIwLCBib2R5Um93cy5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNhbXBsZVNpemU7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHJvdyA9IGJvZHlSb3dzW2ldO1xuICAgICAgICAgIGNvbnN0IGNlbGxzID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyk7XG5cbiAgICAgICAgICBpZiAoY2VsbHMubGVuZ3RoID4gYWN0dWFsQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBjZWxsc1thY3R1YWxDb2x1bW5JbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIENsb25lIGNlbGwgdG8gaGVscGVyIHRhYmxlXG4gICAgICAgICAgICBjb25zdCBoZWxwZXJUciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcbiAgICAgICAgICAgIGNvbnN0IGhlbHBlclRkID0gY2VsbC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBoZWxwZXJUZC5zdHlsZS53aWR0aCA9ICdhdXRvJztcbiAgICAgICAgICAgIGhlbHBlclRkLnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJztcbiAgICAgICAgICAgIGhlbHBlclRyLmFwcGVuZENoaWxkKGhlbHBlclRkKTtcbiAgICAgICAgICAgIGhlbHBlclRib2R5LmFwcGVuZENoaWxkKGhlbHBlclRyKTtcblxuICAgICAgICAgICAgLy8gRm9yY2UgbGF5b3V0IGNhbGN1bGF0aW9uXG4gICAgICAgICAgICBjb25zdCBjZWxsV2lkdGggPSBoZWxwZXJUZC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIGNlbGxXaWR0aCk7XG5cbiAgICAgICAgICAgIGhlbHBlclRib2R5LnJlbW92ZUNoaWxkKGhlbHBlclRyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHNvbWUgcGFkZGluZyBmb3IgYmV0dGVyIFVYXG4gICAgICBsZXQgZmluYWxXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoICsgNDAsIDEwMCk7IC8vIE1pbmltdW0gMTAwcHgsIGFkZCA0MHB4IHBhZGRpbmdcblxuICAgICAgLy8gQXBwbHkgbWF4IHdpZHRoIGlmIHNwZWNpZmllZFxuICAgICAgaWYgKG9wdGlvbnMubWF4V2lkdGgpIHtcbiAgICAgICAgZmluYWxXaWR0aCA9IE1hdGgubWluKGZpbmFsV2lkdGgsIG9wdGlvbnMubWF4V2lkdGgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgY29sdW1uIHdpZHRoXG4gICAgICBjb2x1bW4ud2lkdGggPSBgJHtmaW5hbFdpZHRofXB4YDtcblxuICAgICAgaWYgKCEob3B0aW9ucy5oZWFkZXJPbmx5ID8/IGZhbHNlKSkge1xuICAgICAgICB0aGlzLnBlbmRpbmdDb250ZW50QXV0b0ZpdENvbHVtbnMuZGVsZXRlKGNvbHVtbik7XG4gICAgICB9XG5cbiAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB0byB1cGRhdGUgdGhlIHZpZXdcbiAgICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KFsuLi50aGlzLmNvbHVtbnNMaXN0KCldKTtcblxuICAgICAgLy8gUmVjYWxjdWxhdGUgc3RpY2t5IHBvc2l0aW9ucyBpZiBjb2x1bW4gaXMgZml4ZWRcbiAgICAgIGlmIChjb2x1bW4uZml4ZWQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVTdGlja3lDb2x1bW5zUG9zaXRpb25zKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuXG4gICAgICAvLyBFbWl0IGNvbHVtbiBzaXplIGNoYW5nZWQgZXZlbnRcbiAgICAgIHRoaXMub25Db2x1bW5TaXplQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgdHlwZTogJ2VuZCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgICAgICBkYXRhRmllbGQ6IGNvbHVtbi5uYW1lLFxuICAgICAgICB9LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFuIHVwIGhlbHBlciB0YWJsZVxuICAgICAgaWYgKGhlbHBlclRhYmxlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGhlbHBlclRhYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPiA8L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiYXgtZGF0YS10YWJsZS13cmFwcGVyXCI+XG4gIDx0YWJsZT5cbiAgICBAaWYgKHNob3dIZWFkZXIpIHtcbiAgICAgIDx0aGVhZCBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXInOiBmaXhlZEhlYWRlciB9XCI+XG4gICAgICAgIDx0clxuICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFhbGxvd1Jlb3JkZXJpbmdcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICBAZm9yIChjIG9mIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtaGVhZC1jZWxsIHN0aWNreS1zdGFydFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWxhc3RdPVwiY1snaXNMYXN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1zdGFydF09XCJjWydzdGlja3lTdGFydCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1oZWFkLWNlbGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGMuYWxsb3dSZXNpemluZyAmJiAhYy5maXhlZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtcmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplQ29sdW1uU3RhcnQoJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uUmVzaXplSGFuZGxlckRvdWJsZUNsaWNrKCRldmVudCwgdGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRG91YmxlLWNsaWNrIHRvIGF1dG8tZml0IGNvbHVtbiB3aWR0aFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICBAZm9yIChjIG9mIGVuZEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWhlYWQtY2VsbCBzdGlja3ktZW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtZmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgfVxuICAgIDx0Ym9keSBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXJvdy1hbHRlcm5hdGl2ZSc6IGFsdGVybmF0aXZlIH1cIj5cbiAgICAgIEBpZiAoc2hvd05vRGF0YUxvYWRlZFlldCkge1xuICAgICAgICA8dHIgc3R5bGU9XCJkaXNwbGF5OiBpbmhlcml0XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1lbXB0eS1kYXRhXCIgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zTGlzdCgpLmxlbmd0aCArIDFcIj5cbiAgICAgICAgICAgIEBpZiAobm9EYXRhVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJub0RhdGFUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAYWNvcmV4OmNvbW1vbi5nZW5lcmFsLm5vLWRhdGEteWV0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICB9IEBlbHNlIGlmICghZGlzcGxheWVkUm93cygpLmxlbmd0aCkge1xuICAgICAgICA8dHIgc3R5bGU9XCJkaXNwbGF5OiBpbmhlcml0XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1lbXB0eS1kYXRhXCIgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zTGlzdCgpLmxlbmd0aCArIDFcIj5cbiAgICAgICAgICAgIEBpZiAoZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3Bhbj57eyAnQGFjb3JleDpjb21tb24uZ2VuZXJhbC5uby1yZWNvcmQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheWVkUm93cygpOyBsZXQgcm93SW5kZXggPSAkaW5kZXg7IHRyYWNrIHJvd0luZGV4KSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiB7IHJvdywgcm93SW5kZXggfSB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3Jvd1RlbXAgbGV0LWRhdGE9XCJkYXRhXCI+XG4gICAgICAgICAgQGlmIChyb3dUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGRhdGEucm93SW5kZXggfSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1mb2N1c2VkXT1cImZvY3VzZWRSb3cgJiYgZGF0YS5yb3cgPT09IGZvY3VzZWRSb3dcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cImRhdGEucm93SW5kZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGRhdGEucm93KVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFJvd0NvbG9yQ2xhc3MoZGF0YS5yb3csIGRhdGEucm93SW5kZXgpXCJcbiAgICAgICAgICAgICAgc3R5bGUuaGVpZ2h0PVwie3sgaXRlbUhlaWdodCB9fXB4XCJcbiAgICAgICAgICAgICAgc3R5bGUubWF4LWhlaWdodD1cInt7IGl0ZW1IZWlnaHQgfX1weFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSb3dDbGljaygkZXZlbnQsIGRhdGEucm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1zdGFydF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1sYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LXN0YXJ0XT1cImNbJ3N0aWNreVN0YXJ0J11cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjLmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1jZWxsLXRvb2x0aXAtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIFtheFRvb2x0aXBdPVwiYy5oYXNUaXRsZSAmJiBkYXRhLnJvdyAmJiAhaXNMb2FkaW5nKCkgPyBnZXRDZWxsVG9vbHRpcFRleHQoYywgZGF0YS5yb3cpIHx8IG51bGwgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChkYXRhLnJvdyAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgZGF0YTogZGF0YS5yb3csIHJvd0luZGV4OiBjYWxjdWxhdGVSb3dJbmRleChkYXRhLnJvd0luZGV4KSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxvYWRpbmcubG9hZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9hZGluZy5sb2FkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cImxvYWRpbmcuYW5pbWF0aW9uXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBmb3IgKGMgb2Ygbm9ybWFsQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktYm9keS1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImMuY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImMuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWNlbGwtdG9vbHRpcC13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2F4VG9vbHRpcF09XCJjLmhhc1RpdGxlICYmIGRhdGEucm93ICYmICFpc0xvYWRpbmcoKSA/IGdldENlbGxUb29sdGlwVGV4dChjLCBkYXRhLnJvdykgfHwgbnVsbCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGEucm93ICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHRkPjxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PjwvdGQ+XG4gICAgICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktZW5kXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1lbmRdPVwiY1snc3RpY2t5RW5kJ11cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjLmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1jZWxsLXRvb2x0aXAtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIFtheFRvb2x0aXBdPVwiYy5oYXNUaXRsZSAmJiBkYXRhLnJvdyAmJiAhaXNMb2FkaW5nKCkgPyBnZXRDZWxsVG9vbHRpcFRleHQoYywgZGF0YS5yb3cpIHx8IG51bGwgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChkYXRhLnJvdyAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgZGF0YTogZGF0YS5yb3csIHJvd0luZGV4OiBjYWxjdWxhdGVSb3dJbmRleChkYXRhLnJvd0luZGV4KSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxvYWRpbmcubG9hZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9hZGluZy5sb2FkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cImxvYWRpbmcuYW5pbWF0aW9uXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgQGlmIChkYXRhLnJvdz8uX19tZXRhX18/LmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgIEBpZiAocm93RGV0YWlsc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBzdGFydEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktYm9keS1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1zdGFydF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtbGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImF4LWRhdGEtdGFibGUtcm93LWRldGFpbHNcIiBbYXR0ci5jb2xzcGFuXT1cIm5vcm1hbENvbHVtbnNMaXN0KCkubGVuZ3RoICsgMVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93RGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogZGF0YS5yb3csIHJvd0luZGV4OiBkYXRhLnJvd0luZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjIG9mIGVuZEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktYm9keS1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1lbmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGZvciAoY2hpbGRSb3cgb2YgZGF0YS5yb3cuY2hpbGRyZW47IGxldCBjaGlsZFJvd0luZGV4ID0gJGluZGV4OyB0cmFjayBjaGlsZFJvd0luZGV4KSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiB7IHJvdzogY2hpbGRSb3csIHJvd0luZGV4OiBjaGlsZFJvd0luZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDx0ciBjbGFzcz1cImVtcHR5LXJvd1wiPjwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgICBAaWYgKHNob3dGb290ZXIpIHtcbiAgICAgIDx0Zm9vdCBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXInOiBmaXhlZEZvb3RlciB9XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICBAZm9yIChjIG9mIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtc3RpY2t5LWZvb3Rlci1jZWxsIHN0aWNreS1zdGFydFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1sYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJGb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoYyBvZiBub3JtYWxDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJGb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGMuYWxsb3dSZXNpemluZyAmJiAhYy5maXhlZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtcmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplQ29sdW1uU3RhcnQoJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uUmVzaXplSGFuZGxlckRvdWJsZUNsaWNrKCRldmVudCwgdGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRG91YmxlLWNsaWNrIHRvIGF1dG8tZml0IGNvbHVtbiB3aWR0aFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICBAZm9yIChjIG9mIGVuZEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXItY2VsbCBzdGlja3ktZW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtZmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGZvb3Q+XG4gICAgfVxuICA8L3RhYmxlPlxuPC9kaXY+XG5cbkBpZiAocGFnaW5nKSB7XG4gIDxkaXYgY2xhc3M9XCJheC10YWJsZS1mb290ZXJcIiAjZm9vdGVyQ29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tUGFnZXI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1kYXRhLXBhZ2VyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICBAaWYgKGN1c3RvbURhdGFQYWdlcikge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21QYWdlclwiPjwvbmctY29udGFpbmVyPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGF4LWRhdGEtcGFnZXJcbiAgICAgICAgI2RhdGFQYWdlclxuICAgICAgICBbZGlzcGxheU1vZGVdPVwiJ2N1c3RvbSdcIlxuICAgICAgICAob25DaGFuZ2VkKT1cImhhbmRsZUNoYW5nZVBhZ2UoJGV2ZW50KVwiXG4gICAgICAgIFt0b3RhbF09XCJkYXRhU291cmNlLnRvdGFsQ291bnRcIlxuICAgICAgICBbc2l6ZV09XCJkYXRhU291cmNlLnBhZ2VTaXplXCJcbiAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgICA+XG4gICAgICAgIDxheC1wcmVmaXggY2xhc3M9XCJheC1kYXRhLXRhYmxlLW51bWVyaWMtcGFnaW5nXCI+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItbnVtZXJpYy1zZWxlY3Rvcj4gPC9heC1kYXRhLXBhZ2VyLW51bWVyaWMtc2VsZWN0b3I+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItcGFnZS1zaXplcz4gPC9heC1kYXRhLXBhZ2VyLXBhZ2Utc2l6ZXM+XG4gICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8YXgtcHJlZml4IGNsYXNzPVwiYXgtZGF0YS10YWJsZS1pbnB1dC1wYWdpbmdcIj5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1wcmV2LWJ1dHRvbnM+IDwvYXgtZGF0YS1wYWdlci1wcmV2LWJ1dHRvbnM+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItaW5wdXQtc2VsZWN0b3I+IDwvYXgtZGF0YS1wYWdlci1pbnB1dC1zZWxlY3Rvcj5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1uZXh0LWJ1dHRvbnM+IDwvYXgtZGF0YS1wYWdlci1uZXh0LWJ1dHRvbnM+XG4gICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8YXgtc3VmZml4IGNsYXNzPVwiYXgtZGF0YS10YWJsZS1pbmZvXCI+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItaW5mbz4gPC9heC1kYXRhLXBhZ2VyLWluZm8+XG4gICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwicmVmcmVzaCh7IHJlc2V0OiBmYWxzZSB9KVwiPlxuICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1yZWZyZXNoXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgIDwvYXgtZGF0YS1wYWdlcj5cbiAgICB9XG4gIDwvZGl2PlxufVxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbiJdfQ==","import { AXComponent, AXListDataSource, AXPagedComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ContentChildren, DOCUMENT, ElementRef, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, inject, input, signal, } from '@angular/core';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableElement, } from '@angular/cdk/scrolling';\nimport { NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a data table with infinite scrolling capabilities.\n *\n * @category Components\n */\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n /**\n * Controls the table look.\n *\n * - `classic` — classic look (default).\n * - `minimal` — minimal look.\n *\n * @defaultValue `'classic'`\n */\n this.look = input('classic', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.ngZone = inject(NgZone);\n /**\n * Emits an event when the page changes.\n *\n * @event\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * Emits an event when a row is clicked.\n *\n * @event\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits an event when a row is double-clicked.\n *\n * @event\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Controls the visibility of the table header.\n *\n * @defaultValue true\n */\n this.showHeader = true;\n /**\n * Defines the mode for fetching data.\n *\n * @defaultValue 'auto'\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for the loading state of the data table.\n *\n * @defaultValue { enabled: true, animation: true }\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * @ignore\n */\n this.lastIndex = 0;\n /**\n * Event emitted when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Defines the height of each item in the table.\n *\n * @default 40\n */\n this.itemHeight = 40;\n /**\n * @ignore\n */\n this.width = '100%';\n /**\n * @ignore\n */\n this.height = '100%';\n /**\n * Emitted when the scroll index changes in the table.\n *\n * @event\n */\n this.onScrolledIndexChanged = new EventEmitter();\n }\n /**\n * @ignore\n */\n startFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n /**\n * @ignore\n */\n endFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumn() {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumnCount() {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n /**\n * @ignore\n */\n fixedColumnCount() {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n /**\n * Retrieves the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits a change event.\n *\n * @param v - The row data to be set as focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n trackByIdx(i) {\n return i;\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n }, 100);\n });\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n _handleOnscrolledIndexChange(e) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n /**\n * @ignore\n */\n updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1)\n this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows)\n this.startRowIndex = this.totalRows;\n }\n /**\n * @ignore\n */\n updateHeight() {\n this.height = `calc(100% - ${(this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)}px)`;\n }\n /**\n * @ignore\n */\n updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n /**\n * @ignore\n */\n updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n /**\n * @ignore\n */\n // Function to copy fixed columns\n copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n if (isPlatformBrowser(this.platformID)) {\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = this.document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n /**\n * Updates the viewport by checking its size and scrolling to the last index.\n * Marks the component for change detection.\n * @ignore\n */\n render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n /**\n * Resets the index to zero and refreshes the data source.\n * @ignore\n */\n refresh(options = {}) {\n if (!options.preserveHighlights) {\n this.clearRowHighlights();\n }\n this.lastIndex = 0;\n this.listDataSource.refresh();\n }\n /**\n * @ignore\n */\n onRowHighlightsChanged() {\n this.cdr.markForCheck();\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * Handles column header clicks to toggle sorting on the column.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * @ignore\n */\n _handleOnScroll() {\n this.updateHScroll();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXInfiniteScrollDataTableComponent, isStandalone: true, selector: \"ax-infinite-scroll-data-table\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, rowColor: { classPropertyName: \"rowColor\", publicName: \"rowColor\", isSignal: false, isRequired: false, transformFunction: null }, rowColorField: { classPropertyName: \"rowColorField\", publicName: \"rowColorField\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: \"rowTemplate\", publicName: \"rowTemplate\", isSignal: false, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: false, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: \"showHeader\", publicName: \"showHeader\", isSignal: false, isRequired: false, transformFunction: null }, fetchDataMode: { classPropertyName: \"fetchDataMode\", publicName: \"fetchDataMode\", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: \"loading\", publicName: \"loading\", isSignal: false, isRequired: false, transformFunction: null }, focusedRow: { classPropertyName: \"focusedRow\", publicName: \"focusedRow\", isSignal: false, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectedRowsChange: \"selectedRowsChange\", onPageChanged: \"onPageChanged\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", focusedRowChange: \"focusedRowChange\", onScrolledIndexChanged: \"onScrolledIndexChanged\" }, host: { properties: { \"class.ax-data-table-look-minimal\": \"look() === \\\"minimal\\\"\" } }, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], queries: [{ propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"viewport\", first: true, predicate: CdkVirtualScrollViewport, descendants: true, static: true }, { propertyName: \"headerContainer\", first: true, predicate: [\"headerContainer\"], descendants: true }, { propertyName: \"footerContainer\", first: true, predicate: [\"footerContainer\"], descendants: true }, { propertyName: \"scrollableContainer\", first: true, predicate: [\"scrolling\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n [ngClass]=\\\"getRowColorClass(item, rIndex)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name; let colIndex = $index) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"c.cssClass\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lighter-surface));color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lighter-surface));color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lighter-surface));color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lighter-surface));color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-header-content .ax-header-columns>table th{border-inline-end-width:0}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-body-content .ax-body-columns table td{border-inline-end-width:0}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: CdkVirtualScrollableElement, selector: \"[cdkVirtualScrollingElement]\" }, { kind: \"component\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }, { kind: \"directive\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { kind: \"directive\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-infinite-scroll-data-table', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], host: {\n '[class.ax-data-table-look-minimal]': 'look() === \"minimal\"',\n }, outputs: ['selectedRowsChange'], inputs: ['dataSource', 'rowColor', 'rowColorField'], imports: [\n NgClass,\n NgTemplateOutlet,\n AXDecoratorIconComponent,\n CdkVirtualScrollableElement,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n AXSkeletonComponent,\n AXButtonComponent,\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n [ngClass]=\\\"getRowColorClass(item, rIndex)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name; let colIndex = $index) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"c.cssClass\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lighter-surface));color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lighter-surface));color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lighter-surface));color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lighter-surface));color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-header-content .ax-header-columns>table th{border-inline-end-width:0}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-body-content .ax-body-columns table td{border-inline-end-width:0}\\n\"] }]\n }], propDecorators: { columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }], onPageChanged: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], focusedRow: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], viewport: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport, { static: true }]\n }], onScrolledIndexChanged: [{\n type: Output\n }], headerContainer: [{\n type: ViewChild,\n args: ['headerContainer']\n }], footerContainer: [{\n type: ViewChild,\n args: ['footerContainer']\n }], scrollableContainer: [{\n type: ViewChild,\n args: ['scrolling', { static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUVSLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsMkJBQTJCLEdBQzVCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFB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QkFBb0IsQ0FBQyxVQUN2QixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLFdBQzFDO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQix3QkFBd0I7d0JBQ3hCLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixpQkFBaUI7cUJBQ2xCOzhCQXFCUyxPQUFPO3NCQURoQixlQUFlO3VCQUFDLDBCQUEwQjtnQkEyQzNDLGFBQWE7c0JBRFosTUFBTTtnQkFjUCxVQUFVO3NCQURULE1BQU07Z0JBU1AsWUFBWTtzQkFEWCxNQUFNO2dCQU9QLFdBQVc7c0JBRFYsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLO2dCQVNOLGFBQWE7c0JBRFosS0FBSztnQkFTTixPQUFPO3NCQUROLEtBQUs7Z0JBd0ROLGdCQUFnQjtzQkFEZixNQUFNO2dCQVlJLFVBQVU7c0JBRHBCLEtBQUs7Z0JBcUJOLFVBQVU7c0JBRFQsS0FBSztnQkFpQkUsUUFBUTtzQkFEZixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFTckQsc0JBQXNCO3NCQURyQixNQUFNO2dCQXlDdUIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBS0UsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBTTVCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYTGlzdERhdGFTb3VyY2UsIEFYUGFnZWRDb21wb25lbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBET0NVTUVOVCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQge1xuICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICBDZGtWaXJ0dWFsRm9yT2YsXG4gIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgQ2RrVmlydHVhbFNjcm9sbGFibGVFbGVtZW50LFxufSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCBzdW0gZnJvbSAnbG9kYXNoLWVzL3N1bSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBWEJhc2VEYXRhVGFibGUsXG4gIEFYRGF0YVRhYmxlTG9vayxcbiAgQVhEYXRhVGFibGVSb3dDbGljayxcbiAgQVhEYXRhVGFibGVSb3dEYkNsaWNrLFxuICBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCxcbn0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9kYXRhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGEgZGF0YSB0YWJsZSB3aXRoIGluZmluaXRlIHNjcm9sbGluZyBjYXBhYmlsaXRpZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFBhZ2VkQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYQmFzZURhdGFUYWJsZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWEluZmluaXRlU2Nyb2xsRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYXgtZGF0YS10YWJsZS1sb29rLW1pbmltYWxdJzogJ2xvb2soKSA9PT0gXCJtaW5pbWFsXCInLFxuICB9LFxuICBvdXRwdXRzOiBbJ3NlbGVjdGVkUm93c0NoYW5nZSddLFxuICBpbnB1dHM6IFsnZGF0YVNvdXJjZScsICdyb3dDb2xvcicsICdyb3dDb2xvckZpZWxkJ10sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIENka1ZpcnR1YWxTY3JvbGxhYmxlRWxlbWVudCxcbiAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICBDZGtWaXJ0dWFsRm9yT2YsXG4gICAgQVhTa2VsZXRvbkNvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZURhdGFUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgdGFibGUgbG9vay5cbiAgICpcbiAgICogLSBgY2xhc3NpY2Ag4oCUIGNsYXNzaWMgbG9vayAoZGVmYXVsdCkuXG4gICAqIC0gYG1pbmltYWxgIOKAlCBtaW5pbWFsIGxvb2suXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYCdjbGFzc2ljJ2BcbiAgICovXG4gIGxvb2sgPSBpbnB1dDxBWERhdGFUYWJsZUxvb2s+KCdjbGFzc2ljJyk7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KVxuICBwcm90ZWN0ZWQgY29sdW1uczogUXVlcnlMaXN0PEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzdGFydEZpeGVkQ29sdW1uKCk6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgPT0gJ3N0YXJ0JykgPz8gW107XG4gIH1cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZW5kRml4ZWRDb2x1bW4oKTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucz8udG9BcnJheSgpLmZpbHRlcigoYykgPT4gYy5maXhlZCA9PSAnZW5kJykgPz8gW107XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBub3RGaXhlZENvbHVtbigpOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zPy50b0FycmF5KCkuZmlsdGVyKChjKSA9PiAhYy5maXhlZCkgPz8gW107XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBub3RGaXhlZENvbHVtbkNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucz8udG9BcnJheSgpLmZpbHRlcigoYykgPT4gIWMuZml4ZWQpLmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZml4ZWRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQpLmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHBhZ2UgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25QYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8bnVtYmVyPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8bnVtYmVyPj4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2xpY2tTdWJqZWN0ID0gbmV3IFN1YmplY3Q8eyBldmVudDogTW91c2VFdmVudDsgaXRlbTogYW55IH0+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gYSByb3cgaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dDbGljazogRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93Q2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0NsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIGEgcm93IGlzIGRvdWJsZS1jbGlja2VkLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblJvd0RiQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0RiQ2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0RiQ2xpY2s+KCk7XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIGZvciByZW5kZXJpbmcgcm93cyBpbiB0aGUgZGF0YSB0YWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHRvIGRpc3BsYXkgd2hlbiB0aGUgZGF0YSB0YWJsZSBpcyBlbXB0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGVtcHR5VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHRhYmxlIGhlYWRlci5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93SGVhZGVyID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbW9kZSBmb3IgZmV0Y2hpbmcgZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAnYXV0bydcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZldGNoRGF0YU1vZGU6ICdhdXRvJyB8ICdtYW51YWwnID0gJ2F1dG8nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgbG9hZGluZyBzdGF0ZSBvZiB0aGUgZGF0YSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSB7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9XG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkaW5nOiB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBhbmltYXRpb246IGJvb2xlYW47XG4gICAgbG9hZGluZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIH0gPSB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBhbmltYXRpb246IHRydWUsXG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbGlzdERhdGFTb3VyY2U6IEFYTGlzdERhdGFTb3VyY2U8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNMb2FkaW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbCh0cnVlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYXNJdGVtcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvdGFsUm93cyA9IDA7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY3VycmVudFBhZ2UgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvdGFsUGFnZXMgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0Um93SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBsYXN0SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvY3VzZWQgcm93IGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZvY3VzZWRSb3dDaGFuZ2U6IEV2ZW50RW1pdHRlcjx1bmtub3duPiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzZWRSb3c6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudGx5IGZvY3VzZWQgcm93LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBmb2N1c2VkUm93KCk6IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkUm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHJvdyBhbmQgZW1pdHMgYSBjaGFuZ2UgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2IC0gVGhlIHJvdyBkYXRhIHRvIGJlIHNldCBhcyBmb2N1c2VkLlxuICAgKi9cbiAgcHVibGljIHNldCBmb2N1c2VkUm93KHY6IHVua25vd24pIHtcbiAgICB0aGlzLl9mb2N1c2VkUm93ID0gdjtcbiAgICB0aGlzLmZvY3VzZWRSb3dDaGFuZ2UuZW1pdCh2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBoZWlnaHQgb2YgZWFjaCBpdGVtIGluIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgNDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGl0ZW1IZWlnaHQ6IG51bWJlciB8ICdhdXRvJyA9IDQwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHdpZHRoID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhlaWdodCA9ICcxMDAlJztcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2Nyb2xsIGluZGV4IGNoYW5nZXMgaW4gdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNjcm9sbGVkSW5kZXhDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVTY3JvbGxJbmRleENoYW5nZWQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlU2Nyb2xsSW5kZXhDaGFuZ2VkPigpO1xuXG4gIHRyYWNrQnlJZHgoaSkge1xuICAgIHJldHVybiBpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMubGlzdERhdGFTb3VyY2UgPSBuZXcgQVhMaXN0RGF0YVNvdXJjZTx1bmtub3duPih7XG4gICAgICBzb3VyY2U6IHRoaXMuZGF0YVNvdXJjZSxcbiAgICB9KTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnNvdXJjZS5vbkxvYWRpbmdDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGRhdGEpO1xuICAgIH0pO1xuICAgIHRoaXMubGlzdERhdGFTb3VyY2Uuc291cmNlLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMudG90YWxSb3dzID0gZGF0YS50b3RhbENvdW50O1xuICAgICAgdGhpcy5oYXNJdGVtcyA9IGRhdGEudG90YWxDb3VudCA+IDA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSk7XG5cbiAgICAvL1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgYnVmZmVyKHRoaXMuY2xpY2tTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpKSxcbiAgICAgICAgZmlsdGVyKChjbGlja0FycmF5KSA9PiBjbGlja0FycmF5Lmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjbGlja0FycmF5KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlUm93RG91YmxlQ2xpY2soY2xpY2tBcnJheVswXS5ldmVudCwgY2xpY2tBcnJheVswXS5pdGVtKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXJDb250YWluZXInKSBoZWFkZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZm9vdGVyQ29udGFpbmVyJykgZm9vdGVyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnc2Nyb2xsaW5nJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2Nyb2xsYWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uc2Nyb2xsZWRJbmRleENoYW5nZShlOiBudW1iZXIpIHtcbiAgICB0aGlzLmxhc3RJbmRleCA9IGU7XG4gICAgdGhpcy5vblNjcm9sbGVkSW5kZXhDaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaW5kZXg6IHRoaXMubGFzdEluZGV4LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIG5nRG9DaGVjaygpIHtcbiAgICAvL3RoaXMuY29weUZpeGVkQ29sdW1ucygpO1xuICAgIHRoaXMudXBkYXRlSFNjcm9sbCgpO1xuICAgIC8vXG4gICAgdGhpcy51cGRhdGVXaWR0aCgpO1xuICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XG4gICAgLy9cbiAgICB0aGlzLnVwZGF0ZVRvdGFsQ291bnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUb3RhbENvdW50KCkge1xuICAgIHRoaXMuc3RhcnRSb3dJbmRleCA9IHRoaXMubGFzdEluZGV4O1xuICAgIGlmICh0aGlzLnN0YXJ0Um93SW5kZXggPCAxKSB0aGlzLnN0YXJ0Um93SW5kZXggPSAxO1xuICAgIGlmICh0aGlzLnN0YXJ0Um93SW5kZXggPiB0aGlzLnRvdGFsUm93cykgdGhpcy5zdGFydFJvd0luZGV4ID0gdGhpcy50b3RhbFJvd3M7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlSGVpZ2h0KCkge1xuICAgIHRoaXMuaGVpZ2h0ID0gYGNhbGMoMTAwJSAtICR7KHRoaXMuaGVhZGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA/PyAwKSArICh0aGlzLmZvb3RlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMCl9cHgpYDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVXaWR0aCgpIHtcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1bVB4ID0gc3VtKFxuICAgICAgICB0aGlzLmNvbHVtbnMudG9BcnJheSgpLm1hcCgoYykgPT4gKHR5cGVvZiBjLndpZHRoID09ICdudW1iZXInID8gYy53aWR0aCA6IE51bWJlcihjLndpZHRoLnJlcGxhY2UoJ3B4JywgJycpKSkpLFxuICAgICAgKTtcbiAgICAgIHRoaXMud2lkdGggPSBgJHtNYXRoLm1heChzdW1QeCwgdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsaWVudFdpZHRoIC0gNSl9cHhgO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVIU2Nyb2xsKCkge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhlYWRlckNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBoZWFkZXJDb250YWluZXIgPSB0aGlzLmhlYWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5zY3JvbGxhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgICAgaGVhZGVyQ29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7LWxlZnR9cHgpYDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgLy8gRnVuY3Rpb24gdG8gY29weSBmaXhlZCBjb2x1bW5zXG4gIHByaXZhdGUgY29weUZpeGVkQ29sdW1ucygpIHtcbiAgICBjb25zdCBvcmlnaW5hbFJvd3MgPSBBcnJheS5mcm9tKHRoaXMudmlld3BvcnQuX2NvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHInKSk7XG4gICAgY29uc3QgZml4ZWRDb2x1bW5UYWJsZSA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yPEhUTUxUYWJsZUVsZW1lbnQ+KFxuICAgICAgJy5heC1ib2R5LWZpeGVkLWNvbHVtbnMgPiB0YWJsZSA+IHRib2R5JyxcbiAgICApO1xuICAgIGZpeGVkQ29sdW1uVGFibGUucXVlcnlTZWxlY3RvckFsbCgndHInKS5mb3JFYWNoKChuKSA9PiBuLnJlbW92ZSgpKTtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgZm9yIChjb25zdCByb3cgb2Ygb3JpZ2luYWxSb3dzKSB7XG4gICAgICAgIGNvbnN0IGZpeGVkQ2VsbHMgPSBBcnJheS5mcm9tKHJvdy5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1maXhlZD1cInN0YXJ0XCJdJykpO1xuICAgICAgICBjb25zdCBmaXhlZFJvdyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcbiAgICAgICAgZm9yIChjb25zdCBjZWxsIG9mIGZpeGVkQ2VsbHMpIHtcbiAgICAgICAgICBjb25zdCBjbG9uZWRDZWxsID0gY2VsbC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgZml4ZWRSb3cuYXBwZW5kQ2hpbGQoY2xvbmVkQ2VsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZml4ZWRDb2x1bW5UYWJsZS5hcHBlbmRDaGlsZChmaXhlZFJvdyk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2RrLXZpcnR1YWwtc2Nyb2xsYWJsZScpLnNjcm9sbFRvcDtcbiAgICBmaXhlZENvbHVtblRhYmxlLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7LXNjcm9sbFRvcH1weClgO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHZpZXdwb3J0IGJ5IGNoZWNraW5nIGl0cyBzaXplIGFuZCBzY3JvbGxpbmcgdG8gdGhlIGxhc3QgaW5kZXguXG4gICAqIE1hcmtzIHRoZSBjb21wb25lbnQgZm9yIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgdGhpcy52aWV3cG9ydC5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9JbmRleCh0aGlzLmxhc3RJbmRleCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW5kZXggdG8gemVybyBhbmQgcmVmcmVzaGVzIHRoZSBkYXRhIHNvdXJjZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIHJlZnJlc2gob3B0aW9uczogeyBwcmVzZXJ2ZUhpZ2hsaWdodHM/OiBib29sZWFuIH0gPSB7fSkge1xuICAgIGlmICghb3B0aW9ucy5wcmVzZXJ2ZUhpZ2hsaWdodHMpIHtcbiAgICAgIHRoaXMuY2xlYXJSb3dIaWdobGlnaHRzKCk7XG4gICAgfVxuICAgIHRoaXMubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25Sb3dIaWdobGlnaHRzQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5oYW5kbGVSb3dTaW5nbGVDbGljayhldmVudCwgaXRlbSk7XG4gICAgdGhpcy5jbGlja1N1YmplY3QubmV4dCh7IGV2ZW50LCBpdGVtIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVJvd1NpbmdsZUNsaWNrKGV2ZW50OiBFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9jdXNlZFJvdyA9PSBpdGVtKSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMub25Sb3dDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RvdWJsZUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIC8vXG4gICAgdGhpcy5vblJvd0RiQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiBpdGVtLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjb2x1bW4gaGVhZGVyIGNsaWNrcyB0byB0b2dnbGUgc29ydGluZyBvbiB0aGUgY29sdW1uLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRoZSBtb3VzZSBldmVudCB0cmlnZ2VyZWQgYnkgdGhlIGNsaWNrLlxuICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIGNvbHVtbiB0aGF0IHdhcyBjbGlja2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBoYW5kbGVDb2x1bW5DbGljayhlOiBNb3VzZUV2ZW50LCBjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCkge1xuICAgICAgY29uc3Qgc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbmQoKGMpID0+IGMuZmllbGQgPT0gY29sdW1uLmRhdGFGaWVsZCk7XG4gICAgICBpZiAoIXNvcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsXG4gICAgICAgICAgZGlyOiAnYXNjJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc29ydC5kaXIgPT0gJ2FzYycpIHtcbiAgICAgICAgICBzb3J0LmRpciA9ICdkZXNjJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbHRlcigoYykgPT4gYyAhPSBzb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U29ydChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIHJldHVybiBzb3J0ID8gKHNvcnQuZGlyID09ICdhc2MnID8gJ2F4LWljb24tYXJyb3ctbG9uZy1kb3duJyA6ICdheC1pY29uLWFycm93LWxvbmctdXAnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVPblNjcm9sbCgpIHtcbiAgICB0aGlzLnVwZGF0ZUhTY3JvbGwoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+IDwvbmctY29udGVudD5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBIZWFkZXIgY29udGVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLT5cbkBpZiAoc2hvd0hlYWRlcikge1xuICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbHVtbnNcIj5cbiAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAjaGVhZGVyQ29udGFpbmVyPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgQGZvciAoYyBvZiBub3RGaXhlZENvbHVtbigpOyB0cmFjayBjLm5hbWUpIHtcbiAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBAaWYoYy5hbGxvd1Jlc2l6aW5nKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yZXNpemUtaGFuZGxlXCIgW2F4LXRhYmxlLWNvbHVtbi1yZXNpemJsZV09XCJjXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBCb2R5IGNvbnRlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG48ZGl2IFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCIgY2xhc3M9XCJheC1ib2R5LWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWJvZHktY29sdW1uc1wiPlxuICAgIDxkaXYgY2RrVmlydHVhbFNjcm9sbGluZ0VsZW1lbnQgI3Njcm9sbGluZyBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiIChzY3JvbGwpPVwiX2hhbmRsZU9uU2Nyb2xsKClcIj5cbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgW2l0ZW1TaXplXT1cIml0ZW1IZWlnaHRcIlxuICAgICAgICBbc3R5bGUuLS1pdGVtLWhlaWdodF09XCJpdGVtSGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIl9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImF4LXRhYmxlLWJvZHkgYXgtcmVsYXRpdmVcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIj5cbiAgICAgICAgICA8Y29sZ3JvdXA+XG4gICAgICAgICAgICBAZm9yIChjIG9mIG5vdEZpeGVkQ29sdW1uKCk7IHRyYWNrIGMubmFtZSkge1xuICAgICAgICAgICAgICA8Y29sIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxjb2wgLz5cbiAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBsaXN0RGF0YVNvdXJjZTtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTAwO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkeDtcbiAgICAgICAgICAgICAgICBsZXQgckluZGV4ID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tIGN1c3RvbSByb3cgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd1RlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGl0ZW0sIHJvd0luZGV4OiBySW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSBub3JtYWwgcm93IHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1mb2N1c2VkXT1cImZvY3VzZWRSb3cgJiYgaXRlbSA9PT0gZm9jdXNlZFJvd1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cInJJbmRleFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFJvd0NvbG9yQ2xhc3MoaXRlbSwgckluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUm93Q2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tIHN0YXJ0IGZpeGVkIGNvbHVtbiAtLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0gTm90IGZpeGVkIGNvbHVtbiAtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBub3RGaXhlZENvbHVtbigpOyB0cmFjayBjLm5hbWU7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIiB0YWJpbmRleD1cIjBcIiBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbSAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSByZW5kZXIgY2VsbCAtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBpdGVtLCByb3dJbmRleDogckluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVuZGVyIGxvYWRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC10YWJsZS1mb290ZXJcIiAjZm9vdGVyQ29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwiYXgtdGFibGUtaW5mb1wiPlxuICAgIDxkaXY+U2hvd2luZyB7eyBzdGFydFJvd0luZGV4IH19IG9mIHt7IHRvdGFsUm93cyB9fSBpdGVtczwvZGl2PlxuICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cInJlZnJlc2goKVwiPlxuICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1yZWZyZXNoXCI+PC9heC1pY29uPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbjwvZGl2PlxuIl19","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDataPagerModule } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXResultModule } from '@acorex/components/result';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDataTableColumnResizableDirective } from './columns/data-table-column-resizable.directive';\nimport { AXDataTableTextColumnComponent } from './columns/data-text-column.component';\nimport { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent, } from './columns/row-command-column.component';\nimport { AXRowExpandColumnComponent } from './columns/row-expand-column.component';\nimport { AXRowIndexColumnComponent } from './columns/row-index-column.component';\nimport { AXRowSelectColumnComponent } from './columns/row-select-column.component';\nimport { AXDataTableComponent } from './data-table/data-table.component';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective,\n];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle,\n];\nexport class AXDataTableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective], exports: [AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXDataPagerModule, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG1DQUFtQyxHQUNwQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1FQUFtRSxDQUFDOztBQUV2SCxNQUFNLFNBQVMsR0FBRztJQUNoQixrQ0FBa0M7SUFDbEMsb0JBQW9CO0lBQ3BCLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLG1DQUFtQztDQUNwQyxDQUFDO0FBQ0YsTUFBTSxPQUFPLEdBQUc7SUFDZCxZQUFZO0lBQ1osY0FBYztJQUNkLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsV0FBVztJQUNYLE9BQU87SUFDUCxrQkFBa0I7SUFDbEIsYUFBYTtDQUNkLENBQUM7QUFPRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixZQXhCNUIsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLFdBQVc7WUFDWCxPQUFPO1lBQ1Asa0JBQWtCO1lBQ2xCLGFBQWEsRUEzQmIsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUMsYUFSbkMsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUM7K0dBMkJ4QixpQkFBaUIsWUF4QjVCLFlBQVk7WUFDWixjQUFjO1lBQ2QsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixjQUFjO1lBRWQsaUJBQWlCLEVBdkJqQixrQ0FBa0M7WUFDbEMsb0JBQW9CO1lBRXBCLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFFMUIsMkJBQTJCO1lBQzNCLG1DQUFtQzs7MkZBNEJ4QixpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbW9uTW9kdWxlLCBBWFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEYXRhUGFnZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS1wYWdlcic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhSZXN1bHRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcmVzdWx0JztcbmltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0hhbmRsZSwgQ2RrRHJhZ1BsYWNlaG9sZGVyLCBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uUmVzaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uLXJlc2l6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFYUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dEcm9wZG93bkNvbW1hbmRDb2x1bW5Db21wb25lbnQsXG59IGZyb20gJy4vY29sdW1ucy9yb3ctY29tbWFuZC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUm93RXhwYW5kQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1leHBhbmQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFJvd0luZGV4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1pbmRleC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1zZWxlY3QtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWEluZmluaXRlU2Nyb2xsRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS5jb21wb25lbnQnO1xuXG5jb25zdCBDT01QT05FTlQgPSBbXG4gIEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQsXG4gIEFYRGF0YVRhYmxlQ29tcG9uZW50LFxuICBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgQVhEYXRhVGFibGVDb2x1bW5SZXNpemFibGVEaXJlY3RpdmUsXG5dO1xuY29uc3QgTU9EVUxFUyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBBWENvbW1vbk1vZHVsZSxcbiAgU2Nyb2xsaW5nTW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWFJlc3VsdE1vZHVsZSxcbiAgQVhMb2FkaW5nTW9kdWxlLFxuICBBWFNrZWxldG9uTW9kdWxlLFxuICBBWEJ1dHRvbk1vZHVsZSxcbiAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gIEFYRHJvcGRvd25Nb2R1bGUsXG4gIEFYRm9ybWF0TW9kdWxlLFxuICBBWFJpcHBsZURpcmVjdGl2ZSxcbiAgQVhEYXRhUGFnZXJNb2R1bGUsXG4gIENka0Ryb3BMaXN0LFxuICBDZGtEcmFnLFxuICBDZGtEcmFnUGxhY2Vob2xkZXIsXG4gIENka0RyYWdIYW5kbGUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFUywgLi4uQ09NUE9ORU5UXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYRGF0YVRhYmxlTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../tmp-esm2022/data-table/lib/data-table-css-class.cache.js","../tmp-esm2022/data-table/lib/base-data-table.class.js","../tmp-esm2022/data-table/lib/columns/data-table-column.js","../tmp-esm2022/data-table/lib/columns/data-table-column-resizable.directive.js","../tmp-esm2022/data-table/lib/columns/data-text-column.component.js","../tmp-esm2022/data-table/lib/columns/row-command-column.component.js","../tmp-esm2022/data-table/lib/columns/row-expand-column.component.js","../tmp-esm2022/data-table/lib/columns/row-index-column.component.js","../tmp-esm2022/data-table/lib/columns/row-select-column.component.js","../tmp-esm2022/data-table/lib/data-table/data-table.component.js","../tmp-esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.js","../tmp-esm2022/data-table/lib/data-table.module.js","../tmp-esm2022/data-table/acorex-components-data-table.js"],"sourcesContent":["import { signal } from '@angular/core';\n/**\n * Caches synchronous CSS class resolutions in a plain map (safe during template render)\n * and asynchronous results in a signal (updated only after promises settle).\n */\nexport class AXDataTableCssClassCache {\n constructor() {\n this.generation = 0;\n this.syncCache = new Map();\n this.pendingResolvers = new Map();\n this.resolvedAsync = signal(new Map(), ...(ngDevMode ? [{ debugName: \"resolvedAsync\" }] : []));\n }\n clear() {\n this.generation++;\n this.pendingResolvers.clear();\n this.syncCache.clear();\n if (this.resolvedAsync().size > 0) {\n this.resolvedAsync.set(new Map());\n }\n }\n resolve(cacheKey, factory, onResolved) {\n const asyncCached = this.resolvedAsync().get(cacheKey);\n if (asyncCached !== undefined) {\n return asyncCached;\n }\n if (this.syncCache.has(cacheKey)) {\n return this.syncCache.get(cacheKey) ?? '';\n }\n const result = factory();\n if (isCssClassPromise(result)) {\n this.scheduleAsync(cacheKey, result, onResolved);\n return '';\n }\n const normalized = normalizeCssClass(result);\n this.syncCache.set(cacheKey, normalized);\n return normalized;\n }\n scheduleAsync(cacheKey, promise, onResolved) {\n if (this.pendingResolvers.has(cacheKey)) {\n return;\n }\n const generation = this.generation;\n const task = promise\n .then((value) => normalizeCssClass(value))\n .catch(() => '')\n .then((cssClass) => {\n if (generation !== this.generation) {\n return;\n }\n this.pendingResolvers.delete(cacheKey);\n this.resolvedAsync.update((map) => {\n const next = new Map(map);\n next.set(cacheKey, cssClass);\n return next;\n });\n onResolved();\n });\n this.pendingResolvers.set(cacheKey, task);\n }\n}\nexport function normalizeCssClass(value) {\n return typeof value === 'string' ? value.trim() : '';\n}\nexport function isCssClassPromise(value) {\n return value != null && typeof value.then === 'function';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jc3MtY2xhc3MuY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlLWNzcy1jbGFzcy5jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ1UsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNOLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQUNyRSxrQkFBYSxHQUFpRCxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUUseURBQUMsQ0FBQztJQWtFM0YsQ0FBQztJQWhFQyxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQ0wsUUFBeUIsRUFDekIsT0FBMkUsRUFDM0UsVUFBc0I7UUFFdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUN6QixJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6QyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8sYUFBYSxDQUNuQixRQUF5QixFQUN6QixPQUEwQyxFQUMxQyxVQUFzQjtRQUV0QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsTUFBTSxJQUFJLEdBQUcsT0FBTzthQUNqQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDZixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQixJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ25DLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7WUFDSCxVQUFVLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWM7SUFDOUMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLEtBQW1FO0lBRW5FLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxPQUFRLEtBQTJDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQUNsRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV3JpdGFibGVTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBWERhdGFUYWJsZUNzc0NsYXNzVmFsdWUgPSBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENhY2hlcyBzeW5jaHJvbm91cyBDU1MgY2xhc3MgcmVzb2x1dGlvbnMgaW4gYSBwbGFpbiBtYXAgKHNhZmUgZHVyaW5nIHRlbXBsYXRlIHJlbmRlcilcbiAqIGFuZCBhc3luY2hyb25vdXMgcmVzdWx0cyBpbiBhIHNpZ25hbCAodXBkYXRlZCBvbmx5IGFmdGVyIHByb21pc2VzIHNldHRsZSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBBWERhdGFUYWJsZUNzc0NsYXNzQ2FjaGUge1xuICBwcml2YXRlIGdlbmVyYXRpb24gPSAwO1xuICBwcml2YXRlIHJlYWRvbmx5IHN5bmNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVuZGluZ1Jlc29sdmVycyA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBQcm9taXNlPHZvaWQ+PigpO1xuICByZWFkb25seSByZXNvbHZlZEFzeW5jOiBXcml0YWJsZVNpZ25hbDxNYXA8c3RyaW5nIHwgbnVtYmVyLCBzdHJpbmc+PiA9IHNpZ25hbChuZXcgTWFwKCkpO1xuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJhdGlvbisrO1xuICAgIHRoaXMucGVuZGluZ1Jlc29sdmVycy5jbGVhcigpO1xuICAgIHRoaXMuc3luY0NhY2hlLmNsZWFyKCk7XG5cbiAgICBpZiAodGhpcy5yZXNvbHZlZEFzeW5jKCkuc2l6ZSA+IDApIHtcbiAgICAgIHRoaXMucmVzb2x2ZWRBc3luYy5zZXQobmV3IE1hcCgpKTtcbiAgICB9XG4gIH1cblxuICByZXNvbHZlKFxuICAgIGNhY2hlS2V5OiBzdHJpbmcgfCBudW1iZXIsXG4gICAgZmFjdG9yeTogKCkgPT4gQVhEYXRhVGFibGVDc3NDbGFzc1ZhbHVlIHwgUHJvbWlzZTxBWERhdGFUYWJsZUNzc0NsYXNzVmFsdWU+LFxuICAgIG9uUmVzb2x2ZWQ6ICgpID0+IHZvaWQsXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYXN5bmNDYWNoZWQgPSB0aGlzLnJlc29sdmVkQXN5bmMoKS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChhc3luY0NhY2hlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYXN5bmNDYWNoZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3luY0NhY2hlLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnN5bmNDYWNoZS5nZXQoY2FjaGVLZXkpID8/ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGZhY3RvcnkoKTtcbiAgICBpZiAoaXNDc3NDbGFzc1Byb21pc2UocmVzdWx0KSkge1xuICAgICAgdGhpcy5zY2hlZHVsZUFzeW5jKGNhY2hlS2V5LCByZXN1bHQsIG9uUmVzb2x2ZWQpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVDc3NDbGFzcyhyZXN1bHQpO1xuICAgIHRoaXMuc3luY0NhY2hlLnNldChjYWNoZUtleSwgbm9ybWFsaXplZCk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlQXN5bmMoXG4gICAgY2FjaGVLZXk6IHN0cmluZyB8IG51bWJlcixcbiAgICBwcm9taXNlOiBQcm9taXNlPEFYRGF0YVRhYmxlQ3NzQ2xhc3NWYWx1ZT4sXG4gICAgb25SZXNvbHZlZDogKCkgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGVuZGluZ1Jlc29sdmVycy5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuZ2VuZXJhdGlvbjtcbiAgICBjb25zdCB0YXNrID0gcHJvbWlzZVxuICAgICAgLnRoZW4oKHZhbHVlKSA9PiBub3JtYWxpemVDc3NDbGFzcyh2YWx1ZSkpXG4gICAgICAuY2F0Y2goKCkgPT4gJycpXG4gICAgICAudGhlbigoY3NzQ2xhc3MpID0+IHtcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuZ2VuZXJhdGlvbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGVuZGluZ1Jlc29sdmVycy5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgICB0aGlzLnJlc29sdmVkQXN5bmMudXBkYXRlKChtYXApID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gbmV3IE1hcChtYXApO1xuICAgICAgICAgIG5leHQuc2V0KGNhY2hlS2V5LCBjc3NDbGFzcyk7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pO1xuICAgICAgICBvblJlc29sdmVkKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMucGVuZGluZ1Jlc29sdmVycy5zZXQoY2FjaGVLZXksIHRhc2spO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVDc3NDbGFzcyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudHJpbSgpIDogJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Nzc0NsYXNzUHJvbWlzZShcbiAgdmFsdWU6IEFYRGF0YVRhYmxlQ3NzQ2xhc3NWYWx1ZSB8IFByb21pc2U8QVhEYXRhVGFibGVDc3NDbGFzc1ZhbHVlPixcbik6IHZhbHVlIGlzIFByb21pc2U8QVhEYXRhVGFibGVDc3NDbGFzc1ZhbHVlPiB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiAodmFsdWUgYXMgUHJvbWlzZTxBWERhdGFUYWJsZUNzc0NsYXNzVmFsdWU+KS50aGVuID09PSAnZnVuY3Rpb24nO1xufVxuIl19","import { AXDataSource, MXBaseComponent, convertArrayToDataSource, } from '@acorex/cdk/common';\nimport { AXHighlightService } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, EventEmitter, Injectable, Input, Output, PLATFORM_ID, TemplateRef, inject, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { AXDataTableCssClassCache } from './data-table-css-class.cache';\nimport * as i0 from \"@angular/core\";\nexport const AX_DATA_TABLE_ROW_COLOR_TYPES = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n];\nexport const AX_DATA_TABLE_ROW_HIGHLIGHT_DEFAULT_BADGE = '@acorex:dataTable.rowHighlight.new';\nexport class AXBaseDataTable extends MXBaseComponent {\n /**\n * When set, matching text in the table body is highlighted.\n */\n get highlightText() {\n return this._highlightText;\n }\n set highlightText(value) {\n if (this._highlightText === value) {\n return;\n }\n this._highlightText = value;\n this.scheduleTextHighlight();\n }\n constructor() {\n super();\n this.dataSource = convertArrayToDataSource([]);\n /**\n * For handle nested rows.\n *\n * @defaultValue `parentId`\n */\n this.parentField = undefined;\n /**\n * Field name on each row that indicates whether the row has children (for showing expand icon).\n *\n * @defaultValue `hasChild`\n */\n this.hasChildrenField = 'hasChild';\n this.selectedRowsChange = new EventEmitter();\n this.highlightedRows = signal(new Map(), ...(ngDevMode ? [{ debugName: \"highlightedRows\" }] : []));\n this.rowCssClassCache = new AXDataTableCssClassCache();\n this.cellCssClassCache = new AXDataTableCssClassCache();\n this.highlightService = inject(AXHighlightService);\n this.platformId = inject(PLATFORM_ID);\n this.destroyRef = inject(DestroyRef);\n this.highlightOrder = 0;\n this._selectedRows = signal([], ...(ngDevMode ? [{ debugName: \"_selectedRows\" }] : []));\n this.destroyRef.onDestroy(() => {\n if (this.textHighlightFrame != null) {\n cancelAnimationFrame(this.textHighlightFrame);\n }\n this.clearTextHighlight();\n });\n }\n /**\n * Gets the data source key field name.\n *\n * @returns string - The key field name for the data source.\n */\n getDataSourceKey() {\n return this.dataSource.config.key || 'id';\n }\n /**\n * Temporarily highlights a row with optional pin, badge, and pulse styling.\n * Highlights are cleared on the next grid `refresh()` unless `preserveHighlights` is set.\n */\n highlightRow(row, options = {}) {\n const key = this.resolveRowKey(row);\n if (key == null) {\n return;\n }\n const entry = {\n row: typeof row === 'object' && row !== null ? row : { [this.getDataSourceKey()]: row },\n color: options.color ?? 'success',\n badge: options.badge !== undefined ? options.badge : AX_DATA_TABLE_ROW_HIGHLIGHT_DEFAULT_BADGE,\n pulse: options.pulse ?? true,\n pinned: options.pinned ?? true,\n order: ++this.highlightOrder,\n };\n this.highlightedRows.update((map) => {\n const next = new Map(map);\n next.set(key, entry);\n return next;\n });\n this.onRowHighlightsChanged();\n }\n /**\n * Temporarily highlights multiple rows.\n */\n highlightRows(rows, options = {}) {\n rows.forEach((row) => this.highlightRow(row, options));\n }\n /**\n * Clears all temporary row highlights.\n */\n clearRowHighlights() {\n if (this.highlightedRows().size === 0) {\n return;\n }\n this.highlightedRows.set(new Map());\n this.onRowHighlightsChanged();\n }\n /**\n * Returns the temporary highlight state for a row, if any.\n */\n getRowHighlight(row) {\n const key = this.resolveRowKey(row);\n if (key == null) {\n return null;\n }\n return this.highlightedRows().get(key) ?? null;\n }\n /**\n * Returns the translation key for the row highlight badge, if any.\n */\n getRowHighlightBadge(row) {\n return this.getRowHighlight(row)?.badge ?? null;\n }\n /**\n * Clears cached asynchronous CSS class results for rows and cells.\n */\n clearResolvedCssClasses() {\n this.rowCssClassCache.clear();\n this.cellCssClassCache.clear();\n }\n /**\n * Returns CSS classes for the given row `<tr>`, including temporary highlight styles.\n */\n getRowCssClass(row, rowIndex) {\n const classes = [];\n const highlight = this.getRowHighlight(row);\n if (highlight) {\n classes.push(`ax-row-color-${highlight.color}`);\n if (highlight.pulse) {\n classes.push('ax-row-color-pulse');\n }\n }\n if (this.rowCssClass) {\n classes.push(this.resolveRowCssClass(row, rowIndex));\n }\n return classes.filter(Boolean).join(' ');\n }\n /**\n * Returns CSS classes for a body cell, merging column `cssClass` with `cellCssClass`.\n */\n getCellCssClass(row, column, rowIndex) {\n const columnClass = column.cssClass ?? '';\n if (!this.cellCssClass) {\n return columnClass;\n }\n const resolved = this.resolveCellCssClass(row, column, rowIndex);\n return columnClass ? (resolved ? `${columnClass} ${resolved}` : columnClass) : resolved;\n }\n /**\n * Merges pinned highlighted rows with loaded items.\n */\n mergeRowsWithHighlights(items) {\n const highlights = this.highlightedRows();\n if (highlights.size === 0) {\n return items;\n }\n const itemsByKey = new Map();\n for (const item of items) {\n const itemKey = this.resolveRowKey(item);\n if (itemKey != null) {\n itemsByKey.set(itemKey, item);\n }\n }\n const pinnedEntries = [...highlights.values()].filter((entry) => entry.pinned).sort((a, b) => a.order - b.order);\n const pinnedRows = pinnedEntries.map((entry) => {\n const entryKey = this.resolveRowKey(entry.row);\n if (entryKey != null && itemsByKey.has(entryKey)) {\n return itemsByKey.get(entryKey);\n }\n return entry.row;\n });\n const pinnedKeys = new Set(pinnedEntries.map((entry) => this.resolveRowKey(entry.row)).filter((key) => key != null));\n const rest = items.filter((item) => {\n const itemKey = this.resolveRowKey(item);\n return itemKey == null || !pinnedKeys.has(itemKey);\n });\n return [...pinnedRows, ...rest];\n }\n resolveRowKey(row) {\n const keyField = this.getDataSourceKey();\n if (row == null) {\n return null;\n }\n if (typeof row === 'object') {\n const value = row[keyField];\n if (value == null || value === '') {\n return null;\n }\n return value;\n }\n return row;\n }\n onCssClassResolved() {\n this.scheduleTextHighlight();\n }\n /**\n * Schedules text highlighting after the current render frame.\n */\n scheduleTextHighlight() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (this.textHighlightFrame != null) {\n cancelAnimationFrame(this.textHighlightFrame);\n }\n this.textHighlightFrame = requestAnimationFrame(() => {\n this.textHighlightFrame = undefined;\n this.applyTextHighlight();\n });\n }\n /**\n * Returns the DOM root used for text highlighting.\n */\n getTextHighlightRoot() {\n const host = this.getHostElement();\n const root = host.querySelector('.ax-data-table-wrapper') ??\n host.querySelector('.ax-body-content') ??\n host;\n root.setAttribute('data-ax-highlight-root', this.id);\n return root;\n }\n getTextHighlightSelector() {\n return `[data-ax-highlight-root=\"${this.id}\"] tbody td`;\n }\n applyTextHighlight() {\n const query = this._highlightText?.trim();\n const selector = this.getTextHighlightSelector();\n if (!query) {\n this.highlightService.clear(selector);\n return;\n }\n if (!this.getTextHighlightRoot()) {\n return;\n }\n this.highlightService.highlight(selector, query);\n }\n clearTextHighlight() {\n this.highlightService.clear(this.getTextHighlightSelector());\n }\n resolveRowCssClass(row, rowIndex) {\n const cacheKey = this.resolveRowCssClassCacheKey(row, rowIndex);\n return this.rowCssClassCache.resolve(cacheKey, () => this.rowCssClass(row, rowIndex), () => this.onCssClassResolved());\n }\n resolveCellCssClass(row, column, rowIndex) {\n const cacheKey = this.resolveCellCssClassCacheKey(row, column, rowIndex);\n return this.cellCssClassCache.resolve(cacheKey, () => this.cellCssClass(row, column, rowIndex), () => this.onCssClassResolved());\n }\n resolveRowCssClassCacheKey(row, rowIndex) {\n const key = this.resolveRowKey(row);\n return key != null ? `r:${key}:${rowIndex}` : `r:${rowIndex}`;\n }\n resolveCellCssClassCacheKey(row, column, rowIndex) {\n const key = this.resolveRowKey(row);\n return key != null ? `c:${key}:${column.name}:${rowIndex}` : `c:${column.name}:${rowIndex}`;\n }\n get selectedRows() {\n return this._selectedRows();\n }\n set selectedRows(v) {\n if (!isEqual(this._selectedRows(), v)) {\n this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n }\n /**\n * Expands a row to show its children.\n *\n * @param row - The row data to expand.\n * @returns Promise<void> - Promise that resolves when expansion is complete.\n */\n async expandRow(row) {\n // Scenario 1: Row details template without nested children\n if (this.rowDetailsTemplate && !this.parentField) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: null,\n });\n }\n // Scenario 2: Children already exist in the row data\n else if (row.data['__meta__.expanded'] || row.data.children != undefined) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: row.data.children,\n });\n }\n // Scenario 3: Fetch children from datasource using parentField\n else {\n const key = this.getDataSourceKey();\n const filter = {\n field: this.parentField,\n operator: {\n type: 'equal',\n },\n value: row['data'][key],\n };\n const expandedItems = await this.dataSource.getItemsByFilter(filter);\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: expandedItems.items,\n });\n }\n }\n /**\n * Refreshes the children of a specific item.\n *\n * @param id - The ID of the item whose children should be refreshed.\n * @returns Promise<void> - Promise that resolves when refresh is complete.\n */\n async refreshItemChildren(id) {\n this.dataSource.onItemRefreshChildren.next({\n id,\n });\n }\n /**\n * Selects one or more rows.\n *\n * @param rows - The rows to select.\n * @returns void - No return value.\n */\n selectRows(...rows) {\n const key = this.getDataSourceKey();\n const selectRowIds = this.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n const newRows = rows.filter((nr) => !selectRowIds.includes(typeof nr === 'object' ? nr[key] : nr));\n this.selectedRows = this.selectedRows.concat(newRows);\n //this.selectedRows = _.uniq(this.selectedRows.concat(rows));\n }\n /**\n * Unselects one or more rows.\n *\n * @param rows - The rows to unselect.\n * @returns void - No return value.\n */\n unSelectRows(...rows) {\n const key = this.getDataSourceKey();\n const removedRowIds = rows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n this.selectedRows = this.selectedRows.filter((c) => !removedRowIds.includes(typeof c === 'object' ? c[key] : c));\n //this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, decorators: [{\n type: Injectable\n }], ctorParameters: () => [], propDecorators: { dataSource: [{\n type: Input\n }], parentField: [{\n type: Input\n }], hasChildrenField: [{\n type: Input\n }], rowDetailsTemplate: [{\n type: Input\n }], rowCssClass: [{\n type: Input\n }], cellCssClass: [{\n type: Input\n }], highlightText: [{\n type: Input\n }], selectedRowsChange: [{\n type: Output\n }], selectedRows: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYXRhLXRhYmxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvYmFzZS1kYXRhLXRhYmxlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBSVosZUFBZSxFQUNmLHdCQUF3QixHQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWtCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsd0JBQXdCLEVBQWlDLE1BQU0sOEJBQThCLENBQUM7O0FBMkJ2RyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBOEI7SUFDdEUsU0FBUztJQUNULFdBQVc7SUFDWCxTQUFTO0lBQ1QsU0FBUztJQUNULFFBQVE7Q0FDVCxDQUFDO0FBNkNGLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFHLG9DQUFvQyxDQUFDO0FBRzlGLE1BQU0sT0FBZ0IsZUFBZ0IsU0FBUSxlQUFlO0lBd0MzRDs7T0FFRztJQUNILElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsS0FBeUI7UUFDekMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGNB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QixLQUFLO2dCQVFOLFdBQVc7c0JBRFYsS0FBSztnQkFTTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQVNOLFlBQVk7c0JBRFgsS0FBSztnQkFPRixhQUFhO3NCQURoQixLQUFLO2dCQWNOLGtCQUFrQjtzQkFEakIsTUFBTTtnQkEwU0ksWUFBWTtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYRGF0YVNvdXJjZSxcbiAgQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uLFxuICBBWEV2ZW50LFxuICBBWFN0eWxlQ29sb3JUeXBlLFxuICBNWEJhc2VDb21wb25lbnQsXG4gIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZSxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYSGlnaGxpZ2h0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIElucHV0LCBPdXRwdXQsIFBMQVRGT1JNX0lELCBUZW1wbGF0ZVJlZiwgV3JpdGFibGVTaWduYWwsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ3NzQ2xhc3NDYWNoZSwgdHlwZSBBWERhdGFUYWJsZUNzc0NsYXNzVmFsdWUgfSBmcm9tICcuL2RhdGEtdGFibGUtY3NzLWNsYXNzLmNhY2hlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCBleHRlbmRzIEFYRXZlbnQge1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93Q2xpY2sgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICBkYXRhPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgdHlwZTogJ3N0YXJ0JyB8ICdlbmQnO1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93RGJDbGljayBleHRlbmRzIEFYRGF0YVRhYmxlUm93Q2xpY2sge31cblxuZXhwb3J0IHR5cGUgQVhEYXRhVGFibGVMb29rID0gJ2NsYXNzaWMnIHwgJ21pbmltYWwnO1xuXG4vKipcbiAqIFNlbWFudGljIHJvdyBiYWNrZ3JvdW5kIGNvbG9ycyBzdXBwb3J0ZWQgYnkgdGhlIGRhdGEgdGFibGUuXG4gKi9cbmV4cG9ydCB0eXBlIEFYRGF0YVRhYmxlUm93Q29sb3JUeXBlID0gRXhjbHVkZTxBWFN0eWxlQ29sb3JUeXBlLCAnZGVmYXVsdCc+O1xuXG5leHBvcnQgY29uc3QgQVhfREFUQV9UQUJMRV9ST1dfQ09MT1JfVFlQRVM6IEFYRGF0YVRhYmxlUm93Q29sb3JUeXBlW10gPSBbXG4gICdwcmltYXJ5JyxcbiAgJ3NlY29uZGFyeScsXG4gICdzdWNjZXNzJyxcbiAgJ3dhcm5pbmcnLFxuICAnZGFuZ2VyJyxcbl07XG5cbi8qKiBTeW5jIG9yIG9wdGlvbmFsIENTUyBjbGFzcyBzdHJpbmcgcmV0dXJuZWQgYnkgYHJvd0Nzc0NsYXNzYCAvIGBjZWxsQ3NzQ2xhc3NgLiAqL1xuZXhwb3J0IHR5cGUgeyBBWERhdGFUYWJsZUNzc0NsYXNzVmFsdWUgfSBmcm9tICcuL2RhdGEtdGFibGUtY3NzLWNsYXNzLmNhY2hlJztcblxuLyoqIFJvdyBDU1MgY2xhc3MgcmVzb2x2ZXI7IG1heSByZXR1cm4gYSB2YWx1ZSBzeW5jaHJvbm91c2x5IG9yIGFzIGEgYFByb21pc2VgLiAqL1xuZXhwb3J0IHR5cGUgQVhEYXRhVGFibGVSb3dDc3NDbGFzc1Jlc29sdmVyID0gKFxuICByb3c6IHVua25vd24sXG4gIHJvd0luZGV4OiBudW1iZXIsXG4pID0+IEFYRGF0YVRhYmxlQ3NzQ2xhc3NWYWx1ZSB8IFByb21pc2U8QVhEYXRhVGFibGVDc3NDbGFzc1ZhbHVlPjtcblxuLyoqIENlbGwgQ1NTIGNsYXNzIHJlc29sdmVyOyBtYXkgcmV0dXJuIGEgdmFsdWUgc3luY2hyb25vdXNseSBvciBhcyBhIGBQcm9taXNlYC4gKi9cbmV4cG9ydCB0eXBlIEFYRGF0YVRhYmxlQ2VsbENzc0NsYXNzUmVzb2x2ZXIgPSAoXG4gIHJvdzogdW5rbm93bixcbiAgY29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgcm93SW5kZXg6IG51bWJlcixcbikgPT4gQVhEYXRhVGFibGVDc3NDbGFzc1ZhbHVlIHwgUHJvbWlzZTxBWERhdGFUYWJsZUNzc0NsYXNzVmFsdWU+O1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRlbXBvcmFyaWx5IGhpZ2hsaWdodGluZyBhIHJvdyAoZS5nLiBhZnRlciBjcmVhdGUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0T3B0aW9ucyB7XG4gIC8qKiBTZW1hbnRpYyByb3cgYmFja2dyb3VuZCBjb2xvci4gQGRlZmF1bHRWYWx1ZSBgJ3N1Y2Nlc3MnYCAqL1xuICBjb2xvcj86IEFYRGF0YVRhYmxlUm93Q29sb3JUeXBlO1xuICAvKipcbiAgICogVHJhbnNsYXRpb24ga2V5IGZvciB0aGUgcm93IGJhZGdlLlxuICAgKiBQYXNzIGBudWxsYCB0byBoaWRlIHRoZSBiYWRnZS5cbiAgICogQGRlZmF1bHRWYWx1ZSBgJ0BhY29yZXg6ZGF0YVRhYmxlLnJvd0hpZ2hsaWdodC5uZXcnYFxuICAgKi9cbiAgYmFkZ2U/OiBzdHJpbmcgfCBudWxsO1xuICAvKiogV2hldGhlciB0aGUgcm93IGJhY2tncm91bmQgc2hvdWxkIHB1bHNlLiBAZGVmYXVsdFZhbHVlIGB0cnVlYCAqL1xuICBwdWxzZT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSByb3cgc2hvdWxkIGJlIHBpbm5lZCBhYm92ZSBvdGhlciByb3dzIHVudGlsIHJlZnJlc2guIEBkZWZhdWx0VmFsdWUgYHRydWVgICovXG4gIHBpbm5lZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRhVGFibGVSb3dIaWdobGlnaHQge1xuICByb3c6IHVua25vd247XG4gIGNvbG9yOiBBWERhdGFUYWJsZVJvd0NvbG9yVHlwZTtcbiAgYmFkZ2U6IHN0cmluZyB8IG51bGw7XG4gIHB1bHNlOiBib29sZWFuO1xuICBwaW5uZWQ6IGJvb2xlYW47XG4gIG9yZGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBBWF9EQVRBX1RBQkxFX1JPV19ISUdITElHSFRfREVGQVVMVF9CQURHRSA9ICdAYWNvcmV4OmRhdGFUYWJsZS5yb3dIaWdobGlnaHQubmV3JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZURhdGFUYWJsZSBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZTx1bmtub3duPiA9IGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZShbXSk7XG5cbiAgLyoqXG4gICAqIEZvciBoYW5kbGUgbmVzdGVkIHJvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHBhcmVudElkYFxuICAgKi9cbiAgQElucHV0KClcbiAgcGFyZW50RmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmllbGQgbmFtZSBvbiBlYWNoIHJvdyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSByb3cgaGFzIGNoaWxkcmVuIChmb3Igc2hvd2luZyBleHBhbmQgaWNvbikuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYGhhc0NoaWxkYFxuICAgKi9cbiAgQElucHV0KClcbiAgaGFzQ2hpbGRyZW5GaWVsZCA9ICdoYXNDaGlsZCc7XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIGZvciBleHBhbmRlZCBjdXN0b20gcm93IGNvbnRlbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICByb3dEZXRhaWxzVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmVzb2x2ZXMgY3VzdG9tIENTUyBjbGFzc2VzIGZvciBhIHJvdyBgPHRyPmAuXG4gICAqIFN1cHBvcnRzIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgKGBQcm9taXNlYCkgcmV0dXJuIHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd0Nzc0NsYXNzPzogQVhEYXRhVGFibGVSb3dDc3NDbGFzc1Jlc29sdmVyO1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBjdXN0b20gQ1NTIGNsYXNzZXMgZm9yIGFuIGluZGl2aWR1YWwgYm9keSBjZWxsIGA8dGQ+YC5cbiAgICogQ29sdW1uIGBjc3NDbGFzc2AgaXMgcHJlc2VydmVkIGFuZCBtZXJnZWQgd2l0aCB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAqIFN1cHBvcnRzIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgKGBQcm9taXNlYCkgcmV0dXJuIHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNlbGxDc3NDbGFzcz86IEFYRGF0YVRhYmxlQ2VsbENzc0NsYXNzUmVzb2x2ZXI7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0LCBtYXRjaGluZyB0ZXh0IGluIHRoZSB0YWJsZSBib2R5IGlzIGhpZ2hsaWdodGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGhpZ2hsaWdodFRleHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faGlnaGxpZ2h0VGV4dDtcbiAgfVxuICBzZXQgaGlnaGxpZ2h0VGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuX2hpZ2hsaWdodFRleHQgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faGlnaGxpZ2h0VGV4dCA9IHZhbHVlO1xuICAgIHRoaXMuc2NoZWR1bGVUZXh0SGlnaGxpZ2h0KCk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bltdPiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bltdPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBoaWdobGlnaHRlZFJvd3M6IFdyaXRhYmxlU2lnbmFsPE1hcDxzdHJpbmcgfCBudW1iZXIsIEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0Pj4gPSBzaWduYWwobmV3IE1hcCgpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvd0Nzc0NsYXNzQ2FjaGUgPSBuZXcgQVhEYXRhVGFibGVDc3NDbGFzc0NhY2hlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2VsbENzc0NsYXNzQ2FjaGUgPSBuZXcgQVhEYXRhVGFibGVDc3NDbGFzc0NhY2hlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0U2VydmljZSA9IGluamVjdChBWEhpZ2hsaWdodFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0VGV4dD86IHN0cmluZztcbiAgcHJpdmF0ZSBoaWdobGlnaHRPcmRlciA9IDA7XG4gIHByaXZhdGUgdGV4dEhpZ2hsaWdodEZyYW1lPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy50ZXh0SGlnaGxpZ2h0RnJhbWUgIT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnRleHRIaWdobGlnaHRGcmFtZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xlYXJUZXh0SGlnaGxpZ2h0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGF0YSBzb3VyY2Uga2V5IGZpZWxkIG5hbWUuXG4gICAqXG4gICAqIEByZXR1cm5zIHN0cmluZyAtIFRoZSBrZXkgZmllbGQgbmFtZSBmb3IgdGhlIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGdldERhdGFTb3VyY2VLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlLmNvbmZpZy5rZXkgfHwgJ2lkJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBoaWdobGlnaHRzIGEgcm93IHdpdGggb3B0aW9uYWwgcGluLCBiYWRnZSwgYW5kIHB1bHNlIHN0eWxpbmcuXG4gICAqIEhpZ2hsaWdodHMgYXJlIGNsZWFyZWQgb24gdGhlIG5leHQgZ3JpZCBgcmVmcmVzaCgpYCB1bmxlc3MgYHByZXNlcnZlSGlnaGxpZ2h0c2AgaXMgc2V0LlxuICAgKi9cbiAgcHVibGljIGhpZ2hsaWdodFJvdyhyb3c6IHVua25vd24sIG9wdGlvbnM6IEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5yZXNvbHZlUm93S2V5KHJvdyk7XG4gICAgaWYgKGtleSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0ID0ge1xuICAgICAgcm93OiB0eXBlb2Ygcm93ID09PSAnb2JqZWN0JyAmJiByb3cgIT09IG51bGwgPyByb3cgOiB7IFt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV06IHJvdyB9LFxuICAgICAgY29sb3I6IG9wdGlvbnMuY29sb3IgPz8gJ3N1Y2Nlc3MnLFxuICAgICAgYmFkZ2U6IG9wdGlvbnMuYmFkZ2UgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuYmFkZ2UgOiBBWF9EQVRBX1RBQkxFX1JPV19ISUdITElHSFRfREVGQVVMVF9CQURHRSxcbiAgICAgIHB1bHNlOiBvcHRpb25zLnB1bHNlID8/IHRydWUsXG4gICAgICBwaW5uZWQ6IG9wdGlvbnMucGlubmVkID8/IHRydWUsXG4gICAgICBvcmRlcjogKyt0aGlzLmhpZ2hsaWdodE9yZGVyLFxuICAgIH07XG5cbiAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIG5leHQuc2V0KGtleSwgZW50cnkpO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uUm93SGlnaGxpZ2h0c0NoYW5nZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBoaWdobGlnaHRzIG11bHRpcGxlIHJvd3MuXG4gICAqL1xuICBwdWJsaWMgaGlnaGxpZ2h0Um93cyhyb3dzOiB1bmtub3duW10sIG9wdGlvbnM6IEFYRGF0YVRhYmxlUm93SGlnaGxpZ2h0T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHRoaXMuaGlnaGxpZ2h0Um93KHJvdywgb3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGVtcG9yYXJ5IHJvdyBoaWdobGlnaHRzLlxuICAgKi9cbiAgcHVibGljIGNsZWFyUm93SGlnaGxpZ2h0cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZFJvd3MoKS5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc2V0KG5ldyBNYXAoKSk7XG4gICAgdGhpcy5vblJvd0hpZ2hsaWdodHNDaGFuZ2VkKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IGhpZ2hsaWdodCBzdGF0ZSBmb3IgYSByb3csIGlmIGFueS5cbiAgICovXG4gIHB1YmxpYyBnZXRSb3dIaWdobGlnaHQocm93OiB1bmtub3duKTogQVhEYXRhVGFibGVSb3dIaWdobGlnaHQgfCBudWxsIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnJlc29sdmVSb3dLZXkocm93KTtcbiAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkUm93cygpLmdldChrZXkpID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdHJhbnNsYXRpb24ga2V5IGZvciB0aGUgcm93IGhpZ2hsaWdodCBiYWRnZSwgaWYgYW55LlxuICAgKi9cbiAgcHVibGljIGdldFJvd0hpZ2hsaWdodEJhZGdlKHJvdzogdW5rbm93bik6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldFJvd0hpZ2hsaWdodChyb3cpPy5iYWRnZSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBjYWNoZWQgYXN5bmNocm9ub3VzIENTUyBjbGFzcyByZXN1bHRzIGZvciByb3dzIGFuZCBjZWxscy5cbiAgICovXG4gIHB1YmxpYyBjbGVhclJlc29sdmVkQ3NzQ2xhc3NlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0Nzc0NsYXNzQ2FjaGUuY2xlYXIoKTtcbiAgICB0aGlzLmNlbGxDc3NDbGFzc0NhY2hlLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBDU1MgY2xhc3NlcyBmb3IgdGhlIGdpdmVuIHJvdyBgPHRyPmAsIGluY2x1ZGluZyB0ZW1wb3JhcnkgaGlnaGxpZ2h0IHN0eWxlcy5cbiAgICovXG4gIHB1YmxpYyBnZXRSb3dDc3NDbGFzcyhyb3c6IHVua25vd24sIHJvd0luZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgaGlnaGxpZ2h0ID0gdGhpcy5nZXRSb3dIaWdobGlnaHQocm93KTtcblxuICAgIGlmIChoaWdobGlnaHQpIHtcbiAgICAgIGNsYXNzZXMucHVzaChgYXgtcm93LWNvbG9yLSR7aGlnaGxpZ2h0LmNvbG9yfWApO1xuICAgICAgaWYgKGhpZ2hsaWdodC5wdWxzZSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goJ2F4LXJvdy1jb2xvci1wdWxzZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJvd0Nzc0NsYXNzKSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5yZXNvbHZlUm93Q3NzQ2xhc3Mocm93LCByb3dJbmRleCkpO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBDU1MgY2xhc3NlcyBmb3IgYSBib2R5IGNlbGwsIG1lcmdpbmcgY29sdW1uIGBjc3NDbGFzc2Agd2l0aCBgY2VsbENzc0NsYXNzYC5cbiAgICovXG4gIHB1YmxpYyBnZXRDZWxsQ3NzQ2xhc3Mocm93OiB1bmtub3duLCBjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LCByb3dJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2x1bW5DbGFzcyA9IGNvbHVtbi5jc3NDbGFzcyA/PyAnJztcblxuICAgIGlmICghdGhpcy5jZWxsQ3NzQ2xhc3MpIHtcbiAgICAgIHJldHVybiBjb2x1bW5DbGFzcztcbiAgICB9XG5cbiAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZUNlbGxDc3NDbGFzcyhyb3csIGNvbHVtbiwgcm93SW5kZXgpO1xuICAgIHJldHVybiBjb2x1bW5DbGFzcyA/IChyZXNvbHZlZCA/IGAke2NvbHVtbkNsYXNzfSAke3Jlc29sdmVkfWAgOiBjb2x1bW5DbGFzcykgOiByZXNvbHZlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgcGlubmVkIGhpZ2hsaWdodGVkIHJvd3Mgd2l0aCBsb2FkZWQgaXRlbXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgbWVyZ2VSb3dzV2l0aEhpZ2hsaWdodHMoaXRlbXM6IHVua25vd25bXSk6IHVua25vd25bXSB7XG4gICAgY29uc3QgaGlnaGxpZ2h0cyA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzKCk7XG4gICAgaWYgKGhpZ2hsaWdodHMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zQnlLZXkgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgdW5rbm93bj4oKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLnJlc29sdmVSb3dLZXkoaXRlbSk7XG4gICAgICBpZiAoaXRlbUtleSAhPSBudWxsKSB7XG4gICAgICAgIGl0ZW1zQnlLZXkuc2V0KGl0ZW1LZXksIGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBpbm5lZEVudHJpZXMgPSBbLi4uaGlnaGxpZ2h0cy52YWx1ZXMoKV0uZmlsdGVyKChlbnRyeSkgPT4gZW50cnkucGlubmVkKS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG5cbiAgICBjb25zdCBwaW5uZWRSb3dzID0gcGlubmVkRW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUtleSA9IHRoaXMucmVzb2x2ZVJvd0tleShlbnRyeS5yb3cpO1xuICAgICAgaWYgKGVudHJ5S2V5ICE9IG51bGwgJiYgaXRlbXNCeUtleS5oYXMoZW50cnlLZXkpKSB7XG4gICAgICAgIHJldHVybiBpdGVtc0J5S2V5LmdldChlbnRyeUtleSkgYXMgdW5rbm93bjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudHJ5LnJvdztcbiAgICB9KTtcblxuICAgIGNvbnN0IHBpbm5lZEtleXMgPSBuZXcgU2V0KFxuICAgICAgcGlubmVkRW50cmllcy5tYXAoKGVudHJ5KSA9PiB0aGlzLnJlc29sdmVSb3dLZXkoZW50cnkucm93KSkuZmlsdGVyKChrZXkpOiBrZXkgaXMgc3RyaW5nIHwgbnVtYmVyID0+IGtleSAhPSBudWxsKSxcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdCA9IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgaXRlbUtleSA9IHRoaXMucmVzb2x2ZVJvd0tleShpdGVtKTtcbiAgICAgIHJldHVybiBpdGVtS2V5ID09IG51bGwgfHwgIXBpbm5lZEtleXMuaGFzKGl0ZW1LZXkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFsuLi5waW5uZWRSb3dzLCAuLi5yZXN0XTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlUm93S2V5KHJvdzogdW5rbm93bik6IHN0cmluZyB8IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IGtleUZpZWxkID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgaWYgKHJvdyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5RmllbGRdO1xuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWUgYXMgc3RyaW5nIHwgbnVtYmVyO1xuICAgIH1cblxuICAgIHJldHVybiByb3cgYXMgc3RyaW5nIHwgbnVtYmVyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9uUm93SGlnaGxpZ2h0c0NoYW5nZWQoKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgb25Dc3NDbGFzc1Jlc29sdmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2NoZWR1bGVUZXh0SGlnaGxpZ2h0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2NoZWR1bGVzIHRleHQgaGlnaGxpZ2h0aW5nIGFmdGVyIHRoZSBjdXJyZW50IHJlbmRlciBmcmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBzY2hlZHVsZVRleHRIaWdobGlnaHQoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGV4dEhpZ2hsaWdodEZyYW1lICE9IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGV4dEhpZ2hsaWdodEZyYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLnRleHRIaWdobGlnaHRGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLnRleHRIaWdobGlnaHRGcmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuYXBwbHlUZXh0SGlnaGxpZ2h0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgRE9NIHJvb3QgdXNlZCBmb3IgdGV4dCBoaWdobGlnaHRpbmcuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VGV4dEhpZ2hsaWdodFJvb3QoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5nZXRIb3N0RWxlbWVudDxIVE1MRWxlbWVudD4oKTtcbiAgICBjb25zdCByb290ID1cbiAgICAgIGhvc3QucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5heC1kYXRhLXRhYmxlLXdyYXBwZXInKSA/P1xuICAgICAgaG9zdC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmF4LWJvZHktY29udGVudCcpID8/XG4gICAgICBob3N0O1xuXG4gICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXgtaGlnaGxpZ2h0LXJvb3QnLCB0aGlzLmlkKTtcbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUZXh0SGlnaGxpZ2h0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFtkYXRhLWF4LWhpZ2hsaWdodC1yb290PVwiJHt0aGlzLmlkfVwiXSB0Ym9keSB0ZGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXBwbHlUZXh0SGlnaGxpZ2h0KCk6IHZvaWQge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5faGlnaGxpZ2h0VGV4dD8udHJpbSgpO1xuICAgIGNvbnN0IHNlbGVjdG9yID0gdGhpcy5nZXRUZXh0SGlnaGxpZ2h0U2VsZWN0b3IoKTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0U2VydmljZS5jbGVhcihzZWxlY3Rvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdldFRleHRIaWdobGlnaHRSb290KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhpZ2hsaWdodFNlcnZpY2UuaGlnaGxpZ2h0KHNlbGVjdG9yLCBxdWVyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYXJUZXh0SGlnaGxpZ2h0KCk6IHZvaWQge1xuICAgIHRoaXMuaGlnaGxpZ2h0U2VydmljZS5jbGVhcih0aGlzLmdldFRleHRIaWdobGlnaHRTZWxlY3RvcigpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVJvd0Nzc0NsYXNzKHJvdzogdW5rbm93biwgcm93SW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLnJlc29sdmVSb3dDc3NDbGFzc0NhY2hlS2V5KHJvdywgcm93SW5kZXgpO1xuICAgIHJldHVybiB0aGlzLnJvd0Nzc0NsYXNzQ2FjaGUucmVzb2x2ZShcbiAgICAgIGNhY2hlS2V5LFxuICAgICAgKCkgPT4gdGhpcy5yb3dDc3NDbGFzcyEocm93LCByb3dJbmRleCksXG4gICAgICAoKSA9PiB0aGlzLm9uQ3NzQ2xhc3NSZXNvbHZlZCgpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDZWxsQ3NzQ2xhc3Mocm93OiB1bmtub3duLCBjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LCByb3dJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMucmVzb2x2ZUNlbGxDc3NDbGFzc0NhY2hlS2V5KHJvdywgY29sdW1uLCByb3dJbmRleCk7XG4gICAgcmV0dXJuIHRoaXMuY2VsbENzc0NsYXNzQ2FjaGUucmVzb2x2ZShcbiAgICAgIGNhY2hlS2V5LFxuICAgICAgKCkgPT4gdGhpcy5jZWxsQ3NzQ2xhc3MhKHJvdywgY29sdW1uLCByb3dJbmRleCksXG4gICAgICAoKSA9PiB0aGlzLm9uQ3NzQ2xhc3NSZXNvbHZlZCgpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3dDc3NDbGFzc0NhY2hlS2V5KHJvdzogdW5rbm93biwgcm93SW5kZXg6IG51bWJlcik6IHN0cmluZyB8IG51bWJlciB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5yZXNvbHZlUm93S2V5KHJvdyk7XG4gICAgcmV0dXJuIGtleSAhPSBudWxsID8gYHI6JHtrZXl9OiR7cm93SW5kZXh9YCA6IGByOiR7cm93SW5kZXh9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNlbGxDc3NDbGFzc0NhY2hlS2V5KFxuICAgIHJvdzogdW5rbm93bixcbiAgICBjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgIHJvd0luZGV4OiBudW1iZXIsXG4gICk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5yZXNvbHZlUm93S2V5KHJvdyk7XG4gICAgcmV0dXJuIGtleSAhPSBudWxsID8gYGM6JHtrZXl9OiR7Y29sdW1uLm5hbWV9OiR7cm93SW5kZXh9YCA6IGBjOiR7Y29sdW1uLm5hbWV9OiR7cm93SW5kZXh9YDtcbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdGVkUm93czogV3JpdGFibGVTaWduYWw8dW5rbm93bltdPiA9IHNpZ25hbChbXSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRSb3dzKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUm93cygpO1xuICB9XG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRSb3dzKHY6IHVua25vd25bXSkge1xuICAgIGlmICghaXNFcXVhbCh0aGlzLl9zZWxlY3RlZFJvd3MoKSwgdikpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5zZXQodik7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZS5lbWl0KHYpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmRzIGEgcm93IHRvIHNob3cgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0gcm93IC0gVGhlIHJvdyBkYXRhIHRvIGV4cGFuZC5cbiAgICogQHJldHVybnMgUHJvbWlzZTx2b2lkPiAtIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGV4cGFuc2lvbiBpcyBjb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBleHBhbmRSb3cocm93OiBhbnkpIHtcbiAgICAvLyBTY2VuYXJpbyAxOiBSb3cgZGV0YWlscyB0ZW1wbGF0ZSB3aXRob3V0IG5lc3RlZCBjaGlsZHJlblxuICAgIGlmICh0aGlzLnJvd0RldGFpbHNUZW1wbGF0ZSAmJiAhdGhpcy5wYXJlbnRGaWVsZCkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLm9uSXRlbUV4cGFuZGVkLm5leHQoe1xuICAgICAgICBleHBhbmRlZEl0ZW06IHJvdy5kYXRhLFxuICAgICAgICBjaGlsZHJlbjogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBTY2VuYXJpbyAyOiBDaGlsZHJlbiBhbHJlYWR5IGV4aXN0IGluIHRoZSByb3cgZGF0YVxuICAgIGVsc2UgaWYgKHJvdy5kYXRhWydfX21ldGFfXy5leHBhbmRlZCddIHx8IHJvdy5kYXRhLmNoaWxkcmVuICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLm9uSXRlbUV4cGFuZGVkLm5leHQoe1xuICAgICAgICBleHBhbmRlZEl0ZW06IHJvdy5kYXRhLFxuICAgICAgICBjaGlsZHJlbjogcm93LmRhdGEuY2hpbGRyZW4sXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gU2NlbmFyaW8gMzogRmV0Y2ggY2hpbGRyZW4gZnJvbSBkYXRhc291cmNlIHVzaW5nIHBhcmVudEZpZWxkXG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdldERhdGFTb3VyY2VLZXkoKTtcbiAgICAgIGNvbnN0IGZpbHRlcjogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uID0ge1xuICAgICAgICBmaWVsZDogdGhpcy5wYXJlbnRGaWVsZCxcbiAgICAgICAgb3BlcmF0b3I6IHtcbiAgICAgICAgICB0eXBlOiAnZXF1YWwnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZTogcm93WydkYXRhJ11ba2V5XSxcbiAgICAgIH07XG4gICAgICBjb25zdCBleHBhbmRlZEl0ZW1zID0gYXdhaXQgdGhpcy5kYXRhU291cmNlLmdldEl0ZW1zQnlGaWx0ZXIoZmlsdGVyKTtcblxuICAgICAgdGhpcy5kYXRhU291cmNlLm9uSXRlbUV4cGFuZGVkLm5leHQoe1xuICAgICAgICBleHBhbmRlZEl0ZW06IHJvdy5kYXRhLFxuICAgICAgICBjaGlsZHJlbjogZXhwYW5kZWRJdGVtcy5pdGVtcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgdGhlIGNoaWxkcmVuIG9mIGEgc3BlY2lmaWMgaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gVGhlIElEIG9mIHRoZSBpdGVtIHdob3NlIGNoaWxkcmVuIHNob3VsZCBiZSByZWZyZXNoZWQuXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD4gLSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiByZWZyZXNoIGlzIGNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hJdGVtQ2hpbGRyZW4oaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1SZWZyZXNoQ2hpbGRyZW4ubmV4dCh7XG4gICAgICBpZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIG9uZSBvciBtb3JlIHJvd3MuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzIC0gVGhlIHJvd3MgdG8gc2VsZWN0LlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdFJvd3MoLi4ucm93czogdW5rbm93bltdKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0Um93SWRzID0gdGhpcy5zZWxlY3RlZFJvd3MubWFwKChzcikgPT4gKHR5cGVvZiBzciA9PT0gJ29iamVjdCcgPyBzcltrZXldIDogc3IpKTtcbiAgICBjb25zdCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKG5yKSA9PiAhc2VsZWN0Um93SWRzLmluY2x1ZGVzKHR5cGVvZiBuciA9PT0gJ29iamVjdCcgPyBucltrZXldIDogbnIpKTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzLmNvbmNhdChuZXdSb3dzKTtcbiAgICAvL3RoaXMuc2VsZWN0ZWRSb3dzID0gXy51bmlxKHRoaXMuc2VsZWN0ZWRSb3dzLmNvbmNhdChyb3dzKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5zZWxlY3RzIG9uZSBvciBtb3JlIHJvd3MuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzIC0gVGhlIHJvd3MgdG8gdW5zZWxlY3QuXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgdW5TZWxlY3RSb3dzKC4uLnJvd3M6IHVua25vd25bXSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RGF0YVNvdXJjZUtleSgpO1xuICAgIGNvbnN0IHJlbW92ZWRSb3dJZHMgPSByb3dzLm1hcCgoc3IpID0+ICh0eXBlb2Ygc3IgPT09ICdvYmplY3QnID8gc3Jba2V5XSA6IHNyKSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5maWx0ZXIoKGMpID0+ICFyZW1vdmVkUm93SWRzLmluY2x1ZGVzKHR5cGVvZiBjID09PSAnb2JqZWN0JyA/IGNba2V5XSA6IGMpKTtcbiAgICAvL3RoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5zZWxlY3RlZFJvd3MuZmlsdGVyKChjKSA9PiAhcm93cy5pbmNsdWRlcyhjKSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnComponent {\n constructor() {\n /**\n * Width of the column.\n * - string: e.g., '180px', '20%'\n * - number: e.g., 180 (treated as pixels)\n * - 'auto': sizes from headers when the table first renders, then refits from row content once data loads\n *\n * @defaultValue 'auto'\n */\n this.width = 'auto';\n this.allowSorting = false;\n this.allowResizing = false;\n /**\n * When true, shows the cell content as tooltip on hover (via `axTooltip`).\n */\n this.hasTitle = false;\n this.sortIndex = undefined;\n this.sortOrder = undefined;\n }\n get cssClass() {\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, decorators: [{\n type: Injectable\n }], propDecorators: { caption: [{\n type: Input\n }], width: [{\n type: Input\n }], fixed: [{\n type: Input\n }], allowSorting: [{\n type: Input\n }], allowResizing: [{\n type: Input\n }], hasTitle: [{\n type: Input\n }], sortIndex: [{\n type: Input\n }], sortOrder: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDOztBQUcvRCxNQUFNLE9BQWdCLDBCQUEwQjtJQURoRDtRQUtFOzs7Ozs7O1dBT0c7UUFFSCxVQUFLLEdBQTZCLE1BQU0sQ0FBQztRQU16QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUVILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsY0FBUyxHQUF1QixTQUFTLENBQUM7UUFHMUMsY0FBUyxHQUE0QixTQUFTLENBQUM7S0FhaEQ7SUFIQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBOUNtQiwwQkFBMEI7a0hBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEL0MsVUFBVTs4QkFHVCxPQUFPO3NCQUROLEtBQUs7Z0JBWU4sS0FBSztzQkFESixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhTb3J0T3JkZXIgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGNhcHRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2lkdGggb2YgdGhlIGNvbHVtbi5cbiAgICogLSBzdHJpbmc6IGUuZy4sICcxODBweCcsICcyMCUnXG4gICAqIC0gbnVtYmVyOiBlLmcuLCAxODAgKHRyZWF0ZWQgYXMgcGl4ZWxzKVxuICAgKiAtICdhdXRvJzogc2l6ZXMgZnJvbSBoZWFkZXJzIHdoZW4gdGhlIHRhYmxlIGZpcnN0IHJlbmRlcnMsIHRoZW4gcmVmaXRzIGZyb20gcm93IGNvbnRlbnQgb25jZSBkYXRhIGxvYWRzXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgJ2F1dG8nXG4gICAqL1xuICBASW5wdXQoKVxuICB3aWR0aDogc3RyaW5nIHwgbnVtYmVyIHwgJ2F1dG8nID0gJ2F1dG8nO1xuXG4gIEBJbnB1dCgpXG4gIGZpeGVkOiAnc3RhcnQnIHwgJ2VuZCcgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgYWxsb3dTb3J0aW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYWxsb3dSZXNpemluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHNob3dzIHRoZSBjZWxsIGNvbnRlbnQgYXMgdG9vbHRpcCBvbiBob3ZlciAodmlhIGBheFRvb2x0aXBgKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhhc1RpdGxlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc29ydEluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgc29ydE9yZGVyOiBBWFNvcnRPcmRlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBhYnN0cmFjdCBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBhYnN0cmFjdCBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIGFic3RyYWN0IGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBhYnN0cmFjdCBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBnZXQgbmFtZSgpOiBzdHJpbmc7XG5cbiAgZ2V0IGNzc0NsYXNzKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, DOCUMENT, ElementRef, HostListener, inject, Input, NgZone, PLATFORM_ID, Renderer2, } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnResizableDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.renderer = inject(Renderer2);\n this.ngZone = inject(NgZone);\n this.cdr = inject(ChangeDetectorRef);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.resize$ = new Subject();\n this.onMouseMoveRawBound = this.onMouseMoveRaw.bind(this);\n this.onMouseUpBound = this.onMouseUp.bind(this);\n this.resize$.pipe(debounceTime(10)).subscribe((event) => this.onMouseMove(event));\n }\n /**\n * Handles mouse down events to initiate column resizing.\n *\n * @param event - The mouse down event.\n * @returns void - No return value.\n */\n onMouseDown(event) {\n if (isPlatformBrowser(this.platformID)) {\n event.stopPropagation();\n this.ngZone.runOutsideAngular(() => {\n this.startX = event.pageX;\n this.startWidth = this.el?.nativeElement?.parentElement.offsetWidth;\n this.document.addEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.addEventListener('mouseup', this.onMouseUpBound);\n });\n this.cdr.detach(); // Detach the change detector\n }\n }\n /**\n * Handles raw mouse move events and forwards them to the debounced resize stream.\n * This method acts as a bridge between the raw DOM event and the debounced onMouseMove method.\n *\n * @param event - The raw mouse move event.\n * @returns void - No return value.\n */\n onMouseMoveRaw(event) {\n this.resize$.next(event);\n }\n /**\n * Handles mouse move events during column resizing.\n *\n * @param event - The mouse move event.\n * @returns void - No return value.\n */\n onMouseMove(event) {\n const newWidth = this.startWidth + (event.pageX - this.startX);\n this.renderer.setStyle(this.el?.nativeElement?.parentElement, 'width', `${newWidth}px`);\n this.column.width = `${newWidth}px`;\n }\n /**\n * Handles mouse up events to complete column resizing.\n *\n * @returns void - No return value.\n */\n onMouseUp() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.removeEventListener('mouseup', this.onMouseUpBound);\n this.cdr.reattach(); // Reattach the change detector\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXDataTableColumnResizableDirective, isStandalone: true, selector: \"[ax-table-column-resizble]\", inputs: { column: [\"ax-table-column-resizble\", \"column\"] }, host: { listeners: { \"mousedown\": \"onMouseDown($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ax-table-column-resizble]' }]\n }], ctorParameters: () => [], propDecorators: { column: [{\n type: Input,\n args: ['ax-table-column-resizble']\n }], onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdqRSxNQUFNLE9BQU8sbUNBQW1DO0lBZ0I5QztRQWZRLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVoQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFHakMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFPMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQywrQkFBK0I7UUFDdEQsQ0FBQztJQUNILENBQUM7OEdBNUVVLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFO3dEQVU1QyxNQUFNO3NCQURaLEtBQUs7dUJBQUMsMEJBQTBCO2dCQXFCakMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theC10YWJsZS1jb2x1bW4tcmVzaXpibGVdJyB9KVxuZXhwb3J0IGNsYXNzIEFYRGF0YVRhYmxlQ29sdW1uUmVzaXphYmxlRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIEBJbnB1dCgnYXgtdGFibGUtY29sdW1uLXJlc2l6YmxlJylcbiAgcHVibGljIGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ7XG4gIHByaXZhdGUgcmVzaXplJCA9IG5ldyBTdWJqZWN0PE1vdXNlRXZlbnQ+KCk7XG4gIHByaXZhdGUgc3RhcnRYOiBudW1iZXI7XG4gIHByaXZhdGUgc3RhcnRXaWR0aDogbnVtYmVyO1xuICBwcml2YXRlIG9uTW91c2VNb3ZlUmF3Qm91bmQ6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbk1vdXNlVXBCb3VuZDogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9uTW91c2VNb3ZlUmF3Qm91bmQgPSB0aGlzLm9uTW91c2VNb3ZlUmF3LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbk1vdXNlVXBCb3VuZCA9IHRoaXMub25Nb3VzZVVwLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZXNpemUkLnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbk1vdXNlTW92ZShldmVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2UgZG93biBldmVudHMgdG8gaW5pdGlhdGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgbW91c2UgZG93biBldmVudC5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xuICAgICAgICB0aGlzLnN0YXJ0V2lkdGggPSB0aGlzLmVsPy5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25Nb3VzZVVwQm91bmQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNkci5kZXRhY2goKTsgLy8gRGV0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyByYXcgbW91c2UgbW92ZSBldmVudHMgYW5kIGZvcndhcmRzIHRoZW0gdG8gdGhlIGRlYm91bmNlZCByZXNpemUgc3RyZWFtLlxuICAgKiBUaGlzIG1ldGhvZCBhY3RzIGFzIGEgYnJpZGdlIGJldHdlZW4gdGhlIHJhdyBET00gZXZlbnQgYW5kIHRoZSBkZWJvdW5jZWQgb25Nb3VzZU1vdmUgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgcmF3IG1vdXNlIG1vdmUgZXZlbnQuXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbk1vdXNlTW92ZVJhdyhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVzaXplJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIG1vdXNlIG1vdmUgZXZlbnRzIGR1cmluZyBjb2x1bW4gcmVzaXppbmcuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBtb3ZlIGV2ZW50LlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIChldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRYKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWw/Lm5hdGl2ZUVsZW1lbnQ/LnBhcmVudEVsZW1lbnQsICd3aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgdGhpcy5jb2x1bW4ud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZSB1cCBldmVudHMgdG8gY29tcGxldGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZVVwKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uTW91c2VVcEJvdW5kKTtcbiAgICAgIHRoaXMuY2RyLnJlYXR0YWNoKCk7IC8vIFJlYXR0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { __decorate, __metadata } from \"tslib\";\nimport { AXComponent } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport { Memoize } from '@acorex/core/memoize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a text column in a data table, supporting header, cell, and footer templates.\n *\n * @category Components\n */\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.initialWidth = '';\n /**\n * Controls the display of an expandable arrow icon beside the cell text.\n * If set to `true`, an arrow icon is shown next to the text, indicating expandability.\n *\n * @defaultValue false\n *\n */\n this.expandHandler = false;\n /**\n * Toggles text wrapping in the cell.\n *\n * @defaultValue false\n */\n this.wrapText = false;\n /**\n * @ignore\n */\n this.formatService = inject(AXFormatService);\n }\n /**\n * Returns the template used for rendering cells.\n * Falls back to a default template if no custom template is provided.\n */\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n /**\n * Returns the template used for rendering the column footer,\n * falling back to a default if not provided.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Retrieves the template used for rendering the column header.\n * Falls back to a default template if none is provided.\n */\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n /**\n * Indicates whether loading functionality is enabled.\n */\n get loadingEnabled() {\n return true;\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Generates a unique name based on the `dataField` value.\n */\n get name() {\n return `cl-${this.dataField}`;\n }\n /**\n * Returns the display text for a row cell. Used for cell tooltip when the column has `hasTitle`.\n */\n getCellDisplayText(rowData) {\n if (rowData == null)\n return '';\n const text = this.getDisplayText(rowData, this.dataField);\n return text != null ? String(text) : '';\n }\n getDisplayText(rowData, dataField) {\n const value = rowData[dataField];\n return !this.format ? value : this.formatService.format(value, this.format, this.formatOptions);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableTextColumnComponent, isStandalone: true, selector: \"ax-text-column\", inputs: { width: \"width\", caption: \"caption\", allowSorting: \"allowSorting\", allowResizing: \"allowResizing\", fixed: \"fixed\", hasTitle: \"hasTitle\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", dataField: \"dataField\", expandHandler: \"expandHandler\", wrapText: \"wrapText\", cellTemplate: \"cellTemplate\", footerTemplate: \"footerTemplate\", headerTemplate: \"headerTemplate\", format: \"format\", formatOptions: \"formatOptions\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ], viewQueries: [{ propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler && (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0)) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\n__decorate([\n Memoize(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, String]),\n __metadata(\"design:returntype\", String)\n], AXDataTableTextColumnComponent.prototype, \"getDisplayText\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler && (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0)) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed', 'hasTitle'],\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], dataField: [{\n type: Input\n }], expandHandler: [{\n type: Input\n }], wrapText: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], getDisplayText: [], format: [{\n type: Input\n }], formatOptions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBeUNILE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwwQkFBMEI7SUF4QzlFOztRQXlDWSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9CLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO1FBRTFCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBVzVCOzs7Ozs7V0FNRztRQUVILGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCOzs7O1dBSUc7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBOEZqQjs7V0FFRztRQUNLLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBbUJqRDtJQXRHQzs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxZ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QkFEbEIsS0FBSztnQkFPRSxvQkFBb0I7c0JBRDNCLFNBQVM7dUJBQUMsTUFBTTtnQkFlVixjQUFjO3NCQURwQixLQUFLO2dCQU9FLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWVaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0Usc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBaURULGNBQWMsTUFTeEIsTUFBTTtzQkFETCxLQUFLO2dCQU9OLGFBQWE7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQGFjb3JleC9jb3JlL21lbW9pemUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUgfSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGEgdGV4dCBjb2x1bW4gaW4gYSBkYXRhIHRhYmxlLCBzdXBwb3J0aW5nIGhlYWRlciwgY2VsbCwgYW5kIGZvb3RlciB0ZW1wbGF0ZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdGV4dC1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPnt7IGNhcHRpb24gfX08L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yXCI+XG4gICAgICAgIEBpZiAoZXhwYW5kSGFuZGxlciAmJiAocm93LmRhdGE/LltncmlkLmhhc0NoaWxkcmVuRmllbGRdICE9PSBmYWxzZSB8fCAocm93LmRhdGE/LmNoaWxkcmVuPy5sZW5ndGggPz8gMCkgPiAwKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVFeHBhbmRSb3cocm93KVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWV4cGFuZC1oYW5kbGVyXCJcbiAgICAgICAgICAgIGlkPVwiYXgtZXhwYW5kLWhhbmRsZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWlubGluZS1zdGFydC5yZW1dPVwicm93LmRhdGE/Ll9fbWV0YV9fPy5sZXZlbCAqIDJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZ1JvdygpID09PSByb3cpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lci10aGlyZCBheC1hbmltYXRlLXR3U3BpbiBheC1hbmltYXRlLWluZmluaXRlXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBpZiAocm93LmRhdGE/Ll9fbWV0YV9fPy5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjdXN0b21Db2xsYXBzZUljb24gfHwgJ2ZhcyBmYS1jaGV2cm9uLWRvd24nXCI+PC9pPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY3VzdG9tRXhwYW5kSWNvbiB8fCAnZmFzIGZhLWNoZXZyb24tcmlnaHQnXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAge3sgZ2V0RGlzcGxheVRleHQocm93LmRhdGEsIHRoaXMuZGF0YUZpZWxkKSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdhbGxvd1NvcnRpbmcnLCAnYWxsb3dSZXNpemluZycsICdmaXhlZCcsICdoYXNUaXRsZSddLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG4gIHByb3RlY3RlZCBsb2FkaW5nUm93ID0gc2lnbmFsKG51bGwpO1xuXG4gIHByb3RlY3RlZCBpbml0aWFsV2lkdGggPSAnJztcblxuICBASW5wdXQoKSBjdXN0b21FeHBhbmRJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1c3RvbUNvbGxhcHNlSWNvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBkYXRhIGZpZWxkIHRvIGRpc3BsYXkgaW4gdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRhdGFGaWVsZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgZGlzcGxheSBvZiBhbiBleHBhbmRhYmxlIGFycm93IGljb24gYmVzaWRlIHRoZSBjZWxsIHRleHQuXG4gICAqIElmIHNldCB0byBgdHJ1ZWAsIGFuIGFycm93IGljb24gaXMgc2hvd24gbmV4dCB0byB0aGUgdGV4dCwgaW5kaWNhdGluZyBleHBhbmRhYmlsaXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBleHBhbmRIYW5kbGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGV4dCB3cmFwcGluZyBpbiB0aGUgY2VsbC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgd3JhcFRleHQgPSBmYWxzZTtcblxuICAvKipcbiAgICogUHJvdmlkZXMgYSBjdXN0b20gdGVtcGxhdGUgZm9yIHJlbmRlcmluZyBjZWxscyB3aXRoaW4gdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NvbnRlbnRDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgY2VsbHMuXG4gICAqIEZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vIGN1c3RvbSB0ZW1wbGF0ZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIGdldCByZW5kZXJDZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmNlbGxUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Q2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBjb2x1bW4gZm9vdGVyLFxuICAgKiBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHRlbXBsYXRlIGZvciByZW5kZXJpbmcgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqIEZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vbmUgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBsb2FkaW5nIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC5cbiAgICovXG4gIGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV4cGFuZFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQocm93KTtcbiAgICBhd2FpdCB0aGlzLmdyaWQuZXhwYW5kUm93KHJvdyk7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgYGRhdGFGaWVsZGAgdmFsdWUuXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY2wtJHt0aGlzLmRhdGFGaWVsZH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpc3BsYXkgdGV4dCBmb3IgYSByb3cgY2VsbC4gVXNlZCBmb3IgY2VsbCB0b29sdGlwIHdoZW4gdGhlIGNvbHVtbiBoYXMgYGhhc1RpdGxlYC5cbiAgICovXG4gIHB1YmxpYyBnZXRDZWxsRGlzcGxheVRleHQocm93RGF0YTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgPT0gbnVsbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmdldERpc3BsYXlUZXh0KHJvd0RhdGEsIHRoaXMuZGF0YUZpZWxkKTtcbiAgICByZXR1cm4gdGV4dCAhPSBudWxsID8gU3RyaW5nKHRleHQpIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuXG4gIEBNZW1vaXplKClcbiAgcHJvdGVjdGVkIGdldERpc3BsYXlUZXh0KHJvd0RhdGE6IHVua25vd24sIGRhdGFGaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJvd0RhdGFbZGF0YUZpZWxkXTtcbiAgICByZXR1cm4gIXRoaXMuZm9ybWF0ID8gdmFsdWUgOiB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHZhbHVlLCB0aGlzLmZvcm1hdCBhcyBhbnksIHRoaXMuZm9ybWF0T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZm9ybWF0IHN0cmluZyBmb3IgZGlzcGxheWluZyB2YWx1ZXMgaW4gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGZvcm1hdHRpbmcgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9ybWF0T3B0aW9uczogQVhGb3JtYXRPcHRpb25zO1xufVxuIl19","import { AXComponent, AXRippleDirective, } from '@acorex/cdk/common';\nimport { AXButtonComponent, AXButtonItemListComponent, } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, TemplateRef, ViewChild, ViewEncapsulation, effect, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.cdr = inject(ChangeDetectorRef);\n this.commandLoading = signal(null, ...(ngDevMode ? [{ debugName: \"commandLoading\" }] : []));\n this.rowIdentityMap = new WeakMap();\n this.rowIdentitySeq = 0;\n this.allowSorting = false;\n this.onItemClick = new EventEmitter();\n }\n get loadingEnabled() {\n return false;\n }\n get cssClass() {\n return 'ax-command-column';\n }\n resolveCommandId(rowData, commandName) {\n if (rowData && typeof rowData === 'object') {\n const record = rowData;\n const keyValue = record[this.grid.getDataSourceKey()];\n if (typeof keyValue === 'string' || typeof keyValue === 'number') {\n return `${keyValue}:${commandName}`;\n }\n let fallbackKey = this.rowIdentityMap.get(record);\n if (!fallbackKey) {\n fallbackKey = `row-${++this.rowIdentitySeq}`;\n this.rowIdentityMap.set(record, fallbackKey);\n }\n return `${fallbackKey}:${commandName}`;\n }\n return `unknown:${commandName}`;\n }\n setCommandLoadingState(commandId, loading) {\n this.commandLoading.set(loading ? commandId : null);\n }\n}\n/**\n * A column for displaying dropdown command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n this.emptyStateText = '@acorex:dataTable.rowCommandColumn.emptyStateText';\n this.itemsLoading = signal(false, ...(ngDevMode ? [{ debugName: \"itemsLoading\" }] : []));\n this.itemsFetched = signal(false, ...(ngDevMode ? [{ debugName: \"itemsFetched\" }] : []));\n /**\n * @ignore\n */\n this._items = [];\n this.items = [];\n this.dropdownLoadingEffect = effect(() => {\n this.applyLoadingState(this.commandLoading());\n }, ...(ngDevMode ? [{ debugName: \"dropdownLoadingEffect\" }] : []));\n }\n /**\n * Returns the template used for rendering cell content.\n * This method provides the cell template used in the data table column, falling back to a default template if none is provided.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * This method provides the header template used in the data table column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer content.\n * This method provides the footer template used in the data table column.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Returns the name identifier for the column component.\n */\n get name() {\n return 'cl-dd-cmd';\n }\n /**\n * @ignore\n */\n async handleOnOpened(rowData) {\n this.itemsLoading.set(true);\n this.itemsFetched.set(false);\n try {\n let resolvedItems = [];\n if (Array.isArray(this.items)) {\n resolvedItems = this.items;\n }\n else\n typeof this.items == 'function';\n {\n const result = this['items'](rowData);\n if (Array.isArray(result)) {\n resolvedItems = result;\n }\n else if (result instanceof Promise) {\n resolvedItems = await result;\n }\n }\n this._items = this.decorateItems(rowData, resolvedItems);\n this.applyLoadingState(this.commandLoading());\n this.itemsFetched.set(true);\n }\n finally {\n this.itemsLoading.set(false);\n this.cdr.detectChanges();\n }\n }\n /**\n * @ignore\n */\n handleOnClosed() {\n this._items = [];\n this.itemsFetched.set(false);\n this.itemsLoading.set(false);\n }\n decorateItems(rowData, items) {\n return items.map((item) => ({\n ...item,\n commandId: this.resolveCommandId(rowData, item.name ?? 'command'),\n loading: false,\n }));\n }\n applyLoadingState(activeCommandId) {\n if (!this._items.length) {\n return;\n }\n let hasChanges = false;\n const updatedItems = this._items.map((item) => {\n const nextLoading = !!activeCommandId && item.commandId === activeCommandId;\n if (item.loading !== nextLoading) {\n hasChanges = true;\n return { ...item, loading: nextLoading };\n }\n return item;\n });\n if (hasChanges) {\n this._items = updatedItems;\n this.cdr.markForCheck();\n }\n }\n /**\n * @ignore\n */\n handleOnItemClick(e, data) {\n const commandName = e.name ?? 'command';\n const commandId = this.resolveCommandId(data, commandName);\n const itemList = e.component;\n let pendingAutoClose = setTimeout(() => {\n itemList?.closeParent();\n pendingAutoClose = undefined;\n });\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: commandName,\n setLoading: (loading) => {\n if (pendingAutoClose) {\n clearTimeout(pendingAutoClose);\n pendingAutoClose = undefined;\n }\n this.setCommandLoadingState(commandId, loading);\n if (!loading) {\n itemList?.closeParent();\n }\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowDropdownCommandColumnComponent, isStandalone: true, selector: \"ax-dropdown-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", emptyStateTemplate: \"emptyStateTemplate\", emptyStateText: \"emptyStateText\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-dropdown-command-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n CommonModule,\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXButtonItemListComponent,\n AXLoadingComponent,\n NgTemplateOutlet,\n AXTranslationModule,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], emptyStateTemplate: [{\n type: Input\n }], emptyStateText: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n/**\n * A column for displaying command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n /**\n * Defines the command items to display in the column.\n * @defaultValue []\n */\n this.items = [];\n }\n /**\n * Returns the template used for rendering the cell content.\n * Uses the specified cell template if provided; otherwise, falls back to a default template.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * Overrides the base implementation to provide a specific template for the command column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used for rendering the footer content of the column.\n * Returns `footerTemplate` if provided; otherwise, returns `_contentFooterTemplate`.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique name identifier for the command column.\n */\n get name() {\n return 'cl-in-cmd';\n }\n /**\n * @ignore\n */\n getItems(rowData) {\n if (Array.isArray(this.items)) {\n return this.items;\n }\n else\n typeof this.items == 'function';\n {\n return this.items(rowData);\n }\n return [];\n }\n getItemsWithIds(rowData) {\n return this.getItems(rowData).map((item) => ({\n item,\n commandId: this.getCommandId(rowData, item),\n }));\n }\n /**\n * @ignore\n */\n getCommandId(rowData, item) {\n const commandName = item.name ?? 'command';\n return this.resolveCommandId(rowData, commandName);\n }\n handleOnItemClick(e, item, data) {\n const commandId = this.getCommandId(data, item);\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e.nativeEvent,\n data,\n name: item.name ?? 'command',\n setLoading: (loading) => {\n this.setCommandLoadingState(commandId, loading);\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowCommandColumnComponent, isStandalone: true, selector: \"ax-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-command-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXButtonComponent,\n AXLoadingComponent,\n AXTranslatorPipe,\n AsyncPipe,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvcm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsV0FBVyxFQUVYLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIseUJBQXlCLEdBRTFCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFXakUsTUFBTSxPQUFnQiwrQkFBZ0MsU0FBUSwwQkFBMEI7SUFBeEY7O1FBQ1ksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FB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QkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lDQXVCNkI7b0JBQ3ZDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsNkJBQTZCO3lCQUN6QztxQkFDRjtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLFNBQVM7cUJBQ1Y7aUJBQ0Y7OEJBT1MsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxNQUFNO2dCQWVULHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWVaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0Usc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBdUJuQixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWEJ1dHRvbkNsaWNrRXZlbnQsXG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYSXRlbUNsaWNrRXZlbnQsXG4gIEFYUmlwcGxlRGlyZWN0aXZlLFxuICBBWFN0eWxlTG9va1R5cGUsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQge1xuICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgQVhCdXR0b25JdGVtQ29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duUGFuZWxDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbmV4cG9ydCB0eXBlIEFYUm93Q29tbWFuZEl0ZW0gPSBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSAmIHtcbiAgY29tbWFuZElkPzogc3RyaW5nO1xuICBsb29rPzogQVhTdHlsZUxvb2tUeXBlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCBleHRlbmRzIEFYQnV0dG9uQ2xpY2tFdmVudCB7XG4gIHNldExvYWRpbmc/OiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZVJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG4gIHByb3RlY3RlZCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgY29tbWFuZExvYWRpbmcgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcm93SWRlbnRpdHlNYXAgPSBuZXcgV2Vha01hcDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgc3RyaW5nPigpO1xuICBwcml2YXRlIHJvd0lkZW50aXR5U2VxID0gMDtcblxuICBvdmVycmlkZSBhbGxvd1NvcnRpbmcgPSBmYWxzZTtcblxuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGNzc0NsYXNzKCkge1xuICAgIHJldHVybiAnYXgtY29tbWFuZC1jb2x1bW4nO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVDb21tYW5kSWQocm93RGF0YTogdW5rbm93biwgY29tbWFuZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgJiYgdHlwZW9mIHJvd0RhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCByZWNvcmQgPSByb3dEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3Qga2V5VmFsdWUgPSByZWNvcmRbdGhpcy5ncmlkLmdldERhdGFTb3VyY2VLZXkoKV07XG4gICAgICBpZiAodHlwZW9mIGtleVZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5VmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBgJHtrZXlWYWx1ZX06JHtjb21tYW5kTmFtZX1gO1xuICAgICAgfVxuICAgICAgbGV0IGZhbGxiYWNrS2V5ID0gdGhpcy5yb3dJZGVudGl0eU1hcC5nZXQocmVjb3JkKTtcbiAgICAgIGlmICghZmFsbGJhY2tLZXkpIHtcbiAgICAgICAgZmFsbGJhY2tLZXkgPSBgcm93LSR7Kyt0aGlzLnJvd0lkZW50aXR5U2VxfWA7XG4gICAgICAgIHRoaXMucm93SWRlbnRpdHlNYXAuc2V0KHJlY29yZCwgZmFsbGJhY2tLZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAke2ZhbGxiYWNrS2V5fToke2NvbW1hbmROYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBgdW5rbm93bjoke2NvbW1hbmROYW1lfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q29tbWFuZExvYWRpbmdTdGF0ZShjb21tYW5kSWQ6IHN0cmluZywgbG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29tbWFuZExvYWRpbmcuc2V0KGxvYWRpbmcgPyBjb21tYW5kSWQgOiBudWxsKTtcbiAgfVxuXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudD4oKTtcbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBkcm9wZG93biBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b24gW2F4UmlwcGxlXT5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWxcbiAgICAgICAgICAgICAgW2FkYXB0aXZpdHlFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25PcGVuZWQpPVwiaGFuZGxlT25PcGVuZWQocm93LmRhdGEpXCJcbiAgICAgICAgICAgICAgKG9uQ2xvc2VkKT1cImhhbmRsZU9uQ2xvc2VkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW1zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBwYW5lbCBzdHlsZT1cInBhZGRpbmc6IDAuODc1cmVtO1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmICghX2l0ZW1zLmxlbmd0aCAmJiBpdGVtc0ZldGNoZWQoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlTdGF0ZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1kcm9wZG93bi1jb21tYW5kLWVtcHR5LXN0YXRlLXRleHRcIj57eyBlbXB0eVN0YXRlVGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChfaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3RcbiAgICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsIHJvdy5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiX2l0ZW1zXCJcbiAgICAgICAgICAgICAgICAgIFtjbG9zZVBhcmVudE9uQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2xvY2tPbkxvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBvdXRwdXRzOiBbJ29uSXRlbUNsaWNrJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICAgIEFYTG9hZGluZ0NvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93RHJvcGRvd25Db21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyBjZWxsIGNvbnRlbnQuXG4gICAqIFRoaXMgbWV0aG9kIHByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLCBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vbmUgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGhlYWRlciBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLlxuICAgKi9cblxuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbXB0eVN0YXRlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW1wdHlTdGF0ZVRleHQgPSAnQGFjb3JleDpkYXRhVGFibGUucm93Q29tbWFuZENvbHVtbi5lbXB0eVN0YXRlVGV4dCc7XG5cbiAgcHJvdGVjdGVkIGl0ZW1zTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBpdGVtc0ZldGNoZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudC5cbiAgICogVGhpcyBtZXRob2QgcHJvdmlkZXMgdGhlIGZvb3RlciB0ZW1wbGF0ZSB1c2VkIGluIHRoZSBkYXRhIHRhYmxlIGNvbHVtbi5cbiAgICovXG4gIGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbHVtbiBjb21wb25lbnQuXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2wtZGQtY21kJztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9pdGVtczogQVhSb3dDb21tYW5kSXRlbVtdID0gW107XG5cbiAgQElucHV0KClcbiAgaXRlbXM6IEFYUm93Q29tbWFuZEl0ZW1bXSB8ICgocm93RGF0YTogdW5rbm93bikgPT4gQVhSb3dDb21tYW5kSXRlbVtdIHwgUHJvbWlzZTxBWFJvd0NvbW1hbmRJdGVtW10+KSA9IFtdO1xuXG4gIHByaXZhdGUgZHJvcGRvd25Mb2FkaW5nRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLmFwcGx5TG9hZGluZ1N0YXRlKHRoaXMuY29tbWFuZExvYWRpbmcoKSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZU9uT3BlbmVkKHJvd0RhdGEpIHtcbiAgICB0aGlzLml0ZW1zTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5pdGVtc0ZldGNoZWQuc2V0KGZhbHNlKTtcbiAgICB0cnkge1xuICAgICAgbGV0IHJlc29sdmVkSXRlbXM6IEFYUm93Q29tbWFuZEl0ZW1bXSA9IFtdO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgICAgcmVzb2x2ZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICB9IGVsc2UgdHlwZW9mIHRoaXMuaXRlbXMgPT0gJ2Z1bmN0aW9uJztcbiAgICAgIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKHRoaXNbJ2l0ZW1zJ10gYXMgYW55KShyb3dEYXRhKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgIHJlc29sdmVkSXRlbXMgPSByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHJlc29sdmVkSXRlbXMgPSBhd2FpdCByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuX2l0ZW1zID0gdGhpcy5kZWNvcmF0ZUl0ZW1zKHJvd0RhdGEsIHJlc29sdmVkSXRlbXMpO1xuICAgICAgdGhpcy5hcHBseUxvYWRpbmdTdGF0ZSh0aGlzLmNvbW1hbmRMb2FkaW5nKCkpO1xuICAgICAgdGhpcy5pdGVtc0ZldGNoZWQuc2V0KHRydWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLml0ZW1zTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uQ2xvc2VkKCkge1xuICAgIHRoaXMuX2l0ZW1zID0gW107XG4gICAgdGhpcy5pdGVtc0ZldGNoZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLml0ZW1zTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNvcmF0ZUl0ZW1zKHJvd0RhdGE6IHVua25vd24sIGl0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10pOiBBWFJvd0NvbW1hbmRJdGVtW10ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgY29tbWFuZElkOiB0aGlzLnJlc29sdmVDb21tYW5kSWQocm93RGF0YSwgaXRlbS5uYW1lID8/ICdjb21tYW5kJyksXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5TG9hZGluZ1N0YXRlKGFjdGl2ZUNvbW1hbmRJZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5faXRlbXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gdGhpcy5faXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBuZXh0TG9hZGluZyA9ICEhYWN0aXZlQ29tbWFuZElkICYmIGl0ZW0uY29tbWFuZElkID09PSBhY3RpdmVDb21tYW5kSWQ7XG4gICAgICBpZiAoaXRlbS5sb2FkaW5nICE9PSBuZXh0TG9hZGluZykge1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgbG9hZGluZzogbmV4dExvYWRpbmcgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLl9pdGVtcyA9IHVwZGF0ZWRJdGVtcztcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uSXRlbUNsaWNrKGU6IEFYSXRlbUNsaWNrRXZlbnQ8QVhCdXR0b25JdGVtQ29tcG9uZW50PiwgZGF0YTogdW5rbm93bikge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gZS5uYW1lID8/ICdjb21tYW5kJztcbiAgICBjb25zdCBjb21tYW5kSWQgPSB0aGlzLnJlc29sdmVDb21tYW5kSWQoZGF0YSwgY29tbWFuZE5hbWUpO1xuICAgIGNvbnN0IGl0ZW1MaXN0ID0gZS5jb21wb25lbnQgYXMgQVhCdXR0b25JdGVtTGlzdENvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgcGVuZGluZ0F1dG9DbG9zZTogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGl0ZW1MaXN0Py5jbG9zZVBhcmVudCgpO1xuICAgICAgcGVuZGluZ0F1dG9DbG9zZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBjb25zdCBhcmdzOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCA9IHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5ncmlkLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgIGRhdGEsXG4gICAgICBuYW1lOiBjb21tYW5kTmFtZSxcbiAgICAgIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChwZW5kaW5nQXV0b0Nsb3NlKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHBlbmRpbmdBdXRvQ2xvc2UpO1xuICAgICAgICAgIHBlbmRpbmdBdXRvQ2xvc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRDb21tYW5kTG9hZGluZ1N0YXRlKGNvbW1hbmRJZCwgbG9hZGluZyk7XG4gICAgICAgIGlmICghbG9hZGluZykge1xuICAgICAgICAgIGl0ZW1MaXN0Py5jbG9zZVBhcmVudCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KGFyZ3MpO1xuICB9XG59XG5cbi8qKlxuICogQSBjb2x1bW4gZm9yIGRpc3BsYXlpbmcgY29tbWFuZCBidXR0b25zIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb21tYW5kLWNvbHVtbicsXG4gIHRlbXBsYXRlOiBgPG5nLXRlbXBsYXRlICNoZWFkZXI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIEBpZiAocm93LmRhdGEpIHtcbiAgICAgICAgQGZvciAoY29tbWFuZCBvZiBnZXRJdGVtc1dpdGhJZHMocm93LmRhdGEpOyB0cmFjayBjb21tYW5kLmNvbW1hbmRJZCkge1xuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIFtpY29uT25seV09XCJjb21tYW5kLml0ZW0uaWNvbk9ubHkgPz8gdHJ1ZVwiXG4gICAgICAgICAgICBbdGV4dF09XCJjb21tYW5kLml0ZW0udGV4dFwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjb21tYW5kLml0ZW0udGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIncmdiYSh2YXIoLS1heC1zeXMtY29sb3ItJyArIChjb21tYW5kLml0ZW0uY29sb3IgPz8gJ3ByaW1hcnkpJykgKyAnLTUwMCkpJ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbWFuZC5pdGVtLmRpc2FibGVkIHx8IGNvbW1hbmRMb2FkaW5nKClcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImNvbW1hbmQuaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXhSaXBwbGVdPVwiIWNvbW1hbmQuaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbbG9va109XCJjb21tYW5kLml0ZW0ubG9vayA/PyAnc29saWQnXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uSXRlbUNsaWNrKCRldmVudCwgY29tbWFuZC5pdGVtLCByb3cuZGF0YSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cImNvbW1hbmQuaXRlbS5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgQGlmIChjb21tYW5kTG9hZGluZygpID09PSBjb21tYW5kLmNvbW1hbmRJZCkge1xuICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+IGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbiAgb3V0cHV0czogWydvbkl0ZW1DbGljayddLFxuICBpbXBvcnRzOiBbXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFYTG9hZGluZ0NvbXBvbmVudCxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cblxuICBAVmlld0NoaWxkKCdjZWxsJylcbiAgcHJpdmF0ZSBfY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBjZWxsIGNvbnRlbnQuXG4gICAqIFVzZXMgdGhlIHNwZWNpZmllZCBjZWxsIHRlbXBsYXRlIGlmIHByb3ZpZGVkOyBvdGhlcndpc2UsIGZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBoZWFkZXIgY29udGVudC5cbiAgICogT3ZlcnJpZGVzIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHRvIHByb3ZpZGUgYSBzcGVjaWZpYyB0ZW1wbGF0ZSBmb3IgdGhlIGNvbW1hbmQgY29sdW1uLlxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0IHJlbmRlckhlYWRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEhlYWRlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIGNvbnRlbnQgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdmb290ZXInKVxuICBwcml2YXRlIF9jb250ZW50Rm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGZvb3RlciBjb250ZW50IG9mIHRoZSBjb2x1bW4uXG4gICAqIFJldHVybnMgYGZvb3RlclRlbXBsYXRlYCBpZiBwcm92aWRlZDsgb3RoZXJ3aXNlLCByZXR1cm5zIGBfY29udGVudEZvb3RlclRlbXBsYXRlYC5cbiAgICovXG4gIGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBuYW1lIGlkZW50aWZpZXIgZm9yIHRoZSBjb21tYW5kIGNvbHVtbi5cbiAgICovXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjbC1pbi1jbWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGNvbW1hbmQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLlxuICAgKiBAZGVmYXVsdFZhbHVlIFtdXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtczogQVhSb3dDb21tYW5kSXRlbVtdIHwgKChyb3dEYXRhOiB1bmtub3duKSA9PiBBWFJvd0NvbW1hbmRJdGVtW10pID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0SXRlbXMocm93RGF0YTogdW5rbm93bik6IEFYUm93Q29tbWFuZEl0ZW1bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIH0gZWxzZSB0eXBlb2YgdGhpcy5pdGVtcyA9PSAnZnVuY3Rpb24nO1xuICAgIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zKHJvd0RhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SXRlbXNXaXRoSWRzKHJvd0RhdGE6IHVua25vd24pOiBBcnJheTx7IGl0ZW06IEFYUm93Q29tbWFuZEl0ZW07IGNvbW1hbmRJZDogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyhyb3dEYXRhKS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICBpdGVtLFxuICAgICAgY29tbWFuZElkOiB0aGlzLmdldENvbW1hbmRJZChyb3dEYXRhLCBpdGVtKSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRDb21tYW5kSWQocm93RGF0YTogdW5rbm93biwgaXRlbTogQVhSb3dDb21tYW5kSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tbWFuZE5hbWUgPSBpdGVtLm5hbWUgPz8gJ2NvbW1hbmQnO1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVDb21tYW5kSWQocm93RGF0YSwgY29tbWFuZE5hbWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9uSXRlbUNsaWNrKGU6IEFYQ2xpY2tFdmVudCwgaXRlbTogQVhSb3dDb21tYW5kSXRlbSwgZGF0YTogdW5rbm93bikge1xuICAgIGNvbnN0IGNvbW1hbmRJZCA9IHRoaXMuZ2V0Q29tbWFuZElkKGRhdGEsIGl0ZW0pO1xuICAgIGNvbnN0IGFyZ3M6IEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50ID0ge1xuICAgICAgY29tcG9uZW50OiB0aGlzLmdyaWQsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLm5hdGl2ZUV2ZW50LFxuICAgICAgZGF0YSxcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSA/PyAnY29tbWFuZCcsXG4gICAgICBzZXRMb2FkaW5nOiAobG9hZGluZzogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLnNldENvbW1hbmRMb2FkaW5nU3RhdGUoY29tbWFuZElkLCBsb2FkaW5nKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoYXJncyk7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowExpandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-expand';\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowExpandColumnComponent, isStandalone: true, selector: \"ax-expand-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-expand-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data?.[grid.hasChildrenField] !== false || (row.data?.children?.length ?? 0) > 0) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWV4cGFuZC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctZXhwYW5kLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBcUNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSwwQkFBMEI7SUFwQzFFOztRQXFDWSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9CLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO0tBK0RyQztJQXZEQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQVE7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWpFVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiwrSEFUMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxXQUFXLEVBQUUsMEJBQTBCO2FBQ3hDO1lBQ0QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRTtTQUNsRSw4VkEvQlM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7OzJGQVlVLDBCQUEwQjtrQkFwQ3RDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsNEJBQTRCO3lCQUN4Qzt3QkFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyw0QkFBNEIsRUFBRTtxQkFDbEU7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7aUJBQ3RDOzhCQVVTLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsTUFBTTtnQkFjVCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFjWCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUgfSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcblxuLyoqXG4gKiBDb2x1bW4gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgY2hlY2tib3hlcyBmb3Igcm93IHNlbGVjdGlvbiBpbiBhIGRhdGEgdGFibGUuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZXhwYW5kLWNvbHVtbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIEBpZiAocm93LmRhdGE/LltncmlkLmhhc0NoaWxkcmVuRmllbGRdICE9PSBmYWxzZSB8fCAocm93LmRhdGE/LmNoaWxkcmVuPy5sZW5ndGggPz8gMCkgPiAwKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIChjbGljayk9XCJoYW5kbGVFeHBhbmRSb3cocm93KVwiXG4gICAgICAgIGNsYXNzPVwiYXgtZXhwYW5kLWhhbmRsZXJcIlxuICAgICAgICBbc3R5bGUucGFkZGluZy1pbmxpbmUtc3RhcnQucmVtXT1cInJvdy5kYXRhPy5fX21ldGFfXz8ubGV2ZWwgKiAxLjVcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGxvYWRpbmdSb3coKSA9PT0gcm93KSB7XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lci10aGlyZCBheC1hbmltYXRlLXR3U3BpbiBheC1hbmltYXRlLWluZmluaXRlXCI+PC9pPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAaWYgKHJvdy5kYXRhPy5fX21ldGFfXz8uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiPjwvaT5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCBleHRlbmRzIEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZ1JvdyA9IHNpZ25hbChudWxsKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBjZWxscyBpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRoZSBjb2x1bW4gZm9vdGVyLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWV4cGFuZCc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFeHBhbmRSb3cocm93OiBhbnkpIHtcbiAgICB0aGlzLmxvYWRpbmdSb3cuc2V0KHJvdyk7XG4gICAgYXdhaXQgdGhpcy5ncmlkLmV4cGFuZFJvdyhyb3cpO1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgbG9hZGluZyBpcyBlbmFibGVkIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IGxvYWRpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { AXBadgeComponent } from '@acorex/components/badge';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying row indices in a data table column.\n *\n * @category Components\n */\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.unsubscriber = inject(AXUnsubscriber);\n /**\n * Determines whether the index should be zero-padded.\n * @defaultValue false\n */\n this.padZero = false;\n /**\n * @ignore\n */\n this.formatCount = 1;\n /**\n * Disables sorting for this column.\n *\n * @defaultValue false\n */\n this.allowSorting = false;\n }\n /**\n * Provides the cell template for custom rendering if defined.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Provides the header template for custom rendering if defined.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer of the column.\n * This method returns the `footerTemplate` if it is provided; otherwise, it defaults to the `_contentFooterTemplate`. This allows for custom footer content while falling back to a default template if no custom template is specified.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier name for the column.\n */\n get name() {\n return 'cl-inx';\n }\n /**\n * @ignore\n */\n ngOnInit() {\n if (this.padZero) {\n this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.formatCount = c.totalCount.toString().length;\n });\n }\n }\n /**\n * Indicates whether loading is enabled for this component.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-index-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowIndexColumnComponent, isStandalone: true, selector: \"ax-index-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", padZero: \"padZero\" }, providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if (grid.getRowHighlightBadge(row.data); as badgeKey) {\n <ax-badge\n class=\"ax-data-table-row-highlight-badge\"\n [color]=\"grid.getRowHighlight(row.data)?.color ?? 'success'\"\n [text]=\"badgeKey | translate | async\"\n />\n } @else {\n {{\n row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async\n }}\n }\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"component\", type: AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-index-column',\n template: `<ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if (grid.getRowHighlightBadge(row.data); as badgeKey) {\n <ax-badge\n class=\"ax-data-table-row-highlight-badge\"\n [color]=\"grid.getRowHighlight(row.data)?.color ?? 'success'\"\n [text]=\"badgeKey | translate | async\"\n />\n } @else {\n {{\n row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async\n }}\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n imports: [AsyncPipe, AXFormatPipe, AXBadgeComponent, AXTranslatorPipe],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], padZero: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWluZGV4LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL3Jvdy1pbmRleC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFakU7Ozs7R0FJRztBQStCSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsMEJBQTBCO0lBOUJ6RTs7UUErQlksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQXVEOUM7OztXQUdHO1FBRUgsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBYTFCOzs7O1dBSUc7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztLQWUvQjtJQTFGQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBY0Q7OztPQUdHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBY0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQVNEOztPQUVHO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxRQUFRO1FBQ25CLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs4R0FuR1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0xBWHpCO1lBQ1QsY0FBYztZQUNkO2dCQUNFLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFdBQVcsRUFBRSx5QkFBeUI7YUFDdkM7WUFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFO1NBQ2pFLDhWQXhCUzs7Ozs7Ozs7Ozs7Ozs7eUNBYzZCLDREQVlKLGdCQUFnQixtRkFBekMsU0FBUyx5Q0FBRSxZQUFZLDBDQUFvQixnQkFBZ0I7OzJGQUUxRCx5QkFBeUI7a0JBOUJyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7eUNBYzZCO29CQUN2QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDVCxjQUFjO3dCQUNkOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsMkJBQTJCO3lCQUN2Qzt3QkFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVywyQkFBMkIsRUFBRTtxQkFDakU7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3ZFOzhCQVNTLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsTUFBTTtnQkFjVCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFjWixjQUFjO3NCQURwQixLQUFLO2dCQU9FLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQXVCbkIsT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhCYWRnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRvclBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHJvdyBpbmRpY2VzIGluIGEgZGF0YSB0YWJsZSBjb2x1bW4uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtaW5kZXgtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlcj57eyBjYXB0aW9uIH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIEBpZiAoZ3JpZC5nZXRSb3dIaWdobGlnaHRCYWRnZShyb3cuZGF0YSk7IGFzIGJhZGdlS2V5KSB7XG4gICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1yb3ctaGlnaGxpZ2h0LWJhZGdlXCJcbiAgICAgICAgICBbY29sb3JdPVwiZ3JpZC5nZXRSb3dIaWdobGlnaHQocm93LmRhdGEpPy5jb2xvciA/PyAnc3VjY2VzcydcIlxuICAgICAgICAgIFt0ZXh0XT1cImJhZGdlS2V5IHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7XG4gICAgICAgICAgcm93LnJvd0luZGV4ICsgMSB8IGZvcm1hdDogJ251bWJlcicgOiB7IHplcm9QYWRMZW5ndGg6IHRoaXMuZm9ybWF0Q291bnQsIHRob3VzYW5kU2VwYXJhdG9yOiBmYWxzZSB9IHwgYXN5bmNcbiAgICAgICAgfX1cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+IGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0luZGV4Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZSwgQVhGb3JtYXRQaXBlLCBBWEJhZGdlQ29tcG9uZW50LCBBWFRyYW5zbGF0b3JQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dJbmRleENvbHVtbkNvbXBvbmVudCBleHRlbmRzIEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGBmb290ZXJUZW1wbGF0ZWAgaWYgaXQgaXMgcHJvdmlkZWQ7IG90aGVyd2lzZSwgaXQgZGVmYXVsdHMgdG8gdGhlIGBfY29udGVudEZvb3RlclRlbXBsYXRlYC4gVGhpcyBhbGxvd3MgZm9yIGN1c3RvbSBmb290ZXIgY29udGVudCB3aGlsZSBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vIGN1c3RvbSB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBuYW1lIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWlueCc7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBzaG91bGQgYmUgemVyby1wYWRkZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhZFplcm8gPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXRDb3VudCA9IDE7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wYWRaZXJvKSB7XG4gICAgICB0aGlzLmdyaWQuZGF0YVNvdXJjZS5vbkNoYW5nZWQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtYXRDb3VudCA9IGMudG90YWxDb3VudC50b1N0cmluZygpLmxlbmd0aDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgb3ZlcnJpZGUgYWxsb3dTb3J0aW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gJ2F4LWluZGV4LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/check-box\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowSelectColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-select';\n }\n /**\n * @ignore\n */\n getDataSourceKey() {\n return this.grid.dataSource.config.key || 'id';\n }\n /**\n * @ignore\n */\n isSelected(item) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);\n }\n /**\n * @ignore\n */\n checkAllSelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n if (!rows || !rows.length || !selectedRowKeys.length) {\n return false;\n }\n const allSelected = rows.every((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n const anySelected = rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n if (allSelected) {\n return true;\n }\n if (anySelected) {\n return null;\n }\n return false;\n }\n /**\n * @ignore\n */\n handleChange(e, item) {\n if (e.isUserInteraction) {\n if (this.isSelected(item)) {\n this.grid.unSelectRows(item);\n }\n else {\n this.grid.selectRows(item);\n }\n }\n }\n /**\n * @ignore\n */\n handleSelectAll(e, rows) {\n if (e.isUserInteraction) {\n if (this.checkAllSelected(rows)) {\n this.grid.unSelectRows(...rows);\n }\n else {\n this.grid.selectRows(...rows);\n }\n }\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-select-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXRowSelectColumnComponent, isStandalone: true, selector: \"ax-select-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i2.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-select-column',\n template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ],\n imports: [FormsModule, AXCheckBoxModule],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctc2VsZWN0LWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFakU7Ozs7R0FJRztBQXNDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsMEJBQTBCO0lBckMxRTs7UUFzQ1UsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQW1JeEM7SUEzSEM7O09BRUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBYSxvQkFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJ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UyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLE1BQU07Z0JBY1Qsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBY1gsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NoZWNrLWJveCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4nO1xuXG4vKipcbiAqIENvbHVtbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjaGVja2JveGVzIGZvciByb3cgc2VsZWN0aW9uIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zZWxlY3QtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlciBsZXQtY29sPlxuICAgICAgPGF4LWNoZWNrLWJveFxuICAgICAgICBbbmdNb2RlbF09XCJjaGVja0FsbFNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cInRydWVcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlU2VsZWN0QWxsKCRldmVudCwgY29sLnJvd3MpXCJcbiAgICAgID48L2F4LWNoZWNrLWJveD5cbiAgICAgIDwhLS0gPGlucHV0XG4gICAgICAgIGNsYXNzPVwiYXgtY2hlY2tib3hcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbChjb2wucm93cylcIlxuICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJjaGVja0FueVNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtjaGVja2VkXT1cImNoZWNrQWxsU2VsZWN0ZWQoY29sLnJvd3MpXCJcbiAgICAgIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICA8YXgtY2hlY2stYm94XG4gICAgICAgIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlKCRldmVudCwgcm93LmRhdGEpXCJcbiAgICAgICAgW25nTW9kZWxdPVwiaXNTZWxlY3RlZChyb3cuZGF0YSlcIlxuICAgICAgPjwvYXgtY2hlY2stYm94PlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJheC1jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIiAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZShyb3cuZGF0YSlcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHJvdy5kYXRhKVwiIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgQVhDaGVja0JveE1vZHVsZV0sXG4gIGlucHV0czogWyd3aWR0aCcsICdjYXB0aW9uJywgJ2ZpeGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBjZWxscyBpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRoZSBjb2x1bW4gZm9vdGVyLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLXNlbGVjdCc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkLmRhdGFTb3VyY2UuY29uZmlnLmtleSB8fCAnaWQnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNTZWxlY3RlZChpdGVtOiB1bmtub3duKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuICAgIHJldHVybiBpdGVtICE9IG51bGwgJiYgc2VsZWN0ZWRSb3dLZXlzLmluY2x1ZGVzKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW1ba2V5XSA6IGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2tBbGxTZWxlY3RlZChyb3dzKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuXG4gICAgaWYgKCFyb3dzIHx8ICFyb3dzLmxlbmd0aCB8fCAhc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcm93cy5ldmVyeSgoZWxlbWVudCkgPT5cbiAgICAgIHNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyh0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcgPyBlbGVtZW50W2tleV0gOiBlbGVtZW50KSxcbiAgICApO1xuXG4gICAgY29uc3QgYW55U2VsZWN0ZWQgPSByb3dzLnNvbWUoKGVsZW1lbnQpID0+XG4gICAgICBzZWxlY3RlZFJvd0tleXMuaW5jbHVkZXModHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnID8gZWxlbWVudFtrZXldIDogZWxlbWVudCksXG4gICAgKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChhbnlTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNoYW5nZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5ncmlkLnVuU2VsZWN0Um93cyhpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNlbGVjdEFsbChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCByb3dzOiBhbnkpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgaWYgKHRoaXMuY2hlY2tBbGxTZWxlY3RlZChyb3dzKSkge1xuICAgICAgICB0aGlzLmdyaWQudW5TZWxlY3RSb3dzKC4uLnJvd3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvd3MoLi4ucm93cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQ1NTIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIG92ZXJyaWRlIGdldCBjc3NDbGFzcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAnYXgtc2VsZWN0LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDataPagerComponent, AXDataPagerInfoComponent, AXDataPagerInputSelectorComponent, AXDataPagerNextButtonsComponent, AXDataPagerNumericSelectorComponent, AXDataPagerPageSizesComponent, AXDataPagerPrevButtonsComponent, } from '@acorex/components/data-pager';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkDrag, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, DOCUMENT, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, computed, effect, inject, input, signal, untracked, } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying and managing a data table with advanced features.\n *\n * @category Components\n */\nexport class AXDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n /**\n * Controls the table look.\n *\n * - `classic` — classic look (default).\n * - `minimal` — minimal look.\n *\n * @defaultValue `'classic'`\n */\n this.look = input('classic', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n this._unsubscriber = inject(AXUnsubscriber);\n this._zone = inject(NgZone);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @ignore\n */\n this.displayedRows = signal([], ...(ngDevMode ? [{ debugName: \"displayedRows\" }] : []));\n /**\n * @ignore\n */\n this.page = signal(0, ...(ngDevMode ? [{ debugName: \"page\" }] : []));\n /**\n * @ignore\n */\n this.pageSize = signal(0, ...(ngDevMode ? [{ debugName: \"pageSize\" }] : []));\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.columnsList = signal([], ...(ngDevMode ? [{ debugName: \"columnsList\" }] : []));\n /**\n * @ignore\n */\n this.endFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'end'), ...(ngDevMode ? [{ debugName: \"endFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.startFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'start'), ...(ngDevMode ? [{ debugName: \"startFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.normalColumnsList = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'), ...(ngDevMode ? [{ debugName: \"normalColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n /**\n * Columns that used `width=\"auto\"` and received header-only sizing before rows were available.\n * They get a full content measurement once data is present.\n * @ignore\n */\n this.pendingContentAutoFitColumns = new WeakSet();\n /**\n * Columns that were configured with `width=\"auto\"` (intent), even if we later set a pixel width.\n * Used to re-measure on every page/data change.\n * @ignore\n */\n this.autoFitIntentColumns = new WeakSet();\n /**\n * Columns the user manually resized by dragging. Auto-fit should not override user choice.\n * @ignore\n */\n this.userResizedColumns = new WeakSet();\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * Defines if alternative row styling should be applied.\n *\n * @defaultValue `true`\n */\n this.alternative = true;\n /**\n * Indicates if the table header should be displayed.\n *\n * @defaultValue `true`\n */\n this.showHeader = true;\n /**\n * Indicates if the table header should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedHeader = true;\n /**\n * Indicates if the table footer should be displayed.\n *\n * @defaultValue `false`\n */\n this.showFooter = false;\n /**\n * Indicates if the table footer should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedFooter = true;\n /**\n * Specifies the height of each item in the table.\n *\n * @defaultValue `40`\n */\n this.itemHeight = 40;\n /**\n * Enables or disables row reordering.\n *\n * @defaultValue `false`\n */\n this.allowReordering = false;\n /**\n * Enables or disables paging.\n *\n * @defaultValue `true`\n */\n this.paging = true;\n /**\n * Specifies how data should be fetched.\n *\n * @defaultValue `'auto'`\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for loading state.\n *\n * @defaultValue `{ enabled: true, animation: true }`\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * Emits when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Emits when a row is clicked.\n *\n * @event onRowClick\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits when a row is double-clicked.\n *\n * @event onRowDbClick\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Emits when the order of columns changes.\n *\n * @event onColumnsOrderChanged\n */\n this.onColumnsOrderChanged = new EventEmitter();\n /**\n * Emits when the size of columns changes.\n *\n * @event onColumnSizeChanged\n */\n this.onColumnSizeChanged = new EventEmitter();\n /**\n * Emits when page changes.\n *\n * @event onColumnSizeChanged\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * @ignore\n */\n this.isRefreshCalled = signal(false, ...(ngDevMode ? [{ debugName: \"isRefreshCalled\" }] : []));\n /**\n * Root rows from the latest data source load (before highlight merge).\n * @ignore\n */\n this.lastLoadedRows = [];\n /**\n * @ignore\n */\n this.#effect = effect(() => {\n if (this.customDataPager) {\n this.customDataPager.total = this.dataSource.totalCount;\n this.customDataPager.size = this.dataSource.pageSize;\n this.customDataPager.isLoading = this.isLoading();\n }\n }, ...(ngDevMode ? [{ debugName: \"#effect\" }] : []));\n /**\n * @ignore\n */\n this.onResizeColumnMove = (event) => {\n const diffX = event.pageX - this.resizeColumnProp.startX;\n const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;\n this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;\n this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);\n };\n /**\n * @ignore\n */\n this.onResizeColumnEnd = () => {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onResizeColumnMove);\n this.document.removeEventListener('mouseup', this.onResizeColumnEnd);\n }\n const newWidth = parseInt(this.resizeColumnProp.thElement.attributes.getNamedItem('new-width')?.value);\n const column = this.columns.get(this.resizeColumnProp.columnIndex);\n column.width = `${Math.max(100, newWidth)}px`;\n this.userResizedColumns.add(column);\n this.pendingContentAutoFitColumns.delete(column);\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: this.resizeColumnProp.columnIndex,\n width: this.columns.get(this.resizeColumnProp.columnIndex).width,\n dataField: this.columns.get(this.resizeColumnProp.columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n this.resetResizingProcess();\n };\n }\n /**\n * Gets the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits the change event.\n *\n * @param v - The row to be focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n /**\n * Returns true if in manual mode and no data has been loaded yet.\n */\n get showNoDataLoadedYet() {\n return this.fetchDataMode === 'manual' && !this.isRefreshCalled();\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (this.customDataPager) {\n this.applyDataPagerMethods();\n }\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n this.dataSource.useCache = false;\n if (this.fetchDataMode == 'auto') {\n this.dataSource.setPage(0);\n }\n this.displayedRows.set(new Array(this.dataSource.pageSize));\n this.totalRows = this.dataSource.items.length;\n this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const shouldMoveToPreviousPage = data.totalCount > 0 && data.items.length === 0 && data.page > 0;\n if (shouldMoveToPreviousPage) {\n this.goToPage(data.page);\n return;\n }\n this.clearResolvedCssClasses();\n this.lastLoadedRows = data.items.filter((item) => !item[this.parentField]);\n this.displayedRows.set(this.mergeRowsWithHighlights(this.lastLoadedRows));\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n this.scheduleTextHighlight();\n });\n this.dataSource.onItemExpanded.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { expandedItem, children } = data;\n // If children is null, it means we only want to toggle row details without managing children\n if (children === null) {\n this.displayedRows.update((prev) => this.toggleExpandedState(prev, expandedItem));\n }\n else {\n this.displayedRows.update((prev) => this.toggleExpanded(prev, expandedItem, children));\n }\n });\n this.dataSource.onItemRefreshChildren.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { id } = data;\n this.refreshExpandedItem(id);\n });\n this.pageSize.set(this.dataSource.pageSize);\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this.calculateStickyColumnsPositions();\n this.columnsList.set(this.columns.toArray());\n this.columns.changes.pipe(this._unsubscriber.takeUntilDestroy).subscribe((cols) => {\n this.columnsList.set(cols.toArray());\n this.captureAutoFitIntentColumns();\n setTimeout(() => this.autoFitColumnsWithAutoWidth({ headerOnly: true }), 0);\n });\n // Header-only auto-fit for width='auto' so columns do not collapse before data loads\n this.captureAutoFitIntentColumns();\n setTimeout(() => this.autoFitColumnsWithAutoWidth({ headerOnly: true }), 0);\n // Full auto-fit for width='auto' (and pending header-only columns) after data load\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n if (data.items.length > 0) {\n // Delay to ensure DOM is ready\n setTimeout(() => {\n this.autoFitColumnsWithAutoWidth();\n this.scheduleTextHighlight();\n }, 100);\n }\n });\n this.scheduleTextHighlight();\n }\n captureAutoFitIntentColumns() {\n this.columns.forEach((column) => {\n if (column.width === 'auto') {\n this.autoFitIntentColumns.add(column);\n }\n });\n }\n /**\n * Returns the display text for a cell. Used for the cell tooltip when the column has `hasTitle`.\n */\n getCellTooltipText(column, rowData) {\n if (rowData == null || typeof rowData !== 'object')\n return '';\n if (column instanceof AXDataTableTextColumnComponent) {\n return column.getCellDisplayText(rowData);\n }\n const col = column;\n if (col.dataField != null && col.dataField in rowData) {\n const v = rowData[col.dataField];\n return v != null ? String(v) : '';\n }\n return '';\n }\n /**\n * @ignore\n */\n #effect;\n /**\n * Toggles the expanded state of a row without managing children.\n * Used for row details template without nested hierarchy.\n *\n * @param rows - The array of rows to search in\n * @param expandedItem - The item to toggle\n * @returns Updated rows array with toggled state\n */\n toggleExpandedState(rows, expandedItem) {\n return rows.map((item) => {\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n };\n }\n return item;\n });\n }\n toggleExpanded(rows, expandedItem, children) {\n return rows.map((item) => {\n children.forEach((c) => {\n if (!c.__meta__) {\n c.__meta__ = { level: (expandedItem?.__meta__?.level ?? 0) + 1 };\n }\n });\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n const nextChildren = children ? this.toggleExpanded(children, expandedItem, item.children || []) : null;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n children: nextChildren,\n [this.hasChildrenField]: nextChildren != null && nextChildren.length > 0,\n };\n }\n else if (item.children) {\n return { ...item, children: this.toggleExpanded(item.children, expandedItem, children) };\n }\n return item;\n });\n }\n async refreshExpandedItem(id) {\n const newChildren = await this.dataSource.getItemsByFilter({\n field: this.parentField,\n operator: { type: 'equal' },\n value: id,\n });\n this.displayedRows.update((prev) => this.updateChildren(prev, id, newChildren.items));\n }\n updateChildren(items, id, newChildren) {\n return items.map((item) => {\n if (item[this.getDataSourceKey()] === id) {\n newChildren.forEach((child) => {\n child.__meta__ = { ...child.__meta__, level: (item.__meta__?.level || 0) + 1 };\n });\n return {\n ...item,\n children: cloneDeep(newChildren),\n [this.hasChildrenField]: newChildren.length > 0,\n };\n }\n else if (item.children) {\n return { ...item, children: this.updateChildren(item.children, id, newChildren) };\n }\n return item;\n });\n }\n /**\n * @ignore\n */\n drop(event) {\n const clonedColumns = [...this.columnsList()];\n moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);\n this.columnsList.set(clonedColumns);\n this.onColumnsOrderChanged.emit({ component: this, data: { event }, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleChangePage(event) {\n this.onPageChanged.emit(event);\n if (event.isUserInteraction) {\n const pageChanged = event.page - 1 != this.page();\n const pageSizeChanged = event.take != this.pageSize();\n if (pageChanged || pageSizeChanged) {\n if (pageChanged) {\n this.page.set(event.page - 1);\n this.dataSource.setPage(this.page());\n }\n if (pageSizeChanged) {\n this.pageSize.set(event.take);\n this.dataSource.setPageSize(this.pageSize());\n }\n // Update displayed rows and data source\n this.displayedRows.set(new Array(this.pageSize()));\n }\n }\n }\n goToPage(pageIndex) {\n const pagerPage = Math.max(1, pageIndex);\n if (this.customDataPager) {\n this.customDataPager.goToPage(pagerPage);\n return;\n }\n if (this.dataPager) {\n this.dataPager.goToPage(pagerPage);\n return;\n }\n this.page.set(pagerPage - 1);\n this.dataSource.setPage(this.page());\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n applyDataPagerMethods() {\n this.customDataPager.onChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe((event) => this.handleChangePage(event));\n this.customDataPager.displayMode = 'custom';\n }\n /**\n * Handles the click event on a column header.\n * Toggles the sorting direction or removes the sort if already sorted.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({ field: column.dataField, dir: 'asc' });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * Re-applies pinned highlighted rows to the current view.\n * @ignore\n */\n onRowHighlightsChanged() {\n this.displayedRows.set(this.mergeRowsWithHighlights(this.lastLoadedRows));\n }\n onCssClassResolved() {\n this.displayedRows.update((rows) => [...rows]);\n super.onCssClassResolved();\n }\n /**\n * Refreshes the data table with optional reset options.\n *\n * @param options - Configuration options for refresh operation.\n * @param options.reset - Whether to reset pagination state.\n * @returns void - No return value.\n */\n refresh(options = { reset: true }) {\n if (!options.preserveHighlights) {\n this.clearRowHighlights();\n }\n this.clearResolvedCssClasses();\n this.dataSource.refresh(options);\n const isRefreshCalled = untracked(() => this.isRefreshCalled());\n if (this.fetchDataMode === 'manual' && !isRefreshCalled) {\n this.isRefreshCalled.set(true);\n }\n if (this.dataPager && options.reset) {\n this.dataPager.goFirstPage();\n }\n }\n /**\n * @ignore\n */\n calculateRowIndex(index) {\n const highlightOffset = this.countHighlightBadgeRowsBefore(index);\n return this.dataSource.pageSize * this.page() + index - highlightOffset;\n }\n countHighlightBadgeRowsBefore(displayIndex) {\n let count = 0;\n const rows = this.displayedRows();\n for (let i = 0; i < displayIndex && i < rows.length; i++) {\n if (this.getRowHighlightBadge(rows[i])) {\n count++;\n }\n }\n return count;\n }\n /**\n * Handles double-click on resize handle to auto-fit column width.\n *\n * @param event - The mouse event from the double-click\n * @param columnIndex - The index of the column to auto-fit\n * @ignore\n */\n onResizeHandlerDoubleClick(event, columnIndex) {\n event.preventDefault();\n event.stopPropagation();\n this.autoFitColumn(columnIndex);\n }\n /**\n * @ignore\n */\n onResizeColumnStart(event, columnIndex) {\n this.onColumnSizeChanged.emit({\n type: 'start',\n data: {\n columnIndex: columnIndex,\n width: this.columns.get(columnIndex).width,\n dataField: this.columns.get(columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n event.preventDefault();\n event.stopPropagation();\n this.resizeColumnProp.startX = event.pageX;\n this.resizeColumnProp.thElement = event.target.parentElement;\n this.resizeColumnProp.startWidth = parseInt(this.resizeColumnProp.thElement.style.width);\n this.resizeColumnProp.columnIndex = columnIndex;\n if (isPlatformBrowser(this.platformID)) {\n this._zone.runOutsideAngular(() => {\n this.document.addEventListener('mousemove', this.onResizeColumnMove);\n this.document.addEventListener('mouseup', this.onResizeColumnEnd);\n });\n }\n }\n /**\n * @ignore\n */\n resetResizingProcess() {\n this.resizeColumnProp.thElement.removeAttribute('new-width');\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n }\n /**\n * @ignore\n */\n calculateStickyColumnsPositions() {\n let accumulatedWidthFromStart = 0;\n let lastStartColumn;\n this.columns.forEach((column) => {\n const width = parseInt(column.width);\n if (column.fixed === 'start' && !isNaN(width)) {\n column['stickyStart'] = accumulatedWidthFromStart + 'px';\n lastStartColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromStart += width;\n }\n });\n if (lastStartColumn)\n lastStartColumn['isLastFixedColumn'] = true;\n let accumulatedWidthFromEnd = 0;\n let firstEndColumn;\n for (let i = this.columns.length - 1; i >= 0; i--) {\n const column = this.columns.get(i);\n const width = parseInt(column.width);\n if (column.fixed === 'end' && !isNaN(width)) {\n column['stickyEnd'] = accumulatedWidthFromEnd + 'px';\n firstEndColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromEnd += width;\n }\n }\n if (firstEndColumn)\n firstEndColumn['isFirstFixedColumn'] = true;\n }\n /**\n * Auto-fits columns that have width='auto'.\n * Runs header-only sizing after view init (`headerOnly: true`) and full measurement after data load.\n *\n * @ignore\n */\n autoFitColumnsWithAutoWidth(options = {}) {\n const headerOnly = options.headerOnly ?? false;\n const autoWidthColumns = [];\n this.columns.forEach((column, index) => {\n const fitsByIntent = this.autoFitIntentColumns.has(column);\n const fitsPendingHeaderOnly = !headerOnly && this.pendingContentAutoFitColumns.has(column);\n if (!fitsByIntent && !fitsPendingHeaderOnly) {\n return;\n }\n if (this.userResizedColumns.has(column)) {\n return;\n }\n if (fitsByIntent && headerOnly && column.width === 'auto') {\n this.pendingContentAutoFitColumns.add(column);\n }\n autoWidthColumns.push(index);\n try {\n this.autoFitColumn(index, { maxWidth: 500, headerOnly });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n });\n }\n /**\n * Auto-fits all columns width based on their content.\n *\n * @param options - Configuration options\n * @param options.skipFixed - If true, skips fixed columns (default: true)\n * @param options.skipLoading - If true, skips if data is loading (default: true)\n * @param options.maxWidth - Maximum width for any column in pixels (default: 500)\n * @returns void\n */\n autoFitAllColumns(options = {}) {\n const { skipFixed = true, skipLoading = true, maxWidth = 500 } = options;\n // Skip if loading\n if (skipLoading && this.isLoading()) {\n console.warn('Cannot auto-fit columns while data is loading');\n return;\n }\n // Auto-fit each column\n this.columns.forEach((column, index) => {\n // Skip fixed columns if requested\n if (skipFixed && column.fixed) {\n return;\n }\n // Skip if column doesn't allow resizing\n if (!column.allowResizing) {\n return;\n }\n try {\n this.autoFitColumn(index, { maxWidth });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n });\n }\n /**\n * Auto-fits a column width based on its content.\n * Similar to Excel's \"AutoFit Column Width\" feature.\n * Uses an invisible helper table to measure actual content width without affecting the main table.\n *\n * @param columnIndex - The index of the column to auto-fit (0-based, based on columns QueryList)\n * @param options - Configuration options\n * @param options.maxWidth - Maximum width for the column in pixels (default: none)\n * @param options.headerOnly - When true, only the header cell is measured (e.g. before row data exists)\n * @returns void\n */\n autoFitColumn(columnIndex, options = {}) {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const column = this.columns.get(columnIndex);\n if (!column) {\n console.warn(`Column at index ${columnIndex} not found`);\n return;\n }\n const hostElement = this.getHostElement();\n if (!hostElement) {\n return;\n }\n const mainTable = hostElement.querySelector('table');\n if (!mainTable) {\n return;\n }\n // Find actual column index in rendered table (accounting for fixed columns)\n const allColumns = [...this.startFixedColumnsList(), ...this.normalColumnsList(), ...this.endFixedColumnsList()];\n const actualColumnIndex = allColumns.findIndex((c) => c === column);\n if (actualColumnIndex === -1) {\n console.warn('Column not found in rendered table');\n return;\n }\n // Create invisible helper table\n const helperTable = this.document.createElement('table');\n helperTable.style.position = 'absolute';\n helperTable.style.visibility = 'hidden';\n helperTable.style.tableLayout = 'auto';\n helperTable.style.width = 'auto';\n helperTable.style.top = '-9999px';\n helperTable.style.left = '-9999px';\n // Copy styles from main table\n const mainTableStyle = this.document.defaultView?.getComputedStyle(mainTable);\n if (mainTableStyle) {\n helperTable.style.fontSize = mainTableStyle.fontSize;\n helperTable.style.fontFamily = mainTableStyle.fontFamily;\n helperTable.style.fontWeight = mainTableStyle.fontWeight;\n }\n this.document.body.appendChild(helperTable);\n let maxWidth = 0;\n try {\n // Measure header cell\n const headerRow = mainTable.querySelector('thead tr');\n if (headerRow) {\n const headerCells = headerRow.querySelectorAll('th');\n if (headerCells.length > actualColumnIndex) {\n const headerCell = headerCells[actualColumnIndex];\n // Clone header cell to helper table\n const helperThead = this.document.createElement('thead');\n const helperTr = this.document.createElement('tr');\n const helperTh = headerCell.cloneNode(true);\n helperTh.style.width = 'auto';\n helperTh.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTh);\n helperThead.appendChild(helperTr);\n helperTable.appendChild(helperThead);\n // Force layout calculation\n const headerWidth = helperTh.offsetWidth;\n maxWidth = Math.max(maxWidth, headerWidth);\n helperTable.removeChild(helperThead);\n }\n }\n if (!(options.headerOnly ?? false)) {\n // Measure body cells\n const bodyRows = mainTable.querySelectorAll('tbody tr:not(.empty-row)');\n const helperTbody = this.document.createElement('tbody');\n helperTable.appendChild(helperTbody);\n // Sample first 20 rows for performance (you can adjust this)\n const sampleSize = Math.min(20, bodyRows.length);\n for (let i = 0; i < sampleSize; i++) {\n const row = bodyRows[i];\n const cells = row.querySelectorAll('td');\n if (cells.length > actualColumnIndex) {\n const cell = cells[actualColumnIndex];\n // Clone cell to helper table\n const helperTr = this.document.createElement('tr');\n const helperTd = cell.cloneNode(true);\n helperTd.style.width = 'auto';\n helperTd.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTd);\n helperTbody.appendChild(helperTr);\n // Force layout calculation\n const cellWidth = helperTd.offsetWidth;\n maxWidth = Math.max(maxWidth, cellWidth);\n helperTbody.removeChild(helperTr);\n }\n }\n }\n // Add some padding for better UX\n let finalWidth = Math.max(maxWidth + 40, 100); // Minimum 100px, add 40px padding\n // Apply max width if specified\n if (options.maxWidth) {\n finalWidth = Math.min(finalWidth, options.maxWidth);\n }\n // Set column width\n column.width = `${finalWidth}px`;\n if (!(options.headerOnly ?? false)) {\n this.pendingContentAutoFitColumns.delete(column);\n }\n // Trigger change detection to update the view\n this.columnsList.set([...this.columnsList()]);\n // Recalculate sticky positions if column is fixed\n if (column.fixed) {\n setTimeout(() => {\n this.calculateStickyColumnsPositions();\n }, 0);\n }\n // Emit column size changed event\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: columnIndex,\n width: column.width,\n dataField: column.name,\n },\n isUserInteraction: true,\n component: this,\n });\n }\n finally {\n // Clean up helper table\n if (helperTable.parentNode) {\n this.document.body.removeChild(helperTable);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableComponent, isStandalone: true, selector: \"ax-data-table\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, selectedRows: { classPropertyName: \"selectedRows\", publicName: \"selectedRows\", isSignal: false, isRequired: false, transformFunction: null }, parentField: { classPropertyName: \"parentField\", publicName: \"parentField\", isSignal: false, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: \"hasChildrenField\", publicName: \"hasChildrenField\", isSignal: false, isRequired: false, transformFunction: null }, rowDetailsTemplate: { classPropertyName: \"rowDetailsTemplate\", publicName: \"rowDetailsTemplate\", isSignal: false, isRequired: false, transformFunction: null }, rowCssClass: { classPropertyName: \"rowCssClass\", publicName: \"rowCssClass\", isSignal: false, isRequired: false, transformFunction: null }, cellCssClass: { classPropertyName: \"cellCssClass\", publicName: \"cellCssClass\", isSignal: false, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: \"highlightText\", publicName: \"highlightText\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: \"rowTemplate\", publicName: \"rowTemplate\", isSignal: false, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: false, isRequired: false, transformFunction: null }, noDataTemplate: { classPropertyName: \"noDataTemplate\", publicName: \"noDataTemplate\", isSignal: false, isRequired: false, transformFunction: null }, alternative: { classPropertyName: \"alternative\", publicName: \"alternative\", isSignal: false, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: \"showHeader\", publicName: \"showHeader\", isSignal: false, isRequired: false, transformFunction: null }, fixedHeader: { classPropertyName: \"fixedHeader\", publicName: \"fixedHeader\", isSignal: false, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: \"showFooter\", publicName: \"showFooter\", isSignal: false, isRequired: false, transformFunction: null }, fixedFooter: { classPropertyName: \"fixedFooter\", publicName: \"fixedFooter\", isSignal: false, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: false, isRequired: false, transformFunction: null }, allowReordering: { classPropertyName: \"allowReordering\", publicName: \"allowReordering\", isSignal: false, isRequired: false, transformFunction: null }, paging: { classPropertyName: \"paging\", publicName: \"paging\", isSignal: false, isRequired: false, transformFunction: null }, fetchDataMode: { classPropertyName: \"fetchDataMode\", publicName: \"fetchDataMode\", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: \"loading\", publicName: \"loading\", isSignal: false, isRequired: false, transformFunction: null }, focusedRow: { classPropertyName: \"focusedRow\", publicName: \"focusedRow\", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectedRowsChange: \"selectedRowsChange\", focusedRowChange: \"focusedRowChange\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", onColumnsOrderChanged: \"onColumnsOrderChanged\", onColumnSizeChanged: \"onColumnSizeChanged\", onPageChanged: \"onPageChanged\" }, host: { attributes: { \"ngSkipHydration\": \"true\" }, properties: { \"class.ax-data-table-look-minimal\": \"look() === \\\"minimal\\\"\" } }, providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], queries: [{ propertyName: \"customDataPager\", first: true, predicate: AXDataPagerComponent, descendants: true, static: true }, { propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"dataPager\", first: true, predicate: [\"dataPager\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n [ngClass]=\\\"getRowCssClass(data.row, data.rowIndex)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"\\n c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\n \\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"\\n c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\n \\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"\\n c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\n \\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-lighter-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-500)}ax-data-table .ax-highlight{background:rgb(var(--ax-comp-data-table-highlight-bg-color));color:rgb(var(--ax-comp-data-table-highlight-text-color));padding:0 .125rem;font-weight:500;box-shadow:0 0 0 1px rgba(var(--ax-comp-data-table-highlight-border-color),.25)}ax-infinite-scroll-data-table{--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-lighter-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-500)}ax-infinite-scroll-data-table .ax-highlight{background:rgb(var(--ax-comp-data-table-highlight-bg-color));color:rgb(var(--ax-comp-data-table-highlight-text-color));padding:0 .125rem;font-weight:500;box-shadow:0 0 0 1px rgba(var(--ax-comp-data-table-highlight-border-color),.25)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-dark-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-dark-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-400)}.ax-dark ax-infinite-scroll-data-table{--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-dark-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-dark-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-400)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0;position:relative}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-data-table-cell-tooltip-wrapper{position:relative;min-height:inherit}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-dark-surface));opacity:1}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-cell-tooltip-wrapper{display:flex;align-items:center;justify-content:center;width:100%}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-row-highlight-badge{position:static;display:inline-flex;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem;min-height:max-content}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead th{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead.ax-data-table-sticky-header{box-shadow:inset 0 1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:none}}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr td .ax-bg{border-inline-end:none}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody td{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr td{border-inline-end-width:0;border-inline-start-width:0}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{box-shadow:0 -1px rgba(var(--ax-comp-data-table-border-color))}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\" }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXDataPagerComponent, selector: \"ax-data-pager\", inputs: [\"value\", \"name\", \"disabled\", \"readonly\", \"isLoading\", \"size\", \"total\", \"displayMode\"], outputs: [\"valueChange\", \"onValueChanged\", \"disabledChange\", \"readonlyChange\", \"displayModeChange\", \"onChanged\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDataPagerNumericSelectorComponent, selector: \"ax-data-pager-numeric-selector\" }, { kind: \"component\", type: AXDataPagerPageSizesComponent, selector: \"ax-data-pager-page-sizes\", inputs: [\"sizes\"] }, { kind: \"component\", type: AXDataPagerPrevButtonsComponent, selector: \"ax-data-pager-prev-buttons\" }, { kind: \"component\", type: AXDataPagerInputSelectorComponent, selector: \"ax-data-pager-input-selector\" }, { kind: \"component\", type: AXDataPagerNextButtonsComponent, selector: \"ax-data-pager-next-buttons\" }, { kind: \"component\", type: AXDataPagerInfoComponent, selector: \"ax-data-pager-info\", inputs: [\"text\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-data-table', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n ngSkipHydration: 'true',\n '[class.ax-data-table-look-minimal]': 'look() === \"minimal\"',\n }, inputs: [\n 'dataSource',\n 'selectedRows',\n 'parentField',\n 'hasChildrenField',\n 'rowDetailsTemplate',\n 'rowCssClass',\n 'cellCssClass',\n 'highlightText',\n ], outputs: ['selectedRowsChange'], providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], imports: [\n NgTemplateOutlet,\n NgClass,\n CdkDropList,\n CdkScrollable,\n CdkDrag,\n AXDecoratorIconComponent,\n AXSkeletonComponent,\n AXDataPagerComponent,\n AXDecoratorGenericComponent,\n AXDataPagerNumericSelectorComponent,\n AXDataPagerPageSizesComponent,\n AXDataPagerPrevButtonsComponent,\n AXDataPagerInputSelectorComponent,\n AXDataPagerNextButtonsComponent,\n AXDataPagerInfoComponent,\n AXButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXTooltipDirective,\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n [ngClass]=\\\"getRowCssClass(data.row, data.rowIndex)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"\\n c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\n \\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"\\n c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\n \\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"getCellCssClass(data.row, c, calculateRowIndex(data.rowIndex))\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"\\n c.hasTitle && data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\n \\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-lighter-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-500)}ax-data-table .ax-highlight{background:rgb(var(--ax-comp-data-table-highlight-bg-color));color:rgb(var(--ax-comp-data-table-highlight-text-color));padding:0 .125rem;font-weight:500;box-shadow:0 0 0 1px rgba(var(--ax-comp-data-table-highlight-border-color),.25)}ax-infinite-scroll-data-table{--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-lighter-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-500)}ax-infinite-scroll-data-table .ax-highlight{background:rgb(var(--ax-comp-data-table-highlight-bg-color));color:rgb(var(--ax-comp-data-table-highlight-text-color));padding:0 .125rem;font-weight:500;box-shadow:0 0 0 1px rgba(var(--ax-comp-data-table-highlight-border-color),.25)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-dark-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-dark-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-400)}.ax-dark ax-infinite-scroll-data-table{--ax-comp-data-table-highlight-bg-color: var(--ax-sys-color-warning-dark-surface);--ax-comp-data-table-highlight-text-color: var(--ax-sys-color-on-warning-dark-surface);--ax-comp-data-table-highlight-border-color: var(--ax-sys-color-warning-400)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0;position:relative}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-data-table-cell-tooltip-wrapper{position:relative;min-height:inherit}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-primary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-secondary-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-success-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-warning-dark-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger td:not(.ax-index-column) .ax-bg{background-color:transparent}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger .ax-data-table-sticky-body-cell:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-lighter-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-surface));opacity:1}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-sys-color-danger-dark-surface));opacity:1}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-cell-tooltip-wrapper{display:flex;align-items:center;justify-content:center;width:100%}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column .ax-data-table-row-highlight-badge{position:static;display:inline-flex;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem;min-height:max-content}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead th{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead.ax-data-table-sticky-header{box-shadow:inset 0 1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:none}}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody tr td .ax-bg{border-inline-end:none}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tbody td{border-inline-end-width:0}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr td{border-inline-end-width:0;border-inline-start-width:0}@media screen and (min-width: 768px){ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last,ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:none}}ax-data-table.ax-data-table-look-minimal .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{box-shadow:0 -1px rgba(var(--ax-comp-data-table-border-color))}\\n\"] }]\n }], propDecorators: { dataPager: [{\n type: ViewChild,\n args: ['dataPager']\n }], customDataPager: [{\n type: ContentChild,\n args: [AXDataPagerComponent, {\n static: true,\n }]\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], noDataTemplate: [{\n type: Input\n }], alternative: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fixedHeader: [{\n type: Input\n }], showFooter: [{\n type: Input\n }], fixedFooter: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], allowReordering: [{\n type: Input\n }], paging: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRow: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], onColumnsOrderChanged: [{\n type: Output\n }], onColumnSizeChanged: [{\n type: Output\n }], onPageChanged: [{\n type: Output\n }], columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixpQ0FBaUMsRUFDakMsK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0IsK0JBQStCLEdBQ2hDLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVB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bEMsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBMEdELFdBQVc7c0JBRFYsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUs7Z0JBT04sY0FBYztzQkFEYixLQUFLO2dCQVNOLFdBQVc7c0JBRFYsS0FBSztnQkFTTixVQUFVO3NCQURULEtBQUs7Z0JBU04sV0FBVztzQkFEVixLQUFLO2dCQVNOLFVBQVU7c0JBRFQsS0FBSztnQkFTTixXQUFXO3NCQURWLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLO2dCQVNOLGVBQWU7c0JBRGQsS0FBSztnQkFTTixNQUFNO3NCQURMLEtBQUs7Z0JBU04sYUFBYTtzQkFEWixLQUFLO2dCQVNOLE9BQU87c0JBRE4sS0FBSztnQkFlSyxVQUFVO3NCQURwQixLQUFLO2dCQXFCTixnQkFBZ0I7c0JBRGYsTUFBTTtnQkFTUCxVQUFVO3NCQURULE1BQU07Z0JBU1AsWUFBWTtzQkFEWCxNQUFNO2dCQVNQLHFCQUFxQjtzQkFEcEIsTUFBTTtnQkFTUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBU1AsYUFBYTtzQkFEWixNQUFNO2dCQThCRyxPQUFPO3NCQURoQixlQUFlO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICBBWERhdGFQYWdlckNoYW5nZWRFdmVudCxcbiAgQVhEYXRhUGFnZXJDb21wb25lbnQsXG4gIEFYRGF0YVBhZ2VySW5mb0NvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJJbnB1dFNlbGVjdG9yQ29tcG9uZW50LFxuICBBWERhdGFQYWdlck5leHRCdXR0b25zQ29tcG9uZW50LFxuICBBWERhdGFQYWdlck51bWVyaWNTZWxlY3RvckNvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJQYWdlU2l6ZXNDb21wb25lbnQsXG4gIEFYRGF0YVBhZ2VyUHJldkJ1dHRvbnNDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXBhZ2VyJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCwgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBET0NVTUVOVCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBWEJhc2VEYXRhVGFibGUsXG4gIEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50LFxuICBBWERhdGFUYWJsZUxvb2ssXG4gIEFYRGF0YVRhYmxlUm93Q2xpY2ssXG4gIEFYRGF0YVRhYmxlUm93RGJDbGljayxcbiAgb25Db2x1bW5TaXplQ2hhbmdlZEV2ZW50LFxufSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgYSBkYXRhIHRhYmxlIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnLFxuICAgICdbY2xhc3MuYXgtZGF0YS10YWJsZS1sb29rLW1pbmltYWxdJzogJ2xvb2soKSA9PT0gXCJtaW5pbWFsXCInLFxuICB9LFxuICBpbnB1dHM6IFtcbiAgICAnZGF0YVNvdXJjZScsXG4gICAgJ3NlbGVjdGVkUm93cycsXG4gICAgJ3BhcmVudEZpZWxkJyxcbiAgICAnaGFzQ2hpbGRyZW5GaWVsZCcsXG4gICAgJ3Jvd0RldGFpbHNUZW1wbGF0ZScsXG4gICAgJ3Jvd0Nzc0NsYXNzJyxcbiAgICAnY2VsbENzc0NsYXNzJyxcbiAgICAnaGlnaGxpZ2h0VGV4dCcsXG4gIF0sXG4gIG91dHB1dHM6IFsnc2VsZWN0ZWRSb3dzQ2hhbmdlJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhCYXNlRGF0YVRhYmxlLCB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTmdDbGFzcyxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtTY3JvbGxhYmxlLFxuICAgIENka0RyYWcsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYU2tlbGV0b25Db21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyTnVtZXJpY1NlbGVjdG9yQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyUGFnZVNpemVzQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyUHJldkJ1dHRvbnNDb21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJJbnB1dFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyTmV4dEJ1dHRvbnNDb21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJJbmZvQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFYVG9vbHRpcERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEYXRhVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHRhYmxlIGxvb2suXG4gICAqXG4gICAqIC0gYGNsYXNzaWNgIOKAlCBjbGFzc2ljIGxvb2sgKGRlZmF1bHQpLlxuICAgKiAtIGBtaW5pbWFsYCDigJQgbWluaW1hbCBsb29rLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGAnY2xhc3NpYydgXG4gICAqL1xuICBsb29rID0gaW5wdXQ8QVhEYXRhVGFibGVMb29rPignY2xhc3NpYycpO1xuXG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG4gIHByaXZhdGUgX3pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdkYXRhUGFnZXInKSBkYXRhUGFnZXI7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChBWERhdGFQYWdlckNvbXBvbmVudCwge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgY3VzdG9tRGF0YVBhZ2VyOiBBWERhdGFQYWdlckNvbXBvbmVudDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBydGwhOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRpc3BsYXllZFJvd3M6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFnZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBwYWdlU2l6ZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0xvYWRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKHRydWUpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbHVtbnNMaXN0OiBXcml0YWJsZVNpZ25hbDxhbnlbXT4gPSBzaWduYWwoW10pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbHVtbnNMaXN0KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09PSAnZW5kJykpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdDogU2lnbmFsPGFueVtdPiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zTGlzdCgpLmZpbHRlcigoYykgPT4gYy5maXhlZCA9PT0gJ3N0YXJ0JyksXG4gICk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm9ybWFsQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuY29sdW1uc0xpc3QoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgIT09ICdlbmQnICYmIGMuZml4ZWQgIT09ICdzdGFydCcpLFxuICApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc2l6ZUNvbHVtblByb3AgPSB7IHN0YXJ0WDogMCwgc3RhcnRXaWR0aDogMCwgY29sdW1uSW5kZXg6IDAsIG5ld0NvbHVtbldpZHRoOiAwLCB0aEVsZW1lbnQ6IG51bGwgfTtcblxuICAvKipcbiAgICogQ29sdW1ucyB0aGF0IHVzZWQgYHdpZHRoPVwiYXV0b1wiYCBhbmQgcmVjZWl2ZWQgaGVhZGVyLW9ubHkgc2l6aW5nIGJlZm9yZSByb3dzIHdlcmUgYXZhaWxhYmxlLlxuICAgKiBUaGV5IGdldCBhIGZ1bGwgY29udGVudCBtZWFzdXJlbWVudCBvbmNlIGRhdGEgaXMgcHJlc2VudC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBwZW5kaW5nQ29udGVudEF1dG9GaXRDb2x1bW5zID0gbmV3IFdlYWtTZXQ8QVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENvbHVtbnMgdGhhdCB3ZXJlIGNvbmZpZ3VyZWQgd2l0aCBgd2lkdGg9XCJhdXRvXCJgIChpbnRlbnQpLCBldmVuIGlmIHdlIGxhdGVyIHNldCBhIHBpeGVsIHdpZHRoLlxuICAgKiBVc2VkIHRvIHJlLW1lYXN1cmUgb24gZXZlcnkgcGFnZS9kYXRhIGNoYW5nZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBhdXRvRml0SW50ZW50Q29sdW1ucyA9IG5ldyBXZWFrU2V0PEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50PigpO1xuXG4gIC8qKlxuICAgKiBDb2x1bW5zIHRoZSB1c2VyIG1hbnVhbGx5IHJlc2l6ZWQgYnkgZHJhZ2dpbmcuIEF1dG8tZml0IHNob3VsZCBub3Qgb3ZlcnJpZGUgdXNlciBjaG9pY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXNlclJlc2l6ZWRDb2x1bW5zID0gbmV3IFdlYWtTZXQ8QVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFzSXRlbXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFJvd3MgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRQYWdlID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFBhZ2VzID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzdGFydFJvd0luZGV4ID0gMDtcblxuICAvKipcbiAgICogVGVtcGxhdGUgZm9yIGN1c3RvbSByb3cgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHRvIGRpc3BsYXkgd2hlbiB0aGUgdGFibGUgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHRvIGRpc3BsYXkgd2hlbiBubyBkYXRhIGlzIGxvYWRlZCB5ZXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBub0RhdGFUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGlmIGFsdGVybmF0aXZlIHJvdyBzdHlsaW5nIHNob3VsZCBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgYWx0ZXJuYXRpdmUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHRhYmxlIGhlYWRlciBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSBmaXhlZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZpeGVkSGVhZGVyID0gdHJ1ZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSB0YWJsZSBmb290ZXIgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93Rm9vdGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGFibGUgZm9vdGVyIHNob3VsZCBiZSBmaXhlZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZpeGVkRm9vdGVyID0gdHJ1ZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBoZWlnaHQgb2YgZWFjaCBpdGVtIGluIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgNDBgXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtSGVpZ2h0OiBudW1iZXIgfCAnYXV0bycgPSA0MDtcblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyByb3cgcmVvcmRlcmluZy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGxvd1Jlb3JkZXJpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBwYWdpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG4gICAqL1xuICBASW5wdXQoKVxuICBwYWdpbmcgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IGRhdGEgc2hvdWxkIGJlIGZldGNoZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYCdhdXRvJ2BcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZldGNoRGF0YU1vZGU6ICdhdXRvJyB8ICdtYW51YWwnID0gJ2F1dG8nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBsb2FkaW5nIHN0YXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9YFxuICAgKi9cbiAgQElucHV0KClcbiAgbG9hZGluZzogeyBlbmFibGVkOiBib29sZWFuOyBhbmltYXRpb246IGJvb2xlYW47IGxvYWRpbmdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+IH0gPSB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBhbmltYXRpb246IHRydWUsXG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb2N1c2VkUm93OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCByb3cuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGZvY3VzZWRSb3coKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRSb3c7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY3VycmVudGx5IGZvY3VzZWQgcm93IGFuZCBlbWl0cyB0aGUgY2hhbmdlIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdiAtIFRoZSByb3cgdG8gYmUgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBzZXQgZm9jdXNlZFJvdyh2OiB1bmtub3duKSB7XG4gICAgdGhpcy5fZm9jdXNlZFJvdyA9IHY7XG4gICAgdGhpcy5mb2N1c2VkUm93Q2hhbmdlLmVtaXQodik7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgZm9jdXNlZCByb3cgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgZm9jdXNlZFJvd0NoYW5nZTogRXZlbnRFbWl0dGVyPHVua25vd24+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudCBvblJvd0NsaWNrXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dDbGljazogRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93Q2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0NsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcm93IGlzIGRvdWJsZS1jbGlja2VkLlxuICAgKlxuICAgKiBAZXZlbnQgb25Sb3dEYkNsaWNrXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBvcmRlciBvZiBjb2x1bW5zIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudCBvbkNvbHVtbnNPcmRlckNoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNvbHVtbnNPcmRlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaXplIG9mIGNvbHVtbnMgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50IG9uQ29sdW1uU2l6ZUNoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNvbHVtblNpemVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8b25Db2x1bW5TaXplQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8b25Db2x1bW5TaXplQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHBhZ2UgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50IG9uQ29sdW1uU2l6ZUNoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFQYWdlckNoYW5nZWRFdmVudD4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2xpY2tTdWJqZWN0ID0gbmV3IFN1YmplY3Q8eyBldmVudDogTW91c2VFdmVudDsgaXRlbTogYW55IH0+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGlzUmVmcmVzaENhbGxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBpbiBtYW51YWwgbW9kZSBhbmQgbm8gZGF0YSBoYXMgYmVlbiBsb2FkZWQgeWV0LlxuICAgKi9cbiAgcHVibGljIGdldCBzaG93Tm9EYXRhTG9hZGVkWWV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZldGNoRGF0YU1vZGUgPT09ICdtYW51YWwnICYmICF0aGlzLmlzUmVmcmVzaENhbGxlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvb3Qgcm93cyBmcm9tIHRoZSBsYXRlc3QgZGF0YSBzb3VyY2UgbG9hZCAoYmVmb3JlIGhpZ2hsaWdodCBtZXJnZSkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbGFzdExvYWRlZFJvd3M6IHVua25vd25bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IFF1ZXJ5TGlzdDxBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGlmICh0aGlzLmN1c3RvbURhdGFQYWdlcikge1xuICAgICAgdGhpcy5hcHBseURhdGFQYWdlck1ldGhvZHMoKTtcbiAgICB9XG4gICAgdGhpcy5ydGwgPSBBWEh0bWxVdGlsLmlzUnRsKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnVzZUNhY2hlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZmV0Y2hEYXRhTW9kZSA9PSAnYXV0bycpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlKDApO1xuICAgIH1cbiAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KG5ldyBBcnJheSh0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUpKTtcbiAgICB0aGlzLnRvdGFsUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcy5sZW5ndGg7XG4gICAgdGhpcy5kYXRhU291cmNlLm9uTG9hZGluZ0NoYW5nZWQucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZGF0YSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25DaGFuZ2VkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgY29uc3Qgc2hvdWxkTW92ZVRvUHJldmlvdXNQYWdlID0gZGF0YS50b3RhbENvdW50ID4gMCAmJiBkYXRhLml0ZW1zLmxlbmd0aCA9PT0gMCAmJiBkYXRhLnBhZ2UgPiAwO1xuICAgICAgaWYgKHNob3VsZE1vdmVUb1ByZXZpb3VzUGFnZSkge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKGRhdGEucGFnZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhclJlc29sdmVkQ3NzQ2xhc3NlcygpO1xuICAgICAgdGhpcy5sYXN0TG9hZGVkUm93cyA9IGRhdGEuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbVt0aGlzLnBhcmVudEZpZWxkXSk7XG4gICAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KHRoaXMubWVyZ2VSb3dzV2l0aEhpZ2hsaWdodHModGhpcy5sYXN0TG9hZGVkUm93cykpO1xuICAgICAgdGhpcy50b3RhbFJvd3MgPSBkYXRhLnRvdGFsQ291bnQ7XG4gICAgICB0aGlzLmhhc0l0ZW1zID0gZGF0YS50b3RhbENvdW50ID4gMDtcbiAgICAgIHRoaXMuc2NoZWR1bGVUZXh0SGlnaGxpZ2h0KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25JdGVtRXhwYW5kZWQucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBjb25zdCB7IGV4cGFuZGVkSXRlbSwgY2hpbGRyZW4gfSA9IGRhdGE7XG4gICAgICAvLyBJZiBjaGlsZHJlbiBpcyBudWxsLCBpdCBtZWFucyB3ZSBvbmx5IHdhbnQgdG8gdG9nZ2xlIHJvdyBkZXRhaWxzIHdpdGhvdXQgbWFuYWdpbmcgY2hpbGRyZW5cbiAgICAgIGlmIChjaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmRpc3BsYXllZFJvd3MudXBkYXRlKChwcmV2KSA9PiB0aGlzLnRvZ2dsZUV4cGFuZGVkU3RhdGUocHJldiwgZXhwYW5kZWRJdGVtKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BsYXllZFJvd3MudXBkYXRlKChwcmV2KSA9PiB0aGlzLnRvZ2dsZUV4cGFuZGVkKHByZXYsIGV4cGFuZGVkSXRlbSwgY2hpbGRyZW4pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1SZWZyZXNoQ2hpbGRyZW4ucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBjb25zdCB7IGlkIH0gPSBkYXRhO1xuICAgICAgdGhpcy5yZWZyZXNoRXhwYW5kZWRJdGVtKGlkKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFnZVNpemUuc2V0KHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSk7XG5cbiAgICAvL1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgYnVmZmVyKHRoaXMuY2xpY2tTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpKSxcbiAgICAgICAgZmlsdGVyKChjbGlja0FycmF5KSA9PiBjbGlja0FycmF5Lmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjbGlja0FycmF5KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlUm93RG91YmxlQ2xpY2soY2xpY2tBcnJheVswXS5ldmVudCwgY2xpY2tBcnJheVswXS5pdGVtKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxjdWxhdGVTdGlja3lDb2x1bW5zUG9zaXRpb25zKCk7XG4gICAgdGhpcy5jb2x1bW5zTGlzdC5zZXQodGhpcy5jb2x1bW5zLnRvQXJyYXkoKSk7XG4gICAgdGhpcy5jb2x1bW5zLmNoYW5nZXMucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjb2xzKSA9PiB7XG4gICAgICB0aGlzLmNvbHVtbnNMaXN0LnNldChjb2xzLnRvQXJyYXkoKSk7XG4gICAgICB0aGlzLmNhcHR1cmVBdXRvRml0SW50ZW50Q29sdW1ucygpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9GaXRDb2x1bW5zV2l0aEF1dG9XaWR0aCh7IGhlYWRlck9ubHk6IHRydWUgfSksIDApO1xuICAgIH0pO1xuXG4gICAgLy8gSGVhZGVyLW9ubHkgYXV0by1maXQgZm9yIHdpZHRoPSdhdXRvJyBzbyBjb2x1bW5zIGRvIG5vdCBjb2xsYXBzZSBiZWZvcmUgZGF0YSBsb2Fkc1xuICAgIHRoaXMuY2FwdHVyZUF1dG9GaXRJbnRlbnRDb2x1bW5zKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9GaXRDb2x1bW5zV2l0aEF1dG9XaWR0aCh7IGhlYWRlck9ubHk6IHRydWUgfSksIDApO1xuXG4gICAgLy8gRnVsbCBhdXRvLWZpdCBmb3Igd2lkdGg9J2F1dG8nIChhbmQgcGVuZGluZyBoZWFkZXItb25seSBjb2x1bW5zKSBhZnRlciBkYXRhIGxvYWRcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkNoYW5nZWQucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIERlbGF5IHRvIGVuc3VyZSBET00gaXMgcmVhZHlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdXRvRml0Q29sdW1uc1dpdGhBdXRvV2lkdGgoKTtcbiAgICAgICAgICB0aGlzLnNjaGVkdWxlVGV4dEhpZ2hsaWdodCgpO1xuICAgICAgICB9LCAxMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zY2hlZHVsZVRleHRIaWdobGlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FwdHVyZUF1dG9GaXRJbnRlbnRDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGlmIChjb2x1bW4ud2lkdGggPT09ICdhdXRvJykge1xuICAgICAgICB0aGlzLmF1dG9GaXRJbnRlbnRDb2x1bW5zLmFkZChjb2x1bW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpc3BsYXkgdGV4dCBmb3IgYSBjZWxsLiBVc2VkIGZvciB0aGUgY2VsbCB0b29sdGlwIHdoZW4gdGhlIGNvbHVtbiBoYXMgYGhhc1RpdGxlYC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRDZWxsVG9vbHRpcFRleHQoY29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCwgcm93RGF0YTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgPT0gbnVsbCB8fCB0eXBlb2Ygcm93RGF0YSAhPT0gJ29iamVjdCcpIHJldHVybiAnJztcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gY29sdW1uLmdldENlbGxEaXNwbGF5VGV4dChyb3dEYXRhKTtcbiAgICB9XG4gICAgY29uc3QgY29sID0gY29sdW1uIGFzIHsgZGF0YUZpZWxkPzogc3RyaW5nIH07XG4gICAgaWYgKGNvbC5kYXRhRmllbGQgIT0gbnVsbCAmJiBjb2wuZGF0YUZpZWxkIGluIChyb3dEYXRhIGFzIG9iamVjdCkpIHtcbiAgICAgIGNvbnN0IHYgPSAocm93RGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbY29sLmRhdGFGaWVsZF07XG4gICAgICByZXR1cm4gdiAhPSBudWxsID8gU3RyaW5nKHYpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgI2VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0YVBhZ2VyKSB7XG4gICAgICB0aGlzLmN1c3RvbURhdGFQYWdlci50b3RhbCA9IHRoaXMuZGF0YVNvdXJjZS50b3RhbENvdW50O1xuICAgICAgdGhpcy5jdXN0b21EYXRhUGFnZXIuc2l6ZSA9IHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZTtcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLmlzTG9hZGluZyA9IHRoaXMuaXNMb2FkaW5nKCk7XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZXhwYW5kZWQgc3RhdGUgb2YgYSByb3cgd2l0aG91dCBtYW5hZ2luZyBjaGlsZHJlbi5cbiAgICogVXNlZCBmb3Igcm93IGRldGFpbHMgdGVtcGxhdGUgd2l0aG91dCBuZXN0ZWQgaGllcmFyY2h5LlxuICAgKlxuICAgKiBAcGFyYW0gcm93cyAtIFRoZSBhcnJheSBvZiByb3dzIHRvIHNlYXJjaCBpblxuICAgKiBAcGFyYW0gZXhwYW5kZWRJdGVtIC0gVGhlIGl0ZW0gdG8gdG9nZ2xlXG4gICAqIEByZXR1cm5zIFVwZGF0ZWQgcm93cyBhcnJheSB3aXRoIHRvZ2dsZWQgc3RhdGVcbiAgICovXG4gIHByb3RlY3RlZCB0b2dnbGVFeHBhbmRlZFN0YXRlKHJvd3M6IGFueVtdLCBleHBhbmRlZEl0ZW06IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChleHBhbmRlZEl0ZW1bdGhpcy5nZXREYXRhU291cmNlS2V5KCldID09PSBpdGVtW3RoaXMuZ2V0RGF0YVNvdXJjZUtleSgpXSkge1xuICAgICAgICBjb25zdCBpc0V4cGFuZGVkID0gIWl0ZW0/Ll9fbWV0YV9fPy5leHBhbmRlZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIF9fbWV0YV9fOiB7IGV4cGFuZGVkOiBpc0V4cGFuZGVkLCBsZXZlbDogZXhwYW5kZWRJdGVtPy5fX21ldGFfXz8ubGV2ZWwgPz8gMCB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlRXhwYW5kZWQocm93czogYW55W10sIGV4cGFuZGVkSXRlbTogYW55LCBjaGlsZHJlbjogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIHJvd3MubWFwKChpdGVtKSA9PiB7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGlmICghYy5fX21ldGFfXykge1xuICAgICAgICAgIGMuX19tZXRhX18gPSB7IGxldmVsOiAoZXhwYW5kZWRJdGVtPy5fX21ldGFfXz8ubGV2ZWwgPz8gMCkgKyAxIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZXhwYW5kZWRJdGVtW3RoaXMuZ2V0RGF0YVNvdXJjZUtleSgpXSA9PT0gaXRlbVt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV0pIHtcbiAgICAgICAgY29uc3QgaXNFeHBhbmRlZCA9ICFpdGVtPy5fX21ldGFfXz8uZXhwYW5kZWQ7XG4gICAgICAgIGNvbnN0IG5leHRDaGlsZHJlbiA9IGNoaWxkcmVuID8gdGhpcy50b2dnbGVFeHBhbmRlZChjaGlsZHJlbiwgZXhwYW5kZWRJdGVtLCBpdGVtLmNoaWxkcmVuIHx8IFtdKSA6IG51bGw7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBfX21ldGFfXzogeyBleHBhbmRlZDogaXNFeHBhbmRlZCwgbGV2ZWw6IGV4cGFuZGVkSXRlbT8uX19tZXRhX18/LmxldmVsID8/IDAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogbmV4dENoaWxkcmVuLFxuICAgICAgICAgIFt0aGlzLmhhc0NoaWxkcmVuRmllbGRdOiBuZXh0Q2hpbGRyZW4gIT0gbnVsbCAmJiBuZXh0Q2hpbGRyZW4ubGVuZ3RoID4gMCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICByZXR1cm4geyAuLi5pdGVtLCBjaGlsZHJlbjogdGhpcy50b2dnbGVFeHBhbmRlZChpdGVtLmNoaWxkcmVuLCBleHBhbmRlZEl0ZW0sIGNoaWxkcmVuKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gIH1cbiAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hFeHBhbmRlZEl0ZW0oaWQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIGNvbnN0IG5ld0NoaWxkcmVuID0gYXdhaXQgdGhpcy5kYXRhU291cmNlLmdldEl0ZW1zQnlGaWx0ZXIoe1xuICAgICAgZmllbGQ6IHRoaXMucGFyZW50RmllbGQsXG4gICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICB2YWx1ZTogaWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLmRpc3BsYXllZFJvd3MudXBkYXRlKChwcmV2KSA9PiB0aGlzLnVwZGF0ZUNoaWxkcmVuKHByZXYsIGlkLCBuZXdDaGlsZHJlbi5pdGVtcykpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGlsZHJlbihpdGVtczogYW55W10sIGlkOiBzdHJpbmcgfCBudW1iZXIsIG5ld0NoaWxkcmVuOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbVt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV0gPT09IGlkKSB7XG4gICAgICAgIG5ld0NoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgY2hpbGQuX19tZXRhX18gPSB7IC4uLmNoaWxkLl9fbWV0YV9fLCBsZXZlbDogKGl0ZW0uX19tZXRhX18/LmxldmVsIHx8IDApICsgMSB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIGNoaWxkcmVuOiBjbG9uZURlZXAobmV3Q2hpbGRyZW4pLFxuICAgICAgICAgIFt0aGlzLmhhc0NoaWxkcmVuRmllbGRdOiBuZXdDaGlsZHJlbi5sZW5ndGggPiAwLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGNoaWxkcmVuOiB0aGlzLnVwZGF0ZUNoaWxkcmVuKGl0ZW0uY2hpbGRyZW4sIGlkLCBuZXdDaGlsZHJlbikgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8YW55LCBhbnksIGFueT4pIHtcbiAgICBjb25zdCBjbG9uZWRDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1uc0xpc3QoKV07XG4gICAgbW92ZUl0ZW1JbkFycmF5KGNsb25lZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5jb2x1bW5zTGlzdC5zZXQoY2xvbmVkQ29sdW1ucyk7XG5cbiAgICB0aGlzLm9uQ29sdW1uc09yZGVyQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB7IGV2ZW50IH0sIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUm93Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmhhbmRsZVJvd1NpbmdsZUNsaWNrKGV2ZW50LCBpdGVtKTtcbiAgICB0aGlzLmNsaWNrU3ViamVjdC5uZXh0KHsgZXZlbnQsIGl0ZW0gfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQ6IEV2ZW50LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb2N1c2VkUm93ID09IGl0ZW0pIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IGl0ZW07XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IGl0ZW0sIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ2hhbmdlUGFnZShldmVudDogQVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLm9uUGFnZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgaWYgKGV2ZW50LmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlQ2hhbmdlZCA9IGV2ZW50LnBhZ2UgLSAxICE9IHRoaXMucGFnZSgpO1xuICAgICAgY29uc3QgcGFnZVNpemVDaGFuZ2VkID0gZXZlbnQudGFrZSAhPSB0aGlzLnBhZ2VTaXplKCk7XG5cbiAgICAgIGlmIChwYWdlQ2hhbmdlZCB8fCBwYWdlU2l6ZUNoYW5nZWQpIHtcbiAgICAgICAgaWYgKHBhZ2VDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYWdlLnNldChldmVudC5wYWdlIC0gMSk7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldFBhZ2UodGhpcy5wYWdlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhZ2VTaXplQ2hhbmdlZCkge1xuICAgICAgICAgIHRoaXMucGFnZVNpemUuc2V0KGV2ZW50LnRha2UpO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlU2l6ZSh0aGlzLnBhZ2VTaXplKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXllZCByb3dzIGFuZCBkYXRhIHNvdXJjZVxuICAgICAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KG5ldyBBcnJheSh0aGlzLnBhZ2VTaXplKCkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdvVG9QYWdlKHBhZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFnZXJQYWdlID0gTWF0aC5tYXgoMSwgcGFnZUluZGV4KTtcbiAgICBpZiAodGhpcy5jdXN0b21EYXRhUGFnZXIpIHtcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLmdvVG9QYWdlKHBhZ2VyUGFnZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFQYWdlcikge1xuICAgICAgdGhpcy5kYXRhUGFnZXIuZ29Ub1BhZ2UocGFnZXJQYWdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYWdlLnNldChwYWdlclBhZ2UgLSAxKTtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0UGFnZSh0aGlzLnBhZ2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dEb3VibGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5mb2N1c2VkUm93ID0gaXRlbTtcbiAgICAvL1xuICAgIHRoaXMub25Sb3dEYkNsaWNrLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IGl0ZW0sIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGFwcGx5RGF0YVBhZ2VyTWV0aG9kcygpIHtcbiAgICB0aGlzLmN1c3RvbURhdGFQYWdlci5vbkNoYW5nZWRcbiAgICAgIC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEFYRGF0YVBhZ2VyQ2hhbmdlZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUNoYW5nZVBhZ2UoZXZlbnQpKTtcbiAgICB0aGlzLmN1c3RvbURhdGFQYWdlci5kaXNwbGF5TW9kZSA9ICdjdXN0b20nO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrIGV2ZW50IG9uIGEgY29sdW1uIGhlYWRlci5cbiAgICogVG9nZ2xlcyB0aGUgc29ydGluZyBkaXJlY3Rpb24gb3IgcmVtb3ZlcyB0aGUgc29ydCBpZiBhbHJlYWR5IHNvcnRlZC5cbiAgICpcbiAgICogQHBhcmFtIGUgLSBUaGUgbW91c2UgZXZlbnQgdHJpZ2dlcmVkIGJ5IHRoZSBjbGljay5cbiAgICogQHBhcmFtIGNvbHVtbiAtIFRoZSBjb2x1bW4gdGhhdCB3YXMgY2xpY2tlZC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbHVtbkNsaWNrKGU6IE1vdXNlRXZlbnQsIGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIGlmICghc29ydCkge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5wdXNoKHsgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsIGRpcjogJ2FzYycgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc29ydC5kaXIgPT0gJ2FzYycpIHtcbiAgICAgICAgICBzb3J0LmRpciA9ICdkZXNjJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbHRlcigoYykgPT4gYyAhPSBzb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U29ydChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIHJldHVybiBzb3J0ID8gKHNvcnQuZGlyID09ICdhc2MnID8gJ2F4LWljb24tYXJyb3ctbG9uZy1kb3duJyA6ICdheC1pY29uLWFycm93LWxvbmctdXAnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1hcHBsaWVzIHBpbm5lZCBoaWdobGlnaHRlZCByb3dzIHRvIHRoZSBjdXJyZW50IHZpZXcuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvblJvd0hpZ2hsaWdodHNDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkUm93cy5zZXQodGhpcy5tZXJnZVJvd3NXaXRoSGlnaGxpZ2h0cyh0aGlzLmxhc3RMb2FkZWRSb3dzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25Dc3NDbGFzc1Jlc29sdmVkKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkUm93cy51cGRhdGUoKHJvd3MpID0+IFsuLi5yb3dzXSk7XG4gICAgc3VwZXIub25Dc3NDbGFzc1Jlc29sdmVkKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBkYXRhIHRhYmxlIHdpdGggb3B0aW9uYWwgcmVzZXQgb3B0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHJlZnJlc2ggb3BlcmF0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5yZXNldCAtIFdoZXRoZXIgdG8gcmVzZXQgcGFnaW5hdGlvbiBzdGF0ZS5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHJlZnJlc2gob3B0aW9uczogeyByZXNldD86IGJvb2xlYW47IHByZXNlcnZlSGlnaGxpZ2h0cz86IGJvb2xlYW4gfSA9IHsgcmVzZXQ6IHRydWUgfSkge1xuICAgIGlmICghb3B0aW9ucy5wcmVzZXJ2ZUhpZ2hsaWdodHMpIHtcbiAgICAgIHRoaXMuY2xlYXJSb3dIaWdobGlnaHRzKCk7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJSZXNvbHZlZENzc0NsYXNzZXMoKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaChvcHRpb25zKTtcbiAgICBjb25zdCBpc1JlZnJlc2hDYWxsZWQgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5pc1JlZnJlc2hDYWxsZWQoKSk7XG4gICAgaWYgKHRoaXMuZmV0Y2hEYXRhTW9kZSA9PT0gJ21hbnVhbCcgJiYgIWlzUmVmcmVzaENhbGxlZCkge1xuICAgICAgdGhpcy5pc1JlZnJlc2hDYWxsZWQuc2V0KHRydWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhUGFnZXIgJiYgb3B0aW9ucy5yZXNldCkge1xuICAgICAgdGhpcy5kYXRhUGFnZXIuZ29GaXJzdFBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVSb3dJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgaGlnaGxpZ2h0T2Zmc2V0ID0gdGhpcy5jb3VudEhpZ2hsaWdodEJhZGdlUm93c0JlZm9yZShpbmRleCk7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSAqIHRoaXMucGFnZSgpICsgaW5kZXggLSBoaWdobGlnaHRPZmZzZXQ7XG4gIH1cblxuICBwcml2YXRlIGNvdW50SGlnaGxpZ2h0QmFkZ2VSb3dzQmVmb3JlKGRpc3BsYXlJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmRpc3BsYXllZFJvd3MoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGxheUluZGV4ICYmIGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXRSb3dIaWdobGlnaHRCYWRnZShyb3dzW2ldKSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGRvdWJsZS1jbGljayBvbiByZXNpemUgaGFuZGxlIHRvIGF1dG8tZml0IGNvbHVtbiB3aWR0aC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IC0gVGhlIG1vdXNlIGV2ZW50IGZyb20gdGhlIGRvdWJsZS1jbGlja1xuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0byBhdXRvLWZpdFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25SZXNpemVIYW5kbGVyRG91YmxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbHVtbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYXV0b0ZpdENvbHVtbihjb2x1bW5JbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvblJlc2l6ZUNvbHVtblN0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50LCBjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5vbkNvbHVtblNpemVDaGFuZ2VkLmVtaXQoe1xuICAgICAgdHlwZTogJ3N0YXJ0JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICB3aWR0aDogdGhpcy5jb2x1bW5zLmdldChjb2x1bW5JbmRleCkud2lkdGgsXG4gICAgICAgIGRhdGFGaWVsZDogdGhpcy5jb2x1bW5zLmdldChjb2x1bW5JbmRleCkubmFtZSxcbiAgICAgIH0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICB9KTtcblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRYID0gZXZlbnQucGFnZVg7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0V2lkdGggPSBwYXJzZUludCh0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LnN0eWxlLndpZHRoKTtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AuY29sdW1uSW5kZXggPSBjb2x1bW5JbmRleDtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZUNvbHVtbk1vdmUpO1xuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplQ29sdW1uRW5kKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBvblJlc2l6ZUNvbHVtbk1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICBjb25zdCBkaWZmWCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0WDtcbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMucnRsID8gdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0V2lkdGggLSBkaWZmWCA6IHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFdpZHRoICsgZGlmZlg7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke01hdGgubWF4KDEwMCwgbmV3V2lkdGgpfXB4YDtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LnNldEF0dHJpYnV0ZSgnbmV3LXdpZHRoJywgYCR7bmV3V2lkdGh9YCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIG9uUmVzaXplQ29sdW1uRW5kID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVDb2x1bW5Nb3ZlKTtcbiAgICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVDb2x1bW5FbmQpO1xuICAgIH1cbiAgICBjb25zdCBuZXdXaWR0aCA9IHBhcnNlSW50KHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ25ldy13aWR0aCcpPy52YWx1ZSk7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmdldCh0aGlzLnJlc2l6ZUNvbHVtblByb3AuY29sdW1uSW5kZXgpO1xuICAgIGNvbHVtbi53aWR0aCA9IGAke01hdGgubWF4KDEwMCwgbmV3V2lkdGgpfXB4YDtcbiAgICB0aGlzLnVzZXJSZXNpemVkQ29sdW1ucy5hZGQoY29sdW1uKTtcbiAgICB0aGlzLnBlbmRpbmdDb250ZW50QXV0b0ZpdENvbHVtbnMuZGVsZXRlKGNvbHVtbik7XG5cbiAgICB0aGlzLm9uQ29sdW1uU2l6ZUNoYW5nZWQuZW1pdCh7XG4gICAgICB0eXBlOiAnZW5kJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY29sdW1uSW5kZXg6IHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCxcbiAgICAgICAgd2lkdGg6IHRoaXMuY29sdW1ucy5nZXQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4KS53aWR0aCxcbiAgICAgICAgZGF0YUZpZWxkOiB0aGlzLmNvbHVtbnMuZ2V0KHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCkubmFtZSxcbiAgICAgIH0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzZXRSZXNpemluZ1Byb2Nlc3MoKTtcbiAgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcmVzZXRSZXNpemluZ1Byb2Nlc3MoKSB7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ25ldy13aWR0aCcpO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcCA9IHsgc3RhcnRYOiAwLCBzdGFydFdpZHRoOiAwLCBjb2x1bW5JbmRleDogMCwgbmV3Q29sdW1uV2lkdGg6IDAsIHRoRWxlbWVudDogbnVsbCB9O1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVN0aWNreUNvbHVtbnNQb3NpdGlvbnMoKSB7XG4gICAgbGV0IGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgPSAwO1xuICAgIGxldCBsYXN0U3RhcnRDb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50O1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4ud2lkdGggYXMgc3RyaW5nKTtcblxuICAgICAgaWYgKGNvbHVtbi5maXhlZCA9PT0gJ3N0YXJ0JyAmJiAhaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGNvbHVtblsnc3RpY2t5U3RhcnQnXSA9IGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgKyAncHgnO1xuICAgICAgICBsYXN0U3RhcnRDb2x1bW4gPSBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgKz0gd2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGxhc3RTdGFydENvbHVtbikgbGFzdFN0YXJ0Q29sdW1uWydpc0xhc3RGaXhlZENvbHVtbiddID0gdHJ1ZTtcblxuICAgIGxldCBhY2N1bXVsYXRlZFdpZHRoRnJvbUVuZCA9IDA7XG4gICAgbGV0IGZpcnN0RW5kQ29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudDtcblxuICAgIGZvciAobGV0IGkgPSB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5nZXQoaSk7XG5cbiAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoY29sdW1uLndpZHRoIGFzIHN0cmluZyk7XG5cbiAgICAgIGlmIChjb2x1bW4uZml4ZWQgPT09ICdlbmQnICYmICFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgY29sdW1uWydzdGlja3lFbmQnXSA9IGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kICsgJ3B4JztcbiAgICAgICAgZmlyc3RFbmRDb2x1bW4gPSBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kICs9IHdpZHRoO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmlyc3RFbmRDb2x1bW4pIGZpcnN0RW5kQ29sdW1uWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQXV0by1maXRzIGNvbHVtbnMgdGhhdCBoYXZlIHdpZHRoPSdhdXRvJy5cbiAgICogUnVucyBoZWFkZXItb25seSBzaXppbmcgYWZ0ZXIgdmlldyBpbml0IChgaGVhZGVyT25seTogdHJ1ZWApIGFuZCBmdWxsIG1lYXN1cmVtZW50IGFmdGVyIGRhdGEgbG9hZC5cbiAgICpcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBhdXRvRml0Q29sdW1uc1dpdGhBdXRvV2lkdGgob3B0aW9uczogeyBoZWFkZXJPbmx5PzogYm9vbGVhbiB9ID0ge30pOiB2b2lkIHtcbiAgICBjb25zdCBoZWFkZXJPbmx5ID0gb3B0aW9ucy5oZWFkZXJPbmx5ID8/IGZhbHNlO1xuICAgIGNvbnN0IGF1dG9XaWR0aENvbHVtbnM6IG51bWJlcltdID0gW107XG5cbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgZml0c0J5SW50ZW50ID0gdGhpcy5hdXRvRml0SW50ZW50Q29sdW1ucy5oYXMoY29sdW1uKTtcbiAgICAgIGNvbnN0IGZpdHNQZW5kaW5nSGVhZGVyT25seSA9ICFoZWFkZXJPbmx5ICYmIHRoaXMucGVuZGluZ0NvbnRlbnRBdXRvRml0Q29sdW1ucy5oYXMoY29sdW1uKTtcblxuICAgICAgaWYgKCFmaXRzQnlJbnRlbnQgJiYgIWZpdHNQZW5kaW5nSGVhZGVyT25seSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnVzZXJSZXNpemVkQ29sdW1ucy5oYXMoY29sdW1uKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXRzQnlJbnRlbnQgJiYgaGVhZGVyT25seSAmJiBjb2x1bW4ud2lkdGggPT09ICdhdXRvJykge1xuICAgICAgICB0aGlzLnBlbmRpbmdDb250ZW50QXV0b0ZpdENvbHVtbnMuYWRkKGNvbHVtbik7XG4gICAgICB9XG5cbiAgICAgIGF1dG9XaWR0aENvbHVtbnMucHVzaChpbmRleCk7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmF1dG9GaXRDb2x1bW4oaW5kZXgsIHsgbWF4V2lkdGg6IDUwMCwgaGVhZGVyT25seSB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBhdXRvLWZpdCBjb2x1bW4gJHtpbmRleH06YCwgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZml0cyBhbGwgY29sdW1ucyB3aWR0aCBiYXNlZCBvbiB0aGVpciBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9ucy5za2lwRml4ZWQgLSBJZiB0cnVlLCBza2lwcyBmaXhlZCBjb2x1bW5zIChkZWZhdWx0OiB0cnVlKVxuICAgKiBAcGFyYW0gb3B0aW9ucy5za2lwTG9hZGluZyAtIElmIHRydWUsIHNraXBzIGlmIGRhdGEgaXMgbG9hZGluZyAoZGVmYXVsdDogdHJ1ZSlcbiAgICogQHBhcmFtIG9wdGlvbnMubWF4V2lkdGggLSBNYXhpbXVtIHdpZHRoIGZvciBhbnkgY29sdW1uIGluIHBpeGVscyAoZGVmYXVsdDogNTAwKVxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBwdWJsaWMgYXV0b0ZpdEFsbENvbHVtbnMoXG4gICAgb3B0aW9uczoge1xuICAgICAgc2tpcEZpeGVkPzogYm9vbGVhbjtcbiAgICAgIHNraXBMb2FkaW5nPzogYm9vbGVhbjtcbiAgICAgIG1heFdpZHRoPzogbnVtYmVyO1xuICAgIH0gPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBza2lwRml4ZWQgPSB0cnVlLCBza2lwTG9hZGluZyA9IHRydWUsIG1heFdpZHRoID0gNTAwIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gU2tpcCBpZiBsb2FkaW5nXG4gICAgaWYgKHNraXBMb2FkaW5nICYmIHRoaXMuaXNMb2FkaW5nKCkpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ2Fubm90IGF1dG8tZml0IGNvbHVtbnMgd2hpbGUgZGF0YSBpcyBsb2FkaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXV0by1maXQgZWFjaCBjb2x1bW5cbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgLy8gU2tpcCBmaXhlZCBjb2x1bW5zIGlmIHJlcXVlc3RlZFxuICAgICAgaWYgKHNraXBGaXhlZCAmJiBjb2x1bW4uZml4ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBTa2lwIGlmIGNvbHVtbiBkb2Vzbid0IGFsbG93IHJlc2l6aW5nXG4gICAgICBpZiAoIWNvbHVtbi5hbGxvd1Jlc2l6aW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5hdXRvRml0Q29sdW1uKGluZGV4LCB7IG1heFdpZHRoIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGF1dG8tZml0IGNvbHVtbiAke2luZGV4fTpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXV0by1maXRzIGEgY29sdW1uIHdpZHRoIGJhc2VkIG9uIGl0cyBjb250ZW50LlxuICAgKiBTaW1pbGFyIHRvIEV4Y2VsJ3MgXCJBdXRvRml0IENvbHVtbiBXaWR0aFwiIGZlYXR1cmUuXG4gICAqIFVzZXMgYW4gaW52aXNpYmxlIGhlbHBlciB0YWJsZSB0byBtZWFzdXJlIGFjdHVhbCBjb250ZW50IHdpZHRoIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBtYWluIHRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0byBhdXRvLWZpdCAoMC1iYXNlZCwgYmFzZWQgb24gY29sdW1ucyBRdWVyeUxpc3QpXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLm1heFdpZHRoIC0gTWF4aW11bSB3aWR0aCBmb3IgdGhlIGNvbHVtbiBpbiBwaXhlbHMgKGRlZmF1bHQ6IG5vbmUpXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlYWRlck9ubHkgLSBXaGVuIHRydWUsIG9ubHkgdGhlIGhlYWRlciBjZWxsIGlzIG1lYXN1cmVkIChlLmcuIGJlZm9yZSByb3cgZGF0YSBleGlzdHMpXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIHB1YmxpYyBhdXRvRml0Q29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIsIG9wdGlvbnM6IHsgbWF4V2lkdGg/OiBudW1iZXI7IGhlYWRlck9ubHk/OiBib29sZWFuIH0gPSB7fSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSW5kZXgpO1xuICAgIGlmICghY29sdW1uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENvbHVtbiBhdCBpbmRleCAke2NvbHVtbkluZGV4fSBub3QgZm91bmRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICBpZiAoIWhvc3RFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWFpblRhYmxlID0gaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcigndGFibGUnKTtcbiAgICBpZiAoIW1haW5UYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZpbmQgYWN0dWFsIGNvbHVtbiBpbmRleCBpbiByZW5kZXJlZCB0YWJsZSAoYWNjb3VudGluZyBmb3IgZml4ZWQgY29sdW1ucylcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gWy4uLnRoaXMuc3RhcnRGaXhlZENvbHVtbnNMaXN0KCksIC4uLnRoaXMubm9ybWFsQ29sdW1uc0xpc3QoKSwgLi4udGhpcy5lbmRGaXhlZENvbHVtbnNMaXN0KCldO1xuICAgIGNvbnN0IGFjdHVhbENvbHVtbkluZGV4ID0gYWxsQ29sdW1ucy5maW5kSW5kZXgoKGMpID0+IGMgPT09IGNvbHVtbik7XG5cbiAgICBpZiAoYWN0dWFsQ29sdW1uSW5kZXggPT09IC0xKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0NvbHVtbiBub3QgZm91bmQgaW4gcmVuZGVyZWQgdGFibGUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW52aXNpYmxlIGhlbHBlciB0YWJsZVxuICAgIGNvbnN0IGhlbHBlclRhYmxlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xuICAgIGhlbHBlclRhYmxlLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgaGVscGVyVGFibGUuc3R5bGUudGFibGVMYXlvdXQgPSAnYXV0byc7XG4gICAgaGVscGVyVGFibGUuc3R5bGUud2lkdGggPSAnYXV0byc7XG4gICAgaGVscGVyVGFibGUuc3R5bGUudG9wID0gJy05OTk5cHgnO1xuICAgIGhlbHBlclRhYmxlLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7XG5cbiAgICAvLyBDb3B5IHN0eWxlcyBmcm9tIG1haW4gdGFibGVcbiAgICBjb25zdCBtYWluVGFibGVTdHlsZSA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LmdldENvbXB1dGVkU3R5bGUobWFpblRhYmxlKTtcbiAgICBpZiAobWFpblRhYmxlU3R5bGUpIHtcbiAgICAgIGhlbHBlclRhYmxlLnN0eWxlLmZvbnRTaXplID0gbWFpblRhYmxlU3R5bGUuZm9udFNpemU7XG4gICAgICBoZWxwZXJUYWJsZS5zdHlsZS5mb250RmFtaWx5ID0gbWFpblRhYmxlU3R5bGUuZm9udEZhbWlseTtcbiAgICAgIGhlbHBlclRhYmxlLnN0eWxlLmZvbnRXZWlnaHQgPSBtYWluVGFibGVTdHlsZS5mb250V2VpZ2h0O1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoZWxwZXJUYWJsZSk7XG5cbiAgICBsZXQgbWF4V2lkdGggPSAwO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIE1lYXN1cmUgaGVhZGVyIGNlbGxcbiAgICAgIGNvbnN0IGhlYWRlclJvdyA9IG1haW5UYWJsZS5xdWVyeVNlbGVjdG9yKCd0aGVhZCB0cicpO1xuICAgICAgaWYgKGhlYWRlclJvdykge1xuICAgICAgICBjb25zdCBoZWFkZXJDZWxscyA9IGhlYWRlclJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpO1xuICAgICAgICBpZiAoaGVhZGVyQ2VsbHMubGVuZ3RoID4gYWN0dWFsQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICBjb25zdCBoZWFkZXJDZWxsID0gaGVhZGVyQ2VsbHNbYWN0dWFsQ29sdW1uSW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgLy8gQ2xvbmUgaGVhZGVyIGNlbGwgdG8gaGVscGVyIHRhYmxlXG4gICAgICAgICAgY29uc3QgaGVscGVyVGhlYWQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoZWFkJyk7XG4gICAgICAgICAgY29uc3QgaGVscGVyVHIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICAgICAgY29uc3QgaGVscGVyVGggPSBoZWFkZXJDZWxsLmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBoZWxwZXJUaC5zdHlsZS53aWR0aCA9ICdhdXRvJztcbiAgICAgICAgICBoZWxwZXJUaC5zdHlsZS53aGl0ZVNwYWNlID0gJ25vd3JhcCc7XG4gICAgICAgICAgaGVscGVyVHIuYXBwZW5kQ2hpbGQoaGVscGVyVGgpO1xuICAgICAgICAgIGhlbHBlclRoZWFkLmFwcGVuZENoaWxkKGhlbHBlclRyKTtcbiAgICAgICAgICBoZWxwZXJUYWJsZS5hcHBlbmRDaGlsZChoZWxwZXJUaGVhZCk7XG5cbiAgICAgICAgICAvLyBGb3JjZSBsYXlvdXQgY2FsY3VsYXRpb25cbiAgICAgICAgICBjb25zdCBoZWFkZXJXaWR0aCA9IGhlbHBlclRoLm9mZnNldFdpZHRoO1xuICAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIGhlYWRlcldpZHRoKTtcblxuICAgICAgICAgIGhlbHBlclRhYmxlLnJlbW92ZUNoaWxkKGhlbHBlclRoZWFkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIShvcHRpb25zLmhlYWRlck9ubHkgPz8gZmFsc2UpKSB7XG4gICAgICAgIC8vIE1lYXN1cmUgYm9keSBjZWxsc1xuICAgICAgICBjb25zdCBib2R5Um93cyA9IG1haW5UYWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keSB0cjpub3QoLmVtcHR5LXJvdyknKTtcbiAgICAgICAgY29uc3QgaGVscGVyVGJvZHkgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5Jyk7XG4gICAgICAgIGhlbHBlclRhYmxlLmFwcGVuZENoaWxkKGhlbHBlclRib2R5KTtcblxuICAgICAgICAvLyBTYW1wbGUgZmlyc3QgMjAgcm93cyBmb3IgcGVyZm9ybWFuY2UgKHlvdSBjYW4gYWRqdXN0IHRoaXMpXG4gICAgICAgIGNvbnN0IHNhbXBsZVNpemUgPSBNYXRoLm1pbigyMCwgYm9keVJvd3MubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzYW1wbGVTaXplOyBpKyspIHtcbiAgICAgICAgICBjb25zdCByb3cgPSBib2R5Um93c1tpXTtcbiAgICAgICAgICBjb25zdCBjZWxscyA9IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpO1xuXG4gICAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCA+IGFjdHVhbENvbHVtbkluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0gY2VsbHNbYWN0dWFsQ29sdW1uSW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBDbG9uZSBjZWxsIHRvIGhlbHBlciB0YWJsZVxuICAgICAgICAgICAgY29uc3QgaGVscGVyVHIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXJUZCA9IGNlbGwuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaGVscGVyVGQuc3R5bGUud2lkdGggPSAnYXV0byc7XG4gICAgICAgICAgICBoZWxwZXJUZC5zdHlsZS53aGl0ZVNwYWNlID0gJ25vd3JhcCc7XG4gICAgICAgICAgICBoZWxwZXJUci5hcHBlbmRDaGlsZChoZWxwZXJUZCk7XG4gICAgICAgICAgICBoZWxwZXJUYm9keS5hcHBlbmRDaGlsZChoZWxwZXJUcik7XG5cbiAgICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBjYWxjdWxhdGlvblxuICAgICAgICAgICAgY29uc3QgY2VsbFdpZHRoID0gaGVscGVyVGQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICBtYXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoLCBjZWxsV2lkdGgpO1xuXG4gICAgICAgICAgICBoZWxwZXJUYm9keS5yZW1vdmVDaGlsZChoZWxwZXJUcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBzb21lIHBhZGRpbmcgZm9yIGJldHRlciBVWFxuICAgICAgbGV0IGZpbmFsV2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCArIDQwLCAxMDApOyAvLyBNaW5pbXVtIDEwMHB4LCBhZGQgNDBweCBwYWRkaW5nXG5cbiAgICAgIC8vIEFwcGx5IG1heCB3aWR0aCBpZiBzcGVjaWZpZWRcbiAgICAgIGlmIChvcHRpb25zLm1heFdpZHRoKSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBNYXRoLm1pbihmaW5hbFdpZHRoLCBvcHRpb25zLm1heFdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IGNvbHVtbiB3aWR0aFxuICAgICAgY29sdW1uLndpZHRoID0gYCR7ZmluYWxXaWR0aH1weGA7XG5cbiAgICAgIGlmICghKG9wdGlvbnMuaGVhZGVyT25seSA/PyBmYWxzZSkpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ29udGVudEF1dG9GaXRDb2x1bW5zLmRlbGV0ZShjb2x1bW4pO1xuICAgICAgfVxuXG4gICAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gdG8gdXBkYXRlIHRoZSB2aWV3XG4gICAgICB0aGlzLmNvbHVtbnNMaXN0LnNldChbLi4udGhpcy5jb2x1bW5zTGlzdCgpXSk7XG5cbiAgICAgIC8vIFJlY2FsY3VsYXRlIHN0aWNreSBwb3NpdGlvbnMgaWYgY29sdW1uIGlzIGZpeGVkXG4gICAgICBpZiAoY29sdW1uLmZpeGVkKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU3RpY2t5Q29sdW1uc1Bvc2l0aW9ucygpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH1cblxuICAgICAgLy8gRW1pdCBjb2x1bW4gc2l6ZSBjaGFuZ2VkIGV2ZW50XG4gICAgICB0aGlzLm9uQ29sdW1uU2l6ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdlbmQnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXG4gICAgICAgICAgZGF0YUZpZWxkOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDbGVhbiB1cCBoZWxwZXIgdGFibGVcbiAgICAgIGlmIChoZWxwZXJUYWJsZS5wYXJlbnROb2RlKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChoZWxwZXJUYWJsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj4gPC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImF4LWRhdGEtdGFibGUtd3JhcHBlclwiPlxuICA8dGFibGU+XG4gICAgQGlmIChzaG93SGVhZGVyKSB7XG4gICAgICA8dGhlYWQgW25nQ2xhc3NdPVwieyAnYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyJzogZml4ZWRIZWFkZXIgfVwiPlxuICAgICAgICA8dHJcbiAgICAgICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhYWxsb3dSZW9yZGVyaW5nXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIGNka1Njcm9sbGFibGVcbiAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgQGZvciAoYyBvZiBzdGFydEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWhlYWQtY2VsbCBzdGlja3ktc3RhcnRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1sYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoYyBvZiBub3JtYWxDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtaGVhZC1jZWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVySGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjLmFsbG93UmVzaXppbmcgJiYgIWMuZml4ZWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJlc2l6ZUNvbHVtblN0YXJ0KCRldmVudCwgdGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvblJlc2l6ZUhhbmRsZXJEb3VibGVDbGljaygkZXZlbnQsIHRoaXMuc3RhcnRGaXhlZENvbHVtbnNMaXN0KCkubGVuZ3RoICsgJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIkRvdWJsZS1jbGljayB0byBhdXRvLWZpdCBjb2x1bW4gd2lkdGhcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgQGZvciAoYyBvZiBlbmRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1oZWFkLWNlbGwgc3RpY2t5LWVuZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LWVuZF09XCJjWydzdGlja3lFbmQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgIH1cbiAgICA8dGJvZHkgW25nQ2xhc3NdPVwieyAnYXgtZGF0YS10YWJsZS1yb3ctYWx0ZXJuYXRpdmUnOiBhbHRlcm5hdGl2ZSB9XCI+XG4gICAgICBAaWYgKHNob3dOb0RhdGFMb2FkZWRZZXQpIHtcbiAgICAgICAgPHRyIHN0eWxlPVwiZGlzcGxheTogaW5oZXJpdFwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImF4LWRhdGEtdGFibGUtZW1wdHktZGF0YVwiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc0xpc3QoKS5sZW5ndGggKyAxXCI+XG4gICAgICAgICAgICBAaWYgKG5vRGF0YVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9EYXRhVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3Bhbj57eyAnQGFjb3JleDpjb21tb24uZ2VuZXJhbC5uby1kYXRhLXlldCcgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgfSBAZWxzZSBpZiAoIWRpc3BsYXllZFJvd3MoKS5sZW5ndGgpIHtcbiAgICAgICAgPHRyIHN0eWxlPVwiZGlzcGxheTogaW5oZXJpdFwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImF4LWRhdGEtdGFibGUtZW1wdHktZGF0YVwiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc0xpc3QoKS5sZW5ndGggKyAxXCI+XG4gICAgICAgICAgICBAaWYgKGVtcHR5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0BhY29yZXg6Y29tbW9uLmdlbmVyYWwubm8tcmVjb3JkJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGZvciAocm93IG9mIGRpc3BsYXllZFJvd3MoKTsgbGV0IHJvd0luZGV4ID0gJGluZGV4OyB0cmFjayByb3dJbmRleCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd1RlbXBcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0YTogeyByb3csIHJvd0luZGV4IH0gfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNyb3dUZW1wIGxldC1kYXRhPVwiZGF0YVwiPlxuICAgICAgICAgIEBpZiAocm93VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogZGF0YS5yb3csIHJvd0luZGV4OiBkYXRhLnJvd0luZGV4IH0gfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZm9jdXNlZF09XCJmb2N1c2VkUm93ICYmIGRhdGEucm93ID09PSBmb2N1c2VkUm93XCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pbmRleF09XCJkYXRhLnJvd0luZGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLXNlbGVjdGVkXT1cInNlbGVjdGVkUm93cy5pbmNsdWRlcyhkYXRhLnJvdylcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRSb3dDc3NDbGFzcyhkYXRhLnJvdywgZGF0YS5yb3dJbmRleClcIlxuICAgICAgICAgICAgICBzdHlsZS5oZWlnaHQ9XCJ7eyBpdGVtSGVpZ2h0IH19cHhcIlxuICAgICAgICAgICAgICBzdHlsZS5tYXgtaGVpZ2h0PVwie3sgaXRlbUhlaWdodCB9fXB4XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudCwgZGF0YS5yb3cpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGZvciAoYyBvZiBzdGFydEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktYm9keS1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc3RpY2t5LXN0YXJ0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWxhc3RdPVwiY1snaXNMYXN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImMuY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENlbGxDc3NDbGFzcyhkYXRhLnJvdywgYywgY2FsY3VsYXRlUm93SW5kZXgoZGF0YS5yb3dJbmRleCkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1jZWxsLXRvb2x0aXAtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIFtheFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgYy5oYXNUaXRsZSAmJiBkYXRhLnJvdyAmJiAhaXNMb2FkaW5nKCkgPyBnZXRDZWxsVG9vbHRpcFRleHQoYywgZGF0YS5yb3cpIHx8IG51bGwgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5yb3cgJiYgIWlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJDZWxsVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IGRhdGE6IGRhdGEucm93LCByb3dJbmRleDogY2FsY3VsYXRlUm93SW5kZXgoZGF0YS5yb3dJbmRleCkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChjLmxvYWRpbmdFbmFibGVkICYmIGxvYWRpbmcuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvYWRpbmcubG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDZWxsQ3NzQ2xhc3MoZGF0YS5yb3csIGMsIGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtY2VsbC10b29sdGlwLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICBbYXhUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGMuaGFzVGl0bGUgJiYgZGF0YS5yb3cgJiYgIWlzTG9hZGluZygpID8gZ2V0Q2VsbFRvb2x0aXBUZXh0KGMsIGRhdGEucm93KSB8fCBudWxsIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGEucm93ICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHRkPjxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PjwvdGQ+XG4gICAgICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktZW5kXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1lbmRdPVwiY1snc3RpY2t5RW5kJ11cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDZWxsQ3NzQ2xhc3MoZGF0YS5yb3csIGMsIGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtY2VsbC10b29sdGlwLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICBbYXhUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGMuaGFzVGl0bGUgJiYgZGF0YS5yb3cgJiYgIWlzTG9hZGluZygpID8gZ2V0Q2VsbFRvb2x0aXBUZXh0KGMsIGRhdGEucm93KSB8fCBudWxsIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGEucm93ICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICBAaWYgKGRhdGEucm93Py5fX21ldGFfXz8uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgQGlmIChyb3dEZXRhaWxzVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjIG9mIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RpY2t5LXN0YXJ0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1sYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1zdGFydF09XCJjWydzdGlja3lTdGFydCddXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1yb3ctZGV0YWlsc1wiIFthdHRyLmNvbHNwYW5dPVwibm9ybWFsQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dEZXRhaWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGRhdGEucm93SW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RpY2t5LWVuZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtZmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1lbmRdPVwiY1snc3RpY2t5RW5kJ11cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAZm9yIChjaGlsZFJvdyBvZiBkYXRhLnJvdy5jaGlsZHJlbjsgbGV0IGNoaWxkUm93SW5kZXggPSAkaW5kZXg7IHRyYWNrIGNoaWxkUm93SW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dUZW1wXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGRhdGE6IHsgcm93OiBjaGlsZFJvdywgcm93SW5kZXg6IGNoaWxkUm93SW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPHRyIGNsYXNzPVwiZW1wdHktcm93XCI+PC90cj5cbiAgICAgIH1cbiAgICA8L3Rib2R5PlxuICAgIEBpZiAoc2hvd0Zvb3Rlcikge1xuICAgICAgPHRmb290IFtuZ0NsYXNzXT1cInsgJ2F4LWRhdGEtdGFibGUtc3RpY2t5LWZvb3Rlcic6IGZpeGVkRm9vdGVyIH1cIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyLWNlbGwgc3RpY2t5LXN0YXJ0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWZvb3Rlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWxhc3RdPVwiY1snaXNMYXN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1zdGFydF09XCJjWydzdGlja3lTdGFydCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoYy5hbGxvd1Jlc2l6aW5nICYmICFjLmZpeGVkKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVDb2x1bW5TdGFydCgkZXZlbnQsIHRoaXMuc3RhcnRGaXhlZENvbHVtbnNMaXN0KCkubGVuZ3RoICsgJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25SZXNpemVIYW5kbGVyRG91YmxlQ2xpY2soJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEb3VibGUtY2xpY2sgdG8gYXV0by1maXQgY29sdW1uIHdpZHRoXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtc3RpY2t5LWZvb3Rlci1jZWxsIHN0aWNreS1lbmRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1maXJzdF09XCJjWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1lbmRdPVwiY1snc3RpY2t5RW5kJ11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyRm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90Zm9vdD5cbiAgICB9XG4gIDwvdGFibGU+XG48L2Rpdj5cblxuQGlmIChwYWdpbmcpIHtcbiAgPGRpdiBjbGFzcz1cImF4LXRhYmxlLWZvb3RlclwiICNmb290ZXJDb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNjdXN0b21QYWdlcj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWRhdGEtcGFnZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIEBpZiAoY3VzdG9tRGF0YVBhZ2VyKSB7XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVBhZ2VyXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8YXgtZGF0YS1wYWdlclxuICAgICAgICAjZGF0YVBhZ2VyXG4gICAgICAgIFtkaXNwbGF5TW9kZV09XCInY3VzdG9tJ1wiXG4gICAgICAgIChvbkNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlUGFnZSgkZXZlbnQpXCJcbiAgICAgICAgW3RvdGFsXT1cImRhdGFTb3VyY2UudG90YWxDb3VudFwiXG4gICAgICAgIFtzaXplXT1cImRhdGFTb3VyY2UucGFnZVNpemVcIlxuICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICAgID5cbiAgICAgICAgPGF4LXByZWZpeCBjbGFzcz1cImF4LWRhdGEtdGFibGUtbnVtZXJpYy1wYWdpbmdcIj5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1udW1lcmljLXNlbGVjdG9yPiA8L2F4LWRhdGEtcGFnZXItbnVtZXJpYy1zZWxlY3Rvcj5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1wYWdlLXNpemVzPiA8L2F4LWRhdGEtcGFnZXItcGFnZS1zaXplcz5cbiAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDxheC1wcmVmaXggY2xhc3M9XCJheC1kYXRhLXRhYmxlLWlucHV0LXBhZ2luZ1wiPlxuICAgICAgICAgIDxheC1kYXRhLXBhZ2VyLXByZXYtYnV0dG9ucz4gPC9heC1kYXRhLXBhZ2VyLXByZXYtYnV0dG9ucz5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1pbnB1dC1zZWxlY3Rvcj4gPC9heC1kYXRhLXBhZ2VyLWlucHV0LXNlbGVjdG9yPlxuICAgICAgICAgIDxheC1kYXRhLXBhZ2VyLW5leHQtYnV0dG9ucz4gPC9heC1kYXRhLXBhZ2VyLW5leHQtYnV0dG9ucz5cbiAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDxheC1zdWZmaXggY2xhc3M9XCJheC1kYXRhLXRhYmxlLWluZm9cIj5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1pbmZvPiA8L2F4LWRhdGEtcGFnZXItaW5mbz5cbiAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJyZWZyZXNoKHsgcmVzZXQ6IGZhbHNlIH0pXCI+XG4gICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXJlZnJlc2hcIj48L2F4LWljb24+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgPC9heC1kYXRhLXBhZ2VyPlxuICAgIH1cbiAgPC9kaXY+XG59XG48bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj4gPC9uZy1jb250ZW50PlxuIl19","import { AXComponent, AXListDataSource, AXPagedComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ContentChildren, DOCUMENT, ElementRef, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, inject, input, signal, } from '@angular/core';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableElement, } from '@angular/cdk/scrolling';\nimport { NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a data table with infinite scrolling capabilities.\n *\n * @category Components\n */\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n /**\n * Controls the table look.\n *\n * - `classic` — classic look (default).\n * - `minimal` — minimal look.\n *\n * @defaultValue `'classic'`\n */\n this.look = input('classic', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.ngZone = inject(NgZone);\n /**\n * Emits an event when the page changes.\n *\n * @event\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * Emits an event when a row is clicked.\n *\n * @event\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits an event when a row is double-clicked.\n *\n * @event\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Controls the visibility of the table header.\n *\n * @defaultValue true\n */\n this.showHeader = true;\n /**\n * Defines the mode for fetching data.\n *\n * @defaultValue 'auto'\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for the loading state of the data table.\n *\n * @defaultValue { enabled: true, animation: true }\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * @ignore\n */\n this.lastIndex = 0;\n /**\n * Event emitted when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Defines the height of each item in the table.\n *\n * @default 40\n */\n this.itemHeight = 40;\n /**\n * @ignore\n */\n this.width = '100%';\n /**\n * @ignore\n */\n this.height = '100%';\n /**\n * Emitted when the scroll index changes in the table.\n *\n * @event\n */\n this.onScrolledIndexChanged = new EventEmitter();\n }\n /**\n * @ignore\n */\n startFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n /**\n * @ignore\n */\n endFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumn() {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumnCount() {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n /**\n * @ignore\n */\n fixedColumnCount() {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n /**\n * Retrieves the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits a change event.\n *\n * @param v - The row data to be set as focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n trackByIdx(i) {\n return i;\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.clearResolvedCssClasses();\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n this.scheduleTextHighlight();\n }, 100);\n });\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n _handleOnscrolledIndexChange(e) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n /**\n * @ignore\n */\n updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1)\n this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows)\n this.startRowIndex = this.totalRows;\n }\n /**\n * @ignore\n */\n updateHeight() {\n this.height = `calc(100% - ${(this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)}px)`;\n }\n /**\n * @ignore\n */\n updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n /**\n * @ignore\n */\n updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n /**\n * @ignore\n */\n // Function to copy fixed columns\n copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n if (isPlatformBrowser(this.platformID)) {\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = this.document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n /**\n * Updates the viewport by checking its size and scrolling to the last index.\n * Marks the component for change detection.\n * @ignore\n */\n render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n /**\n * Resets the index to zero and refreshes the data source.\n * @ignore\n */\n refresh(options = {}) {\n if (!options.preserveHighlights) {\n this.clearRowHighlights();\n }\n this.clearResolvedCssClasses();\n this.lastIndex = 0;\n this.listDataSource.refresh();\n }\n /**\n * @ignore\n */\n onRowHighlightsChanged() {\n this.cdr.markForCheck();\n }\n onCssClassResolved() {\n this.cdr.markForCheck();\n super.onCssClassResolved();\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * Handles column header clicks to toggle sorting on the column.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * @ignore\n */\n _handleOnScroll() {\n this.updateHScroll();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXInfiniteScrollDataTableComponent, isStandalone: true, selector: \"ax-infinite-scroll-data-table\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, rowCssClass: { classPropertyName: \"rowCssClass\", publicName: \"rowCssClass\", isSignal: false, isRequired: false, transformFunction: null }, cellCssClass: { classPropertyName: \"cellCssClass\", publicName: \"cellCssClass\", isSignal: false, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: \"highlightText\", publicName: \"highlightText\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: \"rowTemplate\", publicName: \"rowTemplate\", isSignal: false, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: false, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: \"showHeader\", publicName: \"showHeader\", isSignal: false, isRequired: false, transformFunction: null }, fetchDataMode: { classPropertyName: \"fetchDataMode\", publicName: \"fetchDataMode\", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: \"loading\", publicName: \"loading\", isSignal: false, isRequired: false, transformFunction: null }, focusedRow: { classPropertyName: \"focusedRow\", publicName: \"focusedRow\", isSignal: false, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectedRowsChange: \"selectedRowsChange\", onPageChanged: \"onPageChanged\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", focusedRowChange: \"focusedRowChange\", onScrolledIndexChanged: \"onScrolledIndexChanged\" }, host: { properties: { \"class.ax-data-table-look-minimal\": \"look() === \\\"minimal\\\"\" } }, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], queries: [{ propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"viewport\", first: true, predicate: CdkVirtualScrollViewport, descendants: true, static: true }, { propertyName: \"headerContainer\", first: true, predicate: [\"headerContainer\"], descendants: true }, { propertyName: \"footerContainer\", first: true, predicate: [\"footerContainer\"], descendants: true }, { propertyName: \"scrollableContainer\", first: true, predicate: [\"scrolling\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n [ngClass]=\\\"getRowCssClass(item, rIndex)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name; let colIndex = $index) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"getCellCssClass(item, c, rIndex)\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lighter-surface));color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lighter-surface));color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lighter-surface));color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lighter-surface));color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-header-content .ax-header-columns>table th{border-inline-end-width:0}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-body-content .ax-body-columns table td{border-inline-end-width:0}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: CdkVirtualScrollableElement, selector: \"[cdkVirtualScrollingElement]\" }, { kind: \"component\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }, { kind: \"directive\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { kind: \"directive\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-infinite-scroll-data-table', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], host: {\n '[class.ax-data-table-look-minimal]': 'look() === \"minimal\"',\n }, outputs: ['selectedRowsChange'], inputs: ['dataSource', 'rowCssClass', 'cellCssClass', 'highlightText'], imports: [\n NgClass,\n NgTemplateOutlet,\n AXDecoratorIconComponent,\n CdkVirtualScrollableElement,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n AXSkeletonComponent,\n AXButtonComponent,\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n [ngClass]=\\\"getRowCssClass(item, rIndex)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name; let colIndex = $index) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"getCellCssClass(item, c, rIndex)\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lightest-surface));color:rgba(var(--ax-sys-color-on-primary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-lighter-surface));color:rgba(var(--ax-sys-color-on-primary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-light-surface));color:rgba(var(--ax-sys-color-on-primary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-on-primary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lightest-surface));color:rgba(var(--ax-sys-color-on-secondary-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-lighter-surface));color:rgba(var(--ax-sys-color-on-secondary-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-light-surface));color:rgba(var(--ax-sys-color-on-secondary-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-secondary-surface));color:rgba(var(--ax-sys-color-on-secondary-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lightest-surface));color:rgba(var(--ax-sys-color-on-success-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-lighter-surface));color:rgba(var(--ax-sys-color-on-success-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-light-surface));color:rgba(var(--ax-sys-color-on-success-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-success-surface));color:rgba(var(--ax-sys-color-on-success-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-on-warning-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-lighter-surface));color:rgba(var(--ax-sys-color-on-warning-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-light-surface));color:rgba(var(--ax-sys-color-on-warning-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-warning-surface));color:rgba(var(--ax-sys-color-on-warning-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lightest-surface));color:rgba(var(--ax-sys-color-on-danger-lightest-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger:hover:not(.ax-state-selected) td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-lighter-surface));color:rgba(var(--ax-sys-color-on-danger-lighter-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-light-surface));color:rgba(var(--ax-sys-color-on-danger-light-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-danger-surface));color:rgba(var(--ax-sys-color-on-danger-surface))}@keyframes ax-data-table-row-primary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-primary-lighter-surface))}}@keyframes ax-data-table-row-secondary-pulse{0%,to{background-color:rgba(var(--ax-sys-color-secondary-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-secondary-lighter-surface))}}@keyframes ax-data-table-row-success-pulse{0%,to{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-success-lighter-surface))}}@keyframes ax-data-table-row-warning-pulse{0%,to{background-color:rgba(var(--ax-sys-color-warning-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-warning-lighter-surface))}}@keyframes ax-data-table-row-danger-pulse{0%,to{background-color:rgba(var(--ax-sys-color-danger-lightest-surface))}50%{background-color:rgba(var(--ax-sys-color-danger-lighter-surface))}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-primary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-primary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-secondary.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-secondary-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-success.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-success-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-warning.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-warning-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}@media screen and (min-width: 768px){ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-row-color-danger.ax-row-color-pulse td.ax-data-table-sticky-body-cell:not(.ax-index-column){animation:ax-data-table-row-danger-pulse 1.2s ease-in-out infinite}}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-header-content .ax-header-columns>table th{border-inline-end-width:0}ax-infinite-scroll-data-table.ax-data-table-look-minimal .ax-body-content .ax-body-columns table td{border-inline-end-width:0}\\n\"] }]\n }], propDecorators: { columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }], onPageChanged: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], focusedRow: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], viewport: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport, { static: true }]\n }], onScrolledIndexChanged: [{\n type: Output\n }], headerContainer: [{\n type: ViewChild,\n args: ['headerContainer']\n }], footerContainer: [{\n type: ViewChild,\n args: ['footerContainer']\n }], scrollableContainer: [{\n type: ViewChild,\n args: ['scrolling', { static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUVSLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsMkJBQTJCLEdBQzVCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFB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SUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYTGlzdERhdGFTb3VyY2UsIEFYUGFnZWRDb21wb25lbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBET0NVTUVOVCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQge1xuICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICBDZGtWaXJ0dWFsRm9yT2YsXG4gIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgQ2RrVmlydHVhbFNjcm9sbGFibGVFbGVtZW50LFxufSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCBzdW0gZnJvbSAnbG9kYXNoLWVzL3N1bSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBWEJhc2VEYXRhVGFibGUsXG4gIEFYRGF0YVRhYmxlTG9vayxcbiAgQVhEYXRhVGFibGVSb3dDbGljayxcbiAgQVhEYXRhVGFibGVSb3dEYkNsaWNrLFxuICBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCxcbn0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9kYXRhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGEgZGF0YSB0YWJsZSB3aXRoIGluZmluaXRlIHNjcm9sbGluZyBjYXBhYmlsaXRpZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFBhZ2VkQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYQmFzZURhdGFUYWJsZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWEluZmluaXRlU2Nyb2xsRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYXgtZGF0YS10YWJsZS1sb29rLW1pbmltYWxdJzogJ2xvb2soKSA9PT0gXCJtaW5pbWFsXCInLFxuICB9LFxuICBvdXRwdXRzOiBbJ3NlbGVjdGVkUm93c0NoYW5nZSddLFxuICBpbnB1dHM6IFsnZGF0YVNvdXJjZScsICdyb3dDc3NDbGFzcycsICdjZWxsQ3NzQ2xhc3MnLCAnaGlnaGxpZ2h0VGV4dCddLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbiAgICBDZGtWaXJ0dWFsU2Nyb2xsYWJsZUVsZW1lbnQsXG4gICAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICAgIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsXG4gICAgQ2RrVmlydHVhbEZvck9mLFxuICAgIEFYU2tlbGV0b25Db21wb25lbnQsXG4gICAgQVhCdXR0b25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEYXRhVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHRhYmxlIGxvb2suXG4gICAqXG4gICAqIC0gYGNsYXNzaWNgIOKAlCBjbGFzc2ljIGxvb2sgKGRlZmF1bHQpLlxuICAgKiAtIGBtaW5pbWFsYCDigJQgbWluaW1hbCBsb29rLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGAnY2xhc3NpYydgXG4gICAqL1xuICBsb29rID0gaW5wdXQ8QVhEYXRhVGFibGVMb29rPignY2xhc3NpYycpO1xuXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IFF1ZXJ5TGlzdDxBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhcnRGaXhlZENvbHVtbigpOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zPy50b0FycmF5KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09ICdzdGFydCcpID8/IFtdO1xuICB9XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uKCk6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgPT0gJ2VuZCcpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90Rml4ZWRDb2x1bW4oKTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucz8udG9BcnJheSgpLmZpbHRlcigoYykgPT4gIWMuZml4ZWQpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90Rml4ZWRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+ICFjLmZpeGVkKS5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpeGVkQ29sdW1uQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zPy50b0FycmF5KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkKS5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBwYWdlIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNsaWNrU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZXZlbnQ6IE1vdXNlRXZlbnQ7IGl0ZW06IGFueSB9PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0NsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dDbGljaz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiBhIHJvdyBpcyBkb3VibGUtY2xpY2tlZC5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIHJvd3MgaW4gdGhlIGRhdGEgdGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICByb3dUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSB0byBkaXNwbGF5IHdoZW4gdGhlIGRhdGEgdGFibGUgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB0YWJsZSBoZWFkZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG1vZGUgZm9yIGZldGNoaW5nIGRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgJ2F1dG8nXG4gICAqL1xuICBASW5wdXQoKVxuICBmZXRjaERhdGFNb2RlOiAnYXV0bycgfCAnbWFudWFsJyA9ICdhdXRvJztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIGRhdGEgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgeyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVxuICAgKi9cbiAgQElucHV0KClcbiAgbG9hZGluZzoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYW5pbWF0aW9uOiBib29sZWFuO1xuICAgIGxvYWRpbmdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICB9ID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgYW5pbWF0aW9uOiB0cnVlLFxuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGxpc3REYXRhU291cmNlOiBBWExpc3REYXRhU291cmNlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzTG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwodHJ1ZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFzSXRlbXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFJvd3MgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRQYWdlID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFBhZ2VzID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzdGFydFJvd0luZGV4ID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbGFzdEluZGV4ID0gMDtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb2N1c2VkIHJvdyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBmb2N1c2VkUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb2N1c2VkUm93OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHJvdy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZm9jdXNlZFJvdygpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZFJvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCByb3cgYW5kIGVtaXRzIGEgY2hhbmdlIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdiAtIFRoZSByb3cgZGF0YSB0byBiZSBzZXQgYXMgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBzZXQgZm9jdXNlZFJvdyh2OiB1bmtub3duKSB7XG4gICAgdGhpcy5fZm9jdXNlZFJvdyA9IHY7XG4gICAgdGhpcy5mb2N1c2VkUm93Q2hhbmdlLmVtaXQodik7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgaGVpZ2h0IG9mIGVhY2ggaXRlbSBpbiB0aGUgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDQwXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtSGVpZ2h0OiBudW1iZXIgfCAnYXV0bycgPSA0MDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB3aWR0aCA9ICcxMDAlJztcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoZWlnaHQgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNjcm9sbCBpbmRleCBjaGFuZ2VzIGluIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TY3JvbGxlZEluZGV4Q2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlU2Nyb2xsSW5kZXhDaGFuZ2VkPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZD4oKTtcblxuICB0cmFja0J5SWR4KGkpIHtcbiAgICByZXR1cm4gaTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlID0gbmV3IEFYTGlzdERhdGFTb3VyY2U8dW5rbm93bj4oe1xuICAgICAgc291cmNlOiB0aGlzLmRhdGFTb3VyY2UsXG4gICAgfSk7XG4gICAgdGhpcy5saXN0RGF0YVNvdXJjZS5zb3VyY2Uub25Mb2FkaW5nQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChkYXRhKTtcbiAgICB9KTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnNvdXJjZS5vbkNoYW5nZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyUmVzb2x2ZWRDc3NDbGFzc2VzKCk7XG4gICAgICB0aGlzLnRvdGFsUm93cyA9IGRhdGEudG90YWxDb3VudDtcbiAgICAgIHRoaXMuaGFzSXRlbXMgPSBkYXRhLnRvdGFsQ291bnQgPiAwO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVUZXh0SGlnaGxpZ2h0KCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuXG4gICAgLy9cbiAgICB0aGlzLmNsaWNrU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGJ1ZmZlcih0aGlzLmNsaWNrU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgyNTApKSksXG4gICAgICAgIGZpbHRlcigoY2xpY2tBcnJheSkgPT4gY2xpY2tBcnJheS5sZW5ndGggPT09IDIpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY2xpY2tBcnJheSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZVJvd0RvdWJsZUNsaWNrKGNsaWNrQXJyYXlbMF0uZXZlbnQsIGNsaWNrQXJyYXlbMF0uaXRlbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyQ29udGFpbmVyJykgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlckNvbnRhaW5lcicpIGZvb3RlckNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGluZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNjcm9sbGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sYXN0SW5kZXggPSBlO1xuICAgIHRoaXMub25TY3JvbGxlZEluZGV4Q2hhbmdlZC5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGluZGV4OiB0aGlzLmxhc3RJbmRleCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ0RvQ2hlY2soKSB7XG4gICAgLy90aGlzLmNvcHlGaXhlZENvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUhTY3JvbGwoKTtcbiAgICAvL1xuICAgIHRoaXMudXBkYXRlV2lkdGgoKTtcbiAgICB0aGlzLnVwZGF0ZUhlaWdodCgpO1xuICAgIC8vXG4gICAgdGhpcy51cGRhdGVUb3RhbENvdW50KCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG90YWxDb3VudCgpIHtcbiAgICB0aGlzLnN0YXJ0Um93SW5kZXggPSB0aGlzLmxhc3RJbmRleDtcbiAgICBpZiAodGhpcy5zdGFydFJvd0luZGV4IDwgMSkgdGhpcy5zdGFydFJvd0luZGV4ID0gMTtcbiAgICBpZiAodGhpcy5zdGFydFJvd0luZGV4ID4gdGhpcy50b3RhbFJvd3MpIHRoaXMuc3RhcnRSb3dJbmRleCA9IHRoaXMudG90YWxSb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUhlaWdodCgpIHtcbiAgICB0aGlzLmhlaWdodCA9IGBjYWxjKDEwMCUgLSAkeyh0aGlzLmhlYWRlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMCkgKyAodGhpcy5mb290ZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID8/IDApfXB4KWA7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMuY29sdW1ucyAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdW1QeCA9IHN1bShcbiAgICAgICAgdGhpcy5jb2x1bW5zLnRvQXJyYXkoKS5tYXAoKGMpID0+ICh0eXBlb2YgYy53aWR0aCA9PSAnbnVtYmVyJyA/IGMud2lkdGggOiBOdW1iZXIoYy53aWR0aC5yZXBsYWNlKCdweCcsICcnKSkpKSxcbiAgICAgICk7XG4gICAgICB0aGlzLndpZHRoID0gYCR7TWF0aC5tYXgoc3VtUHgsIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbGllbnRXaWR0aCAtIDUpfXB4YDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlSFNjcm9sbCgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oZWFkZXJDb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyQ29udGFpbmVyID0gdGhpcy5oZWFkZXJDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGhlYWRlckNvbnRhaW5lci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgkey1sZWZ0fXB4KWA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIC8vIEZ1bmN0aW9uIHRvIGNvcHkgZml4ZWQgY29sdW1uc1xuICBwcml2YXRlIGNvcHlGaXhlZENvbHVtbnMoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxSb3dzID0gQXJyYXkuZnJvbSh0aGlzLnZpZXdwb3J0Ll9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICAgIGNvbnN0IGZpeGVkQ29sdW1uVGFibGUgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MVGFibGVFbGVtZW50PihcbiAgICAgICcuYXgtYm9keS1maXhlZC1jb2x1bW5zID4gdGFibGUgPiB0Ym9keScsXG4gICAgKTtcbiAgICBmaXhlZENvbHVtblRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaCgobikgPT4gbi5yZW1vdmUoKSk7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGZvciAoY29uc3Qgcm93IG9mIG9yaWdpbmFsUm93cykge1xuICAgICAgICBjb25zdCBmaXhlZENlbGxzID0gQXJyYXkuZnJvbShyb3cucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZml4ZWQ9XCJzdGFydFwiXScpKTtcbiAgICAgICAgY29uc3QgZml4ZWRSb3cgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBmaXhlZENlbGxzKSB7XG4gICAgICAgICAgY29uc3QgY2xvbmVkQ2VsbCA9IGNlbGwuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgIGZpeGVkUm93LmFwcGVuZENoaWxkKGNsb25lZENlbGwpO1xuICAgICAgICB9XG4gICAgICAgIGZpeGVkQ29sdW1uVGFibGUuYXBwZW5kQ2hpbGQoZml4ZWRSb3cpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmNkay12aXJ0dWFsLXNjcm9sbGFibGUnKS5zY3JvbGxUb3A7XG4gICAgZml4ZWRDb2x1bW5UYWJsZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgkey1zY3JvbGxUb3B9cHgpYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB2aWV3cG9ydCBieSBjaGVja2luZyBpdHMgc2l6ZSBhbmQgc2Nyb2xsaW5nIHRvIHRoZSBsYXN0IGluZGV4LlxuICAgKiBNYXJrcyB0aGUgY29tcG9uZW50IGZvciBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIHRoaXMudmlld3BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy5sYXN0SW5kZXgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGluZGV4IHRvIHplcm8gYW5kIHJlZnJlc2hlcyB0aGUgZGF0YSBzb3VyY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKG9wdGlvbnM6IHsgcHJlc2VydmVIaWdobGlnaHRzPzogYm9vbGVhbiB9ID0ge30pIHtcbiAgICBpZiAoIW9wdGlvbnMucHJlc2VydmVIaWdobGlnaHRzKSB7XG4gICAgICB0aGlzLmNsZWFyUm93SGlnaGxpZ2h0cygpO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyUmVzb2x2ZWRDc3NDbGFzc2VzKCk7XG4gICAgdGhpcy5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMubGlzdERhdGFTb3VyY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvblJvd0hpZ2hsaWdodHNDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uQ3NzQ2xhc3NSZXNvbHZlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICBzdXBlci5vbkNzc0NsYXNzUmVzb2x2ZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5oYW5kbGVSb3dTaW5nbGVDbGljayhldmVudCwgaXRlbSk7XG4gICAgdGhpcy5jbGlja1N1YmplY3QubmV4dCh7IGV2ZW50LCBpdGVtIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVJvd1NpbmdsZUNsaWNrKGV2ZW50OiBFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9jdXNlZFJvdyA9PSBpdGVtKSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMub25Sb3dDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RvdWJsZUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIC8vXG4gICAgdGhpcy5vblJvd0RiQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiBpdGVtLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjb2x1bW4gaGVhZGVyIGNsaWNrcyB0byB0b2dnbGUgc29ydGluZyBvbiB0aGUgY29sdW1uLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRoZSBtb3VzZSBldmVudCB0cmlnZ2VyZWQgYnkgdGhlIGNsaWNrLlxuICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIGNvbHVtbiB0aGF0IHdhcyBjbGlja2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBoYW5kbGVDb2x1bW5DbGljayhlOiBNb3VzZUV2ZW50LCBjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCkge1xuICAgICAgY29uc3Qgc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbmQoKGMpID0+IGMuZmllbGQgPT0gY29sdW1uLmRhdGFGaWVsZCk7XG4gICAgICBpZiAoIXNvcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsXG4gICAgICAgICAgZGlyOiAnYXNjJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc29ydC5kaXIgPT0gJ2FzYycpIHtcbiAgICAgICAgICBzb3J0LmRpciA9ICdkZXNjJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbHRlcigoYykgPT4gYyAhPSBzb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U29ydChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIHJldHVybiBzb3J0ID8gKHNvcnQuZGlyID09ICdhc2MnID8gJ2F4LWljb24tYXJyb3ctbG9uZy1kb3duJyA6ICdheC1pY29uLWFycm93LWxvbmctdXAnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVPblNjcm9sbCgpIHtcbiAgICB0aGlzLnVwZGF0ZUhTY3JvbGwoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+IDwvbmctY29udGVudD5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBIZWFkZXIgY29udGVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLT5cbkBpZiAoc2hvd0hlYWRlcikge1xuICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbHVtbnNcIj5cbiAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAjaGVhZGVyQ29udGFpbmVyPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgQGZvciAoYyBvZiBub3RGaXhlZENvbHVtbigpOyB0cmFjayBjLm5hbWUpIHtcbiAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBAaWYoYy5hbGxvd1Jlc2l6aW5nKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yZXNpemUtaGFuZGxlXCIgW2F4LXRhYmxlLWNvbHVtbi1yZXNpemJsZV09XCJjXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBCb2R5IGNvbnRlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG48ZGl2IFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCIgY2xhc3M9XCJheC1ib2R5LWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWJvZHktY29sdW1uc1wiPlxuICAgIDxkaXYgY2RrVmlydHVhbFNjcm9sbGluZ0VsZW1lbnQgI3Njcm9sbGluZyBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiIChzY3JvbGwpPVwiX2hhbmRsZU9uU2Nyb2xsKClcIj5cbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgW2l0ZW1TaXplXT1cIml0ZW1IZWlnaHRcIlxuICAgICAgICBbc3R5bGUuLS1pdGVtLWhlaWdodF09XCJpdGVtSGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIl9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImF4LXRhYmxlLWJvZHkgYXgtcmVsYXRpdmVcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIj5cbiAgICAgICAgICA8Y29sZ3JvdXA+XG4gICAgICAgICAgICBAZm9yIChjIG9mIG5vdEZpeGVkQ29sdW1uKCk7IHRyYWNrIGMubmFtZSkge1xuICAgICAgICAgICAgICA8Y29sIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxjb2wgLz5cbiAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBsaXN0RGF0YVNvdXJjZTtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTAwO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkeDtcbiAgICAgICAgICAgICAgICBsZXQgckluZGV4ID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tIGN1c3RvbSByb3cgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd1RlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGl0ZW0sIHJvd0luZGV4OiBySW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSBub3JtYWwgcm93IHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1mb2N1c2VkXT1cImZvY3VzZWRSb3cgJiYgaXRlbSA9PT0gZm9jdXNlZFJvd1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cInJJbmRleFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFJvd0Nzc0NsYXNzKGl0ZW0sIHJJbmRleClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGFydCBmaXhlZCBjb2x1bW4gLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tIE5vdCBmaXhlZCBjb2x1bW4gLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGMgb2Ygbm90Rml4ZWRDb2x1bW4oKTsgdHJhY2sgYy5uYW1lOyBsZXQgY29sSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkIFthdHRyLmRhdGEtbGFiZWxdPVwiYy5jYXB0aW9uXCIgdGFiaW5kZXg9XCIwXCIgW2NsYXNzXT1cImdldENlbGxDc3NDbGFzcyhpdGVtLCBjLCBySW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tIHJlbmRlciBjZWxsIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGl0ZW0sIHJvd0luZGV4OiBySW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSByZW5kZXIgbG9hZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjLmxvYWRpbmdFbmFibGVkICYmIGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImF4LXRhYmxlLWZvb3RlclwiICNmb290ZXJDb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJheC10YWJsZS1pbmZvXCI+XG4gICAgPGRpdj5TaG93aW5nIHt7IHN0YXJ0Um93SW5kZXggfX0gb2Yge3sgdG90YWxSb3dzIH19IGl0ZW1zPC9kaXY+XG4gICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwicmVmcmVzaCgpXCI+XG4gICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXJlZnJlc2hcIj48L2F4LWljb24+XG4gICAgPC9heC1idXR0b24+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDataPagerModule } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXResultModule } from '@acorex/components/result';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDataTableColumnResizableDirective } from './columns/data-table-column-resizable.directive';\nimport { AXDataTableTextColumnComponent } from './columns/data-text-column.component';\nimport { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent, } from './columns/row-command-column.component';\nimport { AXRowExpandColumnComponent } from './columns/row-expand-column.component';\nimport { AXRowIndexColumnComponent } from './columns/row-index-column.component';\nimport { AXRowSelectColumnComponent } from './columns/row-select-column.component';\nimport { AXDataTableComponent } from './data-table/data-table.component';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective,\n];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle,\n];\nexport class AXDataTableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective], exports: [AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXDataPagerModule, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG1DQUFtQyxHQUNwQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1FQUFtRSxDQUFDOztBQUV2SCxNQUFNLFNBQVMsR0FBRztJQUNoQixrQ0FBa0M7SUFDbEMsb0JBQW9CO0lBQ3BCLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLG1DQUFtQztDQUNwQyxDQUFDO0FBQ0YsTUFBTSxPQUFPLEdBQUc7SUFDZCxZQUFZO0lBQ1osY0FBYztJQUNkLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsV0FBVztJQUNYLE9BQU87SUFDUCxrQkFBa0I7SUFDbEIsYUFBYTtDQUNkLENBQUM7QUFPRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixZQXhCNUIsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLFdBQVc7WUFDWCxPQUFPO1lBQ1Asa0JBQWtCO1lBQ2xCLGFBQWEsRUEzQmIsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUMsYUFSbkMsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUM7K0dBMkJ4QixpQkFBaUIsWUF4QjVCLFlBQVk7WUFDWixjQUFjO1lBQ2QsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixjQUFjO1lBRWQsaUJBQWlCLEVBdkJqQixrQ0FBa0M7WUFDbEMsb0JBQW9CO1lBRXBCLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFFMUIsMkJBQTJCO1lBQzNCLG1DQUFtQzs7MkZBNEJ4QixpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbW9uTW9kdWxlLCBBWFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEYXRhUGFnZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS1wYWdlcic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhSZXN1bHRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcmVzdWx0JztcbmltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0hhbmRsZSwgQ2RrRHJhZ1BsYWNlaG9sZGVyLCBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uUmVzaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uLXJlc2l6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFYUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dEcm9wZG93bkNvbW1hbmRDb2x1bW5Db21wb25lbnQsXG59IGZyb20gJy4vY29sdW1ucy9yb3ctY29tbWFuZC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUm93RXhwYW5kQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1leHBhbmQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFJvd0luZGV4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1pbmRleC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1zZWxlY3QtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWEluZmluaXRlU2Nyb2xsRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS5jb21wb25lbnQnO1xuXG5jb25zdCBDT01QT05FTlQgPSBbXG4gIEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQsXG4gIEFYRGF0YVRhYmxlQ29tcG9uZW50LFxuICBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0V4cGFuZENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgQVhEYXRhVGFibGVDb2x1bW5SZXNpemFibGVEaXJlY3RpdmUsXG5dO1xuY29uc3QgTU9EVUxFUyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBBWENvbW1vbk1vZHVsZSxcbiAgU2Nyb2xsaW5nTW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWFJlc3VsdE1vZHVsZSxcbiAgQVhMb2FkaW5nTW9kdWxlLFxuICBBWFNrZWxldG9uTW9kdWxlLFxuICBBWEJ1dHRvbk1vZHVsZSxcbiAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gIEFYRHJvcGRvd25Nb2R1bGUsXG4gIEFYRm9ybWF0TW9kdWxlLFxuICBBWFJpcHBsZURpcmVjdGl2ZSxcbiAgQVhEYXRhUGFnZXJNb2R1bGUsXG4gIENka0Ryb3BMaXN0LFxuICBDZGtEcmFnLFxuICBDZGtEcmFnUGxhY2Vob2xkZXIsXG4gIENka0RyYWdIYW5kbGUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFUywgLi4uQ09NUE9ORU5UXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYRGF0YVRhYmxlTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;AAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE;AACzC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;AAC3C,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AAC7C,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;AAC3C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9D,QAAQ,IAAI,WAAW,KAAK,SAAS,EAAE;AACvC,YAAY,OAAO,WAAW;AAC9B,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrD,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE;AAChC,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACvC,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;AAC5D,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC;AACpD,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;AAChD,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;AACjD,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAC1C,QAAQ,MAAM,IAAI,GAAG;AACrB,aAAa,IAAI,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC;AACrD,aAAa,KAAK,CAAC,MAAM,EAAE;AAC3B,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;AAChC,YAAY,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;AAChD,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClD,YAAY,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AAC/C,gBAAgB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACzC,gBAAgB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5C,gBAAgB,OAAO,IAAI;AAC3B,YAAY,CAAC,CAAC;AACd,YAAY,UAAU,EAAE;AACxB,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACjD,IAAI;AACJ;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AACxD;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;AAC5D;;AC1DY,MAAC,6BAA6B,GAAG;AAC7C,IAAI,SAAS;AACb,IAAI,WAAW;AACf,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ;AACY,MAAC,yCAAyC,GAAG;AAClD,MAAM,eAAe,SAAS,eAAe,CAAC;AACrD;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC,IAAI;AACJ,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;AAC3C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK;AACnC,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,UAAU,GAAG,wBAAwB,CAAC,EAAE,CAAC;AACtD;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,UAAU;AAC1C,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,YAAY,EAAE;AACpD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,wBAAwB,EAAE;AAC9D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,wBAAwB,EAAE;AAC/D,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC1D,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/F,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM;AACxC,YAAY,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;AACjD,gBAAgB,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC7D,YAAY;AACZ,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI;AACjD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE;AACpC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3C,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG;AACtB,YAAY,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,GAAG,EAAE;AACnG,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;AAC7C,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,yCAAyC;AAC1G,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;AACxC,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;AAC1C,YAAY,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc;AACxC,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AAC7C,YAAY,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACrC,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAChC,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9D,IAAI;AACJ;AACA;AACA;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC,IAAI;AACJ;AACA;AACA;AACA,IAAI,eAAe,CAAC,GAAG,EAAE;AACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3C,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;AACtD,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,GAAG,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI;AACvD,IAAI;AACJ;AACA;AACA;AACA,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACtC,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE;AAClC,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AACnD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,YAAY,IAAI,SAAS,CAAC,KAAK,EAAE;AACjC,gBAAgB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAClD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAChE,QAAQ;AACR,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChD,IAAI;AACJ;AACA;AACA;AACA,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC3C,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE;AACjD,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,OAAO,WAAW;AAC9B,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC;AACxE,QAAQ,OAAO,WAAW,IAAI,QAAQ,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,IAAI,QAAQ;AAC/F,IAAI;AACJ;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,KAAK,EAAE;AACnC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;AACjD,QAAQ,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;AACnC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE;AACpC,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD,YAAY,IAAI,OAAO,IAAI,IAAI,EAAE;AACjC,gBAAgB,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACxH,QAAQ,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AACxD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1D,YAAY,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC9D,gBAAgB,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,YAAY;AACZ,YAAY,OAAO,KAAK,CAAC,GAAG;AAC5B,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;AAC5H,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AAC5C,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD,YAAY,OAAO,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9D,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;AACvC,IAAI;AACJ,IAAI,aAAa,CAAC,GAAG,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACrC,YAAY,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;AACvC,YAAY,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AAC/C,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,IAAI;AACJ;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;AAC7C,YAAY,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACzD,QAAQ;AACR,QAAQ,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,MAAM;AAC9D,YAAY,IAAI,CAAC,kBAAkB,GAAG,SAAS;AAC/C,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;AAC1C,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC;AACjE,YAAY,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;AAClD,YAAY,IAAI;AAChB,QAAQ,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,EAAE,CAAC;AAC5D,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;AAC/D,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE;AACjD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE;AACxD,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;AACxD,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACpE,IAAI;AACJ,IAAI,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE;AACtC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,QAAQ,CAAC;AACvE,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9H,IAAI;AACJ,IAAI,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC/C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC;AAChF,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACxI,IAAI;AACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC9C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3C,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrE,IAAI;AACJ,IAAI,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;AACvD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3C,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnG,IAAI;AACJ,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa,EAAE;AACnC,IAAI;AACJ,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE;AACxB,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,EAAE;AAC/C,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE;AACzB;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC1D,YAAY,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;AAChD,gBAAgB,YAAY,EAAE,GAAG,CAAC,IAAI;AACtC,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,aAAa,CAAC;AACd,QAAQ;AACR;AACA,aAAa,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;AAClF,YAAY,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;AAChD,gBAAgB,YAAY,EAAE,GAAG,CAAC,IAAI;AACtC,gBAAgB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC3C,aAAa,CAAC;AACd,QAAQ;AACR;AACA,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC/C,YAAY,MAAM,MAAM,GAAG;AAC3B,gBAAgB,KAAK,EAAE,IAAI,CAAC,WAAW;AACvC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,IAAI,EAAE,OAAO;AACjC,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;AACvC,aAAa;AACb,YAAY,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAChF,YAAY,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;AAChD,gBAAgB,YAAY,EAAE,GAAG,CAAC,IAAI;AACtC,gBAAgB,QAAQ,EAAE,aAAa,CAAC,KAAK;AAC7C,aAAa,CAAC;AACd,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,EAAE,EAAE;AAClC,QAAQ,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACnD,YAAY,EAAE;AACd,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,GAAG,IAAI,EAAE;AACxB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC3C,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7D;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,GAAG,IAAI,EAAE;AAC1B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC3C,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACvF,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxH;AACA,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAClL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AACrI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC;AACrE,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACnC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;AClXZ,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,IAAI;AACJ,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC7L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAChJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACpI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;AACxC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACzCZ,MAAM,mCAAmC,CAAC;AACjD,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AACzC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC5C,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACjE,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChD,YAAY,KAAK,CAAC,eAAe,EAAE;AACnC,YAAY,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM;AAChD,gBAAgB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK;AACzC,gBAAgB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,WAAW;AACnF,gBAAgB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACrF,gBAAgB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;AAC9E,YAAY,CAAC,CAAC;AACd,YAAY,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAC9B,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACtE,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/F,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC3C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChD,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACpF,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;AAC7E,YAAY,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACrM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,0BAA0B,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5U;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE;AAC7D,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC;AACjE,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,IAAI,EAAE,CAAC,0BAA0B;AACjD,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;AAC9C,aAAa,CAAC,EAAE,EAAE,CAAC;;ACzEnB;AACA;AACA;AACA;AACA;AACO,MAAM,8BAA8B,SAAS,0BAA0B,CAAC;AAC/E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB;AAC7D,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,sBAAsB;AACjE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,sBAAsB;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,GAAG,EAAE;AAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,OAAO,IAAI,IAAI;AAC3B,YAAY,OAAO,EAAE;AACrB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;AACjE,QAAQ,OAAO,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;AAC/C,IAAI;AACJ,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;AACvC,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;AACxC,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC;AACvG,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAClM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE;AACnoB,YAAY;AACZ,gBAAgB,OAAO,EAAE,0BAA0B;AACnD,gBAAgB,WAAW,EAAE,8BAA8B;AAC3D,aAAa;AACb,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,8BAA8B,EAAE;AACjF,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AAC9W;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACrH;AACA,UAAU,CAAC;AACX,IAAI,OAAO,EAAE;AACb,IAAI,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC;AACvC,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,IAAI,UAAU,CAAC,mBAAmB,EAAE,MAAM;AAC1C,CAAC,EAAE,8BAA8B,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC;AACpE,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACxI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,gBAAgB;AAC9C,oBAAoB,QAAQ,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACzD,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,0BAA0B;AAC/D,4BAA4B,WAAW,EAAE,8BAA8B;AACvE,yBAAyB;AACzB,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,8BAA8B,EAAE;AAC7F,qBAAqB;AACrB,oBAAoB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC;AACtG,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,gBAAgB,EAAE,CAAC;AACjD,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;AACvC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,MAAM;AAC7B,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AAC7C,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;AC/LZ,MAAM,+BAA+B,SAAS,0BAA0B,CAAC;AAChF,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC5C,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC3C,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAE;AAC7C,IAAI;AACJ,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,mBAAmB;AAClC,IAAI;AACJ,IAAI,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE;AAC3C,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACpD,YAAY,MAAM,MAAM,GAAG,OAAO;AAClC,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACjE,YAAY,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC9E,gBAAgB,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACnD,YAAY;AACZ,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7D,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5D,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;AAC5D,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAClD,QAAQ;AACR,QAAQ,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACvC,IAAI;AACJ,IAAI,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE;AAC/C,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAC3D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mCAAmC,SAAS,+BAA+B,CAAC;AACzF,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,mDAAmD;AACjF,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM;AAClD,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACzD,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1E,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,sBAAsB;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI;AACZ,YAAY,IAAI,aAAa,GAAG,EAAE;AAClC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,gBAAgB,aAAa,GAAG,IAAI,CAAC,KAAK;AAC1C,YAAY;AACZ;AACA,gBAAgB,OAAO,IAAI,CAAC,KAAK,IAAI,UAAU;AAC/C,YAAY;AACZ,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACrD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC3C,oBAAoB,aAAa,GAAG,MAAM;AAC1C,gBAAgB;AAChB,qBAAqB,IAAI,MAAM,YAAY,OAAO,EAAE;AACpD,oBAAoB,aAAa,GAAG,MAAM,MAAM;AAChD,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC;AACpE,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACzD,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,YAAY,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACpC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,IAAI,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE;AAClC,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACpC,YAAY,GAAG,IAAI;AACnB,YAAY,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;AAC7E,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS,CAAC,CAAC;AACX,IAAI;AACJ,IAAI,iBAAiB,CAAC,eAAe,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,UAAU,GAAG,KAAK;AAC9B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACvD,YAAY,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe;AACvF,YAAY,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE;AAC9C,gBAAgB,UAAU,GAAG,IAAI;AACjC,gBAAgB,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;AACxD,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,CAAC,MAAM,GAAG,YAAY;AACtC,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACnC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE;AAC/B,QAAQ,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS;AAC/C,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC;AAClE,QAAQ,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS;AACpC,QAAQ,IAAI,gBAAgB,GAAG,UAAU,CAAC,MAAM;AAChD,YAAY,QAAQ,EAAE,WAAW,EAAE;AACnC,YAAY,gBAAgB,GAAG,SAAS;AACxC,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,SAAS,EAAE,IAAI,CAAC,IAAI;AAChC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,WAAW,EAAE,CAAC;AAC1B,YAAY,IAAI;AAChB,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,UAAU,EAAE,CAAC,OAAO,KAAK;AACrC,gBAAgB,IAAI,gBAAgB,EAAE;AACtC,oBAAoB,YAAY,CAAC,gBAAgB,CAAC;AAClD,oBAAoB,gBAAgB,GAAG,SAAS;AAChD,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC/D,gBAAgB,IAAI,CAAC,OAAO,EAAE;AAC9B,oBAAoB,QAAQ,EAAE,WAAW,EAAE;AAC3C,gBAAgB;AAChB,YAAY,CAAC;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE;AACrb,YAAY;AACZ,gBAAgB,OAAO,EAAE,0BAA0B;AACnD,gBAAgB,WAAW,EAAE,mCAAmC;AAChE,aAAa;AACb,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE;AACtF,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AACvW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACvuC;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,4BAA4B;AAC1D,oBAAoB,QAAQ,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACzD,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,0BAA0B;AAC/D,4BAA4B,WAAW,EAAE,mCAAmC;AAC5E,yBAAyB;AACzB,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE;AAClG,qBAAqB;AACrB,oBAAoB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;AACzD,oBAAoB,OAAO,EAAE,CAAC,aAAa,CAAC;AAC5C,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,YAAY;AACpC,wBAAwB,iBAAiB;AACzC,wBAAwB,wBAAwB;AAChD,wBAAwB,wBAAwB;AAChD,wBAAwB,yBAAyB;AACjD,wBAAwB,kBAAkB;AAC1C,wBAAwB,gBAAgB;AACxC,wBAAwB,mBAAmB;AAC3C,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AAC9C,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,MAAM;AAC7B,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;AACnB;AACA;AACA;AACA;AACA;AACO,MAAM,2BAA2B,SAAS,+BAA+B,CAAC;AACjF,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,sBAAsB;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,YAAY,OAAO,IAAI,CAAC,KAAK;AAC7B,QAAQ;AACR;AACA,YAAY,OAAO,IAAI,CAAC,KAAK,IAAI,UAAU;AAC3C,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACtC,QAAQ;AACR,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,eAAe,CAAC,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACrD,YAAY,IAAI;AAChB,YAAY,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;AACvD,SAAS,CAAC,CAAC;AACX,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;AAChC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS;AAClD,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC;AAC1D,IAAI;AACJ,IAAI,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;AACrC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;AACvD,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,SAAS,EAAE,IAAI,CAAC,IAAI;AAChC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,WAAW,EAAE,CAAC,CAAC,WAAW;AACtC,YAAY,IAAI;AAChB,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;AACxC,YAAY,UAAU,EAAE,CAAC,OAAO,KAAK;AACrC,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC/D,YAAY,CAAC;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE;AACxV,YAAY;AACZ,gBAAgB,OAAO,EAAE,0BAA0B;AACnD,gBAAgB,WAAW,EAAE,2BAA2B;AACxD,aAAa;AACb,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACxW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACh9B;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,mBAAmB;AACjD,oBAAoB,QAAQ,EAAE,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,CAAC;AACzC,oBAAoB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACzD,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,0BAA0B;AAC/D,4BAA4B,WAAW,EAAE,2BAA2B;AACpE,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;AACzD,oBAAoB,OAAO,EAAE,CAAC,aAAa,CAAC;AAC5C,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,iBAAiB;AACzC,wBAAwB,wBAAwB;AAChD,wBAAwB,iBAAiB;AACzC,wBAAwB,kBAAkB;AAC1C,wBAAwB,gBAAgB;AACxC,wBAAwB,SAAS;AACjC,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AAC9C,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,MAAM;AAC7B,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACnfnB;AACA;AACA;AACA;AACA;AACO,MAAM,0BAA0B,SAAS,0BAA0B,CAAC;AAC3E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,GAAG,EAAE;AAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE;AAC3P,YAAY;AACZ,gBAAgB,OAAO,EAAE,0BAA0B;AACnD,gBAAgB,WAAW,EAAE,0BAA0B;AACvD,aAAa;AACb,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE;AAC7E,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AACvW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACrH;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACpI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,kBAAkB;AAChD,oBAAoB,QAAQ,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACzD,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,0BAA0B;AAC/D,4BAA4B,WAAW,EAAE,0BAA0B;AACnE,yBAAyB;AACzB,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE;AACzF,qBAAqB;AACrB,oBAAoB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;AACzD,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AAC9C,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,MAAM;AAC7B,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,EAAE,CAAC;;AC1HnB;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAyB,SAAS,0BAA0B,CAAC;AAC1E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAClD;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK;AAC5B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,sBAAsB;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;AACrG,gBAAgB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM;AACjE,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,iBAAiB;AAChC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE;AAC/S,YAAY,cAAc;AAC1B,YAAY;AACZ,gBAAgB,OAAO,EAAE,0BAA0B;AACnD,gBAAgB,WAAW,EAAE,yBAAyB;AACtD,aAAa;AACb,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE;AAC5E,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACxW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACxb;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;AACnI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,iBAAiB;AAC/C,oBAAoB,QAAQ,EAAE,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,CAAC;AACzC,oBAAoB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACzD,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB,cAAc;AACtC,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,0BAA0B;AAC/D,4BAA4B,WAAW,EAAE,yBAAyB;AAClE,yBAAyB;AACzB,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE;AACxF,qBAAqB;AACrB,oBAAoB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;AACzD,oBAAoB,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AAC1F,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AAC9C,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,MAAM;AAC7B,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;AC/InB;AACA;AACA;AACA;AACA;AACO,MAAM,0BAA0B,SAAS,0BAA0B,CAAC;AAC3E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI;AACtD,IAAI;AACJ;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC3C,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,QAAQ,OAAO,IAAI,IAAI,IAAI,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpG,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC3C,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC9D,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC,QAAQ,CAAC,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AACnI,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC,QAAQ,CAAC,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAClI,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,CAAC,iBAAiB,EAAE;AACjC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACvC,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC5C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,CAAC,iBAAiB,EAAE;AACjC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAC7C,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AAC/C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AAC7C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,kBAAkB;AACjC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE;AAC3P,YAAY;AACZ,gBAAgB,OAAO,EAAE,0BAA0B;AACnD,gBAAgB,WAAW,EAAE,0BAA0B;AACvD,aAAa;AACb,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE;AAC7E,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACxW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,IAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9zB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACpI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,kBAAkB;AAChD,oBAAoB,QAAQ,EAAE,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,CAAC;AACzC,oBAAoB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACzD,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,0BAA0B;AAC/D,4BAA4B,WAAW,EAAE,0BAA0B;AACnE,yBAAyB;AACzB,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE;AACzF,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;AAC5D,oBAAoB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;AACzD,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AAC9C,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,MAAM;AAC7B,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,EAAE,CAAC;;AC/KnB;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAoB,SAAS,eAAe,CAAC;AAC1D,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5E;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpK;AACA;AACA;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1K;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvL;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,4BAA4B,GAAG,IAAI,OAAO,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE;AACjD;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE;AAC/C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC;AAC1B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC;AAC3B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG;AACvB,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,SAAS,EAAE,IAAI;AAC3B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE;AAC5C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,YAAY,EAAE;AACvD;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,YAAY,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE;AAC/C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;AACzC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE;AAChC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM;AACpC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAgB,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;AACvE,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;AACpE,gBAAgB,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AACjE,YAAY;AACZ,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5D;AACA;AACA;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAK,KAAK;AAC7C,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;AACpE,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,KAAK;AAC3H,YAAY,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;AACxF,YAAY,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpF,QAAQ,CAAC;AACT;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM;AACvC,YAAY,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACvF,gBAAgB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACpF,YAAY;AACZ,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;AAClH,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;AAC9E,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;AACzD,YAAY,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/C,YAAY,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5D,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1C,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW;AAClE,oBAAoB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,KAAK;AACpF,oBAAoB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,IAAI;AACvF,iBAAiB;AACjB,gBAAgB,iBAAiB,EAAE,IAAI;AACvC,gBAAgB,SAAS,EAAE,IAAI;AAC/B,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC,QAAQ,CAAC;AACT,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,CAAC,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzE,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,KAAK,CAAC,QAAQ,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACxC,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1D,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK;AACxC,QAAQ,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE;AAC1C,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,QAAQ;AACR,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM;AACrD,QAAQ,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACvG,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AAChG,YAAY,MAAM,wBAAwB,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;AAC5G,YAAY,IAAI,wBAAwB,EAAE;AAC1C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,uBAAuB,EAAE;AAC1C,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtF,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrF,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;AAC5C,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAC/C,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACxC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACrG,YAAY,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI;AACnD;AACA,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE;AACnC,gBAAgB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACjG,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACtG,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AAC5G,YAAY,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI;AAC/B,YAAY,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AACxC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACnD;AACA,QAAQ,IAAI,CAAC;AACb,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;AACpH,aAAa,SAAS,CAAC,CAAC,UAAU,KAAK;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,+BAA+B,EAAE;AAC9C,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACpD,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AAC3F,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,YAAY,IAAI,CAAC,2BAA2B,EAAE;AAC9C,YAAY,UAAU,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACvF,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,2BAA2B,EAAE;AAC1C,QAAQ,UAAU,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AAChG,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC;AACA,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,2BAA2B,EAAE;AACtD,oBAAoB,IAAI,CAAC,qBAAqB,EAAE;AAChD,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACvB,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,IAAI;AACJ,IAAI,2BAA2B,GAAG;AAClC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACzC,YAAY,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE;AACzC,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;AACrD,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE;AACxC,QAAQ,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;AAC1D,YAAY,OAAO,EAAE;AACrB,QAAQ,IAAI,MAAM,YAAY,8BAA8B,EAAE;AAC9D,YAAY,OAAO,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACrD,QAAQ;AACR,QAAQ,MAAM,GAAG,GAAG,MAAM;AAC1B,QAAQ,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,OAAO,EAAE;AAC/D,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5C,YAAY,OAAO,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7C,QAAQ;AACR,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAClC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AACzF,gBAAgB,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ;AAC5D,gBAAgB,OAAO;AACvB,oBAAoB,GAAG,IAAI;AAC3B,oBAAoB,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;AACjG,iBAAiB;AACjB,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE;AACjD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAClC,YAAY,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACpC,gBAAgB,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACjC,oBAAoB,CAAC,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;AACpF,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AACzF,gBAAgB,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ;AAC5D,gBAAgB,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,IAAI;AACvH,gBAAgB,OAAO;AACvB,oBAAoB,GAAG,IAAI;AAC3B,oBAAoB,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;AACjG,oBAAoB,QAAQ,EAAE,YAAY;AAC1C,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,GAAG,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5F,iBAAiB;AACjB,YAAY;AACZ,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,gBAAgB,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE;AACxG,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,mBAAmB,CAAC,EAAE,EAAE;AAClC,QAAQ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACnE,YAAY,KAAK,EAAE,IAAI,CAAC,WAAW;AACnC,YAAY,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACvC,YAAY,KAAK,EAAE,EAAE;AACrB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7F,IAAI;AACJ,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE;AAC3C,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACnC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;AACtD,gBAAgB,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC/C,oBAAoB,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;AAClG,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,OAAO;AACvB,oBAAoB,GAAG,IAAI;AAC3B,oBAAoB,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC;AACpD,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AACnE,iBAAiB;AACjB,YAAY;AACZ,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,gBAAgB,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE;AACjG,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACrD,QAAQ,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;AAC/E,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC;AAC3C,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACtG,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;AAChC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9C,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE;AACtC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACrC,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI;AAClC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI;AAClC,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACtF,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACrC,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AAC7D,YAAY,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjE,YAAY,IAAI,WAAW,IAAI,eAAe,EAAE;AAChD,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACjD,oBAAoB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD,gBAAgB;AAChB,gBAAgB,IAAI,eAAe,EAAE;AACrC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACjD,oBAAoB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChE,gBAAgB;AAChB;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,QAAQ,CAAC,SAAS,EAAE;AACxB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAChD,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;AACpD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC9C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5C,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE;AAClC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACxF,IAAI;AACJ;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,CAAC,eAAe,CAAC;AAC7B,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB;AACrD,aAAa,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,QAAQ;AACnD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE;AACjC,QAAQ,IAAI,MAAM,YAAY,8BAA8B,EAAE;AAC9D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;AAC5F,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACxF,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE;AACvC,oBAAoB,IAAI,CAAC,GAAG,GAAG,MAAM;AACrC,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpG,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,EAAE;AACpB,QAAQ,IAAI,MAAM,YAAY,8BAA8B,EAAE;AAC9D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;AAC5F,YAAY,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,yBAAyB,GAAG,uBAAuB,IAAI,SAAS;AAC/G,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACtD,QAAQ,KAAK,CAAC,kBAAkB,EAAE;AAClC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;AACvC,QAAQ,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACzC,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,uBAAuB,EAAE;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AACxC,QAAQ,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AACvE,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,eAAe,EAAE;AACjE,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE;AAC7C,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AACxC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC;AACzE,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,eAAe;AAC/E,IAAI;AACJ,IAAI,6BAA6B,CAAC,YAAY,EAAE;AAChD,QAAQ,IAAI,KAAK,GAAG,CAAC;AACrB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACzC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClE,YAAY,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,gBAAgB,KAAK,EAAE;AACvB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE;AACnD,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,KAAK,CAAC,eAAe,EAAE;AAC/B,QAAQ,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AACvC,IAAI;AACJ;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE;AAC5C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACtC,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,IAAI,EAAE;AAClB,gBAAgB,WAAW,EAAE,WAAW;AACxC,gBAAgB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK;AAC1D,gBAAgB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI;AAC7D,aAAa;AACb,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,SAAS,EAAE,IAAI;AAC3B,SAAS,CAAC;AACV,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,KAAK,CAAC,eAAe,EAAE;AAC/B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK;AAClD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa;AACpE,QAAQ,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AAChG,QAAQ,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,WAAW;AACvD,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChD,YAAY,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM;AAC/C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACpF,gBAAgB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACjF,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC;AACpE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;AAChH,IAAI;AACJ;AACA;AACA;AACA,IAAI,+BAA+B,GAAG;AACtC,QAAQ,IAAI,yBAAyB,GAAG,CAAC;AACzC,QAAQ,IAAI,eAAe;AAC3B,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACzC,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,YAAY,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC3D,gBAAgB,MAAM,CAAC,aAAa,CAAC,GAAG,yBAAyB,GAAG,IAAI;AACxE,gBAAgB,eAAe,GAAG,MAAM;AACxC,YAAY;AACZ,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAgB,yBAAyB,IAAI,KAAK;AAClD,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,eAAe;AAC3B,YAAY,eAAe,CAAC,mBAAmB,CAAC,GAAG,IAAI;AACvD,QAAQ,IAAI,uBAAuB,GAAG,CAAC;AACvC,QAAQ,IAAI,cAAc;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3D,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,YAAY,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACzD,gBAAgB,MAAM,CAAC,WAAW,CAAC,GAAG,uBAAuB,GAAG,IAAI;AACpE,gBAAgB,cAAc,GAAG,MAAM;AACvC,YAAY;AACZ,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAgB,uBAAuB,IAAI,KAAK;AAChD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,cAAc;AAC1B,YAAY,cAAc,CAAC,oBAAoB,CAAC,GAAG,IAAI;AACvD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK;AACtD,QAAQ,MAAM,gBAAgB,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AAChD,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;AACtE,YAAY,MAAM,qBAAqB,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC;AACtG,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACzD,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACrD,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE;AACvE,gBAAgB,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7D,YAAY;AACZ,YAAY,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AACxE,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAC3E,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,GAAG,EAAE,EAAE;AACpC,QAAQ,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,OAAO;AAChF;AACA,QAAQ,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC7C,YAAY,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC;AACzE,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AAChD;AACA,YAAY,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE;AAC3C,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AACvC,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC;AACvD,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAC3E,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE;AAC7C,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACpD,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;AACpE,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACjD,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;AAC5D,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACxH,QAAQ,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;AAC3E,QAAQ,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;AACtC,YAAY,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;AAC9D,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAChE,QAAQ,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC/C,QAAQ,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAC/C,QAAQ,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM;AAC9C,QAAQ,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AACxC,QAAQ,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS;AACzC,QAAQ,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS;AAC1C;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS,CAAC;AACrF,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ;AAChE,YAAY,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU;AACpE,YAAY,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU;AACpE,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AACnD,QAAQ,IAAI,QAAQ,GAAG,CAAC;AACxB,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;AACjE,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpE,gBAAgB,IAAI,WAAW,CAAC,MAAM,GAAG,iBAAiB,EAAE;AAC5D,oBAAoB,MAAM,UAAU,GAAG,WAAW,CAAC,iBAAiB,CAAC;AACrE;AACA,oBAAoB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC5E,oBAAoB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AACtE,oBAAoB,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/D,oBAAoB,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AACjD,oBAAoB,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACxD,oBAAoB,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;AAClD,oBAAoB,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACrD,oBAAoB,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;AACxD;AACA,oBAAoB,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW;AAC5D,oBAAoB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC9D,oBAAoB,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;AACxD,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE;AAChD;AACA,gBAAgB,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;AACvF,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACxE,gBAAgB,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;AACpD;AACA,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC;AAChE,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACrD,oBAAoB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC3C,oBAAoB,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC5D,oBAAoB,IAAI,KAAK,CAAC,MAAM,GAAG,iBAAiB,EAAE;AAC1D,wBAAwB,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAC7D;AACA,wBAAwB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1E,wBAAwB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7D,wBAAwB,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AACrD,wBAAwB,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAC5D,wBAAwB,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;AACtD,wBAAwB,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzD;AACA,wBAAwB,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW;AAC9D,wBAAwB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;AAChE,wBAAwB,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzD,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;AAC1D;AACA,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClC,gBAAgB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;AACnE,YAAY;AACZ;AACA,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;AAC5C,YAAY,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE;AAChD,gBAAgB,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,CAAC;AAChE,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACzD;AACA,YAAY,IAAI,MAAM,CAAC,KAAK,EAAE;AAC9B,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,+BAA+B,EAAE;AAC1D,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrB,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1C,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,WAAW,EAAE,WAAW;AAC5C,oBAAoB,KAAK,EAAE,MAAM,CAAC,KAAK;AACvC,oBAAoB,SAAS,EAAE,MAAM,CAAC,IAAI;AAC1C,iBAAiB;AACjB,gBAAgB,iBAAiB,EAAE,IAAI;AACvC,gBAAgB,SAAS,EAAE,IAAI;AAC/B,aAAa,CAAC;AACd,QAAQ;AACR,gBAAgB;AAChB;AACA,YAAY,IAAI,WAAW,CAAC,UAAU,EAAE;AACxC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AAC3D,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACxL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,kCAAkC,EAAE,wBAAwB,EAAE,EAAE,EAAE,SAAS,EAAE;AAChuH,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC3E,YAAY,cAAc;AAC1B,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACvE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,qhkBAAqhkB,EAAE,MAAM,EAAE,CAAC,mrkCAAmrkC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,mCAAmC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mCAAmC,EAAE,QAAQ,EAAE,gCAAgC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,+BAA+B,EAAE,QAAQ,EAAE,4BAA4B,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iCAAiC,EAAE,QAAQ,EAAE,8BAA8B,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,+BAA+B,EAAE,QAAQ,EAAE,4BAA4B,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1+vD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE;AAC9I,wBAAwB,eAAe,EAAE,MAAM;AAC/C,wBAAwB,oCAAoC,EAAE,sBAAsB;AACpF,qBAAqB,EAAE,MAAM,EAAE;AAC/B,wBAAwB,YAAY;AACpC,wBAAwB,cAAc;AACtC,wBAAwB,aAAa;AACrC,wBAAwB,kBAAkB;AAC1C,wBAAwB,oBAAoB;AAC5C,wBAAwB,aAAa;AACrC,wBAAwB,cAAc;AACtC,wBAAwB,eAAe;AACvC,qBAAqB,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE;AACnE,wBAAwB,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACvF,wBAAwB,cAAc;AACtC,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACnF,qBAAqB,EAAE,OAAO,EAAE;AAChC,wBAAwB,gBAAgB;AACxC,wBAAwB,OAAO;AAC/B,wBAAwB,WAAW;AACnC,wBAAwB,aAAa;AACrC,wBAAwB,OAAO;AAC/B,wBAAwB,wBAAwB;AAChD,wBAAwB,mBAAmB;AAC3C,wBAAwB,oBAAoB;AAC5C,wBAAwB,2BAA2B;AACnD,wBAAwB,mCAAmC;AAC3D,wBAAwB,6BAA6B;AACrD,wBAAwB,+BAA+B;AACvD,wBAAwB,iCAAiC;AACzD,wBAAwB,+BAA+B;AACvD,wBAAwB,wBAAwB;AAChD,wBAAwB,iBAAiB;AACzC,wBAAwB,SAAS;AACjC,wBAAwB,gBAAgB;AACxC,wBAAwB,kBAAkB;AAC1C,qBAAqB,EAAE,QAAQ,EAAE,qhkBAAqhkB,EAAE,MAAM,EAAE,CAAC,mrkCAAmrkC,CAAC,EAAE;AACvvoD,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC;AAC1C,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,WAAW;AAClC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,oBAAoB,EAAE;AAC7C,wBAAwB,MAAM,EAAE,IAAI;AACpC,qBAAqB;AACrB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACnC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;AACxC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;AACtC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE,eAAe;AACrC,gBAAgB,IAAI,EAAE,CAAC,0BAA0B;AACjD,aAAa,CAAC,EAAE,EAAE,CAAC;;ACp+BnB;AACA;AACA;AACA;AACA;AACO,MAAM,kCAAkC,SAAS,eAAe,CAAC;AACxE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE;AAC/C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE;AAC5C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG;AACvB,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,SAAS,EAAE,IAAI;AAC3B,SAAS;AACT;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC;AAC1B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC;AAC3B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;AAC9B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM;AAC3B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,YAAY,EAAE;AACxD,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;AAC9E,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;AAC5E,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC;AAC1E,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC;AACzE,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,CAAC,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,IAAI;AACJ,IAAI,UAAU,CAAC,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,KAAK,CAAC,QAAQ,EAAE;AACxB,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,gBAAgB,CAAC;AACnD,YAAY,MAAM,EAAE,IAAI,CAAC,UAAU;AACnC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACxE,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACjE,YAAY,IAAI,CAAC,uBAAuB,EAAE;AAC1C,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;AAC5C,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAC/C,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,IAAI,CAAC,qBAAqB,EAAE;AAC5C,YAAY,CAAC,EAAE,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,IAAI,CAAC;AACb,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;AACpH,aAAa,SAAS,CAAC,CAAC,UAAU,KAAK;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,4BAA4B,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC;AAC1B,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACzC,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,KAAK,EAAE,IAAI,CAAC,SAAS;AACjC,YAAY,iBAAiB,EAAE,IAAI;AACnC,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB;AACA,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B;AACA,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B;AACA,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS;AAC3C,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;AAClC,YAAY,IAAI,CAAC,aAAa,GAAG,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS;AAC/C,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,YAAY,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3J,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjD,YAAY,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5I,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM;AAC5C,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAgB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;AAC1E,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,UAAU;AAC9E,gBAAgB,eAAe,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1E,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC3G,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,wCAAwC,CAAC;AAC9G,QAAQ,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1E,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChD,YAAY,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAC5C,gBAAgB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;AAC3F,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAClE,gBAAgB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC/C,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC3D,oBAAoB,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC;AACpD,gBAAgB;AAChB,gBAAgB,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC;AACtD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,SAAS;AAClG,QAAQ,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AACzC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AACnD,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,EAAE,EAAE;AAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACzC,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,uBAAuB,EAAE;AACtC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC;AAC1B,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AACrC,IAAI;AACJ;AACA;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC/B,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC/B,QAAQ,KAAK,CAAC,kBAAkB,EAAE;AAClC,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;AAChC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9C,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE;AACtC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACrC,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI;AAClC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI;AAClC,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,iBAAiB,EAAE,IAAI;AACnC,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE;AAClC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC/B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,iBAAiB,EAAE,IAAI;AACnC,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE;AACjC,QAAQ,IAAI,MAAM,YAAY,8BAA8B,EAAE;AAC9D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;AAC5F,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,oBAAoB,KAAK,EAAE,MAAM,CAAC,SAAS;AAC3C,oBAAoB,GAAG,EAAE,KAAK;AAC9B,iBAAiB,CAAC;AAClB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE;AACvC,oBAAoB,IAAI,CAAC,GAAG,GAAG,MAAM;AACrC,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpG,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,EAAE;AACpB,QAAQ,IAAI,MAAM,YAAY,8BAA8B,EAAE;AAC9D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;AAC5F,YAAY,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,yBAAyB,GAAG,uBAAuB,IAAI,SAAS;AAC/G,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACtM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,kCAAkC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,kCAAkC,EAAE,wBAAwB,EAAE,EAAE,EAAE,SAAS,EAAE;AACtoE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,kCAAkC,EAAE;AAC1F,YAAY;AACZ,gBAAgB,OAAO,EAAE,eAAe;AACxC,gBAAgB,WAAW,EAAE,kCAAkC;AAC/D,aAAa;AACb,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kCAAkC,EAAE;AACrF,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,wBAAwB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,0pJAA0pJ,EAAE,MAAM,EAAE,CAAC,wheAAwhe,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8BAA8B,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,6BAA6B,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,uCAAuC,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,kCAAkC,EAAE,MAAM,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gCAAgC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACtwrB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC;AAC5I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE;AACnK,wBAAwB,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,kCAAkC,EAAE;AACtG,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,eAAe;AACpD,4BAA4B,WAAW,EAAE,kCAAkC;AAC3E,yBAAyB;AACzB,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kCAAkC,EAAE;AACjG,qBAAqB,EAAE,IAAI,EAAE;AAC7B,wBAAwB,oCAAoC,EAAE,sBAAsB;AACpF,qBAAqB,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE;AACzI,wBAAwB,OAAO;AAC/B,wBAAwB,gBAAgB;AACxC,wBAAwB,wBAAwB;AAChD,wBAAwB,2BAA2B;AACnD,wBAAwB,wBAAwB;AAChD,wBAAwB,yBAAyB;AACjD,wBAAwB,eAAe;AACvC,wBAAwB,mBAAmB;AAC3C,wBAAwB,iBAAiB;AACzC,qBAAqB,EAAE,QAAQ,EAAE,0pJAA0pJ,EAAE,MAAM,EAAE,CAAC,wheAAwhe,CAAC,EAAE;AACjunB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;AACxC,gBAAgB,IAAI,EAAE,eAAe;AACrC,gBAAgB,IAAI,EAAE,CAAC,0BAA0B;AACjD,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACnC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;AACjE,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,iBAAiB;AACxC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,iBAAiB;AACxC,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;AACtC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;AACpD,aAAa,CAAC,EAAE,EAAE,CAAC;;AC/bnB,MAAM,SAAS,GAAG;AAClB,IAAI,kCAAkC;AACtC,IAAI,oBAAoB;AACxB,IAAI,8BAA8B;AAClC,IAAI,yBAAyB;AAC7B,IAAI,0BAA0B;AAC9B,IAAI,0BAA0B;AAC9B,IAAI,2BAA2B;AAC/B,IAAI,mCAAmC;AACvC,IAAI,mCAAmC;AACvC,CAAC;AACD,MAAM,OAAO,GAAG;AAChB,IAAI,YAAY;AAChB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,iBAAiB;AACrB,IAAI,WAAW;AACf,IAAI,OAAO;AACX,IAAI,kBAAkB;AACtB,IAAI,aAAa;AACjB,CAAC;AACM,MAAM,iBAAiB,CAAC;AAC/B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,YAAY;AACxJ,YAAY,cAAc;AAC1B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,cAAc;AAC1B,YAAY,eAAe;AAC3B,YAAY,gBAAgB;AAC5B,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,YAAY,WAAW;AACvB,YAAY,OAAO;AACnB,YAAY,kBAAkB;AAC9B,YAAY,aAAa,EAAE,kCAAkC;AAC7D,YAAY,oBAAoB;AAChC,YAAY,8BAA8B;AAC1C,YAAY,yBAAyB;AACrC,YAAY,0BAA0B;AACtC,YAAY,0BAA0B;AACtC,YAAY,2BAA2B;AACvC,YAAY,mCAAmC;AAC/C,YAAY,mCAAmC,CAAC,EAAE,OAAO,EAAE,CAAC,kCAAkC;AAC9F,YAAY,oBAAoB;AAChC,YAAY,8BAA8B;AAC1C,YAAY,yBAAyB;AACrC,YAAY,0BAA0B;AACtC,YAAY,0BAA0B;AACtC,YAAY,2BAA2B;AACvC,YAAY,mCAAmC;AAC/C,YAAY,mCAAmC,CAAC,EAAE,CAAC,CAAC;AACpD,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,YAAY;AACxJ,YAAY,cAAc;AAC1B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,cAAc;AAC1B,YAAY,eAAe;AAC3B,YAAY,gBAAgB;AAC5B,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,cAAc;AAC1B,YAAY,iBAAiB,EAAE,kCAAkC;AACjE,YAAY,oBAAoB;AAChC,YAAY,yBAAyB;AACrC,YAAY,0BAA0B;AACtC,YAAY,2BAA2B;AACvC,YAAY,mCAAmC,CAAC,EAAE,CAAC,CAAC;AACpD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AACvD,oBAAoB,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AAC3C,oBAAoB,SAAS,EAAE,EAAE;AACjC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACjHb;AACA;AACA;;;;"}
|