@acontplus/ng-components 1.0.13 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"acontplus-ng-components.mjs","sources":["../tmp-esm2022/lib/components/cards/mat-dynamic-card/mat-dynamic-card.component.js","../tmp-esm2022/lib/components/dialog-wrapper/dialog-wrapper.component.js","../tmp-esm2022/lib/components/icons/icon-user/icon-user.component.js","../tmp-esm2022/lib/components/icons/svg-icon/svg-icon.component.js","../tmp-esm2022/lib/components/mat-input-chip/mat-input-chip.component.js","../tmp-esm2022/lib/components/mat-theme-button/mat-theme-button.component.js","../tmp-esm2022/lib/components/spinner/spinner.component.js","../tmp-esm2022/lib/components/tables/custom-tabulator/custom-tabulator.component.js","../tmp-esm2022/lib/pipes/get-total.pipe.js","../tmp-esm2022/lib/pipes/status-display.pipe.js","../tmp-esm2022/lib/components/tables/mat-dynamic-table/mat-dynamic-table.component.js","../tmp-esm2022/lib/services/dialog/advanced-dialog.service.js","../tmp-esm2022/lib/services/overlay.service.js","../tmp-esm2022/lib/services/theme.service.js","../tmp-esm2022/lib/models/autocomplete-wrapper.js","../tmp-esm2022/lib/services/autocomplete-wrapper.service.js","../tmp-esm2022/lib/components/theme-toggle/theme-toggle.component.js","../tmp-esm2022/lib/models/mat-table-models/field-definition.js","../tmp-esm2022/lib/models/mat-table-models/column-definition.js","../tmp-esm2022/lib/models/mat-table-models/table-cell-index.js","../tmp-esm2022/lib/models/pagination.js","../tmp-esm2022/lib/components/autocomplete-wrapper/autocomplete-wrapper.component.js","../tmp-esm2022/lib/directives/to-upper-case.directive.js","../tmp-esm2022/lib/inputs/dynamic-input.js","../tmp-esm2022/acontplus-ng-components.js"],"sourcesContent":["import { Component, input, output, booleanAttribute, ViewEncapsulation } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/card\";\nimport * as i2 from \"@angular/material/button\";\nimport * as i3 from \"@angular/material/icon\";\n/**\n * A versatile card component that wraps Angular Material's mat-card with additional functionality\n * and customization options. This component provides a consistent card layout with configurable\n * header, content, and action areas.\n *\n * @example\n * <acp-mat-dynamic-card\n * [cardTitle]=\"'Card Title'\"\n * [cardSubtitle]=\"'Card Subtitle'\"\n * [isHeaderVisible]=\"true\"\n * [areActionsVisible]=\"true\"\n * (primaryButtonClicked)=\"onPrimaryAction()\">\n * Card content goes here\n * </acp-mat-dynamic-card>\n */\nexport class MatDynamicCardComponent {\n // Header inputs\n /**\n * The title text to display in the card header.\n * @default null\n */\n cardTitle = input(null, ...(ngDevMode ? [{ debugName: \"cardTitle\" }] : []));\n /**\n * The subtitle text to display in the card header.\n * @default null\n */\n cardSubtitle = input(null, ...(ngDevMode ? [{ debugName: \"cardSubtitle\" }] : []));\n /**\n * URL for the avatar image to display in the card header.\n * @default null\n */\n avatarImageUrl = input(null, ...(ngDevMode ? [{ debugName: \"avatarImageUrl\" }] : []));\n /**\n * Whether to show the card header section.\n * @default false\n */\n isHeaderVisible = input(false, ...(ngDevMode ? [{ debugName: \"isHeaderVisible\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n // Content inputs\n /**\n * CSS padding value for the card content area.\n * @default '1rem'\n */\n contentPadding = input('1rem', ...(ngDevMode ? [{ debugName: \"contentPadding\" }] : []));\n /**\n * Whether to show a divider between the header and content sections.\n * @default false\n */\n hasDivider = input(false, ...(ngDevMode ? [{ debugName: \"hasDivider\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n // Action inputs\n /**\n * Whether to show the action buttons section.\n * @default false\n */\n areActionsVisible = input(false, ...(ngDevMode ? [{ debugName: \"areActionsVisible\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * Text for the primary action button.\n * @default 'Confirm'\n */\n primaryButtonText = input('Confirm', ...(ngDevMode ? [{ debugName: \"primaryButtonText\" }] : []));\n /**\n * Text for the secondary action button.\n * @default 'Cancel'\n */\n secondaryButtonText = input('Cancel', ...(ngDevMode ? [{ debugName: \"secondaryButtonText\" }] : []));\n /**\n * Material icon name for the primary button.\n * @default null\n */\n primaryButtonIcon = input(null, ...(ngDevMode ? [{ debugName: \"primaryButtonIcon\" }] : []));\n /**\n * Material icon name for the secondary button.\n * @default null\n */\n secondaryButtonIcon = input(null, ...(ngDevMode ? [{ debugName: \"secondaryButtonIcon\" }] : []));\n /**\n * Alignment of the action buttons.\n * @default 'end'\n */\n buttonsPosition = input('end', ...(ngDevMode ? [{ debugName: \"buttonsPosition\" }] : []));\n // Output events\n /**\n * Event emitted when the primary button is clicked.\n */\n primaryButtonClicked = output();\n /**\n * Event emitted when the secondary button is clicked.\n */\n secondaryButtonClicked = output();\n /**\n * Event emitted when the card is clicked.\n */\n cardClicked = output();\n // Methods\n /**\n * Handles the primary button click event.\n * Stops event propagation and emits the primaryButtonClicked event.\n * @param event The click event\n */\n handlePrimaryButtonClick(event) {\n event.stopPropagation();\n this.primaryButtonClicked.emit();\n }\n /**\n * Handles the secondary button click event.\n * Stops event propagation and emits the secondaryButtonClicked event.\n * @param event The click event\n */\n handleSecondaryButtonClick(event) {\n event.stopPropagation();\n this.secondaryButtonClicked.emit();\n }\n /**\n * Handles the card click event.\n * Emits the cardClicked event with the original event.\n * @param event The click event\n */\n handleCardClick(event) {\n this.cardClicked.emit(event);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatDynamicCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: MatDynamicCardComponent, isStandalone: true, selector: \"acp-mat-dynamic-card\", inputs: { cardTitle: { classPropertyName: \"cardTitle\", publicName: \"cardTitle\", isSignal: true, isRequired: false, transformFunction: null }, cardSubtitle: { classPropertyName: \"cardSubtitle\", publicName: \"cardSubtitle\", isSignal: true, isRequired: false, transformFunction: null }, avatarImageUrl: { classPropertyName: \"avatarImageUrl\", publicName: \"avatarImageUrl\", isSignal: true, isRequired: false, transformFunction: null }, isHeaderVisible: { classPropertyName: \"isHeaderVisible\", publicName: \"isHeaderVisible\", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: \"contentPadding\", publicName: \"contentPadding\", isSignal: true, isRequired: false, transformFunction: null }, hasDivider: { classPropertyName: \"hasDivider\", publicName: \"hasDivider\", isSignal: true, isRequired: false, transformFunction: null }, areActionsVisible: { classPropertyName: \"areActionsVisible\", publicName: \"areActionsVisible\", isSignal: true, isRequired: false, transformFunction: null }, primaryButtonText: { classPropertyName: \"primaryButtonText\", publicName: \"primaryButtonText\", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonText: { classPropertyName: \"secondaryButtonText\", publicName: \"secondaryButtonText\", isSignal: true, isRequired: false, transformFunction: null }, primaryButtonIcon: { classPropertyName: \"primaryButtonIcon\", publicName: \"primaryButtonIcon\", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonIcon: { classPropertyName: \"secondaryButtonIcon\", publicName: \"secondaryButtonIcon\", isSignal: true, isRequired: false, transformFunction: null }, buttonsPosition: { classPropertyName: \"buttonsPosition\", publicName: \"buttonsPosition\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { primaryButtonClicked: \"primaryButtonClicked\", secondaryButtonClicked: \"secondaryButtonClicked\", cardClicked: \"cardClicked\" }, ngImport: i0, template: \"<mat-card\\n appearance=\\\"outlined\\\"\\n (click)=\\\"handleCardClick($event)\\\"\\n [class.mat-card-divider]=\\\"hasDivider()\\\"\\n>\\n @if (isHeaderVisible()) {\\n <mat-card-header>\\n @if (avatarImageUrl()) {\\n <img mat-card-avatar [src]=\\\"avatarImageUrl()\\\" alt=\\\"Card avatar\\\" />\\n }\\n @if (cardTitle()) {\\n <mat-card-title>{{ cardTitle() }}</mat-card-title>\\n }\\n @if (cardSubtitle()) {\\n <mat-card-subtitle>{{ cardSubtitle() }}</mat-card-subtitle>\\n }\\n </mat-card-header>\\n }\\n\\n <mat-card-content [style.padding]=\\\"contentPadding()\\\">\\n <ng-content />\\n </mat-card-content>\\n\\n @if (areActionsVisible()) {\\n <mat-card-actions [align]=\\\"buttonsPosition()\\\">\\n @if (secondaryButtonText()) {\\n <button mat-button color=\\\"warn\\\" (click)=\\\"handleSecondaryButtonClick($event)\\\">\\n @if (secondaryButtonIcon()) {\\n <mat-icon>{{ secondaryButtonIcon() }}</mat-icon>\\n }\\n {{ secondaryButtonText() }}\\n </button>\\n }\\n\\n @if (primaryButtonText()) {\\n <button mat-button color=\\\"primary\\\" (click)=\\\"handlePrimaryButtonClick($event)\\\">\\n @if (primaryButtonIcon()) {\\n <mat-icon>{{ primaryButtonIcon() }}</mat-icon>\\n }\\n {{ primaryButtonText() }}\\n </button>\\n }\\n </mat-card-actions>\\n }\\n</mat-card>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: MatCardModule }, { kind: \"component\", type: i1.MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"directive\", type: i1.MatCardActions, selector: \"mat-card-actions\", inputs: [\"align\"], exportAs: [\"matCardActions\"] }, { kind: \"directive\", type: i1.MatCardAvatar, selector: \"[mat-card-avatar], [matCardAvatar]\" }, { kind: \"directive\", type: i1.MatCardContent, selector: \"mat-card-content\" }, { kind: \"component\", type: i1.MatCardHeader, selector: \"mat-card-header\" }, { kind: \"directive\", type: i1.MatCardSubtitle, selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\" }, { kind: \"directive\", type: i1.MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\" }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i2.MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i3.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatDynamicCardComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-mat-dynamic-card', standalone: true, imports: [MatCardModule, MatButtonModule, MatIconModule], encapsulation: ViewEncapsulation.None, template: \"<mat-card\\n appearance=\\\"outlined\\\"\\n (click)=\\\"handleCardClick($event)\\\"\\n [class.mat-card-divider]=\\\"hasDivider()\\\"\\n>\\n @if (isHeaderVisible()) {\\n <mat-card-header>\\n @if (avatarImageUrl()) {\\n <img mat-card-avatar [src]=\\\"avatarImageUrl()\\\" alt=\\\"Card avatar\\\" />\\n }\\n @if (cardTitle()) {\\n <mat-card-title>{{ cardTitle() }}</mat-card-title>\\n }\\n @if (cardSubtitle()) {\\n <mat-card-subtitle>{{ cardSubtitle() }}</mat-card-subtitle>\\n }\\n </mat-card-header>\\n }\\n\\n <mat-card-content [style.padding]=\\\"contentPadding()\\\">\\n <ng-content />\\n </mat-card-content>\\n\\n @if (areActionsVisible()) {\\n <mat-card-actions [align]=\\\"buttonsPosition()\\\">\\n @if (secondaryButtonText()) {\\n <button mat-button color=\\\"warn\\\" (click)=\\\"handleSecondaryButtonClick($event)\\\">\\n @if (secondaryButtonIcon()) {\\n <mat-icon>{{ secondaryButtonIcon() }}</mat-icon>\\n }\\n {{ secondaryButtonText() }}\\n </button>\\n }\\n\\n @if (primaryButtonText()) {\\n <button mat-button color=\\\"primary\\\" (click)=\\\"handlePrimaryButtonClick($event)\\\">\\n @if (primaryButtonIcon()) {\\n <mat-icon>{{ primaryButtonIcon() }}</mat-icon>\\n }\\n {{ primaryButtonText() }}\\n </button>\\n }\\n </mat-card-actions>\\n }\\n</mat-card>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWR5bmFtaWMtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYXJkcy9tYXQtZHluYW1pYy1jYXJkL21hdC1keW5hbWljLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2FyZHMvbWF0LWR5bmFtaWMtY2FyZC9tYXQtZHluYW1pYy1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFFdkQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFTSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLGdCQUFnQjtJQUNoQjs7O09BR0c7SUFDSCxTQUFTLEdBQUcsS0FBSyxDQUFnQixJQUFJLHFEQUFDLENBQUM7SUFFdkM7OztPQUdHO0lBQ0gsWUFBWSxHQUFHLEtBQUssQ0FBZ0IsSUFBSSx3REFBQyxDQUFDO0lBRTFDOzs7T0FHRztJQUNILGNBQWMsR0FBRyxLQUFLLENBQWdCLElBQUksMERBQUMsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSCxlQUFlLEdBQUcsS0FBSyxDQUFDLEtBQUssbURBQUksU0FBUyxFQUFFLGdCQUFnQixPQUE3QixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFDLENBQUM7SUFFaEUsaUJBQWlCO0lBQ2pCOzs7T0FHRztJQUNILGNBQWMsR0FBRyxLQUFLLENBQVMsTUFBTSwwREFBQyxDQUFDO0lBRXZDOzs7T0FHRztJQUNILFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyw4Q0FBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztJQUUzRCxnQkFBZ0I7SUFDaEI7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLEtBQUsscURBQUksU0FBUyxFQUFFLGdCQUFnQixPQUE3QixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFDLENBQUM7SUFFbEU7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLFNBQVMsNkRBQUMsQ0FBQztJQUVyQzs7O09BR0c7SUFDSCxtQkFBbUIsR0FBRyxLQUFLLENBQUMsUUFBUSwrREFBQyxDQUFDO0lBRXRDOzs7T0FHRztJQUNILGlCQUFpQixHQUFHLEtBQUssQ0FBZ0IsSUFBSSw2REFBQyxDQUFDO0lBRS9DOzs7T0FHRztJQUNILG1CQUFtQixHQUFHLEtBQUssQ0FBZ0IsSUFBSSwrREFBQyxDQUFDO0lBRWpEOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLENBQWtCLEtBQUssMkRBQUMsQ0FBQztJQUVoRCxnQkFBZ0I7SUFDaEI7O09BRUc7SUFDSCxvQkFBb0IsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUV0Qzs7T0FFRztJQUNILHNCQUFzQixHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRXhDOztPQUVHO0lBQ0gsV0FBVyxHQUFHLE1BQU0sRUFBUyxDQUFDO0lBRTlCLFVBQVU7SUFDVjs7OztPQUlHO0lBQ0gsd0JBQXdCLENBQUMsS0FBWTtRQUNuQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsMEJBQTBCLENBQUMsS0FBWTtRQUNyQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLEtBQVk7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzt1R0F4SFUsdUJBQXVCOzJGQUF2Qix1QkFBdUIsdStEQzVCcEMsdzJDQTZDQSx5RER0QlksYUFBYSx3dUJBQUUsZUFBZSxtWEFBRSxhQUFhOzsyRkFLNUMsdUJBQXVCO2tCQVJuQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxpQkFHekMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgYm9vbGVhbkF0dHJpYnV0ZSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbi8qKlxuICogQSB2ZXJzYXRpbGUgY2FyZCBjb21wb25lbnQgdGhhdCB3cmFwcyBBbmd1bGFyIE1hdGVyaWFsJ3MgbWF0LWNhcmQgd2l0aCBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHlcbiAqIGFuZCBjdXN0b21pemF0aW9uIG9wdGlvbnMuIFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIGEgY29uc2lzdGVudCBjYXJkIGxheW91dCB3aXRoIGNvbmZpZ3VyYWJsZVxuICogaGVhZGVyLCBjb250ZW50LCBhbmQgYWN0aW9uIGFyZWFzLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8YWNwLW1hdC1keW5hbWljLWNhcmRcbiAqICAgW2NhcmRUaXRsZV09XCInQ2FyZCBUaXRsZSdcIlxuICogICBbY2FyZFN1YnRpdGxlXT1cIidDYXJkIFN1YnRpdGxlJ1wiXG4gKiAgIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiXG4gKiAgIFthcmVBY3Rpb25zVmlzaWJsZV09XCJ0cnVlXCJcbiAqICAgKHByaW1hcnlCdXR0b25DbGlja2VkKT1cIm9uUHJpbWFyeUFjdGlvbigpXCI+XG4gKiAgIENhcmQgY29udGVudCBnb2VzIGhlcmVcbiAqIDwvYWNwLW1hdC1keW5hbWljLWNhcmQ+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1tYXQtZHluYW1pYy1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdENhcmRNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXQtZHluYW1pYy1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21hdC1keW5hbWljLWNhcmQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNYXREeW5hbWljQ2FyZENvbXBvbmVudCB7XG4gIC8vIEhlYWRlciBpbnB1dHNcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGNhcmQgaGVhZGVyLlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBjYXJkVGl0bGUgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogVGhlIHN1YnRpdGxlIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgY2FyZCBoZWFkZXIuXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGNhcmRTdWJ0aXRsZSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBVUkwgZm9yIHRoZSBhdmF0YXIgaW1hZ2UgdG8gZGlzcGxheSBpbiB0aGUgY2FyZCBoZWFkZXIuXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGF2YXRhckltYWdlVXJsID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FyZCBoZWFkZXIgc2VjdGlvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGlzSGVhZGVyVmlzaWJsZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvLyBDb250ZW50IGlucHV0c1xuICAvKipcbiAgICogQ1NTIHBhZGRpbmcgdmFsdWUgZm9yIHRoZSBjYXJkIGNvbnRlbnQgYXJlYS5cbiAgICogQGRlZmF1bHQgJzFyZW0nXG4gICAqL1xuICBjb250ZW50UGFkZGluZyA9IGlucHV0PHN0cmluZz4oJzFyZW0nKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGEgZGl2aWRlciBiZXR3ZWVuIHRoZSBoZWFkZXIgYW5kIGNvbnRlbnQgc2VjdGlvbnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoYXNEaXZpZGVyID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8vIEFjdGlvbiBpbnB1dHNcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgYWN0aW9uIGJ1dHRvbnMgc2VjdGlvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFyZUFjdGlvbnNWaXNpYmxlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBUZXh0IGZvciB0aGUgcHJpbWFyeSBhY3Rpb24gYnV0dG9uLlxuICAgKiBAZGVmYXVsdCAnQ29uZmlybSdcbiAgICovXG4gIHByaW1hcnlCdXR0b25UZXh0ID0gaW5wdXQoJ0NvbmZpcm0nKTtcblxuICAvKipcbiAgICogVGV4dCBmb3IgdGhlIHNlY29uZGFyeSBhY3Rpb24gYnV0dG9uLlxuICAgKiBAZGVmYXVsdCAnQ2FuY2VsJ1xuICAgKi9cbiAgc2Vjb25kYXJ5QnV0dG9uVGV4dCA9IGlucHV0KCdDYW5jZWwnKTtcblxuICAvKipcbiAgICogTWF0ZXJpYWwgaWNvbiBuYW1lIGZvciB0aGUgcHJpbWFyeSBidXR0b24uXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIHByaW1hcnlCdXR0b25JY29uID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIE1hdGVyaWFsIGljb24gbmFtZSBmb3IgdGhlIHNlY29uZGFyeSBidXR0b24uXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIHNlY29uZGFyeUJ1dHRvbkljb24gPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogQWxpZ25tZW50IG9mIHRoZSBhY3Rpb24gYnV0dG9ucy5cbiAgICogQGRlZmF1bHQgJ2VuZCdcbiAgICovXG4gIGJ1dHRvbnNQb3NpdGlvbiA9IGlucHV0PCdzdGFydCcgfCAnZW5kJz4oJ2VuZCcpO1xuXG4gIC8vIE91dHB1dCBldmVudHNcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcHJpbWFyeSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIHByaW1hcnlCdXR0b25DbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgc2Vjb25kYXJ5QnV0dG9uQ2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNhcmQgaXMgY2xpY2tlZC5cbiAgICovXG4gIGNhcmRDbGlja2VkID0gb3V0cHV0PEV2ZW50PigpO1xuXG4gIC8vIE1ldGhvZHNcbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHByaW1hcnkgYnV0dG9uIGNsaWNrIGV2ZW50LlxuICAgKiBTdG9wcyBldmVudCBwcm9wYWdhdGlvbiBhbmQgZW1pdHMgdGhlIHByaW1hcnlCdXR0b25DbGlja2VkIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGNsaWNrIGV2ZW50XG4gICAqL1xuICBoYW5kbGVQcmltYXJ5QnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiBjbGljayBldmVudC5cbiAgICogU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGVtaXRzIHRoZSBzZWNvbmRhcnlCdXR0b25DbGlja2VkIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGNsaWNrIGV2ZW50XG4gICAqL1xuICBoYW5kbGVTZWNvbmRhcnlCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlY29uZGFyeUJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNhcmQgY2xpY2sgZXZlbnQuXG4gICAqIEVtaXRzIHRoZSBjYXJkQ2xpY2tlZCBldmVudCB3aXRoIHRoZSBvcmlnaW5hbCBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBjbGljayBldmVudFxuICAgKi9cbiAgaGFuZGxlQ2FyZENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2FyZENsaWNrZWQuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZFxuICBhcHBlYXJhbmNlPVwib3V0bGluZWRcIlxuICAoY2xpY2spPVwiaGFuZGxlQ2FyZENsaWNrKCRldmVudClcIlxuICBbY2xhc3MubWF0LWNhcmQtZGl2aWRlcl09XCJoYXNEaXZpZGVyKClcIlxuPlxuICBAaWYgKGlzSGVhZGVyVmlzaWJsZSgpKSB7XG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgIEBpZiAoYXZhdGFySW1hZ2VVcmwoKSkge1xuICAgICAgICA8aW1nIG1hdC1jYXJkLWF2YXRhciBbc3JjXT1cImF2YXRhckltYWdlVXJsKClcIiBhbHQ9XCJDYXJkIGF2YXRhclwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNhcmRUaXRsZSgpKSB7XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT57eyBjYXJkVGl0bGUoKSB9fTwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICB9XG4gICAgICBAaWYgKGNhcmRTdWJ0aXRsZSgpKSB7XG4gICAgICAgIDxtYXQtY2FyZC1zdWJ0aXRsZT57eyBjYXJkU3VidGl0bGUoKSB9fTwvbWF0LWNhcmQtc3VidGl0bGU+XG4gICAgICB9XG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gIH1cblxuICA8bWF0LWNhcmQtY29udGVudCBbc3R5bGUucGFkZGluZ109XCJjb250ZW50UGFkZGluZygpXCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG4gIEBpZiAoYXJlQWN0aW9uc1Zpc2libGUoKSkge1xuICAgIDxtYXQtY2FyZC1hY3Rpb25zIFthbGlnbl09XCJidXR0b25zUG9zaXRpb24oKVwiPlxuICAgICAgQGlmIChzZWNvbmRhcnlCdXR0b25UZXh0KCkpIHtcbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJoYW5kbGVTZWNvbmRhcnlCdXR0b25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgQGlmIChzZWNvbmRhcnlCdXR0b25JY29uKCkpIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBzZWNvbmRhcnlCdXR0b25JY29uKCkgfX08L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICB7eyBzZWNvbmRhcnlCdXR0b25UZXh0KCkgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocHJpbWFyeUJ1dHRvblRleHQoKSkge1xuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImhhbmRsZVByaW1hcnlCdXR0b25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgQGlmIChwcmltYXJ5QnV0dG9uSWNvbigpKSB7XG4gICAgICAgICAgICA8bWF0LWljb24+e3sgcHJpbWFyeUJ1dHRvbkljb24oKSB9fTwvbWF0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIHt7IHByaW1hcnlCdXR0b25UZXh0KCkgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICB9XG48L21hdC1jYXJkPlxuIl19","import { Component, ViewContainerRef, ChangeDetectionStrategy, inject, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/dialog\";\nimport * as i2 from \"@angular/material/icon\";\nimport * as i3 from \"@angular/material/button\";\n/**\n * A wrapper component for Angular Material dialogs that provides a consistent look and feel,\n * including a draggable header and the ability to dynamically create components inside the dialog.\n *\n * This component is typically used with the AdvancedDialogService's openInWrapper method.\n *\n * @example\n * // In your service or component:\n * this.dialogService.openInWrapper({\n * component: YourDialogContentComponent,\n * title: 'Dialog Title',\n * icon: 'info',\n * data: { message: 'This is some data passed to the dialog content component' }\n * });\n */\nexport class DialogWrapperComponent {\n dialogRef = inject(MatDialogRef);\n config = inject(MAT_DIALOG_DATA);\n /**\n * A template reference that acts as an anchor for dynamic content.\n * This is where the component specified in the config will be rendered.\n */\n contentHost = viewChild.required('contentHost', { read: ViewContainerRef });\n /**\n * A reference to the header element for the z-index focus logic.\n * Used to bring the dialog to the front when clicked.\n */\n header = viewChild('dialogHeader', ...(ngDevMode ? [{ debugName: \"header\" }] : []));\n /**\n * Static counter to track the highest z-index for multiple dialogs.\n * Ensures that the most recently clicked dialog appears on top.\n */\n static lastZIndex = 1000;\n /**\n * Timeout ID for debouncing z-index updates to prevent excessive DOM manipulations.\n */\n bringToFrontTimeoutId = null;\n /**\n * Creates an instance of DialogWrapperComponent.\n *\n * @param dialogRef Reference to the dialog opened via the Material Dialog service\n * @param config Configuration for the dialog wrapper, injected from MAT_DIALOG_DATA\n */\n constructor() {\n // Constructor intentionally empty - required by Angular DI\n }\n /**\n * Lifecycle hook that initializes the dynamic content after the view is ready.\n * Creates the component specified in the config and passes data to it.\n */\n ngAfterViewInit() {\n // Dynamically create the content component after the view is ready.\n this.contentHost().clear();\n const componentRef = this.contentHost().createComponent(this.config.component);\n // Pass the provided data directly to the new component's instance.\n // This requires the content component to have an @Input() property named 'data'.\n if (this.config.data && componentRef.instance) {\n componentRef.instance.data = this.config.data;\n }\n }\n /**\n * Cleanup lifecycle hook to cancel any pending animation frame requests.\n */\n ngOnDestroy() {\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n this.bringToFrontTimeoutId = null;\n }\n }\n /**\n * Closes the dialog.\n * Called when the close button in the header is clicked.\n */\n onClose() {\n this.dialogRef.close();\n }\n /**\n * Brings the dialog to the front by adjusting its z-index.\n * Uses requestAnimationFrame to debounce updates and prevent excessive DOM manipulations.\n * Called when the dialog header is clicked.\n */\n bringToFront() {\n // Clear any pending update\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n }\n // Schedule the z-index update for the next animation frame\n this.bringToFrontTimeoutId = requestAnimationFrame(() => {\n const pane = this.header()?.nativeElement.closest('.cdk-overlay-pane');\n if (pane) {\n pane.style.zIndex = (++DialogWrapperComponent.lastZIndex).toString();\n }\n this.bringToFrontTimeoutId = null;\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DialogWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: DialogWrapperComponent, isStandalone: true, selector: \"acp-dialog-wrapper\", viewQueries: [{ propertyName: \"contentHost\", first: true, predicate: [\"contentHost\"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: \"header\", first: true, predicate: [\"dialogHeader\"], descendants: true, isSignal: true }], ngImport: i0, template: \"@if (!config.hideHeader) {\\n <div\\n class=\\\"dialog-header\\\"\\n cdkDrag\\n cdkDragRootElement=\\\".cdk-overlay-pane\\\"\\n cdkDragHandle\\n #dialogHeader\\n (mousedown)=\\\"bringToFront()\\\"\\n >\\n <h6 mat-dialog-title>\\n @if (config.icon) {\\n <mat-icon class=\\\"title-icon\\\" aria-hidden=\\\"true\\\">{{ config.icon }}</mat-icon>\\n }\\n <span>{{ config.title }}</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"close-button\\\"\\n (click)=\\\"onClose()\\\"\\n aria-label=\\\"Cerrar di\\u00E1logo\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </h6>\\n </div>\\n}\\n\\n<ng-template #contentHost />\\n\", styles: [\".dialog-header{cursor:move;padding:12px 24px;border-bottom:1px solid #dee2e6;color:#212529}h6[mat-dialog-title]{display:flex;align-items:center;font-size:1.2rem;font-weight:500;margin:0;width:100%}.title-icon{margin-right:12px;vertical-align:middle}h6[mat-dialog-title] span{flex-grow:1}.close-button{margin-left:auto}mat-dialog-content{padding:24px}\\n\"], dependencies: [{ 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: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"ngmodule\", type: MatDialogModule }, { kind: \"directive\", type: i1.MatDialogTitle, selector: \"[mat-dialog-title], [matDialogTitle]\", inputs: [\"id\"], exportAs: [\"matDialogTitle\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i2.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i3.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DialogWrapperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-dialog-wrapper', standalone: true, imports: [CdkDrag, CdkDragHandle, MatDialogModule, MatIconModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"@if (!config.hideHeader) {\\n <div\\n class=\\\"dialog-header\\\"\\n cdkDrag\\n cdkDragRootElement=\\\".cdk-overlay-pane\\\"\\n cdkDragHandle\\n #dialogHeader\\n (mousedown)=\\\"bringToFront()\\\"\\n >\\n <h6 mat-dialog-title>\\n @if (config.icon) {\\n <mat-icon class=\\\"title-icon\\\" aria-hidden=\\\"true\\\">{{ config.icon }}</mat-icon>\\n }\\n <span>{{ config.title }}</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"close-button\\\"\\n (click)=\\\"onClose()\\\"\\n aria-label=\\\"Cerrar di\\u00E1logo\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </h6>\\n </div>\\n}\\n\\n<ng-template #contentHost />\\n\", styles: [\".dialog-header{cursor:move;padding:12px 24px;border-bottom:1px solid #dee2e6;color:#212529}h6[mat-dialog-title]{display:flex;align-items:center;font-size:1.2rem;font-weight:500;margin:0;width:100%}.title-icon{margin-right:12px;vertical-align:middle}h6[mat-dialog-title] span{flex-grow:1}.close-button{margin-left:auto}mat-dialog-content{padding:24px}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGlhbG9nLXdyYXBwZXIvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGlhbG9nLXdyYXBwZXIvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxnQkFBZ0IsRUFHaEIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFHM0Q7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFVSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFNBQVMsR0FBRyxNQUFNLENBQXVDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sR0FBRyxNQUFNLENBQXNCLGVBQWUsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUNNLFdBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFckY7OztPQUdHO0lBQ00sTUFBTSxHQUFHLFNBQVMsQ0FBYSxjQUFjLGtEQUFDLENBQUM7SUFFeEQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFFakM7O09BRUc7SUFDSyxxQkFBcUIsR0FBa0IsSUFBSSxDQUFDO0lBRXBEOzs7OztPQUtHO0lBQ0g7UUFDRSwyREFBMkQ7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvRSxtRUFBbUU7UUFDbkUsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLFlBQVksQ0FBQyxRQUFnQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVk7UUFDViwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFnQixDQUFDO1lBQ3RGLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZFLENBQUM7WUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0ExRlUsc0JBQXNCOzJGQUF0QixzQkFBc0IscUtBUWdDLGdCQUFnQixzSkNsRG5GLCtxQkE0QkEsMFpEUVksT0FBTyx3Y0FBRSxhQUFhLDhGQUFFLGVBQWUsOEtBQUUsYUFBYSxtTEFBRSxlQUFlOzsyRkFNdEUsc0JBQXNCO2tCQVRsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLG1CQUdqRSx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgaW5qZWN0LFxuICB2aWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnSGFuZGxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2dXcmFwcGVyQ29uZmlnIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG4vKipcbiAqIEEgd3JhcHBlciBjb21wb25lbnQgZm9yIEFuZ3VsYXIgTWF0ZXJpYWwgZGlhbG9ncyB0aGF0IHByb3ZpZGVzIGEgY29uc2lzdGVudCBsb29rIGFuZCBmZWVsLFxuICogaW5jbHVkaW5nIGEgZHJhZ2dhYmxlIGhlYWRlciBhbmQgdGhlIGFiaWxpdHkgdG8gZHluYW1pY2FsbHkgY3JlYXRlIGNvbXBvbmVudHMgaW5zaWRlIHRoZSBkaWFsb2cuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCB0aGUgQWR2YW5jZWREaWFsb2dTZXJ2aWNlJ3Mgb3BlbkluV3JhcHBlciBtZXRob2QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEluIHlvdXIgc2VydmljZSBvciBjb21wb25lbnQ6XG4gKiB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkluV3JhcHBlcih7XG4gKiAgIGNvbXBvbmVudDogWW91ckRpYWxvZ0NvbnRlbnRDb21wb25lbnQsXG4gKiAgIHRpdGxlOiAnRGlhbG9nIFRpdGxlJyxcbiAqICAgaWNvbjogJ2luZm8nLFxuICogICBkYXRhOiB7IG1lc3NhZ2U6ICdUaGlzIGlzIHNvbWUgZGF0YSBwYXNzZWQgdG8gdGhlIGRpYWxvZyBjb250ZW50IGNvbXBvbmVudCcgfVxuICogfSk7XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1kaWFsb2ctd3JhcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDZGtEcmFnLCBDZGtEcmFnSGFuZGxlLCBNYXREaWFsb2dNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxEaWFsb2dXcmFwcGVyQ29tcG9uZW50Pj4oTWF0RGlhbG9nUmVmKTtcbiAgY29uZmlnID0gaW5qZWN0PERpYWxvZ1dyYXBwZXJDb25maWc+KE1BVF9ESUFMT0dfREFUQSk7XG5cbiAgLyoqXG4gICAqIEEgdGVtcGxhdGUgcmVmZXJlbmNlIHRoYXQgYWN0cyBhcyBhbiBhbmNob3IgZm9yIGR5bmFtaWMgY29udGVudC5cbiAgICogVGhpcyBpcyB3aGVyZSB0aGUgY29tcG9uZW50IHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIHdpbGwgYmUgcmVuZGVyZWQuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50SG9zdCA9IHZpZXdDaGlsZC5yZXF1aXJlZCgnY29udGVudEhvc3QnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSk7XG5cbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBoZWFkZXIgZWxlbWVudCBmb3IgdGhlIHotaW5kZXggZm9jdXMgbG9naWMuXG4gICAqIFVzZWQgdG8gYnJpbmcgdGhlIGRpYWxvZyB0byB0aGUgZnJvbnQgd2hlbiBjbGlja2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdkaWFsb2dIZWFkZXInKTtcblxuICAvKipcbiAgICogU3RhdGljIGNvdW50ZXIgdG8gdHJhY2sgdGhlIGhpZ2hlc3Qgei1pbmRleCBmb3IgbXVsdGlwbGUgZGlhbG9ncy5cbiAgICogRW5zdXJlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IGNsaWNrZWQgZGlhbG9nIGFwcGVhcnMgb24gdG9wLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgbGFzdFpJbmRleCA9IDEwMDA7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgSUQgZm9yIGRlYm91bmNpbmcgei1pbmRleCB1cGRhdGVzIHRvIHByZXZlbnQgZXhjZXNzaXZlIERPTSBtYW5pcHVsYXRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBicmluZ1RvRnJvbnRUaW1lb3V0SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERpYWxvZ1dyYXBwZXJDb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBkaWFsb2dSZWYgUmVmZXJlbmNlIHRvIHRoZSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgTWF0ZXJpYWwgRGlhbG9nIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgZGlhbG9nIHdyYXBwZXIsIGluamVjdGVkIGZyb20gTUFUX0RJQUxPR19EQVRBXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBDb25zdHJ1Y3RvciBpbnRlbnRpb25hbGx5IGVtcHR5IC0gcmVxdWlyZWQgYnkgQW5ndWxhciBESVxuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGR5bmFtaWMgY29udGVudCBhZnRlciB0aGUgdmlldyBpcyByZWFkeS5cbiAgICogQ3JlYXRlcyB0aGUgY29tcG9uZW50IHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIGFuZCBwYXNzZXMgZGF0YSB0byBpdC5cbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBEeW5hbWljYWxseSBjcmVhdGUgdGhlIGNvbnRlbnQgY29tcG9uZW50IGFmdGVyIHRoZSB2aWV3IGlzIHJlYWR5LlxuICAgIHRoaXMuY29udGVudEhvc3QoKS5jbGVhcigpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29udGVudEhvc3QoKS5jcmVhdGVDb21wb25lbnQodGhpcy5jb25maWcuY29tcG9uZW50KTtcblxuICAgIC8vIFBhc3MgdGhlIHByb3ZpZGVkIGRhdGEgZGlyZWN0bHkgdG8gdGhlIG5ldyBjb21wb25lbnQncyBpbnN0YW5jZS5cbiAgICAvLyBUaGlzIHJlcXVpcmVzIHRoZSBjb250ZW50IGNvbXBvbmVudCB0byBoYXZlIGFuIEBJbnB1dCgpIHByb3BlcnR5IG5hbWVkICdkYXRhJy5cbiAgICBpZiAodGhpcy5jb25maWcuZGF0YSAmJiBjb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcbiAgICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KS5kYXRhID0gdGhpcy5jb25maWcuZGF0YTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW51cCBsaWZlY3ljbGUgaG9vayB0byBjYW5jZWwgYW55IHBlbmRpbmcgYW5pbWF0aW9uIGZyYW1lIHJlcXVlc3RzLlxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCk7XG4gICAgICB0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZGlhbG9nLlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgY2xvc2UgYnV0dG9uIGluIHRoZSBoZWFkZXIgaXMgY2xpY2tlZC5cbiAgICovXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCcmluZ3MgdGhlIGRpYWxvZyB0byB0aGUgZnJvbnQgYnkgYWRqdXN0aW5nIGl0cyB6LWluZGV4LlxuICAgKiBVc2VzIHJlcXVlc3RBbmltYXRpb25GcmFtZSB0byBkZWJvdW5jZSB1cGRhdGVzIGFuZCBwcmV2ZW50IGV4Y2Vzc2l2ZSBET00gbWFuaXB1bGF0aW9ucy5cbiAgICogQ2FsbGVkIHdoZW4gdGhlIGRpYWxvZyBoZWFkZXIgaXMgY2xpY2tlZC5cbiAgICovXG4gIGJyaW5nVG9Gcm9udCgpOiB2b2lkIHtcbiAgICAvLyBDbGVhciBhbnkgcGVuZGluZyB1cGRhdGVcbiAgICBpZiAodGhpcy5icmluZ1RvRnJvbnRUaW1lb3V0SWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkKTtcbiAgICB9XG5cbiAgICAvLyBTY2hlZHVsZSB0aGUgei1pbmRleCB1cGRhdGUgZm9yIHRoZSBuZXh0IGFuaW1hdGlvbiBmcmFtZVxuICAgIHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNvbnN0IHBhbmUgPSB0aGlzLmhlYWRlcigpPy5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5jZGstb3ZlcmxheS1wYW5lJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAocGFuZSkge1xuICAgICAgICBwYW5lLnN0eWxlLnpJbmRleCA9ICgrK0RpYWxvZ1dyYXBwZXJDb21wb25lbnQubGFzdFpJbmRleCkudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkID0gbnVsbDtcbiAgICB9KTtcbiAgfVxufVxuIiwiQGlmICghY29uZmlnLmhpZGVIZWFkZXIpIHtcbiAgPGRpdlxuICAgIGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiXG4gICAgY2RrRHJhZ1xuICAgIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCJcbiAgICBjZGtEcmFnSGFuZGxlXG4gICAgI2RpYWxvZ0hlYWRlclxuICAgIChtb3VzZWRvd24pPVwiYnJpbmdUb0Zyb250KClcIlxuICA+XG4gICAgPGg2IG1hdC1kaWFsb2ctdGl0bGU+XG4gICAgICBAaWYgKGNvbmZpZy5pY29uKSB7XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRpdGxlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBjb25maWcuaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICB9XG4gICAgICA8c3Bhbj57eyBjb25maWcudGl0bGUgfX08L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNlcnJhciBkacOhbG9nb1wiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2g2PlxuICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNjb250ZW50SG9zdCAvPlxuIl19","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class IconUserComponent {\n size = input('35', ...(ngDevMode ? [{ debugName: \"size\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: IconUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: IconUserComponent, isStandalone: true, selector: \"acp-icon-user\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<svg\\n [attr.width]=\\\"size()\\\"\\n [attr.height]=\\\"size()\\\"\\n version=\\\"1.1\\\"\\n id=\\\"Capa_1\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n viewBox=\\\"0 0 480 480\\\"\\n xml:space=\\\"preserve\\\"\\n fill=\\\"#000000\\\"\\n>\\n <g id=\\\"SVGRepo_bgCarrier\\\" stroke-width=\\\"0\\\"></g>\\n <g id=\\\"SVGRepo_tracerCarrier\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"></g>\\n <g id=\\\"SVGRepo_iconCarrier\\\">\\n <g>\\n <g>\\n <circle style=\\\"fill: #b8bac0\\\" cx=\\\"240\\\" cy=\\\"240\\\" r=\\\"240\\\"></circle>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M240,360.07c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611 c2.02,1.235,3.588,3.262,3.894,5.784c3.992,32.484,34.781,56.977,71.625,56.977c36.836,0,67.625-24.496,71.625-56.977 c0.31-2.525,1.844-4.549,3.895-5.78c-3.08-12.233-3.503-28.999-3.517-40.615C293.297,348.079,267.944,360.07,240,360.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #d7dbe0\\\"\\n d=\\\"M310.44,330.174c-18.549,18.477-43.242,29.896-70.44,29.896 c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611c2.02,1.235,3.588,3.262,3.894,5.784 c1.765,14.359,8.778,27.144,19.223,36.954C235.766,405.265,290.437,357.702,310.44,330.174z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M312,160.07H176c-22.055,0-40,17.945-40,40v48c0,61.758,46.656,112,104,112s104-50.242,104-112 v-56C344,174.426,329.648,160.07,312,160.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M296,72.07H192c-15.047,0-27.695,10.438-31.102,24.449C133.359,100.02,112,123.598,112,152.07v40 c0,20.617,8.752,39.851,24,53.52v-45.52c0-22.055,17.945-40,40-40h136c17.648,0,32,14.355,32,32v53.511 c15.251-13.667,24-32.899,24-53.511v-48C368,104.371,335.703,72.07,296,72.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M61.632,400.544C105.562,449.319,169.191,480,240,480s134.438-30.681,178.368-79.456 c-7.66-10.356-18.462-18.77-32.352-22.659c-0.32-0.09-0.641-0.16-0.969-0.207l-63.859-9.582c-0.391-0.059-1.227-0.09-1.625-0.09 c-4.039,0-7.445,3.012-7.938,7.023c-4,32.48-34.789,56.977-71.625,56.977c-36.844,0-67.633-24.492-71.625-56.977 c-0.5-4.129-4.219-7.234-8.141-7.02c-0.469-0.027-0.93,0.012-1.422,0.086l-63.859,9.582c-0.328,0.047-0.648,0.117-0.969,0.207 C80.094,381.775,69.292,390.188,61.632,400.544z\\\"\\n ></path>\\n </g>\\n </g>\\n </g>\\n</svg>\\n\", styles: [\"\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: IconUserComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-icon-user', imports: [], encapsulation: ViewEncapsulation.None, template: \"<svg\\n [attr.width]=\\\"size()\\\"\\n [attr.height]=\\\"size()\\\"\\n version=\\\"1.1\\\"\\n id=\\\"Capa_1\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n viewBox=\\\"0 0 480 480\\\"\\n xml:space=\\\"preserve\\\"\\n fill=\\\"#000000\\\"\\n>\\n <g id=\\\"SVGRepo_bgCarrier\\\" stroke-width=\\\"0\\\"></g>\\n <g id=\\\"SVGRepo_tracerCarrier\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"></g>\\n <g id=\\\"SVGRepo_iconCarrier\\\">\\n <g>\\n <g>\\n <circle style=\\\"fill: #b8bac0\\\" cx=\\\"240\\\" cy=\\\"240\\\" r=\\\"240\\\"></circle>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M240,360.07c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611 c2.02,1.235,3.588,3.262,3.894,5.784c3.992,32.484,34.781,56.977,71.625,56.977c36.836,0,67.625-24.496,71.625-56.977 c0.31-2.525,1.844-4.549,3.895-5.78c-3.08-12.233-3.503-28.999-3.517-40.615C293.297,348.079,267.944,360.07,240,360.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #d7dbe0\\\"\\n d=\\\"M310.44,330.174c-18.549,18.477-43.242,29.896-70.44,29.896 c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611c2.02,1.235,3.588,3.262,3.894,5.784 c1.765,14.359,8.778,27.144,19.223,36.954C235.766,405.265,290.437,357.702,310.44,330.174z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M312,160.07H176c-22.055,0-40,17.945-40,40v48c0,61.758,46.656,112,104,112s104-50.242,104-112 v-56C344,174.426,329.648,160.07,312,160.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M296,72.07H192c-15.047,0-27.695,10.438-31.102,24.449C133.359,100.02,112,123.598,112,152.07v40 c0,20.617,8.752,39.851,24,53.52v-45.52c0-22.055,17.945-40,40-40h136c17.648,0,32,14.355,32,32v53.511 c15.251-13.667,24-32.899,24-53.511v-48C368,104.371,335.703,72.07,296,72.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M61.632,400.544C105.562,449.319,169.191,480,240,480s134.438-30.681,178.368-79.456 c-7.66-10.356-18.462-18.77-32.352-22.659c-0.32-0.09-0.641-0.16-0.969-0.207l-63.859-9.582c-0.391-0.059-1.227-0.09-1.625-0.09 c-4.039,0-7.445,3.012-7.938,7.023c-4,32.48-34.789,56.977-71.625,56.977c-36.844,0-67.633-24.492-71.625-56.977 c-0.5-4.129-4.219-7.234-8.141-7.02c-0.469-0.027-0.93,0.012-1.422,0.086l-63.859,9.582c-0.328,0.047-0.648,0.117-0.969,0.207 C80.094,381.775,69.292,390.188,61.632,400.544z\\\"\\n ></path>\\n </g>\\n </g>\\n </g>\\n</svg>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi11c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb25zL2ljb24tdXNlci9pY29uLXVzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaWNvbnMvaWNvbi11c2VyL2ljb24tdXNlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTcEUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksZ0RBQUMsQ0FBQzt1R0FEUixpQkFBaUI7MkZBQWpCLGlCQUFpQiwwTUNUOUIsZ3JGQTJEQTs7MkZEbERhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLFdBQ2hCLEVBQUUsaUJBR0ksaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1pY29uLXVzZXInLFxuICBpbXBvcnRzOiBbXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24tdXNlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9pY29uLXVzZXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uVXNlckNvbXBvbmVudCB7XG4gIHNpemUgPSBpbnB1dCgnMzUnKTtcbn1cbiIsIjxzdmdcbiAgW2F0dHIud2lkdGhdPVwic2l6ZSgpXCJcbiAgW2F0dHIuaGVpZ2h0XT1cInNpemUoKVwiXG4gIHZlcnNpb249XCIxLjFcIlxuICBpZD1cIkNhcGFfMVwiXG4gIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICB2aWV3Qm94PVwiMCAwIDQ4MCA0ODBcIlxuICB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXG4gIGZpbGw9XCIjMDAwMDAwXCJcbj5cbiAgPGcgaWQ9XCJTVkdSZXBvX2JnQ2FycmllclwiIHN0cm9rZS13aWR0aD1cIjBcIj48L2c+XG4gIDxnIGlkPVwiU1ZHUmVwb190cmFjZXJDYXJyaWVyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9nPlxuICA8ZyBpZD1cIlNWR1JlcG9faWNvbkNhcnJpZXJcIj5cbiAgICA8Zz5cbiAgICAgIDxnPlxuICAgICAgICA8Y2lyY2xlIHN0eWxlPVwiZmlsbDogI2I4YmFjMFwiIGN4PVwiMjQwXCIgY3k9XCIyNDBcIiByPVwiMjQwXCI+PC9jaXJjbGU+XG4gICAgICA8L2c+XG4gICAgICA8Zz5cbiAgICAgICAgPGc+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHN0eWxlPVwiZmlsbDogI2ZmZmZmZlwiXG4gICAgICAgICAgICBkPVwiTTI0MCwzNjAuMDdjLTI3Ljk0NCwwLTUzLjI5Ny0xMS45OTEtNzIuMDAzLTMxLjM3MmMtMC4wMTQsMTEuNjE1LTAuNDM2LDI4LjM3OS0zLjUxNiw0MC42MTEgYzIuMDIsMS4yMzUsMy41ODgsMy4yNjIsMy44OTQsNS43ODRjMy45OTIsMzIuNDg0LDM0Ljc4MSw1Ni45NzcsNzEuNjI1LDU2Ljk3N2MzNi44MzYsMCw2Ny42MjUtMjQuNDk2LDcxLjYyNS01Ni45NzcgYzAuMzEtMi41MjUsMS44NDQtNC41NDksMy44OTUtNS43OGMtMy4wOC0xMi4yMzMtMy41MDMtMjguOTk5LTMuNTE3LTQwLjYxNUMyOTMuMjk3LDM0OC4wNzksMjY3Ljk0NCwzNjAuMDcsMjQwLDM2MC4wN3pcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvZz5cbiAgICAgIDxnPlxuICAgICAgICA8Zz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgc3R5bGU9XCJmaWxsOiAjZDdkYmUwXCJcbiAgICAgICAgICAgIGQ9XCJNMzEwLjQ0LDMzMC4xNzRjLTE4LjU0OSwxOC40NzctNDMuMjQyLDI5Ljg5Ni03MC40NCwyOS44OTYgYy0yNy45NDQsMC01My4yOTctMTEuOTkxLTcyLjAwMy0zMS4zNzJjLTAuMDE0LDExLjYxNS0wLjQzNiwyOC4zNzktMy41MTYsNDAuNjExYzIuMDIsMS4yMzUsMy41ODgsMy4yNjIsMy44OTQsNS43ODQgYzEuNzY1LDE0LjM1OSw4Ljc3OCwyNy4xNDQsMTkuMjIzLDM2Ljk1NEMyMzUuNzY2LDQwNS4yNjUsMjkwLjQzNywzNTcuNzAyLDMxMC40NCwzMzAuMTc0elwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPGc+XG4gICAgICAgIDxnPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHlsZT1cImZpbGw6ICNmZmZmZmZcIlxuICAgICAgICAgICAgZD1cIk0zMTIsMTYwLjA3SDE3NmMtMjIuMDU1LDAtNDAsMTcuOTQ1LTQwLDQwdjQ4YzAsNjEuNzU4LDQ2LjY1NiwxMTIsMTA0LDExMnMxMDQtNTAuMjQyLDEwNC0xMTIgdi01NkMzNDQsMTc0LjQyNiwzMjkuNjQ4LDE2MC4wNywzMTIsMTYwLjA3elwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPGc+XG4gICAgICAgIDxnPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHlsZT1cImZpbGw6ICM1YzU0NmFcIlxuICAgICAgICAgICAgZD1cIk0yOTYsNzIuMDdIMTkyYy0xNS4wNDcsMC0yNy42OTUsMTAuNDM4LTMxLjEwMiwyNC40NDlDMTMzLjM1OSwxMDAuMDIsMTEyLDEyMy41OTgsMTEyLDE1Mi4wN3Y0MCBjMCwyMC42MTcsOC43NTIsMzkuODUxLDI0LDUzLjUydi00NS41MmMwLTIyLjA1NSwxNy45NDUtNDAsNDAtNDBoMTM2YzE3LjY0OCwwLDMyLDE0LjM1NSwzMiwzMnY1My41MTEgYzE1LjI1MS0xMy42NjcsMjQtMzIuODk5LDI0LTUzLjUxMXYtNDhDMzY4LDEwNC4zNzEsMzM1LjcwMyw3Mi4wNywyOTYsNzIuMDd6XCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8Zz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBzdHlsZT1cImZpbGw6ICM1YzU0NmFcIlxuICAgICAgICAgIGQ9XCJNNjEuNjMyLDQwMC41NDRDMTA1LjU2Miw0NDkuMzE5LDE2OS4xOTEsNDgwLDI0MCw0ODBzMTM0LjQzOC0zMC42ODEsMTc4LjM2OC03OS40NTYgYy03LjY2LTEwLjM1Ni0xOC40NjItMTguNzctMzIuMzUyLTIyLjY1OWMtMC4zMi0wLjA5LTAuNjQxLTAuMTYtMC45NjktMC4yMDdsLTYzLjg1OS05LjU4MmMtMC4zOTEtMC4wNTktMS4yMjctMC4wOS0xLjYyNS0wLjA5IGMtNC4wMzksMC03LjQ0NSwzLjAxMi03LjkzOCw3LjAyM2MtNCwzMi40OC0zNC43ODksNTYuOTc3LTcxLjYyNSw1Ni45NzdjLTM2Ljg0NCwwLTY3LjYzMy0yNC40OTItNzEuNjI1LTU2Ljk3NyBjLTAuNS00LjEyOS00LjIxOS03LjIzNC04LjE0MS03LjAyYy0wLjQ2OS0wLjAyNy0wLjkzLDAuMDEyLTEuNDIyLDAuMDg2bC02My44NTksOS41ODJjLTAuMzI4LDAuMDQ3LTAuNjQ4LDAuMTE3LTAuOTY5LDAuMjA3IEM4MC4wOTQsMzgxLjc3NSw2OS4yOTIsMzkwLjE4OCw2MS42MzIsNDAwLjU0NHpcIlxuICAgICAgICA+PC9wYXRoPlxuICAgICAgPC9nPlxuICAgIDwvZz5cbiAgPC9nPlxuPC9zdmc+XG4iXX0=","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SvgIconComponent {\n id = input('', ...(ngDevMode ? [{ debugName: \"id\" }] : []));\n width = input('40px', ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n height = input('40px', ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n color = input('#414141', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SvgIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: SvgIconComponent, isStandalone: true, selector: \"acp-svg-icon\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<svg [attr.width]=\\\"width()\\\" [attr.height]=\\\"height()\\\" [style.color]=\\\"color()\\\">\\n <use [attr.xlink:href]=\\\"'./svg-sprite.svg#' + id()\\\"></use>\\n</svg>\\n\", styles: [\"\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SvgIconComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-svg-icon', imports: [], encapsulation: ViewEncapsulation.None, template: \"<svg [attr.width]=\\\"width()\\\" [attr.height]=\\\"height()\\\" [style.color]=\\\"color()\\\">\\n <use [attr.xlink:href]=\\\"'./svg-sprite.svg#' + id()\\\"></use>\\n</svg>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaWNvbnMvc3ZnLWljb24vc3ZnLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaWNvbnMvc3ZnLWljb24vc3ZnLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU3BFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLDhDQUFDLENBQUM7SUFDZixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0saURBQUMsQ0FBQztJQUN0QixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sa0RBQUMsQ0FBQztJQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsaURBQUMsQ0FBQzt1R0FKZCxnQkFBZ0I7MkZBQWhCLGdCQUFnQiw4aUJDVDdCLCtKQUdBOzsyRkRNYSxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsY0FBYyxXQUNmLEVBQUUsaUJBR0ksaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1zdmctaWNvbicsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ZnLWljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3ZnLWljb24uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IHtcbiAgaWQgPSBpbnB1dCgnJyk7XG4gIHdpZHRoID0gaW5wdXQoJzQwcHgnKTtcbiAgaGVpZ2h0ID0gaW5wdXQoJzQwcHgnKTtcbiAgY29sb3IgPSBpbnB1dCgnIzQxNDE0MScpO1xufVxuIiwiPHN2ZyBbYXR0ci53aWR0aF09XCJ3aWR0aCgpXCIgW2F0dHIuaGVpZ2h0XT1cImhlaWdodCgpXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yKClcIj5cbiAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cIicuL3N2Zy1zcHJpdGUuc3ZnIycgKyBpZCgpXCI+PC91c2U+XG48L3N2Zz5cbiJdfQ==","import { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { MatChipGrid, MatChipInput, MatChipRow, } from '@angular/material/chips';\nimport { MatFormField, MatLabel, MatHint } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport * as i0 from \"@angular/core\";\nexport class MatInputChipComponent {\n chips = input.required(...(ngDevMode ? [{ debugName: \"chips\" }] : []));\n labelText = input.required(...(ngDevMode ? [{ debugName: \"labelText\" }] : []));\n placelholder = input('', ...(ngDevMode ? [{ debugName: \"placelholder\" }] : []));\n addOnBlur = true;\n separatorKeysCodes = [ENTER, COMMA];\n announcer = inject(LiveAnnouncer);\n add(event) {\n const value = (event.value || '').trim();\n // Add our fruit\n if (value) {\n this.chips().push(value);\n }\n // Clear the input value\n event.chipInput.clear();\n }\n remove(value) {\n const index = this.chips().indexOf(value);\n if (index >= 0) {\n this.chips().splice(index, 1);\n this.announcer.announce(`Removed ${value}`);\n }\n }\n edit(inputRaw, event) {\n const value = event.value.trim();\n // Remove fruit if it no longer has a name\n if (!value) {\n this.remove(inputRaw);\n return;\n }\n // Edit existing fruit\n const index = this.chips().indexOf(inputRaw);\n if (index >= 0) {\n this.chips()[index] = value.replace(/\\s+/g, '');\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatInputChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: MatInputChipComponent, isStandalone: true, selector: \"acp-mat-input-chip\", inputs: { chips: { classPropertyName: \"chips\", publicName: \"chips\", isSignal: true, isRequired: true, transformFunction: null }, labelText: { classPropertyName: \"labelText\", publicName: \"labelText\", isSignal: true, isRequired: true, transformFunction: null }, placelholder: { classPropertyName: \"placelholder\", publicName: \"placelholder\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<mat-form-field class=\\\"w-100\\\" appearance=\\\"outline\\\">\\n <mat-label>{{ labelText() }}</mat-label>\\n <mat-chip-grid #chipGrid aria-label=\\\"Enter fruits\\\">\\n @for (chip of chips(); track $index) {\\n <mat-chip-row\\n (removed)=\\\"remove(chip)\\\"\\n [editable]=\\\"true\\\"\\n (edited)=\\\"edit(chip, $event)\\\"\\n [aria-description]=\\\"'press enter to edit ' + chip\\\"\\n >\\n {{ chip }}\\n <button matChipRemove [attr.aria-label]=\\\"'remove ' + chip\\\">\\n <mat-icon>cancel</mat-icon>\\n </button>\\n </mat-chip-row>\\n }\\n <input\\n [placeholder]=\\\"placelholder()\\\"\\n [matChipInputFor]=\\\"chipGrid\\\"\\n [matChipInputSeparatorKeyCodes]=\\\"separatorKeysCodes\\\"\\n [matChipInputAddOnBlur]=\\\"addOnBlur\\\"\\n (matChipInputTokenEnd)=\\\"add($event)\\\"\\n />\\n </mat-chip-grid>\\n <mat-hint align=\\\"start\\\"\\n ><strong>Ingrese {{ labelText() }} y dale \\\"Enter\\\"</strong>\\n </mat-hint>\\n</mat-form-field>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: MatLabel, selector: \"mat-label\" }, { kind: \"component\", type: MatChipRow, selector: \"mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]\", inputs: [\"editable\"], outputs: [\"edited\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"component\", type: MatChipGrid, selector: \"mat-chip-grid\", inputs: [\"disabled\", \"placeholder\", \"required\", \"value\", \"errorStateMatcher\"], outputs: [\"change\", \"valueChange\"] }, { kind: \"directive\", type: MatChipInput, selector: \"input[matChipInputFor]\", inputs: [\"matChipInputFor\", \"matChipInputAddOnBlur\", \"matChipInputSeparatorKeyCodes\", \"placeholder\", \"id\", \"disabled\", \"readonly\", \"matChipInputDisabledInteractive\"], outputs: [\"matChipInputTokenEnd\"], exportAs: [\"matChipInput\", \"matChipInputFor\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatInputChipComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-mat-input-chip', imports: [MatFormField, MatLabel, MatChipRow, MatIcon, MatHint, MatChipGrid, MatChipInput], encapsulation: ViewEncapsulation.None, template: \"<mat-form-field class=\\\"w-100\\\" appearance=\\\"outline\\\">\\n <mat-label>{{ labelText() }}</mat-label>\\n <mat-chip-grid #chipGrid aria-label=\\\"Enter fruits\\\">\\n @for (chip of chips(); track $index) {\\n <mat-chip-row\\n (removed)=\\\"remove(chip)\\\"\\n [editable]=\\\"true\\\"\\n (edited)=\\\"edit(chip, $event)\\\"\\n [aria-description]=\\\"'press enter to edit ' + chip\\\"\\n >\\n {{ chip }}\\n <button matChipRemove [attr.aria-label]=\\\"'remove ' + chip\\\">\\n <mat-icon>cancel</mat-icon>\\n </button>\\n </mat-chip-row>\\n }\\n <input\\n [placeholder]=\\\"placelholder()\\\"\\n [matChipInputFor]=\\\"chipGrid\\\"\\n [matChipInputSeparatorKeyCodes]=\\\"separatorKeysCodes\\\"\\n [matChipInputAddOnBlur]=\\\"addOnBlur\\\"\\n (matChipInputTokenEnd)=\\\"add($event)\\\"\\n />\\n </mat-chip-grid>\\n <mat-hint align=\\\"start\\\"\\n ><strong>Ingrese {{ labelText() }} y dale \\\"Enter\\\"</strong>\\n </mat-hint>\\n</mat-form-field>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWlucHV0LWNoaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWF0LWlucHV0LWNoaXAvbWF0LWlucHV0LWNoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWF0LWlucHV0LWNoaXAvbWF0LWlucHV0LWNoaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFFTCxXQUFXLEVBQ1gsWUFBWSxFQUVaLFVBQVUsR0FDWCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFTckQsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsZ0RBQVksQ0FBQztJQUNuQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsb0RBQVUsQ0FBQztJQUNyQyxZQUFZLEdBQUcsS0FBSyxDQUFTLEVBQUUsd0RBQUMsQ0FBQztJQUNqQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ1Isa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7SUFFdEQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsQyxHQUFHLENBQUMsS0FBd0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpDLGdCQUFnQjtRQUNoQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLEtBQUssQ0FBQyxTQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUU5QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsUUFBZ0IsRUFBRSxLQUF5QjtRQUM5QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7dUdBN0NVLHFCQUFxQjsyRkFBckIscUJBQXFCLGllQ3BCbEMscTlCQTRCQSwwRERiWSxZQUFZLDRMQUFFLFFBQVEsc0RBQUUsVUFBVSw4SkFBRSxPQUFPLDJJQUFFLE9BQU8sOEVBQUUsV0FBVyw2S0FBRSxZQUFZOzsyRkFLOUUscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLG9CQUFvQixXQUNyQixDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxpQkFHM0UsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdENoaXBFZGl0ZWRFdmVudCxcbiAgTWF0Q2hpcEdyaWQsXG4gIE1hdENoaXBJbnB1dCxcbiAgTWF0Q2hpcElucHV0RXZlbnQsXG4gIE1hdENoaXBSb3csXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwsIE1hdEhpbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtbWF0LWlucHV0LWNoaXAnLFxuICBpbXBvcnRzOiBbTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0Q2hpcFJvdywgTWF0SWNvbiwgTWF0SGludCwgTWF0Q2hpcEdyaWQsIE1hdENoaXBJbnB1dF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXQtaW5wdXQtY2hpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tYXQtaW5wdXQtY2hpcC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1hdElucHV0Q2hpcENvbXBvbmVudCB7XG4gIGNoaXBzID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nW10+KCk7XG4gIGxhYmVsVGV4dCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcGxhY2VsaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGFkZE9uQmx1ciA9IHRydWU7XG4gIHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlcyA9IFtFTlRFUiwgQ09NTUFdIGFzIGNvbnN0O1xuXG4gIGFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcblxuICBhZGQoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKTtcblxuICAgIC8vIEFkZCBvdXIgZnJ1aXRcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuY2hpcHMoKS5wdXNoKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0aGUgaW5wdXQgdmFsdWVcbiAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7XG4gIH1cblxuICByZW1vdmUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGlwcygpLmluZGV4T2YodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuY2hpcHMoKS5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICB0aGlzLmFubm91bmNlci5hbm5vdW5jZShgUmVtb3ZlZCAke3ZhbHVlfWApO1xuICAgIH1cbiAgfVxuXG4gIGVkaXQoaW5wdXRSYXc6IHN0cmluZywgZXZlbnQ6IE1hdENoaXBFZGl0ZWRFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudmFsdWUudHJpbSgpO1xuXG4gICAgLy8gUmVtb3ZlIGZydWl0IGlmIGl0IG5vIGxvbmdlciBoYXMgYSBuYW1lXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5yZW1vdmUoaW5wdXRSYXcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEVkaXQgZXhpc3RpbmcgZnJ1aXRcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hpcHMoKS5pbmRleE9mKGlucHV0UmF3KTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5jaGlwcygpW2luZGV4XSA9IHZhbHVlLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsVGV4dCgpIH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtY2hpcC1ncmlkICNjaGlwR3JpZCBhcmlhLWxhYmVsPVwiRW50ZXIgZnJ1aXRzXCI+XG4gICAgQGZvciAoY2hpcCBvZiBjaGlwcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxtYXQtY2hpcC1yb3dcbiAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlKGNoaXApXCJcbiAgICAgICAgW2VkaXRhYmxlXT1cInRydWVcIlxuICAgICAgICAoZWRpdGVkKT1cImVkaXQoY2hpcCwgJGV2ZW50KVwiXG4gICAgICAgIFthcmlhLWRlc2NyaXB0aW9uXT1cIidwcmVzcyBlbnRlciB0byBlZGl0ICcgKyBjaGlwXCJcbiAgICAgID5cbiAgICAgICAge3sgY2hpcCB9fVxuICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmUgW2F0dHIuYXJpYS1sYWJlbF09XCIncmVtb3ZlICcgKyBjaGlwXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtY2hpcC1yb3c+XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlbGhvbGRlcigpXCJcbiAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIlxuICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiXG4gICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cImFkZE9uQmx1clwiXG4gICAgICAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkKCRldmVudClcIlxuICAgIC8+XG4gIDwvbWF0LWNoaXAtZ3JpZD5cbiAgPG1hdC1oaW50IGFsaWduPVwic3RhcnRcIlxuICAgID48c3Ryb25nPkluZ3Jlc2Uge3sgbGFiZWxUZXh0KCkgfX0geSBkYWxlIFwiRW50ZXJcIjwvc3Ryb25nPlxuICA8L21hdC1oaW50PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { NgClass } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nexport class MatThemeButtonComponent {\n variant = input('primary', ...(ngDevMode ? [{ debugName: \"variant\" }] : []));\n text = input('', ...(ngDevMode ? [{ debugName: \"text\" }] : []));\n icon = input('', ...(ngDevMode ? [{ debugName: \"icon\" }] : []));\n outlined = input(false, ...(ngDevMode ? [{ debugName: \"outlined\" }] : []));\n disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n useThemeColor = input(false, ...(ngDevMode ? [{ debugName: \"useThemeColor\" }] : [])); // Use theme color based on variant\n type = input('button', ...(ngDevMode ? [{ debugName: \"type\" }] : []));\n matStyle = input('raised', ...(ngDevMode ? [{ debugName: \"matStyle\" }] : []));\n // Additional common button properties\n title = input('', ...(ngDevMode ? [{ debugName: \"title\" }] : [])); // Tooltip text shown on hover\n ariaLabel = input('', ...(ngDevMode ? [{ debugName: \"ariaLabel\" }] : [])); // Accessibility label\n name = input('', ...(ngDevMode ? [{ debugName: \"name\" }] : [])); // Name attribute for form submission\n id = input('', ...(ngDevMode ? [{ debugName: \"id\" }] : [])); // ID for element reference\n form = input('', ...(ngDevMode ? [{ debugName: \"form\" }] : [])); // Associated form ID\n tabIndex = input(0, ...(ngDevMode ? [{ debugName: \"tabIndex\" }] : [])); // Tab order\n testId = input('', ...(ngDevMode ? [{ debugName: \"testId\" }] : [])); // For testing purposes\n handleClick = output();\n getButtonClasses() {\n return {\n [`btn-${this.variant()}`]: true,\n 'btn-outlined': this.outlined() && this.matStyle() !== 'stroked', // Stroked buttons are already outlined\n };\n }\n getThemeColor() {\n if (!this.useThemeColor)\n return null;\n switch (this.variant()) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'accent';\n case 'danger':\n return 'warn';\n default:\n return null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatThemeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: MatThemeButtonComponent, isStandalone: true, selector: \"acp-mat-theme-button\", inputs: { variant: { classPropertyName: \"variant\", publicName: \"variant\", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: \"icon\", publicName: \"icon\", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: \"outlined\", publicName: \"outlined\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, useThemeColor: { classPropertyName: \"useThemeColor\", publicName: \"useThemeColor\", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: true, isRequired: false, transformFunction: null }, matStyle: { classPropertyName: \"matStyle\", publicName: \"matStyle\", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: \"ariaLabel\", publicName: \"ariaLabel\", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: \"form\", publicName: \"form\", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: true, isRequired: false, transformFunction: null }, testId: { classPropertyName: \"testId\", publicName: \"testId\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { handleClick: \"handleClick\" }, ngImport: i0, template: \"@if (matStyle() === 'basic') {\\n <button\\n mat-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'raised') {\\n <button\\n mat-raised-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-content select=\\\"svgIcon\\\" />\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'flat') {\\n <button\\n mat-flat-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'stroked') {\\n <button\\n mat-stroked-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'icon') {\\n <button\\n mat-icon-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'fab') {\\n <button\\n mat-fab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'mini-fab') {\\n <button\\n mat-mini-fab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n <ng-content />\\n </button>\\n} @else {\\n <button\\n mat-raised-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-content select=\\\"svgIcon\\\" />\\n\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n}\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: MatMiniFabButton, selector: \"button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatFabButton, selector: \"button[mat-fab], a[mat-fab], button[matFab], a[matFab]\", inputs: [\"extended\"], exportAs: [\"matButton\", \"matAnchor\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatThemeButtonComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-mat-theme-button', imports: [MatButton, NgClass, MatIcon, MatMiniFabButton, MatIconButton, MatFabButton], encapsulation: ViewEncapsulation.None, template: \"@if (matStyle() === 'basic') {\\n <button\\n mat-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'raised') {\\n <button\\n mat-raised-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-content select=\\\"svgIcon\\\" />\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'flat') {\\n <button\\n mat-flat-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'stroked') {\\n <button\\n mat-stroked-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'icon') {\\n <button\\n mat-icon-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'fab') {\\n <button\\n mat-fab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n} @else if (matStyle() === 'mini-fab') {\\n <button\\n mat-mini-fab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n <ng-content />\\n </button>\\n} @else {\\n <button\\n mat-raised-button\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [color]=\\\"getThemeColor()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-content select=\\\"svgIcon\\\" />\\n\\n @if (icon()) {\\n <mat-icon class=\\\"button-icon\\\">{{ icon() }}</mat-icon>\\n }\\n @if (text()) {\\n <span class=\\\"button-text\\\">{{ text() }}</span>\\n }\\n <ng-content />\\n </button>\\n}\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXRoZW1lLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tYXQtdGhlbWUtYnV0dG9uL21hdC10aGVtZS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWF0LXRoZW1lLWJ1dHRvbi9tYXQtdGhlbWUtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQThCakQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxPQUFPLEdBQUcsS0FBSyxDQUFnQixTQUFTLG1EQUFDLENBQUM7SUFDMUMsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLGdEQUFDLENBQUM7SUFDekIsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLGdEQUFDLENBQUM7SUFDekIsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLG9EQUFDLENBQUM7SUFDakMsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLG9EQUFDLENBQUM7SUFDakMsYUFBYSxHQUFHLEtBQUssQ0FBVSxLQUFLLHlEQUFDLENBQUMsQ0FBQyxtQ0FBbUM7SUFDMUUsSUFBSSxHQUFHLEtBQUssQ0FBYSxRQUFRLGdEQUFDLENBQUM7SUFDbkMsUUFBUSxHQUFHLEtBQUssQ0FBc0IsUUFBUSxvREFBQyxDQUFDO0lBRWhELHNDQUFzQztJQUN0QyxLQUFLLEdBQUcsS0FBSyxDQUFTLEVBQUUsaURBQUMsQ0FBQyxDQUFDLDhCQUE4QjtJQUN6RCxTQUFTLEdBQUcsS0FBSyxDQUFTLEVBQUUscURBQUMsQ0FBQyxDQUFDLHNCQUFzQjtJQUNyRCxJQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsZ0RBQUMsQ0FBQyxDQUFDLHFDQUFxQztJQUMvRCxFQUFFLEdBQUcsS0FBSyxDQUFTLEVBQUUsOENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtJQUNuRCxJQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsZ0RBQUMsQ0FBQyxDQUFDLHFCQUFxQjtJQUMvQyxRQUFRLEdBQUcsS0FBSyxDQUFTLENBQUMsb0RBQUMsQ0FBQyxDQUFDLFlBQVk7SUFDekMsTUFBTSxHQUFHLEtBQUssQ0FBUyxFQUFFLGtEQUFDLENBQUMsQ0FBQyx1QkFBdUI7SUFFbkQsV0FBVyxHQUFHLE1BQU0sRUFBVyxDQUFDO0lBRWhDLGdCQUFnQjtRQUNkLE9BQU87WUFDTCxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJO1lBQy9CLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLFNBQVMsRUFBRSx1Q0FBdUM7U0FDMUcsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFckMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssUUFBUTtnQkFDWCxPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzt1R0F6Q1UsdUJBQXVCOzJGQUF2Qix1QkFBdUIsczhEQ2xDcEMscW1LQThMQSwwRERqS1ksU0FBUyx5VUFBRSxPQUFPLG9GQUFFLE9BQU8sMklBQUUsZ0JBQWdCLDJKQUFFLGFBQWEsdUtBQUUsWUFBWTs7MkZBS3pFLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSxzQkFBc0IsV0FDdkIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLGlCQUd0RSxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEZhYkJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiwgTWF0TWluaUZhYkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuZXhwb3J0IHR5cGUgQnV0dG9uVmFyaWFudCA9XG4gIHwgJ3ByaW1hcnknXG4gIHwgJ3NlY29uZGFyeSdcbiAgfCAnc3VjY2VzcydcbiAgfCAnZGFuZ2VyJ1xuICB8ICd3YXJuaW5nJ1xuICB8ICdpbmZvJ1xuICB8ICdsaWdodCdcbiAgfCAnZGFyayc7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblR5cGUgPSAnYnV0dG9uJyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JztcblxuZXhwb3J0IHR5cGUgTWF0ZXJpYWxCdXR0b25TdHlsZSA9XG4gIHwgJ2Jhc2ljJyAvLyBtYXQtYnV0dG9uXG4gIHwgJ3JhaXNlZCcgLy8gbWF0LXJhaXNlZC1idXR0b25cbiAgfCAnZmxhdCcgLy8gbWF0LWZsYXQtYnV0dG9uXG4gIHwgJ3N0cm9rZWQnIC8vIG1hdC1zdHJva2VkLWJ1dHRvblxuICB8ICdpY29uJyAvLyBtYXQtaWNvbi1idXR0b25cbiAgfCAnZmFiJyAvLyBtYXQtZmFiXG4gIHwgJ21pbmktZmFiJzsgLy8gbWF0LW1pbmktZmFiXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1tYXQtdGhlbWUtYnV0dG9uJyxcbiAgaW1wb3J0czogW01hdEJ1dHRvbiwgTmdDbGFzcywgTWF0SWNvbiwgTWF0TWluaUZhYkJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiwgTWF0RmFiQnV0dG9uXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdC10aGVtZS1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWF0LXRoZW1lLWJ1dHRvbi5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1hdFRoZW1lQnV0dG9uQ29tcG9uZW50IHtcbiAgdmFyaWFudCA9IGlucHV0PEJ1dHRvblZhcmlhbnQ+KCdwcmltYXJ5Jyk7XG4gIHRleHQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgaWNvbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBvdXRsaW5lZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHVzZVRoZW1lQ29sb3IgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIFVzZSB0aGVtZSBjb2xvciBiYXNlZCBvbiB2YXJpYW50XG4gIHR5cGUgPSBpbnB1dDxCdXR0b25UeXBlPignYnV0dG9uJyk7XG4gIG1hdFN0eWxlID0gaW5wdXQ8TWF0ZXJpYWxCdXR0b25TdHlsZT4oJ3JhaXNlZCcpO1xuXG4gIC8vIEFkZGl0aW9uYWwgY29tbW9uIGJ1dHRvbiBwcm9wZXJ0aWVzXG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPignJyk7IC8vIFRvb2x0aXAgdGV4dCBzaG93biBvbiBob3ZlclxuICBhcmlhTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCcnKTsgLy8gQWNjZXNzaWJpbGl0eSBsYWJlbFxuICBuYW1lID0gaW5wdXQ8c3RyaW5nPignJyk7IC8vIE5hbWUgYXR0cmlidXRlIGZvciBmb3JtIHN1Ym1pc3Npb25cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCcnKTsgLy8gSUQgZm9yIGVsZW1lbnQgcmVmZXJlbmNlXG4gIGZvcm0gPSBpbnB1dDxzdHJpbmc+KCcnKTsgLy8gQXNzb2NpYXRlZCBmb3JtIElEXG4gIHRhYkluZGV4ID0gaW5wdXQ8bnVtYmVyPigwKTsgLy8gVGFiIG9yZGVyXG4gIHRlc3RJZCA9IGlucHV0PHN0cmluZz4oJycpOyAvLyBGb3IgdGVzdGluZyBwdXJwb3Nlc1xuXG4gIGhhbmRsZUNsaWNrID0gb3V0cHV0PHVua25vd24+KCk7XG5cbiAgZ2V0QnV0dG9uQ2xhc3NlcygpOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtgYnRuLSR7dGhpcy52YXJpYW50KCl9YF06IHRydWUsXG4gICAgICAnYnRuLW91dGxpbmVkJzogdGhpcy5vdXRsaW5lZCgpICYmIHRoaXMubWF0U3R5bGUoKSAhPT0gJ3N0cm9rZWQnLCAvLyBTdHJva2VkIGJ1dHRvbnMgYXJlIGFscmVhZHkgb3V0bGluZWRcbiAgICB9O1xuICB9XG5cbiAgZ2V0VGhlbWVDb2xvcigpOiBUaGVtZVBhbGV0dGUgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudXNlVGhlbWVDb2xvcikgcmV0dXJuIG51bGw7XG5cbiAgICBzd2l0Y2ggKHRoaXMudmFyaWFudCgpKSB7XG4gICAgICBjYXNlICdwcmltYXJ5JzpcbiAgICAgICAgcmV0dXJuICdwcmltYXJ5JztcbiAgICAgIGNhc2UgJ3NlY29uZGFyeSc6XG4gICAgICAgIHJldHVybiAnYWNjZW50JztcbiAgICAgIGNhc2UgJ2Rhbmdlcic6XG4gICAgICAgIHJldHVybiAnd2Fybic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAobWF0U3R5bGUoKSA9PT0gJ2Jhc2ljJykge1xuICA8YnV0dG9uXG4gICAgbWF0LWJ1dHRvblxuICAgIFtuZ0NsYXNzXT1cImdldEJ1dHRvbkNsYXNzZXMoKVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgIFtjb2xvcl09XCJnZXRUaGVtZUNvbG9yKClcIlxuICAgIFt0eXBlXT1cInR5cGUoKVwiXG4gICAgW3RpdGxlXT1cInRpdGxlKClcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKCkgfHwgdGl0bGUoKVwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICAgIFthdHRyLmlkXT1cImlkKClcIlxuICAgIFthdHRyLmZvcm1dPVwiZm9ybSgpXCJcbiAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0ZXN0SWQoKVwiXG4gICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gID5cbiAgICBAaWYgKGljb24oKSkge1xuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYnV0dG9uLWljb25cIj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuICAgIH1cbiAgICBAaWYgKHRleHQoKSkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24tdGV4dFwiPnt7IHRleHQoKSB9fTwvc3Bhbj5cbiAgICB9XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9idXR0b24+XG59IEBlbHNlIGlmIChtYXRTdHlsZSgpID09PSAncmFpc2VkJykge1xuICA8YnV0dG9uXG4gICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICBbY29sb3JdPVwiZ2V0VGhlbWVDb2xvcigpXCJcbiAgICBbdHlwZV09XCJ0eXBlKClcIlxuICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAgIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3ZnSWNvblwiIC8+XG4gICAgQGlmIChpY29uKCkpIHtcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImJ1dHRvbi1pY29uXCI+e3sgaWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICB9XG4gICAgQGlmICh0ZXh0KCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRleHRcIj57eyB0ZXh0KCkgfX08L3NwYW4+XG4gICAgfVxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvYnV0dG9uPlxufSBAZWxzZSBpZiAobWF0U3R5bGUoKSA9PT0gJ2ZsYXQnKSB7XG4gIDxidXR0b25cbiAgICBtYXQtZmxhdC1idXR0b25cbiAgICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICBbY29sb3JdPVwiZ2V0VGhlbWVDb2xvcigpXCJcbiAgICBbdHlwZV09XCJ0eXBlKClcIlxuICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAgIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuICA+XG4gICAgQGlmIChpY29uKCkpIHtcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImJ1dHRvbi1pY29uXCI+e3sgaWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICB9XG4gICAgQGlmICh0ZXh0KCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRleHRcIj57eyB0ZXh0KCkgfX08L3NwYW4+XG4gICAgfVxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvYnV0dG9uPlxufSBAZWxzZSBpZiAobWF0U3R5bGUoKSA9PT0gJ3N0cm9rZWQnKSB7XG4gIDxidXR0b25cbiAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICBbY29sb3JdPVwiZ2V0VGhlbWVDb2xvcigpXCJcbiAgICBbdHlwZV09XCJ0eXBlKClcIlxuICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAgIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuICA+XG4gICAgQGlmIChpY29uKCkpIHtcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImJ1dHRvbi1pY29uXCI+e3sgaWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICB9XG4gICAgQGlmICh0ZXh0KCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRleHRcIj57eyB0ZXh0KCkgfX08L3NwYW4+XG4gICAgfVxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvYnV0dG9uPlxufSBAZWxzZSBpZiAobWF0U3R5bGUoKSA9PT0gJ2ljb24nKSB7XG4gIDxidXR0b25cbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICBbY29sb3JdPVwiZ2V0VGhlbWVDb2xvcigpXCJcbiAgICBbdHlwZV09XCJ0eXBlKClcIlxuICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAgIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuICA+XG4gICAgQGlmIChpY29uKCkpIHtcbiAgICAgIDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuICAgIH1cbiAgICA8bmctY29udGVudCAvPlxuICA8L2J1dHRvbj5cbn0gQGVsc2UgaWYgKG1hdFN0eWxlKCkgPT09ICdmYWInKSB7XG4gIDxidXR0b25cbiAgICBtYXQtZmFiXG4gICAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgW2NvbG9yXT1cImdldFRoZW1lQ29sb3IoKVwiXG4gICAgW3R5cGVdPVwidHlwZSgpXCJcbiAgICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gICAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gICAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgPlxuICAgIEBpZiAoaWNvbigpKSB7XG4gICAgICA8bWF0LWljb24+e3sgaWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICB9XG4gICAgQGlmICh0ZXh0KCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRleHRcIj57eyB0ZXh0KCkgfX08L3NwYW4+XG4gICAgfVxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvYnV0dG9uPlxufSBAZWxzZSBpZiAobWF0U3R5bGUoKSA9PT0gJ21pbmktZmFiJykge1xuICA8YnV0dG9uXG4gICAgbWF0LW1pbmktZmFiXG4gICAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgW2NvbG9yXT1cImdldFRoZW1lQ29sb3IoKVwiXG4gICAgW3R5cGVdPVwidHlwZSgpXCJcbiAgICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gICAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gICAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgPlxuICAgIEBpZiAoaWNvbigpKSB7XG4gICAgICA8bWF0LWljb24+e3sgaWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICB9XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9idXR0b24+XG59IEBlbHNlIHtcbiAgPGJ1dHRvblxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgW2NvbG9yXT1cImdldFRoZW1lQ29sb3IoKVwiXG4gICAgW3R5cGVdPVwidHlwZSgpXCJcbiAgICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gICAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gICAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInN2Z0ljb25cIiAvPlxuXG4gICAgQGlmIChpY29uKCkpIHtcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImJ1dHRvbi1pY29uXCI+e3sgaWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICB9XG4gICAgQGlmICh0ZXh0KCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRleHRcIj57eyB0ZXh0KCkgfX08L3NwYW4+XG4gICAgfVxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvYnV0dG9uPlxufVxuIl19","import { Component, ViewEncapsulation } from '@angular/core';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport * as i0 from \"@angular/core\";\nexport class SpinnerComponent {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.2\", type: SpinnerComponent, isStandalone: true, selector: \"acp-spinner\", ngImport: i0, template: \"<mat-spinner />\\n\", styles: [\":host{display:flex;justify-content:center;align-items:center;height:100%}\\n\"], dependencies: [{ kind: \"component\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: [\"color\", \"mode\", \"value\", \"diameter\", \"strokeWidth\"], exportAs: [\"matProgressSpinner\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SpinnerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-spinner', imports: [MatProgressSpinner], encapsulation: ViewEncapsulation.None, template: \"<mat-spinner />\\n\", styles: [\":host{display:flex;justify-content:center;align-items:center;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBU3hFLE1BQU0sT0FBTyxnQkFBZ0I7dUdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLHVFQ1Y3QixtQkFDQSxxSURJWSxrQkFBa0I7OzJGQUtqQixnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsYUFBYSxXQUNkLENBQUMsa0JBQWtCLENBQUMsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3Atc3Bpbm5lcicsXG4gIGltcG9ydHM6IFtNYXRQcm9ncmVzc1NwaW5uZXJdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zcGlubmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU3Bpbm5lckNvbXBvbmVudCB7fVxuIiwiPG1hdC1zcGlubmVyIC8+XG4iXX0=","// custom-tabulator.component.ts\nimport { Component, ViewEncapsulation, input, output, } from '@angular/core';\nimport { Tabulator, PageModule, ReactiveDataModule } from 'tabulator-tables';\nimport * as i0 from \"@angular/core\";\nTabulator.registerModule([PageModule, ReactiveDataModule]);\nexport class CustomTabulatorComponent {\n // Data inputs\n data = input([], ...(ngDevMode ? [{ debugName: \"data\" }] : []));\n columns = input([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n // Layout inputs\n height = input('400px', ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n layout = input('fitData', ...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n // Tree structure inputs\n dataTree = input(false, ...(ngDevMode ? [{ debugName: \"dataTree\" }] : []));\n dataTreeChildField = input('children', ...(ngDevMode ? [{ debugName: \"dataTreeChildField\" }] : []));\n dataTreeStartExpanded = input(false, ...(ngDevMode ? [{ debugName: \"dataTreeStartExpanded\" }] : []));\n dataTreeSelectPropagate = input(false, ...(ngDevMode ? [{ debugName: \"dataTreeSelectPropagate\" }] : []));\n // Behavior inputs\n selectable = input(true, ...(ngDevMode ? [{ debugName: \"selectable\" }] : []));\n reactiveData = input(true, ...(ngDevMode ? [{ debugName: \"reactiveData\" }] : []));\n placeholder = input('No data available', ...(ngDevMode ? [{ debugName: \"placeholder\" }] : []));\n autoResize = input(true, ...(ngDevMode ? [{ debugName: \"autoResize\" }] : []));\n // Theme configuration\n theme = input({ name: 'default' }, ...(ngDevMode ? [{ debugName: \"theme\" }] : []));\n // Custom styling\n customClass = input('', ...(ngDevMode ? [{ debugName: \"customClass\" }] : []));\n // Custom options\n options = input({}, ...(ngDevMode ? [{ debugName: \"options\" }] : []));\n // Events\n cellEdited = output();\n rowClick = output();\n rowSelected = output();\n tableReady = output();\n _tabulator;\n // Made public for template access\n containerId = `acp-tabulator-${Math.random().toString(36).substr(2, 9)}`;\n ngAfterViewInit() {\n this.initializeTable();\n }\n ngOnChanges(changes) {\n if (changes['data'] && !changes['data'].isFirstChange()) {\n this.updateData();\n }\n if (changes['columns'] && !changes['columns'].isFirstChange()) {\n this.updateColumns();\n }\n if (changes['theme'] && !changes['theme'].isFirstChange()) {\n this.applyTheme();\n }\n if (changes['customClass'] && !changes['customClass'].isFirstChange()) {\n this.applyCustomClass(changes['customClass'].previousValue, this.customClass());\n }\n }\n ngOnDestroy() {\n this.destroyTable();\n }\n initializeTable() {\n if (this._tabulator) {\n this.destroyTable();\n }\n const container = document.getElementById(this.containerId);\n if (!container) {\n console.warn('Tabulator container not found');\n return;\n }\n const config = {\n data: this.data(),\n columns: this.columns(),\n height: this.height(),\n layout: this.layout(),\n dataTree: this.dataTree(),\n dataTreeChildField: this.dataTreeChildField(),\n dataTreeStartExpanded: this.dataTreeStartExpanded(),\n dataTreeSelectPropagate: this.dataTreeSelectPropagate(),\n reactiveData: this.reactiveData(),\n placeholder: this.placeholder(),\n autoResize: this.autoResize(),\n selectable: this.selectable(),\n renderVertical: 'virtual',\n renderVerticalBuffer: 300,\n ...this.options(),\n };\n try {\n this._tabulator = new Tabulator(container, config);\n this.applyTheme();\n this.registerEvents();\n this.tableReady.emit(this._tabulator);\n }\n catch (error) {\n console.error('Error initializing Tabulator:', error);\n }\n }\n applyTheme() {\n if (this._tabulator) {\n // Tabulator themes are applied via CSS classes on the table element\n const tableElement = this._tabulator.element;\n // Remove existing theme classes\n tableElement.classList.remove('tabulator-modern', 'tabulator-midnight', 'tabulator-simple', 'tabulator-site', 'tabulator-site-dark');\n // Add current theme class (skip 'default' as it uses base styles)\n const theme = this.theme();\n if (theme.name !== 'default') {\n tableElement.classList.add(`tabulator-${theme.name}`);\n }\n // Apply custom classes\n this.applyCustomClass('', this.customClass());\n }\n }\n applyCustomClass(previousClass, newClass) {\n if (this._tabulator) {\n const tableElement = this._tabulator.element;\n // Remove previous custom classes\n if (previousClass) {\n const prevClasses = previousClass.split(' ').filter(cls => cls.trim());\n prevClasses.forEach(cls => tableElement.classList.remove(cls));\n }\n // Add new custom classes\n if (newClass) {\n const newClasses = newClass.split(' ').filter(cls => cls.trim());\n newClasses.forEach(cls => tableElement.classList.add(cls));\n }\n }\n }\n registerEvents() {\n this._tabulator.on('cellEdited', cell => {\n this.cellEdited.emit(cell);\n });\n this._tabulator.on('rowClick', (e, row) => {\n this.rowClick.emit(row);\n });\n this._tabulator.on('rowSelected', row => {\n this.rowSelected.emit(row);\n });\n }\n updateData() {\n if (this._tabulator) {\n this._tabulator.replaceData(this.data());\n }\n }\n updateColumns() {\n if (this._tabulator) {\n this._tabulator.setColumns(this.columns());\n }\n }\n destroyTable() {\n if (this._tabulator) {\n this._tabulator.destroy();\n }\n }\n // Public API methods\n getInstance() {\n return this._tabulator;\n }\n redraw() {\n if (this._tabulator) {\n this._tabulator.redraw();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CustomTabulatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: CustomTabulatorComponent, isStandalone: true, selector: \"acp-tabulator\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: \"columns\", publicName: \"columns\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: \"layout\", publicName: \"layout\", isSignal: true, isRequired: false, transformFunction: null }, dataTree: { classPropertyName: \"dataTree\", publicName: \"dataTree\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeChildField: { classPropertyName: \"dataTreeChildField\", publicName: \"dataTreeChildField\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeStartExpanded: { classPropertyName: \"dataTreeStartExpanded\", publicName: \"dataTreeStartExpanded\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeSelectPropagate: { classPropertyName: \"dataTreeSelectPropagate\", publicName: \"dataTreeSelectPropagate\", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: \"selectable\", publicName: \"selectable\", isSignal: true, isRequired: false, transformFunction: null }, reactiveData: { classPropertyName: \"reactiveData\", publicName: \"reactiveData\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: \"autoResize\", publicName: \"autoResize\", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: \"customClass\", publicName: \"customClass\", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellEdited: \"cellEdited\", rowClick: \"rowClick\", rowSelected: \"rowSelected\", tableReady: \"tableReady\" }, usesOnChanges: true, ngImport: i0, template: \"<div [id]=\\\"containerId\\\" class=\\\"acp-tabulator-container\\\"></div>\\n\", styles: [\".acp-tabulator-container{width:100%}.acp-tabulator-container .tabulator-row.tabulator-selectable:hover{background-color:#0000000a;cursor:pointer;transition:background-color .2s ease}.acp-tabulator-container .tabulator-row.tabulator-selected{background-color:#1976d21f}@media (max-width: 768px){.acp-tabulator-container .tabulator-header{font-size:.875rem}.acp-tabulator-container .tabulator-cell{font-size:.875rem;padding:8px 6px}}.acp-tabulator-container .tabulator-loader{background:#fffc;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar{width:8px;height:8px}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar-thumb:hover{background:#a8a8a8}\\n\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CustomTabulatorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-tabulator', standalone: true, imports: [], encapsulation: ViewEncapsulation.None, template: \"<div [id]=\\\"containerId\\\" class=\\\"acp-tabulator-container\\\"></div>\\n\", styles: [\".acp-tabulator-container{width:100%}.acp-tabulator-container .tabulator-row.tabulator-selectable:hover{background-color:#0000000a;cursor:pointer;transition:background-color .2s ease}.acp-tabulator-container .tabulator-row.tabulator-selected{background-color:#1976d21f}@media (max-width: 768px){.acp-tabulator-container .tabulator-header{font-size:.875rem}.acp-tabulator-container .tabulator-cell{font-size:.875rem;padding:8px 6px}}.acp-tabulator-container .tabulator-loader{background:#fffc;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar{width:8px;height:8px}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.acp-tabulator-container .tabulator-tableholder::-webkit-scrollbar-thumb:hover{background:#a8a8a8}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhYnVsYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvY3VzdG9tLXRhYnVsYXRvci9jdXN0b20tdGFidWxhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9jdXN0b20tdGFidWxhdG9yL2N1c3RvbS10YWJ1bGF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFFTCxTQUFTLEVBSVQsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHN0UsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7QUFVM0QsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxjQUFjO0lBQ0wsSUFBSSxHQUFHLEtBQUssQ0FBUSxFQUFFLGdEQUFDLENBQUM7SUFDeEIsT0FBTyxHQUFHLEtBQUssQ0FBUSxFQUFFLG1EQUFDLENBQUM7SUFFcEMsZ0JBQWdCO0lBQ1AsTUFBTSxHQUFHLEtBQUssQ0FBMEIsT0FBTyxrREFBQyxDQUFDO0lBQ2pELE1BQU0sR0FBRyxLQUFLLENBQThELFNBQVMsa0RBQUMsQ0FBQztJQUVoRyx3QkFBd0I7SUFDZixRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztJQUN4QixrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSw4REFBQyxDQUFDO0lBQ3ZDLHFCQUFxQixHQUFHLEtBQUss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QUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtJQUNkLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQzt1R0E5TFUsd0JBQXdCOzJGQUF4Qix3QkFBd0IsaXVFQ3pCckMsc0VBQ0E7OzJGRHdCYSx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxFQUFFLGlCQUdJLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjdXN0b20tdGFidWxhdG9yLmNvbXBvbmVudC50c1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUYWJ1bGF0b3IsIFBhZ2VNb2R1bGUsIFJlYWN0aXZlRGF0YU1vZHVsZSB9IGZyb20gJ3RhYnVsYXRvci10YWJsZXMnO1xuaW1wb3J0IHsgVGFidWxhdG9yVGhlbWUgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cblRhYnVsYXRvci5yZWdpc3Rlck1vZHVsZShbUGFnZU1vZHVsZSwgUmVhY3RpdmVEYXRhTW9kdWxlXSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC10YWJ1bGF0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS10YWJ1bGF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tdGFidWxhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVRhYnVsYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gRGF0YSBpbnB1dHNcbiAgcmVhZG9ubHkgZGF0YSA9IGlucHV0PGFueVtdPihbXSk7XG4gIHJlYWRvbmx5IGNvbHVtbnMgPSBpbnB1dDxhbnlbXT4oW10pO1xuXG4gIC8vIExheW91dCBpbnB1dHNcbiAgcmVhZG9ubHkgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyIHwgZmFsc2U+KCc0MDBweCcpO1xuICByZWFkb25seSBsYXlvdXQgPSBpbnB1dDwnZml0RGF0YScgfCAnZml0Q29sdW1ucycgfCAnZml0RGF0YUZpbGwnIHwgJ2ZpdERhdGFTdHJldGNoJz4oJ2ZpdERhdGEnKTtcblxuICAvLyBUcmVlIHN0cnVjdHVyZSBpbnB1dHNcbiAgcmVhZG9ubHkgZGF0YVRyZWUgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGRhdGFUcmVlQ2hpbGRGaWVsZCA9IGlucHV0KCdjaGlsZHJlbicpO1xuICByZWFkb25seSBkYXRhVHJlZVN0YXJ0RXhwYW5kZWQgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGRhdGFUcmVlU2VsZWN0UHJvcGFnYXRlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8vIEJlaGF2aW9yIGlucHV0c1xuICByZWFkb25seSBzZWxlY3RhYmxlID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHJlYWN0aXZlRGF0YSA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0KCdObyBkYXRhIGF2YWlsYWJsZScpO1xuICByZWFkb25seSBhdXRvUmVzaXplID0gaW5wdXQodHJ1ZSk7XG5cbiAgLy8gVGhlbWUgY29uZmlndXJhdGlvblxuICByZWFkb25seSB0aGVtZSA9IGlucHV0PFRhYnVsYXRvclRoZW1lPih7IG5hbWU6ICdkZWZhdWx0JyB9KTtcblxuICAvLyBDdXN0b20gc3R5bGluZ1xuICByZWFkb25seSBjdXN0b21DbGFzcyA9IGlucHV0KCcnKTtcblxuICAvLyBDdXN0b20gb3B0aW9uc1xuICByZWFkb25seSBvcHRpb25zID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4oe30pO1xuXG4gIC8vIEV2ZW50c1xuICByZWFkb25seSBjZWxsRWRpdGVkID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgcm93Q2xpY2sgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSByb3dTZWxlY3RlZCA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IHRhYmxlUmVhZHkgPSBvdXRwdXQ8VGFidWxhdG9yPigpO1xuXG4gIHByaXZhdGUgX3RhYnVsYXRvciE6IFRhYnVsYXRvcjtcblxuICAvLyBNYWRlIHB1YmxpYyBmb3IgdGVtcGxhdGUgYWNjZXNzXG4gIHB1YmxpYyBjb250YWluZXJJZCA9IGBhY3AtdGFidWxhdG9yLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRhYmxlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSAmJiAhY2hhbmdlc1snZGF0YSddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSAmJiAhY2hhbmdlc1snY29sdW1ucyddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3RoZW1lJ10gJiYgIWNoYW5nZXNbJ3RoZW1lJ10uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLmFwcGx5VGhlbWUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY3VzdG9tQ2xhc3MnXSAmJiAhY2hhbmdlc1snY3VzdG9tQ2xhc3MnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIHRoaXMuYXBwbHlDdXN0b21DbGFzcyhjaGFuZ2VzWydjdXN0b21DbGFzcyddLnByZXZpb3VzVmFsdWUsIHRoaXMuY3VzdG9tQ2xhc3MoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95VGFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRhYmxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90YWJ1bGF0b3IpIHtcbiAgICAgIHRoaXMuZGVzdHJveVRhYmxlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5jb250YWluZXJJZCk7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGFidWxhdG9yIGNvbnRhaW5lciBub3QgZm91bmQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWc6IGFueSA9IHtcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSgpLFxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zKCksXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksXG4gICAgICBsYXlvdXQ6IHRoaXMubGF5b3V0KCksXG4gICAgICBkYXRhVHJlZTogdGhpcy5kYXRhVHJlZSgpLFxuICAgICAgZGF0YVRyZWVDaGlsZEZpZWxkOiB0aGlzLmRhdGFUcmVlQ2hpbGRGaWVsZCgpLFxuICAgICAgZGF0YVRyZWVTdGFydEV4cGFuZGVkOiB0aGlzLmRhdGFUcmVlU3RhcnRFeHBhbmRlZCgpLFxuICAgICAgZGF0YVRyZWVTZWxlY3RQcm9wYWdhdGU6IHRoaXMuZGF0YVRyZWVTZWxlY3RQcm9wYWdhdGUoKSxcbiAgICAgIHJlYWN0aXZlRGF0YTogdGhpcy5yZWFjdGl2ZURhdGEoKSxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnBsYWNlaG9sZGVyKCksXG4gICAgICBhdXRvUmVzaXplOiB0aGlzLmF1dG9SZXNpemUoKSxcbiAgICAgIHNlbGVjdGFibGU6IHRoaXMuc2VsZWN0YWJsZSgpLFxuICAgICAgcmVuZGVyVmVydGljYWw6ICd2aXJ0dWFsJyxcbiAgICAgIHJlbmRlclZlcnRpY2FsQnVmZmVyOiAzMDAsXG4gICAgICAuLi50aGlzLm9wdGlvbnMoKSxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3RhYnVsYXRvciA9IG5ldyBUYWJ1bGF0b3IoY29udGFpbmVyLCBjb25maWcpO1xuICAgICAgdGhpcy5hcHBseVRoZW1lKCk7XG4gICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gICAgICB0aGlzLnRhYmxlUmVhZHkuZW1pdCh0aGlzLl90YWJ1bGF0b3IpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbml0aWFsaXppbmcgVGFidWxhdG9yOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VGhlbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgLy8gVGFidWxhdG9yIHRoZW1lcyBhcmUgYXBwbGllZCB2aWEgQ1NTIGNsYXNzZXMgb24gdGhlIHRhYmxlIGVsZW1lbnRcbiAgICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IHRoaXMuX3RhYnVsYXRvci5lbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgdGhlbWUgY2xhc3Nlc1xuICAgICAgdGFibGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICd0YWJ1bGF0b3ItbW9kZXJuJyxcbiAgICAgICAgJ3RhYnVsYXRvci1taWRuaWdodCcsXG4gICAgICAgICd0YWJ1bGF0b3Itc2ltcGxlJyxcbiAgICAgICAgJ3RhYnVsYXRvci1zaXRlJyxcbiAgICAgICAgJ3RhYnVsYXRvci1zaXRlLWRhcmsnLFxuICAgICAgKTtcblxuICAgICAgLy8gQWRkIGN1cnJlbnQgdGhlbWUgY2xhc3MgKHNraXAgJ2RlZmF1bHQnIGFzIGl0IHVzZXMgYmFzZSBzdHlsZXMpXG4gICAgICBjb25zdCB0aGVtZSA9IHRoaXMudGhlbWUoKTtcbiAgICAgIGlmICh0aGVtZS5uYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgdGFibGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYHRhYnVsYXRvci0ke3RoZW1lLm5hbWV9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGN1c3RvbSBjbGFzc2VzXG4gICAgICB0aGlzLmFwcGx5Q3VzdG9tQ2xhc3MoJycsIHRoaXMuY3VzdG9tQ2xhc3MoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUN1c3RvbUNsYXNzKHByZXZpb3VzQ2xhc3M6IHN0cmluZywgbmV3Q2xhc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90YWJ1bGF0b3IpIHtcbiAgICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IHRoaXMuX3RhYnVsYXRvci5lbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyBSZW1vdmUgcHJldmlvdXMgY3VzdG9tIGNsYXNzZXNcbiAgICAgIGlmIChwcmV2aW91c0NsYXNzKSB7XG4gICAgICAgIGNvbnN0IHByZXZDbGFzc2VzID0gcHJldmlvdXNDbGFzcy5zcGxpdCgnICcpLmZpbHRlcihjbHMgPT4gY2xzLnRyaW0oKSk7XG4gICAgICAgIHByZXZDbGFzc2VzLmZvckVhY2goY2xzID0+IHRhYmxlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNscykpO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgbmV3IGN1c3RvbSBjbGFzc2VzXG4gICAgICBpZiAobmV3Q2xhc3MpIHtcbiAgICAgICAgY29uc3QgbmV3Q2xhc3NlcyA9IG5ld0NsYXNzLnNwbGl0KCcgJykuZmlsdGVyKGNscyA9PiBjbHMudHJpbSgpKTtcbiAgICAgICAgbmV3Q2xhc3Nlcy5mb3JFYWNoKGNscyA9PiB0YWJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbHMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3RhYnVsYXRvci5vbignY2VsbEVkaXRlZCcsIGNlbGwgPT4ge1xuICAgICAgdGhpcy5jZWxsRWRpdGVkLmVtaXQoY2VsbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl90YWJ1bGF0b3Iub24oJ3Jvd0NsaWNrJywgKGUsIHJvdykgPT4ge1xuICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHJvdyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl90YWJ1bGF0b3Iub24oJ3Jvd1NlbGVjdGVkJywgcm93ID0+IHtcbiAgICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90YWJ1bGF0b3IpIHtcbiAgICAgIHRoaXMuX3RhYnVsYXRvci5yZXBsYWNlRGF0YSh0aGlzLmRhdGEoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90YWJ1bGF0b3IpIHtcbiAgICAgIHRoaXMuX3RhYnVsYXRvci5zZXRDb2x1bW5zKHRoaXMuY29sdW1ucygpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lUYWJsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdGFidWxhdG9yKSB7XG4gICAgICB0aGlzLl90YWJ1bGF0b3IuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1YmxpYyBBUEkgbWV0aG9kc1xuICBwdWJsaWMgZ2V0SW5zdGFuY2UoKTogVGFidWxhdG9yIHtcbiAgICByZXR1cm4gdGhpcy5fdGFidWxhdG9yO1xuICB9XG5cbiAgcHVibGljIHJlZHJhdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdGFidWxhdG9yKSB7XG4gICAgICB0aGlzLl90YWJ1bGF0b3IucmVkcmF3KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtpZF09XCJjb250YWluZXJJZFwiIGNsYXNzPVwiYWNwLXRhYnVsYXRvci1jb250YWluZXJcIj48L2Rpdj5cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class GetTotalPipe {\n transform(colName, dataSource) {\n return this.getTotal(colName, dataSource) || '';\n }\n /**\n * Calculate and return the total (sum) of all the column --> the column must be number\n */\n getTotal(colName, dataSource) {\n const total = dataSource\n .map(row => row[colName])\n .reduce((acc, value) => (value ? acc + Number(value) : acc), 0);\n return total?.toFixed(2);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GetTotalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.2\", ngImport: i0, type: GetTotalPipe, isStandalone: true, name: \"getTotal\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GetTotalPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'getTotal',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRvdGFsLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvcGlwZXMvZ2V0LXRvdGFsLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFNBQVMsQ0FBQyxPQUFlLEVBQUUsVUFBaUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLE9BQWUsRUFBRSxVQUFpQjtRQUN6QyxNQUFNLEtBQUssR0FBRyxVQUFVO2FBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7dUdBYlUsWUFBWTtxR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO29CQUNoQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2dldFRvdGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgR2V0VG90YWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShjb2xOYW1lOiBzdHJpbmcsIGRhdGFTb3VyY2U6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRUb3RhbChjb2xOYW1lLCBkYXRhU291cmNlKSB8fCAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgYW5kIHJldHVybiB0aGUgdG90YWwgKHN1bSkgb2YgYWxsIHRoZSBjb2x1bW4gLS0+IHRoZSBjb2x1bW4gbXVzdCBiZSBudW1iZXJcbiAgICovXG4gIGdldFRvdGFsKGNvbE5hbWU6IHN0cmluZywgZGF0YVNvdXJjZTogYW55W10pOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gZGF0YVNvdXJjZVxuICAgICAgLm1hcChyb3cgPT4gcm93W2NvbE5hbWVdKVxuICAgICAgLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4gKHZhbHVlID8gYWNjICsgTnVtYmVyKHZhbHVlKSA6IGFjYyksIDApO1xuICAgIHJldHVybiB0b3RhbD8udG9GaXhlZCgyKTtcbiAgfVxufVxuIl19","import { inject, Pipe } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslocoService } from '@jsverse/transloco';\nimport * as i0 from \"@angular/core\";\nexport class StatusDisplayPipe {\n sanitizer = inject(DomSanitizer);\n transloco = inject(TranslocoService, { optional: true });\n transform(isActive, options = {}) {\n const { gender = 'neutral', showIcon = true, customActiveText, customInactiveText, textClass = '', iconClass = '', } = options;\n const text = this.getStatusText(isActive, gender, customActiveText, customInactiveText);\n const icon = isActive ? 'check_circle' : 'cancel';\n const colorClass = isActive ? 'text-green-500' : 'text-red-500';\n const combinedIconClass = `${colorClass} align-middle mr-1 ${iconClass}`.trim();\n const combinedTextClass = `align-middle ${textClass}`.trim();\n let html = '';\n if (showIcon) {\n html += `<mat-icon class=\"${combinedIconClass}\" fontIcon=\"${icon}\"></mat-icon>`;\n }\n html += `<span class=\"${combinedTextClass}\">${text}</span>`;\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n getStatusText(isActive, gender, customActive, customInactive) {\n if (customActive && isActive)\n return customActive;\n if (customInactive && !isActive)\n return customInactive;\n if (!this.transloco)\n return this.getFallbackText(isActive, gender);\n const translationKey = this.getTranslationKey(isActive, gender);\n const translation = this.transloco.translate(translationKey);\n return translation !== translationKey ? translation : this.getFallbackText(isActive, gender);\n }\n getTranslationKey(isActive, gender) {\n const base = isActive ? 'status.active' : 'status.inactive';\n return gender !== 'neutral'\n ? `${base}.${gender}`\n : base;\n }\n getFallbackText(isActive, gender) {\n const lang = this.transloco?.getActiveLang() || 'en';\n const isSpanish = lang.startsWith('es');\n if (!isSpanish) {\n return isActive ? 'Active' : 'Inactive';\n }\n if (isActive) {\n return gender === 'female' ? 'Activa' : 'Activo';\n }\n else {\n return gender === 'female' ? 'Inactiva' : 'Inactivo';\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: StatusDisplayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.2\", ngImport: i0, type: StatusDisplayPipe, isStandalone: true, name: \"statusDisplay\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: StatusDisplayPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'statusDisplay',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWRpc3BsYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9waXBlcy9zdGF0dXMtZGlzcGxheS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBd0J0RCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWpFLFNBQVMsQ0FBQyxRQUFpQixFQUFFLFVBQXlCLEVBQUU7UUFDdEQsTUFBTSxFQUNKLE1BQU0sR0FBRyxTQUFTLEVBQ2xCLFFBQVEsR0FBRyxJQUFJLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixTQUFTLEdBQUcsRUFBRSxFQUNkLFNBQVMsR0FBRyxFQUFFLEdBQ2YsR0FBRyxPQUFPLENBQUM7UUFFWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN4RixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNoRSxNQUFNLGlCQUFpQixHQUFHLEdBQUcsVUFBVSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEYsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksSUFBSSxvQkFBb0IsaUJBQWlCLGVBQWUsSUFBSSxlQUFlLENBQUM7UUFDbEYsQ0FBQztRQUVELElBQUksSUFBSSxnQkFBZ0IsaUJBQWlCLEtBQUssSUFBSSxTQUFTLENBQUM7UUFFNUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxhQUFhLENBQ25CLFFBQWlCLEVBQ2pCLE1BQW9CLEVBQ3BCLFlBQXFCLEVBQ3JCLGNBQXVCO1FBRXZCLElBQUksWUFBWSxJQUFJLFFBQVE7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUNsRCxJQUFJLGNBQWMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLGNBQWMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5FLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0QsT0FBTyxXQUFXLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxRQUFpQixFQUFFLE1BQW9CO1FBQy9ELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUM1RCxPQUFPLE1BQU0sS0FBSyxTQUFTO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLElBQUksSUFBSSxNQUFNLEVBQXFCO1lBQ3pDLENBQUMsQ0FBRSxJQUF1QixDQUFDO0lBQy9CLENBQUM7SUFFTyxlQUFlLENBQUMsUUFBaUIsRUFBRSxNQUFvQjtRQUM3RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO3VHQW5FVSxpQkFBaUI7cUdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFIN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuXG50eXBlIFN0YXR1c0dlbmRlciA9ICdtYWxlJyB8ICdmZW1hbGUnIHwgJ25ldXRyYWwnO1xuXG5pbnRlcmZhY2UgU3RhdHVzT3B0aW9ucyB7XG4gIGdlbmRlcj86IFN0YXR1c0dlbmRlcjtcbiAgc2hvd0ljb24/OiBib29sZWFuO1xuICBjdXN0b21BY3RpdmVUZXh0Pzogc3RyaW5nO1xuICBjdXN0b21JbmFjdGl2ZVRleHQ/OiBzdHJpbmc7XG4gIHRleHRDbGFzcz86IHN0cmluZztcbiAgaWNvbkNsYXNzPzogc3RyaW5nO1xufVxuXG50eXBlIFRyYW5zbGF0aW9uS2V5ID1cbiAgfCAnc3RhdHVzLmFjdGl2ZSdcbiAgfCAnc3RhdHVzLmluYWN0aXZlJ1xuICB8ICdzdGF0dXMuYWN0aXZlLm1hbGUnXG4gIHwgJ3N0YXR1cy5hY3RpdmUuZmVtYWxlJ1xuICB8ICdzdGF0dXMuaW5hY3RpdmUubWFsZSdcbiAgfCAnc3RhdHVzLmluYWN0aXZlLmZlbWFsZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3N0YXR1c0Rpc3BsYXknLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0dXNEaXNwbGF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHRyYW5zZm9ybShpc0FjdGl2ZTogYm9vbGVhbiwgb3B0aW9uczogU3RhdHVzT3B0aW9ucyA9IHt9KTogU2FmZUh0bWwge1xuICAgIGNvbnN0IHtcbiAgICAgIGdlbmRlciA9ICduZXV0cmFsJyxcbiAgICAgIHNob3dJY29uID0gdHJ1ZSxcbiAgICAgIGN1c3RvbUFjdGl2ZVRleHQsXG4gICAgICBjdXN0b21JbmFjdGl2ZVRleHQsXG4gICAgICB0ZXh0Q2xhc3MgPSAnJyxcbiAgICAgIGljb25DbGFzcyA9ICcnLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0U3RhdHVzVGV4dChpc0FjdGl2ZSwgZ2VuZGVyLCBjdXN0b21BY3RpdmVUZXh0LCBjdXN0b21JbmFjdGl2ZVRleHQpO1xuICAgIGNvbnN0IGljb24gPSBpc0FjdGl2ZSA/ICdjaGVja19jaXJjbGUnIDogJ2NhbmNlbCc7XG4gICAgY29uc3QgY29sb3JDbGFzcyA9IGlzQWN0aXZlID8gJ3RleHQtZ3JlZW4tNTAwJyA6ICd0ZXh0LXJlZC01MDAnO1xuICAgIGNvbnN0IGNvbWJpbmVkSWNvbkNsYXNzID0gYCR7Y29sb3JDbGFzc30gYWxpZ24tbWlkZGxlIG1yLTEgJHtpY29uQ2xhc3N9YC50cmltKCk7XG4gICAgY29uc3QgY29tYmluZWRUZXh0Q2xhc3MgPSBgYWxpZ24tbWlkZGxlICR7dGV4dENsYXNzfWAudHJpbSgpO1xuXG4gICAgbGV0IGh0bWwgPSAnJztcblxuICAgIGlmIChzaG93SWNvbikge1xuICAgICAgaHRtbCArPSBgPG1hdC1pY29uIGNsYXNzPVwiJHtjb21iaW5lZEljb25DbGFzc31cIiBmb250SWNvbj1cIiR7aWNvbn1cIj48L21hdC1pY29uPmA7XG4gICAgfVxuXG4gICAgaHRtbCArPSBgPHNwYW4gY2xhc3M9XCIke2NvbWJpbmVkVGV4dENsYXNzfVwiPiR7dGV4dH08L3NwYW4+YDtcblxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhdHVzVGV4dChcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBnZW5kZXI6IFN0YXR1c0dlbmRlcixcbiAgICBjdXN0b21BY3RpdmU/OiBzdHJpbmcsXG4gICAgY3VzdG9tSW5hY3RpdmU/OiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGN1c3RvbUFjdGl2ZSAmJiBpc0FjdGl2ZSkgcmV0dXJuIGN1c3RvbUFjdGl2ZTtcbiAgICBpZiAoY3VzdG9tSW5hY3RpdmUgJiYgIWlzQWN0aXZlKSByZXR1cm4gY3VzdG9tSW5hY3RpdmU7XG4gICAgaWYgKCF0aGlzLnRyYW5zbG9jbykgcmV0dXJuIHRoaXMuZ2V0RmFsbGJhY2tUZXh0KGlzQWN0aXZlLCBnZW5kZXIpO1xuXG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSB0aGlzLmdldFRyYW5zbGF0aW9uS2V5KGlzQWN0aXZlLCBnZW5kZXIpO1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xvY28udHJhbnNsYXRlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIHJldHVybiB0cmFuc2xhdGlvbiAhPT0gdHJhbnNsYXRpb25LZXkgPyB0cmFuc2xhdGlvbiA6IHRoaXMuZ2V0RmFsbGJhY2tUZXh0KGlzQWN0aXZlLCBnZW5kZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbktleShpc0FjdGl2ZTogYm9vbGVhbiwgZ2VuZGVyOiBTdGF0dXNHZW5kZXIpOiBUcmFuc2xhdGlvbktleSB7XG4gICAgY29uc3QgYmFzZSA9IGlzQWN0aXZlID8gJ3N0YXR1cy5hY3RpdmUnIDogJ3N0YXR1cy5pbmFjdGl2ZSc7XG4gICAgcmV0dXJuIGdlbmRlciAhPT0gJ25ldXRyYWwnXG4gICAgICA/IChgJHtiYXNlfS4ke2dlbmRlcn1gIGFzIFRyYW5zbGF0aW9uS2V5KVxuICAgICAgOiAoYmFzZSBhcyBUcmFuc2xhdGlvbktleSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZhbGxiYWNrVGV4dChpc0FjdGl2ZTogYm9vbGVhbiwgZ2VuZGVyOiBTdGF0dXNHZW5kZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnRyYW5zbG9jbz8uZ2V0QWN0aXZlTGFuZygpIHx8ICdlbic7XG4gICAgY29uc3QgaXNTcGFuaXNoID0gbGFuZy5zdGFydHNXaXRoKCdlcycpO1xuXG4gICAgaWYgKCFpc1NwYW5pc2gpIHtcbiAgICAgIHJldHVybiBpc0FjdGl2ZSA/ICdBY3RpdmUnIDogJ0luYWN0aXZlJztcbiAgICB9XG5cbiAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiBnZW5kZXIgPT09ICdmZW1hbGUnID8gJ0FjdGl2YScgOiAnQWN0aXZvJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdlbmRlciA9PT0gJ2ZlbWFsZScgPyAnSW5hY3RpdmEnIDogJ0luYWN0aXZvJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ViewContainerRef, input, output, contentChildren, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { MatColumnDef, MatFooterRowDef, MatHeaderRowDef, MatRowDef, MatTable, MatTableDataSource, MatTableModule, } from '@angular/material/table';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { DatePipe, DecimalPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSortModule } from '@angular/material/sort';\nimport { GetTotalPipe } from '../../../pipes';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/table\";\nimport * as i2 from \"@angular/material/checkbox\";\nimport * as i3 from \"@angular/material/sort\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"@angular/material/button\";\nimport * as i6 from \"@angular/material/paginator\";\nexport class MatDynamicTableComponent {\n componentRefs = [];\n embeddedViews = [];\n cdr = inject(ChangeDetectorRef);\n showExpand = input(false, ...(ngDevMode ? [{ debugName: \"showExpand\" }] : []));\n showFooter = input(false, ...(ngDevMode ? [{ debugName: \"showFooter\" }] : []));\n locale = input('en-US', ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n highlightRowIndex = input(0, ...(ngDevMode ? [{ debugName: \"highlightRowIndex\" }] : []));\n visibleColumns = [];\n columnDefinitions = [];\n showSelectBox = input(false, ...(ngDevMode ? [{ debugName: \"showSelectBox\" }] : []));\n tableData = input([], ...(ngDevMode ? [{ debugName: \"tableData\" }] : []));\n rowTemplate = input(null, ...(ngDevMode ? [{ debugName: \"rowTemplate\" }] : []));\n expandedDetail = null;\n enablePagination = input(false, ...(ngDevMode ? [{ debugName: \"enablePagination\" }] : []));\n paginationConfig = null;\n isLoadingData = input(false, ...(ngDevMode ? [{ debugName: \"isLoadingData\" }] : []));\n rowSelected = output();\n copyRow = output();\n showExpanded = output();\n hideExpanded = output();\n pageEvent = output();\n isNormalRow = (_, row) => this.expandedElement !== row;\n isExpandedRow = (_, row) => this.expandedElement === row;\n dataSource = new MatTableDataSource([]);\n selection = new SelectionModel(true, []);\n expandedElement = null;\n columnsToDisplayWithExpand = [];\n headerRowDefs = contentChildren(MatHeaderRowDef, ...(ngDevMode ? [{ debugName: \"headerRowDefs\" }] : []));\n rowDefs = contentChildren(MatRowDef, ...(ngDevMode ? [{ debugName: \"rowDefs\" }] : []));\n footerRowDefs = contentChildren(MatFooterRowDef, ...(ngDevMode ? [{ debugName: \"footerRowDefs\" }] : []));\n columnDefs = contentChildren(MatColumnDef, ...(ngDevMode ? [{ debugName: \"columnDefs\" }] : []));\n table = viewChild.required(MatTable);\n rows = contentChildren(ViewContainerRef, ...(ngDevMode ? [{ debugName: \"rows\" }] : []));\n ngOnInit() {\n this.updateColumnsToDisplay();\n this.initializeSelection();\n }\n ngOnChanges(changes) {\n if (changes['tableData']) {\n this.updateTableData();\n }\n if (changes['showExpand'] || changes['visibleColumns'] || changes['columnDefinitions']) {\n this.updateColumnsToDisplay();\n }\n // Trigger change detection for OnPush strategy\n this.cdr.markForCheck();\n }\n ngAfterContentInit() {\n this.registerTableContent();\n this.initializeTable();\n this.cdr.markForCheck();\n }\n ngOnDestroy() {\n this.cleanupDynamicComponents();\n }\n updateTableData() {\n // Clear selection when new data arrives\n this.selection.clear();\n // Update data source\n this.dataSource.data = this.tableData() || [];\n // Reset expanded element if it's no longer in the new data\n if (this.expandedElement && !this.dataSource.data.includes(this.expandedElement)) {\n this.expandedElement = null;\n }\n // Trigger change detection\n this.cdr.markForCheck();\n }\n updateColumnsToDisplay() {\n if (!this.visibleColumns.length && this.columnDefinitions) {\n this.visibleColumns = this.columnDefinitions.map(col => col.key);\n this.columnDefinitions.forEach((col, index) => (col.index = index));\n }\n const newColumns = [...this.visibleColumns];\n if (this.showSelectBox() && !newColumns.includes('select')) {\n newColumns.unshift('select');\n }\n if (this.showExpand() && this.expandedDetail) {\n if (!this.columnDefinitions?.some(col => col.key === 'expand')) {\n this.columnDefinitions = [\n ...(this.columnDefinitions || []),\n {\n key: 'expand',\n label: '',\n type: 'expand',\n index: this.columnDefinitions?.length || 0,\n },\n ];\n }\n if (!newColumns.includes('expand')) {\n newColumns.push('expand');\n }\n }\n this.columnsToDisplayWithExpand = newColumns;\n }\n initializeSelection() {\n this.selection = new SelectionModel(true, []);\n }\n registerTableContent() {\n this.columnDefs().forEach(columnDef => this.table().addColumnDef(columnDef));\n this.rowDefs().forEach(rowDef => this.table().addRowDef(rowDef));\n this.headerRowDefs().forEach(headerRowDef => this.table().addHeaderRowDef(headerRowDef));\n if (this.showFooter()) {\n this.footerRowDefs().forEach(footerRowDef => this.table().addFooterRowDef(footerRowDef));\n }\n else {\n this.footerRowDefs().forEach(footerRowDef => this.table().removeFooterRowDef(footerRowDef));\n }\n }\n initializeTable() {\n this.dataSource = new MatTableDataSource(this.tableData() || []);\n }\n cleanupDynamicComponents() {\n this.componentRefs.forEach(ref => ref.destroy());\n this.embeddedViews.forEach(view => view.destroy());\n }\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows && numRows > 0;\n }\n masterToggle() {\n if (this.isAllSelected()) {\n this.selection.clear();\n }\n else {\n this.dataSource.data.forEach(row => this.selection.select(row));\n }\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n checkboxLabel(row) {\n if (!row) {\n return `${this.isAllSelected() ? 'deselect' : 'select'} all`;\n }\n return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row`;\n }\n selectRow(row) {\n this.selection.toggle(row);\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n onExpand(event, element) {\n event.stopPropagation();\n this.expandedElement = this.expandedElement === element ? null : element;\n if (this.expandedElement) {\n this.showExpanded.emit(element);\n }\n else {\n this.hideExpanded.emit(element);\n }\n this.cdr.markForCheck();\n }\n getRowColor(element) {\n return element.colorRow ? { 'background-color': element.colorRow } : {};\n }\n handlePageEvent(e) {\n this.pageEvent.emit(e);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatDynamicTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: MatDynamicTableComponent, isStandalone: true, selector: \"acp-mat-dynamic-table\", inputs: { showExpand: { classPropertyName: \"showExpand\", publicName: \"showExpand\", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: \"showFooter\", publicName: \"showFooter\", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: \"locale\", publicName: \"locale\", isSignal: true, isRequired: false, transformFunction: null }, highlightRowIndex: { classPropertyName: \"highlightRowIndex\", publicName: \"highlightRowIndex\", isSignal: true, isRequired: false, transformFunction: null }, visibleColumns: { classPropertyName: \"visibleColumns\", publicName: \"visibleColumns\", isSignal: false, isRequired: false, transformFunction: null }, columnDefinitions: { classPropertyName: \"columnDefinitions\", publicName: \"columnDefinitions\", isSignal: false, isRequired: false, transformFunction: null }, showSelectBox: { classPropertyName: \"showSelectBox\", publicName: \"showSelectBox\", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: \"tableData\", publicName: \"tableData\", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: \"rowTemplate\", publicName: \"rowTemplate\", isSignal: true, isRequired: false, transformFunction: null }, expandedDetail: { classPropertyName: \"expandedDetail\", publicName: \"expandedDetail\", isSignal: false, isRequired: false, transformFunction: null }, enablePagination: { classPropertyName: \"enablePagination\", publicName: \"enablePagination\", isSignal: true, isRequired: false, transformFunction: null }, paginationConfig: { classPropertyName: \"paginationConfig\", publicName: \"paginationConfig\", isSignal: false, isRequired: false, transformFunction: null }, isLoadingData: { classPropertyName: \"isLoadingData\", publicName: \"isLoadingData\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowSelected: \"rowSelected\", copyRow: \"copyRow\", showExpanded: \"showExpanded\", hideExpanded: \"hideExpanded\", pageEvent: \"pageEvent\" }, queries: [{ propertyName: \"headerRowDefs\", predicate: MatHeaderRowDef, isSignal: true }, { propertyName: \"rowDefs\", predicate: MatRowDef, isSignal: true }, { propertyName: \"footerRowDefs\", predicate: MatFooterRowDef, isSignal: true }, { propertyName: \"columnDefs\", predicate: MatColumnDef, isSignal: true }, { propertyName: \"rows\", predicate: ViewContainerRef, isSignal: true }], viewQueries: [{ propertyName: \"table\", first: true, predicate: MatTable, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"mat-table-container\\\">\\n <div class=\\\"table-container small-table\\\">\\n <table #sort=\\\"matSort\\\" [dataSource]=\\\"dataSource.data\\\" mat-table matSort>\\n @if (columnDefinitions) {\\n <!-- Checkbox Column -->\\n @if (showSelectBox()) {\\n <ng-container matColumnDef=\\\"select\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? masterToggle() : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel()\\\"\\n [checked]=\\\"selection.hasValue() && isAllSelected()\\\"\\n [indeterminate]=\\\"selection.hasValue() && !isAllSelected()\\\"\\n />\\n </th>\\n <td *matCellDef=\\\"let row\\\" mat-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? selection.toggle(row) : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel(row)\\\"\\n [checked]=\\\"selection.isSelected(row)\\\"\\n />\\n </td>\\n <td *matFooterCellDef mat-footer-cell></td>\\n </ng-container>\\n }\\n\\n <!-- Dynamic Columns -->\\n @for (col of columnDefinitions; track col.key) {\\n <ng-container [matColumnDef]=\\\"col.key\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n {{ col.label }}\\n </th>\\n\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [ngClass]=\\\"{ highlighted: highlightRowIndex() === i }\\\"\\n >\\n @if (col.key === 'op') {\\n <div class=\\\"d-flex flex-row gap-1\\\">\\n @if (col.templateOutlet) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @else if (rowTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"rowTemplate(); context: { $implicit: element, index: i }\\\"\\n />\\n }\\n </div>\\n } @else {\\n @switch (col.type) {\\n @case ('image') {\\n <img\\n [src]=\\\"element[col.key]\\\"\\n class=\\\"img-fluid img-thumbnail my-1\\\"\\n width=\\\"50\\\"\\n alt=\\\"\\\"\\n />\\n }\\n @case ('number') {\\n <div>{{ element[col.key] | number: '1.2' : locale() }}</div>\\n }\\n @case ('date') {\\n <div>{{ element[col.key] | date: 'dd.MM.yyyy' }}</div>\\n }\\n @case ('expand') {\\n <button\\n mat-icon-button\\n aria-label=\\\"expand row\\\"\\n (click)=\\\"onExpand($event, element)\\\"\\n >\\n @if (expandedElement === element) {\\n <mat-icon>keyboard_arrow_up</mat-icon>\\n } @else {\\n <mat-icon>keyboard_arrow_down</mat-icon>\\n }\\n </button>\\n }\\n @case ('template') {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n }\\n @case ('custom') {\\n <ng-container #dynamicContent />\\n }\\n @default {\\n <div>{{ element[col.key] }}</div>\\n }\\n }\\n }\\n </td>\\n\\n <td *matFooterCellDef mat-footer-cell>\\n @if (col.index === 0) {\\n <div>Total</div>\\n }\\n @if (col.hasFooter) {\\n <div>{{ col.key | getTotal: dataSource.data }}</div>\\n }\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Expanded Detail Row -->\\n @if (showExpand() && expandedDetail) {\\n <ng-container matColumnDef=\\\"expandedDetail\\\">\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\"\\n >\\n <div class=\\\"m-0 p-0 detail-expand\\\" [class.expanded]=\\\"element === expandedElement\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"expandedDetail; context: { $implicit: element, index: i }\\\"\\n />\\n </div>\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Header Row -->\\n <tr mat-header-row *matHeaderRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n\\n <!-- Data Rows -->\\n @if (showExpand() && expandedDetail) {\\n <!-- Regular Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand; when: isNormalRow\\\"\\n class=\\\"mat-dynamic-table-row\\\"\\n [class.mat-dynamic-table-expanded-row]=\\\"expandedElement === row\\\"\\n [ngStyle]=\\\"getRowColor(row)\\\"\\n (click)=\\\"expandedElement = expandedElement === row ? null : row\\\"\\n ></tr>\\n\\n <!-- Expanded Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: ['expandedDetail']; when: isExpandedRow\\\"\\n class=\\\"mat-dynamic-table-detail-row\\\"\\n ></tr>\\n } @else {\\n <!-- Regular Row without expansion -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand\\\"\\n [ngStyle]=\\\"getRowColor(row)\\\"\\n ></tr>\\n }\\n\\n <!-- No Data Row -->\\n <tr class=\\\"mat-row\\\" *matNoDataRow>\\n <td class=\\\"mat-cell text-center\\\" [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\">\\n No records found\\n </td>\\n </tr>\\n\\n <!-- Footer -->\\n @if (showFooter() && dataSource.data.length > 0) {\\n <tr mat-footer-row *matFooterRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n }\\n }\\n </table>\\n </div>\\n\\n @if (enablePagination() && paginationConfig) {\\n <mat-paginator\\n #paginator\\n [disabled]=\\\"isLoadingData()\\\"\\n (page)=\\\"handlePageEvent($event)\\\"\\n [length]=\\\"paginationConfig.totalRecords\\\"\\n [pageSize]=\\\"paginationConfig.pageSize\\\"\\n [pageSizeOptions]=\\\"paginationConfig.pageSizeOptions || []\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n [pageIndex]=\\\"paginationConfig.pageIndex\\\"\\n aria-label=\\\"Select page\\\"\\n />\\n }\\n</div>\\n\", styles: [\".table-container{position:relative;min-height:200px;max-height:400px;overflow:auto}table{width:100%}tr.mat-dynamic-table-detail-row{height:0}tr.mat-dynamic-table-row:not(.mat-dynamic-table-expanded-row):hover{background:#f5f5f5}tr.mat-dynamic-table-row:not(.mat-dynamic-table-expanded-row):active{background:#efefef}.mat-dynamic-table-row td{border-bottom-width:0}.detail-expand{height:0;overflow:hidden;transition:height .15s ease-in-out}.detail-expand.expanded{height:auto;overflow:visible}@starting-style{.detail-expand.expanded{height:0}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: MatTableModule }, { kind: \"component\", type: i1.MatTable, selector: \"mat-table, table[mat-table]\", exportAs: [\"matTable\"] }, { kind: \"directive\", type: i1.MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { kind: \"directive\", type: i1.MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: [\"matHeaderRowDef\", \"matHeaderRowDefSticky\"] }, { kind: \"directive\", type: i1.MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"matColumnDef\"] }, { kind: \"directive\", type: i1.MatCellDef, selector: \"[matCellDef]\" }, { kind: \"directive\", type: i1.MatRowDef, selector: \"[matRowDef]\", inputs: [\"matRowDefColumns\", \"matRowDefWhen\"] }, { kind: \"directive\", type: i1.MatFooterCellDef, selector: \"[matFooterCellDef]\" }, { kind: \"directive\", type: i1.MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: [\"matFooterRowDef\", \"matFooterRowDefSticky\"] }, { kind: \"directive\", type: i1.MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { kind: \"directive\", type: i1.MatCell, selector: \"mat-cell, td[mat-cell]\" }, { kind: \"directive\", type: i1.MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\" }, { kind: \"component\", type: i1.MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", exportAs: [\"matHeaderRow\"] }, { kind: \"component\", type: i1.MatRow, selector: \"mat-row, tr[mat-row]\", exportAs: [\"matRow\"] }, { kind: \"component\", type: i1.MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", exportAs: [\"matFooterRow\"] }, { kind: \"directive\", type: i1.MatNoDataRow, selector: \"ng-template[matNoDataRow]\" }, { kind: \"ngmodule\", type: MatCheckboxModule }, { kind: \"component\", type: i2.MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"ngmodule\", type: MatSortModule }, { kind: \"directive\", type: i3.MatSort, selector: \"[matSort]\", inputs: [\"matSortActive\", \"matSortStart\", \"matSortDirection\", \"matSortDisableClear\", \"matSortDisabled\"], outputs: [\"matSortChange\"], exportAs: [\"matSort\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i5.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatPaginatorModule }, { kind: \"component\", type: i6.MatPaginator, selector: \"mat-paginator\", inputs: [\"color\", \"pageIndex\", \"length\", \"pageSize\", \"pageSizeOptions\", \"hidePageSize\", \"showFirstLastButtons\", \"selectConfig\", \"disabled\"], outputs: [\"page\"], exportAs: [\"matPaginator\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: GetTotalPipe, name: \"getTotal\" }, { kind: \"pipe\", type: DatePipe, name: \"date\" }, { kind: \"pipe\", type: DecimalPipe, name: \"number\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: MatDynamicTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-mat-dynamic-table', standalone: true, imports: [\n MatTableModule,\n MatCheckboxModule,\n MatSortModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n NgClass,\n NgStyle,\n GetTotalPipe,\n DatePipe,\n DecimalPipe,\n NgTemplateOutlet,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"mat-table-container\\\">\\n <div class=\\\"table-container small-table\\\">\\n <table #sort=\\\"matSort\\\" [dataSource]=\\\"dataSource.data\\\" mat-table matSort>\\n @if (columnDefinitions) {\\n <!-- Checkbox Column -->\\n @if (showSelectBox()) {\\n <ng-container matColumnDef=\\\"select\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? masterToggle() : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel()\\\"\\n [checked]=\\\"selection.hasValue() && isAllSelected()\\\"\\n [indeterminate]=\\\"selection.hasValue() && !isAllSelected()\\\"\\n />\\n </th>\\n <td *matCellDef=\\\"let row\\\" mat-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? selection.toggle(row) : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel(row)\\\"\\n [checked]=\\\"selection.isSelected(row)\\\"\\n />\\n </td>\\n <td *matFooterCellDef mat-footer-cell></td>\\n </ng-container>\\n }\\n\\n <!-- Dynamic Columns -->\\n @for (col of columnDefinitions; track col.key) {\\n <ng-container [matColumnDef]=\\\"col.key\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n {{ col.label }}\\n </th>\\n\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [ngClass]=\\\"{ highlighted: highlightRowIndex() === i }\\\"\\n >\\n @if (col.key === 'op') {\\n <div class=\\\"d-flex flex-row gap-1\\\">\\n @if (col.templateOutlet) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @else if (rowTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"rowTemplate(); context: { $implicit: element, index: i }\\\"\\n />\\n }\\n </div>\\n } @else {\\n @switch (col.type) {\\n @case ('image') {\\n <img\\n [src]=\\\"element[col.key]\\\"\\n class=\\\"img-fluid img-thumbnail my-1\\\"\\n width=\\\"50\\\"\\n alt=\\\"\\\"\\n />\\n }\\n @case ('number') {\\n <div>{{ element[col.key] | number: '1.2' : locale() }}</div>\\n }\\n @case ('date') {\\n <div>{{ element[col.key] | date: 'dd.MM.yyyy' }}</div>\\n }\\n @case ('expand') {\\n <button\\n mat-icon-button\\n aria-label=\\\"expand row\\\"\\n (click)=\\\"onExpand($event, element)\\\"\\n >\\n @if (expandedElement === element) {\\n <mat-icon>keyboard_arrow_up</mat-icon>\\n } @else {\\n <mat-icon>keyboard_arrow_down</mat-icon>\\n }\\n </button>\\n }\\n @case ('template') {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n }\\n @case ('custom') {\\n <ng-container #dynamicContent />\\n }\\n @default {\\n <div>{{ element[col.key] }}</div>\\n }\\n }\\n }\\n </td>\\n\\n <td *matFooterCellDef mat-footer-cell>\\n @if (col.index === 0) {\\n <div>Total</div>\\n }\\n @if (col.hasFooter) {\\n <div>{{ col.key | getTotal: dataSource.data }}</div>\\n }\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Expanded Detail Row -->\\n @if (showExpand() && expandedDetail) {\\n <ng-container matColumnDef=\\\"expandedDetail\\\">\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\"\\n >\\n <div class=\\\"m-0 p-0 detail-expand\\\" [class.expanded]=\\\"element === expandedElement\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"expandedDetail; context: { $implicit: element, index: i }\\\"\\n />\\n </div>\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Header Row -->\\n <tr mat-header-row *matHeaderRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n\\n <!-- Data Rows -->\\n @if (showExpand() && expandedDetail) {\\n <!-- Regular Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand; when: isNormalRow\\\"\\n class=\\\"mat-dynamic-table-row\\\"\\n [class.mat-dynamic-table-expanded-row]=\\\"expandedElement === row\\\"\\n [ngStyle]=\\\"getRowColor(row)\\\"\\n (click)=\\\"expandedElement = expandedElement === row ? null : row\\\"\\n ></tr>\\n\\n <!-- Expanded Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: ['expandedDetail']; when: isExpandedRow\\\"\\n class=\\\"mat-dynamic-table-detail-row\\\"\\n ></tr>\\n } @else {\\n <!-- Regular Row without expansion -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand\\\"\\n [ngStyle]=\\\"getRowColor(row)\\\"\\n ></tr>\\n }\\n\\n <!-- No Data Row -->\\n <tr class=\\\"mat-row\\\" *matNoDataRow>\\n <td class=\\\"mat-cell text-center\\\" [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\">\\n No records found\\n </td>\\n </tr>\\n\\n <!-- Footer -->\\n @if (showFooter() && dataSource.data.length > 0) {\\n <tr mat-footer-row *matFooterRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n }\\n }\\n </table>\\n </div>\\n\\n @if (enablePagination() && paginationConfig) {\\n <mat-paginator\\n #paginator\\n [disabled]=\\\"isLoadingData()\\\"\\n (page)=\\\"handlePageEvent($event)\\\"\\n [length]=\\\"paginationConfig.totalRecords\\\"\\n [pageSize]=\\\"paginationConfig.pageSize\\\"\\n [pageSizeOptions]=\\\"paginationConfig.pageSizeOptions || []\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n [pageIndex]=\\\"paginationConfig.pageIndex\\\"\\n aria-label=\\\"Select page\\\"\\n />\\n }\\n</div>\\n\", styles: [\".table-container{position:relative;min-height:200px;max-height:400px;overflow:auto}table{width:100%}tr.mat-dynamic-table-detail-row{height:0}tr.mat-dynamic-table-row:not(.mat-dynamic-table-expanded-row):hover{background:#f5f5f5}tr.mat-dynamic-table-row:not(.mat-dynamic-table-expanded-row):active{background:#efefef}.mat-dynamic-table-row td{border-bottom-width:0}.detail-expand{height:0;overflow:hidden;transition:height .15s ease-in-out}.detail-expand.expanded{height:auto;overflow:visible}@starting-style{.detail-expand.expanded{height:0}}\\n\"] }]\n }], propDecorators: { visibleColumns: [{\n type: Input\n }], columnDefinitions: [{\n type: Input\n }], expandedDetail: [{\n type: Input\n }], paginationConfig: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWR5bmFtaWMtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL21hdC1keW5hbWljLXRhYmxlL21hdC1keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9tYXQtZHluYW1pYy10YWJsZS9tYXQtZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFNTCxnQkFBZ0IsRUFHaEIsS0FBSyxFQUNMLE1BQU0sRUFDTixlQUFlLEVBQ2YsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixlQUFlLEVBQ2YsU0FBUyxFQUNULFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsY0FBYyxHQUNmLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBMEI5QyxNQUFNLE9BQU8sd0JBQXdCO0lBRzNCLGFBQWEsR0FBNEIsRUFBRSxDQUFDO0lBQzVDLGFBQWEsR0FBK0IsRUFBRSxDQUFDO0lBQy9DLEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUvQixVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssc0RBQUMsQ0FBQztJQUMxQixVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssc0RBQUMsQ0FBQztJQUMxQixNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sa0RBQUMsQ0FBQztJQUN4QixpQkFBaUIsR0FBRyxLQUFLLENBQUMsQ0FBQyw2REFBQyxDQUFDO0lBQzdCLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDOUIsaUJBQWlCLEdBQTBCLEVBQUUsQ0FBQztJQUM5QyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUsseURBQUMsQ0FBQztJQUM3QixTQUFTLEdBQUcsS0FBSyxDQUFNLEVBQUUscURBQUMsQ0FBQztJQUMzQixXQUFXLEdBQUcsS0FBSyxDQUFzQyxJQUFJLHVEQUFDLENBQUM7SUFDL0QsY0FBYyxHQUF3QyxJQUFJLENBQUM7SUFDM0QsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEtBQUssNERBQUMsQ0FBQztJQUNoQyxnQkFBZ0IsR0FBc0IsSUFBSSxDQUFDO0lBQzNDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyx5REFBQyxDQUFDO0lBRTdCLFdBQVcsR0FBRyxNQUFNLEVBQU8sQ0FBQztJQUM1QixPQUFPLEdBQUcsTUFBTSxFQUFLLENBQUM7SUFDdEIsWUFBWSxHQUFHLE1BQU0sRUFBSyxDQUFDO0lBQzNCLFlBQVksR0FBRyxNQUFNLEVBQUssQ0FBQztJQUMzQixTQUFTLEdBQUcsTUFBTSxFQUFhLENBQUM7SUFFekMsV0FBVyxHQUFHLENBQUMsQ0FBUyxFQUFFLEdBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSyxHQUFHLENBQUM7SUFDbEUsYUFBYSxHQUFHLENBQUMsQ0FBUyxFQUFFLEdBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSyxHQUFHLENBQUM7SUFFcEUsVUFBVSxHQUFHLElBQUksa0JBQWtCLENBQUksRUFBRSxDQUFDLENBQUM7SUFDM0MsU0FBUyxHQUFHLElBQUksY0FBYyxDQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxlQUFlLEdBQWEsSUFBSSxDQUFDO0lBQ2pDLDBCQUEwQixHQUFhLEVBQUUsQ0FBQztJQUVqQyxhQUFhLEdBQUcsZUFBZSxDQUFDLGVBQWUseURBQUMsQ0FBQztJQUNqRCxPQUFPLEdBQUcsZUFBZSxDQUFDLFNBQVMsbURBQUMsQ0FBQztJQUNyQyxhQUFhLEdBQUcsZUFBZSxDQUFDLGVBQWUseURBQUMsQ0FBQztJQUNqRCxVQUFVLEdBQUcsZUFBZSxDQUFDLFlBQVksc0RBQUMsQ0FBQztJQUUzQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxJQUFJLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixnREFBQyxDQUFDO0lBRWxELFFBQVE7UUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFdkIscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFOUMsMkRBQTJEO1FBQzNELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUNqRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM5QixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV0RCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxpQkFBaUIsR0FBRztvQkFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7b0JBQ2pDO3dCQUNFLEdBQUcsRUFBRSxRQUFRO3dCQUNiLEtBQUssRUFBRSxFQUFFO3dCQUNULElBQUksRUFBRSxRQUFRO3dCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxJQUFJLENBQUM7cUJBQzNDO2lCQUNGLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQywwQkFBMEIsR0FBRyxVQUFVLENBQUM7SUFDL0MsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksY0FBYyxDQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXpGLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMzRixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGtCQUFrQixDQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUMsT0FBTyxXQUFXLEtBQUssT0FBTyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFPO1FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxNQUFNLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLE1BQU0sQ0FBQztJQUN6RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQU07UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFZLEVBQUUsT0FBVTtRQUMvQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDekUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVU7UUFDcEIsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBWTtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO3VHQS9MVSx3QkFBd0I7MkZBQXhCLHdCQUF3Qix1bEVBbUNNLGVBQWUsMERBQ3JCLFNBQVMsZ0VBQ0gsZUFBZSw2REFDbEIsWUFBWSx1REFHbEIsZ0JBQWdCLG9GQURaLFFBQVEscUZDeEc5Qyw2Mk5BNkxBLHlsQkRoSkksY0FBYyw4Z0RBQ2QsaUJBQWlCLG1iQUNqQixhQUFhLDBQQUNiLGFBQWEsbUxBQ2IsZUFBZSxxTkFDZixrQkFBa0Isb1NBQ2xCLE9BQU8sb0ZBQ1AsT0FBTywyRUFJUCxnQkFBZ0IsK0lBSGhCLFlBQVksNENBQ1osUUFBUSx3Q0FDUixXQUFXOzsyRkFTRix3QkFBd0I7a0JBdkJwQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixXQUFXO3dCQUNYLGdCQUFnQjtxQkFDakIsbUJBSWdCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OEJBYTVCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgY29udGVudENoaWxkcmVuLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdENvbHVtbkRlZixcbiAgTWF0Rm9vdGVyUm93RGVmLFxuICBNYXRIZWFkZXJSb3dEZWYsXG4gIE1hdFJvd0RlZixcbiAgTWF0VGFibGUsXG4gIE1hdFRhYmxlRGF0YVNvdXJjZSxcbiAgTWF0VGFibGVNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSwgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcblxuaW1wb3J0IHsgRGF0ZVBpcGUsIERlY2ltYWxQaXBlLCBOZ0NsYXNzLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IEdldFRvdGFsUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzJztcbmltcG9ydCB7IENvbHVtbkRlZmluaXRpb24sIFBhZ2luYXRpb24sIFRhYmxlQ29udGV4dCwgVGFibGVSb3cgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtbWF0LWR5bmFtaWMtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0U29ydE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBOZ1N0eWxlLFxuICAgIEdldFRvdGFsUGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBEZWNpbWFsUGlwZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0LWR5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWF0LWR5bmFtaWMtdGFibGUuY29tcG9uZW50LnNjc3MnLFxuXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNYXREeW5hbWljVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFRhYmxlUm93PlxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWZzOiBDb21wb25lbnRSZWY8dW5rbm93bj5bXSA9IFtdO1xuICBwcml2YXRlIGVtYmVkZGVkVmlld3M6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPltdID0gW107XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICByZWFkb25seSBzaG93RXhwYW5kID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBzaG93Rm9vdGVyID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dCgnZW4tVVMnKTtcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0Um93SW5kZXggPSBpbnB1dCgwKTtcbiAgQElucHV0KCkgdmlzaWJsZUNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10gPSBbXTtcbiAgcmVhZG9ubHkgc2hvd1NlbGVjdEJveCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGFibGVEYXRhID0gaW5wdXQ8VFtdPihbXSk7XG4gIHJlYWRvbmx5IHJvd1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8VGFibGVDb250ZXh0PFQ+PiB8IG51bGw+KG51bGwpO1xuICBASW5wdXQoKSBleHBhbmRlZERldGFpbDogVGVtcGxhdGVSZWY8VGFibGVDb250ZXh0PFQ+PiB8IG51bGwgPSBudWxsO1xuICByZWFkb25seSBlbmFibGVQYWdpbmF0aW9uID0gaW5wdXQoZmFsc2UpO1xuICBASW5wdXQoKSBwYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHJlYWRvbmx5IGlzTG9hZGluZ0RhdGEgPSBpbnB1dChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcm93U2VsZWN0ZWQgPSBvdXRwdXQ8VFtdPigpO1xuICByZWFkb25seSBjb3B5Um93ID0gb3V0cHV0PFQ+KCk7XG4gIHJlYWRvbmx5IHNob3dFeHBhbmRlZCA9IG91dHB1dDxUPigpO1xuICByZWFkb25seSBoaWRlRXhwYW5kZWQgPSBvdXRwdXQ8VD4oKTtcbiAgcmVhZG9ubHkgcGFnZUV2ZW50ID0gb3V0cHV0PFBhZ2VFdmVudD4oKTtcblxuICBpc05vcm1hbFJvdyA9IChfOiBudW1iZXIsIHJvdzogVCkgPT4gdGhpcy5leHBhbmRlZEVsZW1lbnQgIT09IHJvdztcbiAgaXNFeHBhbmRlZFJvdyA9IChfOiBudW1iZXIsIHJvdzogVCkgPT4gdGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IHJvdztcblxuICBkYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUPihbXSk7XG4gIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0cnVlLCBbXSk7XG4gIGV4cGFuZGVkRWxlbWVudDogVCB8IG51bGwgPSBudWxsO1xuICBjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZDogc3RyaW5nW10gPSBbXTtcblxuICByZWFkb25seSBoZWFkZXJSb3dEZWZzID0gY29udGVudENoaWxkcmVuKE1hdEhlYWRlclJvd0RlZik7XG4gIHJlYWRvbmx5IHJvd0RlZnMgPSBjb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmKTtcbiAgcmVhZG9ubHkgZm9vdGVyUm93RGVmcyA9IGNvbnRlbnRDaGlsZHJlbihNYXRGb290ZXJSb3dEZWYpO1xuICByZWFkb25seSBjb2x1bW5EZWZzID0gY29udGVudENoaWxkcmVuKE1hdENvbHVtbkRlZik7XG5cbiAgcmVhZG9ubHkgdGFibGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQoTWF0VGFibGUpO1xuICByZWFkb25seSByb3dzID0gY29udGVudENoaWxkcmVuKFZpZXdDb250YWluZXJSZWYpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29sdW1uc1RvRGlzcGxheSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0YWJsZURhdGEnXSkge1xuICAgICAgdGhpcy51cGRhdGVUYWJsZURhdGEoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snc2hvd0V4cGFuZCddIHx8IGNoYW5nZXNbJ3Zpc2libGVDb2x1bW5zJ10gfHwgY2hhbmdlc1snY29sdW1uRGVmaW5pdGlvbnMnXSkge1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5zVG9EaXNwbGF5KCk7XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBPblB1c2ggc3RyYXRlZ3lcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyVGFibGVDb250ZW50KCk7XG4gICAgdGhpcy5pbml0aWFsaXplVGFibGUoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cER5bmFtaWNDb21wb25lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlRGF0YSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBuZXcgZGF0YSBhcnJpdmVzXG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcblxuICAgIC8vIFVwZGF0ZSBkYXRhIHNvdXJjZVxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy50YWJsZURhdGEoKSB8fCBbXTtcblxuICAgIC8vIFJlc2V0IGV4cGFuZGVkIGVsZW1lbnQgaWYgaXQncyBubyBsb25nZXIgaW4gdGhlIG5ldyBkYXRhXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRFbGVtZW50ICYmICF0aGlzLmRhdGFTb3VyY2UuZGF0YS5pbmNsdWRlcyh0aGlzLmV4cGFuZGVkRWxlbWVudCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uc1RvRGlzcGxheSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZUNvbHVtbnMubGVuZ3RoICYmIHRoaXMuY29sdW1uRGVmaW5pdGlvbnMpIHtcbiAgICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbkRlZmluaXRpb25zLm1hcChjb2wgPT4gY29sLmtleSk7XG4gICAgICB0aGlzLmNvbHVtbkRlZmluaXRpb25zLmZvckVhY2goKGNvbCwgaW5kZXgpID0+IChjb2wuaW5kZXggPSBpbmRleCkpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0NvbHVtbnM6IHN0cmluZ1tdID0gWy4uLnRoaXMudmlzaWJsZUNvbHVtbnNdO1xuXG4gICAgaWYgKHRoaXMuc2hvd1NlbGVjdEJveCgpICYmICFuZXdDb2x1bW5zLmluY2x1ZGVzKCdzZWxlY3QnKSkge1xuICAgICAgbmV3Q29sdW1ucy51bnNoaWZ0KCdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93RXhwYW5kKCkgJiYgdGhpcy5leHBhbmRlZERldGFpbCkge1xuICAgICAgaWYgKCF0aGlzLmNvbHVtbkRlZmluaXRpb25zPy5zb21lKGNvbCA9PiBjb2wua2V5ID09PSAnZXhwYW5kJykpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZpbml0aW9ucyA9IFtcbiAgICAgICAgICAuLi4odGhpcy5jb2x1bW5EZWZpbml0aW9ucyB8fCBbXSksXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZXhwYW5kJyxcbiAgICAgICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgICAgIHR5cGU6ICdleHBhbmQnLFxuICAgICAgICAgICAgaW5kZXg6IHRoaXMuY29sdW1uRGVmaW5pdGlvbnM/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV3Q29sdW1ucy5pbmNsdWRlcygnZXhwYW5kJykpIHtcbiAgICAgICAgbmV3Q29sdW1ucy5wdXNoKCdleHBhbmQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtbnNUb0Rpc3BsYXlXaXRoRXhwYW5kID0gbmV3Q29sdW1ucztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0cnVlLCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyVGFibGVDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uRGVmcygpLmZvckVhY2goY29sdW1uRGVmID0+IHRoaXMudGFibGUoKS5hZGRDb2x1bW5EZWYoY29sdW1uRGVmKSk7XG4gICAgdGhpcy5yb3dEZWZzKCkuZm9yRWFjaChyb3dEZWYgPT4gdGhpcy50YWJsZSgpLmFkZFJvd0RlZihyb3dEZWYpKTtcbiAgICB0aGlzLmhlYWRlclJvd0RlZnMoKS5mb3JFYWNoKGhlYWRlclJvd0RlZiA9PiB0aGlzLnRhYmxlKCkuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xuXG4gICAgaWYgKHRoaXMuc2hvd0Zvb3RlcigpKSB7XG4gICAgICB0aGlzLmZvb3RlclJvd0RlZnMoKS5mb3JFYWNoKGZvb3RlclJvd0RlZiA9PiB0aGlzLnRhYmxlKCkuYWRkRm9vdGVyUm93RGVmKGZvb3RlclJvd0RlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvb3RlclJvd0RlZnMoKS5mb3JFYWNoKGZvb3RlclJvd0RlZiA9PiB0aGlzLnRhYmxlKCkucmVtb3ZlRm9vdGVyUm93RGVmKGZvb3RlclJvd0RlZikpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VD4odGhpcy50YWJsZURhdGEoKSB8fCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBEeW5hbWljQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuZm9yRWFjaChyZWYgPT4gcmVmLmRlc3Ryb3koKSk7XG4gICAgdGhpcy5lbWJlZGRlZFZpZXdzLmZvckVhY2godmlldyA9PiB2aWV3LmRlc3Ryb3koKSk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzICYmIG51bVJvd3MgPiAwO1xuICB9XG5cbiAgbWFzdGVyVG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEuZm9yRWFjaChyb3cgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdykpO1xuICAgIH1cbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUKTogc3RyaW5nIHtcbiAgICBpZiAoIXJvdykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuaXNBbGxTZWxlY3RlZCgpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSBhbGxgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3dgO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogVCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uLnRvZ2dsZShyb3cpO1xuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkV4cGFuZChldmVudDogRXZlbnQsIGVsZW1lbnQ6IFQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmV4cGFuZGVkRWxlbWVudCA9IHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRFbGVtZW50KSB7XG4gICAgICB0aGlzLnNob3dFeHBhbmRlZC5lbWl0KGVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGVFeHBhbmRlZC5lbWl0KGVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldFJvd0NvbG9yKGVsZW1lbnQ6IFQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gZWxlbWVudC5jb2xvclJvdyA/IHsgJ2JhY2tncm91bmQtY29sb3InOiBlbGVtZW50LmNvbG9yUm93IH0gOiB7fTtcbiAgfVxuXG4gIGhhbmRsZVBhZ2VFdmVudChlOiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VFdmVudC5lbWl0KGUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWF0LXRhYmxlLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIHNtYWxsLXRhYmxlXCI+XG4gICAgPHRhYmxlICNzb3J0PVwibWF0U29ydFwiIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2UuZGF0YVwiIG1hdC10YWJsZSBtYXRTb3J0PlxuICAgICAgQGlmIChjb2x1bW5EZWZpbml0aW9ucykge1xuICAgICAgICA8IS0tIENoZWNrYm94IENvbHVtbiAtLT5cbiAgICAgICAgQGlmIChzaG93U2VsZWN0Qm94KCkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJjaGVja2JveExhYmVsKClcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIG1hdC1jZWxsPlxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJjaGVja2JveExhYmVsKHJvdylcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCAqbWF0Rm9vdGVyQ2VsbERlZiBtYXQtZm9vdGVyLWNlbGw+PC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRHluYW1pYyBDb2x1bW5zIC0tPlxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uRGVmaW5pdGlvbnM7IHRyYWNrIGNvbC5rZXkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sLmtleVwiPlxuICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAge3sgY29sLmxhYmVsIH19XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgaGlnaGxpZ2h0ZWQ6IGhpZ2hsaWdodFJvd0luZGV4KCkgPT09IGkgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoY29sLmtleSA9PT0gJ29wJykge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnRlbXBsYXRlT3V0bGV0KSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sLnRlbXBsYXRlT3V0bGV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnQsIGluZGV4OiBpIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocm93VGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUZW1wbGF0ZSgpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGNvbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJlbGVtZW50W2NvbC5rZXldXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImltZy1mbHVpZCBpbWctdGh1bWJuYWlsIG15LTFcIlxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBlbGVtZW50W2NvbC5rZXldIHwgbnVtYmVyOiAnMS4yJyA6IGxvY2FsZSgpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZWxlbWVudFtjb2wua2V5XSB8IGRhdGU6ICdkZC5NTS55eXl5JyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdleHBhbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZXhwYW5kIHJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRXhwYW5kKCRldmVudCwgZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChleHBhbmRlZEVsZW1lbnQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sLnRlbXBsYXRlT3V0bGV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnQsIGluZGV4OiBpIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdjdXN0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNDb250ZW50IC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZWxlbWVudFtjb2wua2V5XSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPHRkICptYXRGb290ZXJDZWxsRGVmIG1hdC1mb290ZXItY2VsbD5cbiAgICAgICAgICAgICAgQGlmIChjb2wuaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlRvdGFsPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb2wuaGFzRm9vdGVyKSB7XG4gICAgICAgICAgICAgICAgPGRpdj57eyBjb2wua2V5IHwgZ2V0VG90YWw6IGRhdGFTb3VyY2UuZGF0YSB9fTwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBFeHBhbmRlZCBEZXRhaWwgUm93IC0tPlxuICAgICAgICBAaWYgKHNob3dFeHBhbmQoKSAmJiBleHBhbmRlZERldGFpbCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBtYXQtY2VsbFxuICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZC5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0wIHAtMCBkZXRhaWwtZXhwYW5kXCIgW2NsYXNzLmV4cGFuZGVkXT1cImVsZW1lbnQgPT09IGV4cGFuZGVkRWxlbWVudFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwYW5kZWREZXRhaWw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50LCBpbmRleDogaSB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEhlYWRlciBSb3cgLS0+XG4gICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmRcIj48L3RyPlxuXG4gICAgICAgIDwhLS0gRGF0YSBSb3dzIC0tPlxuICAgICAgICBAaWYgKHNob3dFeHBhbmQoKSAmJiBleHBhbmRlZERldGFpbCkge1xuICAgICAgICAgIDwhLS0gUmVndWxhciBSb3cgLS0+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBtYXQtcm93XG4gICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmQ7IHdoZW46IGlzTm9ybWFsUm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0LWR5bmFtaWMtdGFibGUtcm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5tYXQtZHluYW1pYy10YWJsZS1leHBhbmRlZC1yb3ddPVwiZXhwYW5kZWRFbGVtZW50ID09PSByb3dcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0Um93Q29sb3Iocm93KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZXhwYW5kZWRFbGVtZW50ID0gZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyBudWxsIDogcm93XCJcbiAgICAgICAgICA+PC90cj5cblxuICAgICAgICAgIDwhLS0gRXhwYW5kZWQgUm93IC0tPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgbWF0LXJvd1xuICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXTsgd2hlbjogaXNFeHBhbmRlZFJvd1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1hdC1keW5hbWljLXRhYmxlLWRldGFpbC1yb3dcIlxuICAgICAgICAgID48L3RyPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlZ3VsYXIgUm93IHdpdGhvdXQgZXhwYW5zaW9uIC0tPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgbWF0LXJvd1xuICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbnNUb0Rpc3BsYXlXaXRoRXhwYW5kXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFJvd0NvbG9yKHJvdylcIlxuICAgICAgICAgID48L3RyPlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBObyBEYXRhIFJvdyAtLT5cbiAgICAgICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiICptYXROb0RhdGFSb3c+XG4gICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGwgdGV4dC1jZW50ZXJcIiBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnNUb0Rpc3BsYXlXaXRoRXhwYW5kLmxlbmd0aFwiPlxuICAgICAgICAgICAgTm8gcmVjb3JkcyBmb3VuZFxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPCEtLSBGb290ZXIgLS0+XG4gICAgICAgIEBpZiAoc2hvd0Zvb3RlcigpICYmIGRhdGFTb3VyY2UuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZFwiPjwvdHI+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cblxuICBAaWYgKGVuYWJsZVBhZ2luYXRpb24oKSAmJiBwYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICNwYWdpbmF0b3JcbiAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdEYXRhKClcIlxuICAgICAgKHBhZ2UpPVwiaGFuZGxlUGFnZUV2ZW50KCRldmVudClcIlxuICAgICAgW2xlbmd0aF09XCJwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVjb3Jkc1wiXG4gICAgICBbcGFnZVNpemVdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZVwiXG4gICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2luYXRpb25Db25maWcucGFnZVNpemVPcHRpb25zIHx8IFtdXCJcbiAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgIFtwYWdlSW5kZXhdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlSW5kZXhcIlxuICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCBwYWdlXCJcbiAgICAvPlxuICB9XG48L2Rpdj5cbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { firstValueFrom, map } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { DialogWrapperComponent } from '../../components/dialog-wrapper/dialog-wrapper.component';\nimport * as i0 from \"@angular/core\";\nexport class AdvancedDialogService {\n dialog = inject(MatDialog);\n overlay = inject(Overlay);\n breakpointObserver = inject(BreakpointObserver);\n // An observable that emits true if the viewport matches mobile dimensions.\n isMobile$ = this.breakpointObserver\n .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n .pipe(map(result => result.matches));\n /**\n * Main method to open any component in a dialog.\n * This provides maximum flexibility.\n * @param component The component to render.\n * @param config The detailed configuration for the dialog.\n * @returns A MatDialogRef instance.\n */\n async open(component, config = {}) {\n const dialogConfig = await this.buildDialogConfig(config);\n return this.dialog.open(component, dialogConfig);\n }\n /**\n * A powerful helper to open a component inside our standard, branded \"wrapper\".\n * This provides maximum consistency.\n * @param wrapperConfig Configuration for the title, icon, and the content component.\n * @param matDialogConfig Standard MatDialog configuration (size, position, etc.).\n * @returns A MatDialogRef instance pointing to the wrapper.\n */\n async openInWrapper(wrapperConfig, matDialogConfig = {}) {\n // Package the wrapper config into the `data` property for the DialogWrapperComponent to consume.\n const configWithWrapperData = {\n ...matDialogConfig,\n data: wrapperConfig,\n };\n const dialogConfig = await this.buildDialogConfig(configWithWrapperData);\n return this.dialog.open(DialogWrapperComponent, dialogConfig);\n }\n /**\n * Helper to open a dialog and only get an observable of the result.\n */\n async openAndGetResult(component, config = {}) {\n const dialogRef = await this.open(component, config);\n return firstValueFrom(dialogRef.afterClosed());\n }\n /**\n * Closes all currently open dialogs.\n */\n closeAll() {\n this.dialog.closeAll();\n }\n // --- Private Configuration Builder ---\n async buildDialogConfig(config) {\n const dialogConfig = new MatDialogConfig();\n // Asynchronously check for mobile state to prevent memory leaks from dangling subscriptions.\n const isMobile = await firstValueFrom(this.isMobile$);\n // Apply fullscreen if 'full' size is set OR if mobile fullscreen is enabled on a mobile device.\n if (config.size === 'full' || (config.isMobileFullScreen && isMobile)) {\n this.applyFullScreenConfig(dialogConfig);\n }\n else {\n this.applyStandardConfig(dialogConfig, config);\n }\n // Apply all other common configurations.\n this.applyCommonConfig(dialogConfig, config);\n return dialogConfig;\n }\n applyFullScreenConfig(dialogConfig) {\n dialogConfig.width = '100vw';\n dialogConfig.height = '100vh';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.panelClass = ['full-screen-dialog'];\n }\n applyStandardConfig(dialogConfig, config) {\n dialogConfig.width = config.width ?? this.getDialogWidth(config.size);\n dialogConfig.height = config.height;\n dialogConfig.minWidth = config.minWidth;\n dialogConfig.maxWidth = config.maxWidth ?? '95vw';\n dialogConfig.maxHeight = config.maxHeight ?? 'auto';\n dialogConfig.position = config.position;\n }\n applyCommonConfig(dialogConfig, config) {\n dialogConfig.data = config.data;\n dialogConfig.hasBackdrop = config.hasBackdrop ?? true;\n dialogConfig.backdropClass = config.backdropClass;\n const panelClasses = Array.isArray(config.panelClass)\n ? [...config.panelClass]\n : config.panelClass\n ? [config.panelClass]\n : [];\n if (config.size) {\n panelClasses.push(`dialog-${config.size}`);\n }\n dialogConfig.panelClass = panelClasses;\n dialogConfig.disableClose = !(config.backdropClickClosable ?? true);\n // Note: escapeKeyClosable is handled by MatDialog separately and doesn't affect disableClose directly.\n dialogConfig.autoFocus = config.autoFocus ?? 'first-tabbable';\n dialogConfig.scrollStrategy = config.scrollStrategy ?? this.overlay.scrollStrategies.block();\n dialogConfig.enterAnimationDuration = config.enterAnimationDuration ?? '300ms';\n dialogConfig.exitAnimationDuration = config.exitAnimationDuration ?? '200ms';\n dialogConfig.ariaLabel = config.ariaLabel;\n dialogConfig.ariaLabelledBy = config.ariaLabelledBy;\n dialogConfig.ariaDescribedBy = config.ariaDescribedBy;\n dialogConfig.role = config.role;\n }\n getDialogWidth(size = 'md') {\n const sizeMap = {\n xs: '320px',\n sm: '450px',\n md: '600px',\n lg: '800px',\n xl: '1000px',\n xxl: '1280px',\n full: '100vw',\n };\n return sizeMap[size];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AdvancedDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AdvancedDialogService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AdvancedDialogService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvZGlhbG9nL2FkdmFuY2VkLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMERBQTBELENBQUM7O0FBS2xHLE1BQU0sT0FBTyxxQkFBcUI7SUFDZixNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFakUsMkVBQTJFO0lBQzFELFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCO1NBQ2pELE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXZDOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQ1IsU0FBMkIsRUFDM0IsU0FBbUMsRUFBRTtR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QUM7UUFDMUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ3BELFlBQVksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUN0RCxZQUFZLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFtQixJQUFJO1FBQzVDLE1BQU0sT0FBTyxHQUErQjtZQUMxQyxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxPQUFPO1lBQ1gsRUFBRSxFQUFFLE9BQU87WUFDWCxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxRQUFRO1lBQ1osR0FBRyxFQUFFLFFBQVE7WUFDYixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO3VHQXJKVSxxQkFBcUI7MkdBQXJCLHFCQUFxQixjQUZwQixNQUFNOzsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbmltcG9ydCB7IE1hdEN1c3RvbURpYWxvZ0NvbmZpZywgRGlhbG9nU2l6ZSwgRGlhbG9nV3JhcHBlckNvbmZpZyB9IGZyb20gJy4vZGlhbG9nLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGlhbG9nV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGlhbG9nLXdyYXBwZXIvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkRGlhbG9nU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcblxuICAvLyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdHJ1ZSBpZiB0aGUgdmlld3BvcnQgbWF0Y2hlcyBtb2JpbGUgZGltZW5zaW9ucy5cbiAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZSQgPSB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgIC5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0UG9ydHJhaXQsIEJyZWFrcG9pbnRzLkhhbmRzZXRMYW5kc2NhcGVdKVxuICAgIC5waXBlKG1hcChyZXN1bHQgPT4gcmVzdWx0Lm1hdGNoZXMpKTtcblxuICAvKipcbiAgICogTWFpbiBtZXRob2QgdG8gb3BlbiBhbnkgY29tcG9uZW50IGluIGEgZGlhbG9nLlxuICAgKiBUaGlzIHByb3ZpZGVzIG1heGltdW0gZmxleGliaWxpdHkuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBkaWFsb2cuXG4gICAqIEByZXR1cm5zIEEgTWF0RGlhbG9nUmVmIGluc3RhbmNlLlxuICAgKi9cbiAgYXN5bmMgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPiA9IHt9LFxuICApOiBQcm9taXNlPE1hdERpYWxvZ1JlZjxULCBSPj4ge1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IGF3YWl0IHRoaXMuYnVpbGREaWFsb2dDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbjxULCBELCBSPihjb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQSBwb3dlcmZ1bCBoZWxwZXIgdG8gb3BlbiBhIGNvbXBvbmVudCBpbnNpZGUgb3VyIHN0YW5kYXJkLCBicmFuZGVkIFwid3JhcHBlclwiLlxuICAgKiBUaGlzIHByb3ZpZGVzIG1heGltdW0gY29uc2lzdGVuY3kuXG4gICAqIEBwYXJhbSB3cmFwcGVyQ29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB0aXRsZSwgaWNvbiwgYW5kIHRoZSBjb250ZW50IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIG1hdERpYWxvZ0NvbmZpZyBTdGFuZGFyZCBNYXREaWFsb2cgY29uZmlndXJhdGlvbiAoc2l6ZSwgcG9zaXRpb24sIGV0Yy4pLlxuICAgKiBAcmV0dXJucyBBIE1hdERpYWxvZ1JlZiBpbnN0YW5jZSBwb2ludGluZyB0byB0aGUgd3JhcHBlci5cbiAgICovXG4gIGFzeW5jIG9wZW5JbldyYXBwZXI8VCwgUiA9IHVua25vd24+KFxuICAgIHdyYXBwZXJDb25maWc6IERpYWxvZ1dyYXBwZXJDb25maWc8VD4sXG4gICAgbWF0RGlhbG9nQ29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8VD4gPSB7fSxcbiAgKTogUHJvbWlzZTxNYXREaWFsb2dSZWY8RGlhbG9nV3JhcHBlckNvbXBvbmVudCwgUj4+IHtcbiAgICAvLyBQYWNrYWdlIHRoZSB3cmFwcGVyIGNvbmZpZyBpbnRvIHRoZSBgZGF0YWAgcHJvcGVydHkgZm9yIHRoZSBEaWFsb2dXcmFwcGVyQ29tcG9uZW50IHRvIGNvbnN1bWUuXG4gICAgY29uc3QgY29uZmlnV2l0aFdyYXBwZXJEYXRhOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RGlhbG9nV3JhcHBlckNvbmZpZzxUPj4gPSB7XG4gICAgICAuLi5tYXREaWFsb2dDb25maWcsXG4gICAgICBkYXRhOiB3cmFwcGVyQ29uZmlnLFxuICAgIH0gYXMgTWF0Q3VzdG9tRGlhbG9nQ29uZmlnPERpYWxvZ1dyYXBwZXJDb25maWc8VD4+O1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IGF3YWl0IHRoaXMuYnVpbGREaWFsb2dDb25maWcoY29uZmlnV2l0aFdyYXBwZXJEYXRhKTtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbjxEaWFsb2dXcmFwcGVyQ29tcG9uZW50LCBEaWFsb2dXcmFwcGVyQ29uZmlnPFQ+LCBSPihcbiAgICAgIERpYWxvZ1dyYXBwZXJDb21wb25lbnQsXG4gICAgICBkaWFsb2dDb25maWcsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gb3BlbiBhIGRpYWxvZyBhbmQgb25seSBnZXQgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgb3BlbkFuZEdldFJlc3VsdDxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPiA9IHt9LFxuICApOiBQcm9taXNlPFIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSBhd2FpdCB0aGlzLm9wZW4oY29tcG9uZW50LCBjb25maWcpO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSkgYXMgUHJvbWlzZTxSIHwgdW5kZWZpbmVkPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgYWxsIGN1cnJlbnRseSBvcGVuIGRpYWxvZ3MuXG4gICAqL1xuICBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICB9XG5cbiAgLy8gLS0tIFByaXZhdGUgQ29uZmlndXJhdGlvbiBCdWlsZGVyIC0tLVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREaWFsb2dDb25maWc8RD4oXG4gICAgY29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RD4sXG4gICk6IFByb21pc2U8TWF0RGlhbG9nQ29uZmlnPEQ+PiB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZzxEPigpO1xuXG4gICAgLy8gQXN5bmNocm9ub3VzbHkgY2hlY2sgZm9yIG1vYmlsZSBzdGF0ZSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBmcm9tIGRhbmdsaW5nIHN1YnNjcmlwdGlvbnMuXG4gICAgY29uc3QgaXNNb2JpbGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmlzTW9iaWxlJCk7XG5cbiAgICAvLyBBcHBseSBmdWxsc2NyZWVuIGlmICdmdWxsJyBzaXplIGlzIHNldCBPUiBpZiBtb2JpbGUgZnVsbHNjcmVlbiBpcyBlbmFibGVkIG9uIGEgbW9iaWxlIGRldmljZS5cbiAgICBpZiAoY29uZmlnLnNpemUgPT09ICdmdWxsJyB8fCAoY29uZmlnLmlzTW9iaWxlRnVsbFNjcmVlbiAmJiBpc01vYmlsZSkpIHtcbiAgICAgIHRoaXMuYXBwbHlGdWxsU2NyZWVuQ29uZmlnKGRpYWxvZ0NvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbHlTdGFuZGFyZENvbmZpZyhkaWFsb2dDb25maWcsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgYWxsIG90aGVyIGNvbW1vbiBjb25maWd1cmF0aW9ucy5cbiAgICB0aGlzLmFwcGx5Q29tbW9uQ29uZmlnKGRpYWxvZ0NvbmZpZywgY29uZmlnKTtcblxuICAgIHJldHVybiBkaWFsb2dDb25maWc7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RnVsbFNjcmVlbkNvbmZpZyhkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZyk6IHZvaWQge1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICcxMDB2dyc7XG4gICAgZGlhbG9nQ29uZmlnLmhlaWdodCA9ICcxMDB2aCc7XG4gICAgZGlhbG9nQ29uZmlnLm1heFdpZHRoID0gJzEwMHZ3JztcbiAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9IFsnZnVsbC1zY3JlZW4tZGlhbG9nJ107XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3RhbmRhcmRDb25maWc8RD4oXG4gICAgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc8RD4sXG4gICAgY29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RD4sXG4gICk6IHZvaWQge1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9IGNvbmZpZy53aWR0aCA/PyB0aGlzLmdldERpYWxvZ1dpZHRoKGNvbmZpZy5zaXplKTtcbiAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gY29uZmlnLmhlaWdodDtcbiAgICBkaWFsb2dDb25maWcubWluV2lkdGggPSBjb25maWcubWluV2lkdGg7XG4gICAgZGlhbG9nQ29uZmlnLm1heFdpZHRoID0gY29uZmlnLm1heFdpZHRoID8/ICc5NXZ3JztcbiAgICBkaWFsb2dDb25maWcubWF4SGVpZ2h0ID0gY29uZmlnLm1heEhlaWdodCA/PyAnYXV0byc7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0gY29uZmlnLnBvc2l0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbW1vbkNvbmZpZzxEPihcbiAgICBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZzxEPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPixcbiAgKTogdm9pZCB7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSBjb25maWcuZGF0YTtcbiAgICBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AgPSBjb25maWcuaGFzQmFja2Ryb3AgPz8gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuYmFja2Ryb3BDbGFzcyA9IGNvbmZpZy5iYWNrZHJvcENsYXNzO1xuXG4gICAgY29uc3QgcGFuZWxDbGFzc2VzID0gQXJyYXkuaXNBcnJheShjb25maWcucGFuZWxDbGFzcylcbiAgICAgID8gWy4uLmNvbmZpZy5wYW5lbENsYXNzXVxuICAgICAgOiBjb25maWcucGFuZWxDbGFzc1xuICAgICAgICA/IFtjb25maWcucGFuZWxDbGFzc11cbiAgICAgICAgOiBbXTtcbiAgICBpZiAoY29uZmlnLnNpemUpIHtcbiAgICAgIHBhbmVsQ2xhc3Nlcy5wdXNoKGBkaWFsb2ctJHtjb25maWcuc2l6ZX1gKTtcbiAgICB9XG4gICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSBwYW5lbENsYXNzZXM7XG5cbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gIShjb25maWcuYmFja2Ryb3BDbGlja0Nsb3NhYmxlID8/IHRydWUpO1xuICAgIC8vIE5vdGU6IGVzY2FwZUtleUNsb3NhYmxlIGlzIGhhbmRsZWQgYnkgTWF0RGlhbG9nIHNlcGFyYXRlbHkgYW5kIGRvZXNuJ3QgYWZmZWN0IGRpc2FibGVDbG9zZSBkaXJlY3RseS5cbiAgICBkaWFsb2dDb25maWcuYXV0b0ZvY3VzID0gY29uZmlnLmF1dG9Gb2N1cyA/PyAnZmlyc3QtdGFiYmFibGUnO1xuICAgIGRpYWxvZ0NvbmZpZy5zY3JvbGxTdHJhdGVneSA9IGNvbmZpZy5zY3JvbGxTdHJhdGVneSA/PyB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgIGRpYWxvZ0NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uID0gY29uZmlnLmVudGVyQW5pbWF0aW9uRHVyYXRpb24gPz8gJzMwMG1zJztcbiAgICBkaWFsb2dDb25maWcuZXhpdEFuaW1hdGlvbkR1cmF0aW9uID0gY29uZmlnLmV4aXRBbmltYXRpb25EdXJhdGlvbiA/PyAnMjAwbXMnO1xuICAgIGRpYWxvZ0NvbmZpZy5hcmlhTGFiZWwgPSBjb25maWcuYXJpYUxhYmVsO1xuICAgIGRpYWxvZ0NvbmZpZy5hcmlhTGFiZWxsZWRCeSA9IGNvbmZpZy5hcmlhTGFiZWxsZWRCeTtcbiAgICBkaWFsb2dDb25maWcuYXJpYURlc2NyaWJlZEJ5ID0gY29uZmlnLmFyaWFEZXNjcmliZWRCeTtcbiAgICBkaWFsb2dDb25maWcucm9sZSA9IGNvbmZpZy5yb2xlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaWFsb2dXaWR0aChzaXplOiBEaWFsb2dTaXplID0gJ21kJyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l6ZU1hcDogUmVjb3JkPERpYWxvZ1NpemUsIHN0cmluZz4gPSB7XG4gICAgICB4czogJzMyMHB4JyxcbiAgICAgIHNtOiAnNDUwcHgnLFxuICAgICAgbWQ6ICc2MDBweCcsXG4gICAgICBsZzogJzgwMHB4JyxcbiAgICAgIHhsOiAnMTAwMHB4JyxcbiAgICAgIHh4bDogJzEyODBweCcsXG4gICAgICBmdWxsOiAnMTAwdncnLFxuICAgIH07XG4gICAgcmV0dXJuIHNpemVNYXBbc2l6ZV07XG4gIH1cbn1cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { SpinnerComponent } from '../components/spinner/spinner.component';\nimport * as i0 from \"@angular/core\";\nexport class OverlayService {\n overlay = inject(Overlay);\n overlayRef;\n showSpinner() {\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n });\n const spinnerPortal = new ComponentPortal(SpinnerComponent);\n this.overlayRef.attach(spinnerPortal);\n }\n }\n hideSpinner() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: OverlayService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: OverlayService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL292ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUkzRSxNQUFNLE9BQU8sY0FBYztJQUNSLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsVUFBVSxDQUFjO0lBRWhDLFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3BDLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsZ0JBQWdCLEVBQUU7YUFDM0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQXJCVSxjQUFjOzJHQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG5cbiAgc2hvd1NwaW5uZXIoKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHNwaW5uZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFNwaW5uZXJDb21wb25lbnQpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChzcGlubmVyUG9ydGFsKTtcbiAgICB9XG4gIH1cblxuICBoaWRlU3Bpbm5lcigpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsITtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class ThemeService {\n _darkMode = new BehaviorSubject(false);\n isDarkMode$ = this._darkMode.asObservable();\n loadMode() {\n const savedTheme = localStorage.getItem('theme');\n if (savedTheme) {\n this._darkMode.next(savedTheme === 'dark');\n this.applyTheme(savedTheme === 'dark');\n }\n else {\n // Check system preference\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n this._darkMode.next(prefersDark);\n this.applyTheme(prefersDark);\n }\n }\n toggleDarkMode() {\n const newValue = !this._darkMode.value;\n this._darkMode.next(newValue);\n this.applyTheme(newValue);\n localStorage.setItem('theme', newValue ? 'dark' : 'light');\n }\n applyTheme(isDark) {\n if (isDark) {\n document.body.classList.add('dark-theme');\n }\n else {\n document.body.classList.remove('dark-theme');\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdkMsTUFBTSxPQUFPLFlBQVk7SUFDTixTQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDakUsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUMsUUFBUTtRQUNOLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLDBCQUEwQjtZQUMxQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQWU7UUFDaEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzt1R0E5QlUsWUFBWTsyR0FBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhcmtNb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzRGFya01vZGUkID0gdGhpcy5fZGFya01vZGUuYXNPYnNlcnZhYmxlKCk7XG5cbiAgbG9hZE1vZGUoKSB7XG4gICAgY29uc3Qgc2F2ZWRUaGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZScpO1xuICAgIGlmIChzYXZlZFRoZW1lKSB7XG4gICAgICB0aGlzLl9kYXJrTW9kZS5uZXh0KHNhdmVkVGhlbWUgPT09ICdkYXJrJyk7XG4gICAgICB0aGlzLmFwcGx5VGhlbWUoc2F2ZWRUaGVtZSA9PT0gJ2RhcmsnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2hlY2sgc3lzdGVtIHByZWZlcmVuY2VcbiAgICAgIGNvbnN0IHByZWZlcnNEYXJrID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuICAgICAgdGhpcy5fZGFya01vZGUubmV4dChwcmVmZXJzRGFyayk7XG4gICAgICB0aGlzLmFwcGx5VGhlbWUocHJlZmVyc0RhcmspO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZURhcmtNb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gIXRoaXMuX2RhcmtNb2RlLnZhbHVlO1xuICAgIHRoaXMuX2RhcmtNb2RlLm5leHQobmV3VmFsdWUpO1xuICAgIHRoaXMuYXBwbHlUaGVtZShuZXdWYWx1ZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RoZW1lJywgbmV3VmFsdWUgPyAnZGFyaycgOiAnbGlnaHQnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUaGVtZShpc0Rhcms6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNEYXJrKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2RhcmstdGhlbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdkYXJrLXRoZW1lJyk7XG4gICAgfVxuICB9XG59XG4iXX0=","// Configuraciones predefinidas mejoradas\nexport const AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG = {\n placeholder: 'Buscar...',\n disabled: false,\n debounceTime: 300,\n minSearchLength: 2,\n maxHistoryItems: 10,\n itemsPerPage: 10,\n enableStockFilter: true,\n stockProperty: 'stock',\n enablePagination: true,\n enableFilters: true,\n enableFooterActions: true,\n overlayWidth: '100%',\n overlayMaxHeight: '500px',\n noResultsText: 'No se encontraron resultados',\n sectionTitle: 'Resultados',\n searchMode: 'remote',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n stockOptions: [\n { value: 'all', label: 'Todos' },\n { value: 'with-stock', label: 'Con Stock' },\n { value: 'without-stock', label: 'Sin Stock' },\n ],\n};\nexport const AUTOCOMPLETE_WRAPPER_PRODUCT_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n noResultsText: 'No se encontraron productos',\n};\nexport const AUTOCOMPLETE_WRAPPER_CUSTOMER_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n noResultsText: 'No se encontraron clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n};\nexport const AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar...',\n enableStockFilter: false,\n enableFilters: false,\n enableFooterActions: false,\n enablePagination: false,\n itemsPerPage: 50,\n sectionTitle: 'Resultados',\n overlayMaxHeight: '300px',\n};\n// Configuración para búsqueda local\nexport const AUTOCOMPLETE_WRAPPER_LOCAL_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG,\n searchMode: 'local',\n debounceTime: 150, // Menos tiempo para búsqueda local\n minSearchLength: 1,\n};\n// Configuración para listas grandes con paginación\nexport const AUTOCOMPLETE_WRAPPER_PAGINATED_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n itemsPerPage: 20,\n enablePagination: true,\n overlayMaxHeight: '400px',\n};\n// Helper para crear configuración personalizada\nexport function createAutocompleteWrapperConfig(overrides) {\n return {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n ...overrides,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvbW9kZWxzL2F1dG9jb21wbGV0ZS13cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdLQSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQThCO0lBQzVFLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsZUFBZSxFQUFFLENBQUM7SUFDbEIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsWUFBWSxFQUFFLEVBQUU7SUFDaEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixhQUFhLEVBQUUsT0FBTztJQUN0QixnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLG1CQUFtQixFQUFFLElBQUk7SUFDekIsWUFBWSxFQUFFLE1BQU07SUFDcEIsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixhQUFhLEVBQUUsOEJBQThCO0lBQzdDLFlBQVksRUFBRSxZQUFZO0lBQzFCLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLFlBQVksRUFBRTtRQUNaLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7UUFDdkUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtRQUNwRCxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7UUFDcEUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO0tBQ3BFO0lBQ0QsWUFBWSxFQUFFO1FBQ1osRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7UUFDaEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7UUFDM0MsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7S0FDL0M7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQThCO0lBQzVFLEdBQUcsbUNBQW1DO0lBQ3RDLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLFlBQVksRUFBRSxXQUFXO0lBQ3pCLGFBQWEsRUFBRSw2QkFBNkI7Q0FDN0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUE4QjtJQUM3RSxHQUFHLG1DQUFtQztJQUN0QyxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixZQUFZLEVBQUUsVUFBVTtJQUN4QixhQUFhLEVBQUUsNEJBQTRCO0lBQzNDLFlBQVksRUFBRTtRQUNaLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDcEQsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtRQUNyRCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1FBQ3hELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7S0FDaEU7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQThCO0lBQzNFLEdBQUcsbUNBQW1DO0lBQ3RDLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLFlBQVksRUFBRSxFQUFFO0lBQ2hCLFlBQVksRUFBRSxZQUFZO0lBQzFCLGdCQUFnQixFQUFFLE9BQU87Q0FDMUIsQ0FBQztBQUVGLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBOEI7SUFDMUUsR0FBRyxrQ0FBa0M7SUFDckMsVUFBVSxFQUFFLE9BQU87SUFDbkIsWUFBWSxFQUFFLEdBQUcsRUFBRSxtQ0FBbUM7SUFDdEQsZUFBZSxFQUFFLENBQUM7Q0FDbkIsQ0FBQztBQUVGLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBOEI7SUFDOUUsR0FBRyxtQ0FBbUM7SUFDdEMsWUFBWSxFQUFFLEVBQUU7SUFDaEIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixnQkFBZ0IsRUFBRSxPQUFPO0NBQzFCLENBQUM7QUFFRixnREFBZ0Q7QUFDaEQsTUFBTSxVQUFVLCtCQUErQixDQUM3QyxTQUE2QztJQUU3QyxPQUFPO1FBQ0wsR0FBRyxtQ0FBbUM7UUFDdEMsR0FBRyxTQUFTO0tBQ2IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0ge1xuICBpZD86IHN0cmluZyB8IG51bWJlcjtcbiAgbmFtZT86IHN0cmluZztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nOyAvLyBQYXJhIG1vc3RyYXIgZW4gZWwgdGVtcGxhdGUgcG9yIGRlZmVjdG9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQge1xuICBpdGVtczogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZ1bmN0aW9uID0gKFxuICBxdWVyeTogc3RyaW5nLFxuICBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyxcbiAgcGFnZT86IG51bWJlcixcbiAgcGFnZVNpemU/OiBudW1iZXIsXG4pID0+IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyB7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBjbGVhcklucHV0PzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBkZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIG1pblNlYXJjaExlbmd0aD86IG51bWJlcjtcbiAgbWF4SGlzdG9yeUl0ZW1zPzogbnVtYmVyO1xuICBpdGVtc1BlclBhZ2U/OiBudW1iZXI7XG4gIGVuYWJsZVN0b2NrRmlsdGVyPzogYm9vbGVhbjtcbiAgc3RvY2tQcm9wZXJ0eT86IHN0cmluZztcbiAgZW5hYmxlUGFnaW5hdGlvbj86IGJvb2xlYW47XG4gIGVuYWJsZUZpbHRlcnM/OiBib29sZWFuO1xuICBlbmFibGVGb290ZXJBY3Rpb25zPzogYm9vbGVhbjtcbiAgc2VhcmNoRmllbGRzPzogQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZpZWxkW107XG4gIHN0b2NrT3B0aW9ucz86IEF1dG9jb21wbGV0ZVdyYXBwZXJTdG9ja09wdGlvbltdO1xuXG4gIC8vIENvbmZpZ3VyYWNpw7NuIGRlbCBvdmVybGF5XG4gIG92ZXJsYXlXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgb3ZlcmxheU1heEhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcblxuICAvLyBGdW5jacOzbiBkZSBiw7pzcXVlZGEgcGVyc29uYWxpemFkYVxuICBzZWFyY2hGdW5jdGlvbj86IEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbjtcblxuICAvLyBNb2RvIGRlIGLDunNxdWVkYVxuICBzZWFyY2hNb2RlPzogJ2xvY2FsJyB8ICdyZW1vdGUnIHwgJ2h5YnJpZCc7XG5cbiAgLy8gQ29uZmlndXJhY2nDs24gZGUgZGF0b3MgbG9jYWxlcyAocGFyYSBzZWFyY2hNb2RlICdsb2NhbCcgbyAnaHlicmlkJylcbiAgbG9jYWxEYXRhPzogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcblxuICAvLyBUZXh0byBwZXJzb25hbGl6YWJsZVxuICBub1Jlc3VsdHNUZXh0Pzogc3RyaW5nO1xuICBzZWN0aW9uVGl0bGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZpZWxkIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJvcGVydHk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyU3RvY2tPcHRpb24ge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzIHtcbiAgc2VhcmNoQnk6IHN0cmluZztcbiAgc3RvY2tGaWx0ZXI6IHN0cmluZztcbn1cblxuLy8gRXZlbnRvcyBxdWUgZW1pdGUgZWwgY29tcG9uZW50ZVxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyRXZlbnRzIHtcbiAgaXRlbVNlbGVjdGVkOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbTtcbiAgc2VhcmNoQ2hhbmdlZDogc3RyaW5nO1xuICBwYWdlQ2hhbmdlZDogbnVtYmVyO1xuICBmaWx0ZXJDaGFuZ2VkOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycztcbiAgYWR2YW5jZWRTZWFyY2hDbGlja2VkOiB2b2lkO1xuICBhbGxSZXN1bHRzQ2xpY2tlZDogc3RyaW5nO1xuICBjcmVhdGVOZXdDbGlja2VkOiBzdHJpbmc7IC8vIEFsaW5lYWRvIGNvbiBvbkNyZWF0ZU5ldyBkZWwgSFRNTFxuICBoaXN0b3J5Q2xlYXJlZDogdm9pZDtcbiAgaGlzdG9yeUl0ZW1SZW1vdmVkOiB7IGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtOyBpbmRleDogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlclBhZ2luYXRpb25JbmZvIHtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBzdGFydEl0ZW06IG51bWJlcjtcbiAgZW5kSXRlbTogbnVtYmVyO1xuICBoYXNOZXh0UGFnZTogYm9vbGVhbjtcbiAgaGFzUHJldmlvdXNQYWdlOiBib29sZWFuO1xufVxuXG4vLyBFc3RhZG8gaW50ZXJubyBkZWwgY29tcG9uZW50ZSAocGFyYSB1c2FyIGNvbiBzaWduYWxzKVxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyU3RhdGUge1xuICBxdWVyeTogc3RyaW5nO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIG92ZXJsYXlPcGVuOiBib29sZWFuO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHBhZ2luYXRpb246IEF1dG9jb21wbGV0ZVdyYXBwZXJQYWdpbmF0aW9uSW5mbztcbiAgaGFzUmVzdWx0czogYm9vbGVhbjtcbiAgaXNIaXN0b3J5VmlzaWJsZTogYm9vbGVhbjtcbiAgaGlzdG9yeUNvdW50OiBudW1iZXI7XG4gIGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzO1xuXG4gIC8vIEVzdGFkb3MgYWRpY2lvbmFsZXMgcXVlIGFwYXJlY2VuIGVuIGVsIEhUTUxcbiAgLy8gdG90YWxJdGVtczogbnVtYmVyO1xuICAvLyBjdXJyZW50UGFnZUl0ZW1zOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdO1xuICAvLyBoaXN0b3J5TGlzdDogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcbiAgLy8gbm9SZXN1bHRzOiBib29sZWFuO1xufVxuXG4vLyBQYXJhIG3DqXRvZG9zIGRlbCBjb21wb25lbnRlIHF1ZSBhcGFyZWNlbiBlbiBlbCBIVE1MXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJBY3Rpb25zIHtcbiAgLy8gSW5wdXQgYWN0aW9uc1xuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQ7XG4gIHNob3dPdmVybGF5KCk6IHZvaWQ7XG4gIGhpZGVPdmVybGF5KCk6IHZvaWQ7XG4gIGNsZWFyU2VhcmNoKCk6IHZvaWQ7XG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG5cbiAgLy8gSXRlbSBhY3Rpb25zXG4gIHNlbGVjdEl0ZW0oaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0pOiB2b2lkO1xuICBnZXRJdGVtRGlzcGxheVRleHQoaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0pOiBzdHJpbmc7XG5cbiAgLy8gSGlzdG9yeSBhY3Rpb25zXG4gIGNsZWFySGlzdG9yeSgpOiB2b2lkO1xuICByZW1vdmVIaXN0b3J5SXRlbShpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkO1xuXG4gIC8vIFBhZ2luYXRpb24gYWN0aW9uc1xuICBnb1RvRmlyc3RQYWdlKCk6IHZvaWQ7XG4gIGdvVG9QcmV2aW91c1BhZ2UoKTogdm9pZDtcbiAgZ29Ub05leHRQYWdlKCk6IHZvaWQ7XG4gIGdvVG9MYXN0UGFnZSgpOiB2b2lkO1xuICBnb1RvUGFnZShldmVudDogRXZlbnQpOiB2b2lkO1xuXG4gIC8vIEZpbHRlciBhY3Rpb25zXG4gIG9uRmlsdGVyQ2hhbmdlKCk6IHZvaWQ7XG5cbiAgLy8gRm9vdGVyIGFjdGlvbnNcbiAgb25DcmVhdGVOZXcoZXZlbnQ6IEV2ZW50KTogdm9pZDtcbiAgb25BZHZhbmNlZFNlYXJjaCgpOiB2b2lkO1xuICBvblNob3dBbGxSZXN1bHRzKCk6IHZvaWQ7XG5cbiAgLy8gU3RhdGUgZ2V0dGVycyAocGFyYSB1c2FyIGNvbiBzaWduYWxzKVxuICBvdmVybGF5T3BlbigpOiBib29sZWFuO1xuICBpc0xvYWRpbmcoKTogYm9vbGVhbjtcbiAgaXNIaXN0b3J5VmlzaWJsZSgpOiBib29sZWFuO1xuICBoaXN0b3J5TGlzdCgpOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdO1xuICBzZWxlY3RlZEluZGV4KCk6IG51bWJlcjtcbiAgY3VycmVudFBhZ2VJdGVtcygpOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdO1xuICB0b3RhbEl0ZW1zKCk6IG51bWJlcjtcbiAgdG90YWxQYWdlcygpOiBudW1iZXI7XG4gIGN1cnJlbnRQYWdlKCk6IG51bWJlcjtcbiAgdG90YWxDb3VudCgpOiBudW1iZXI7XG4gIHN0YXJ0SXRlbSgpOiBudW1iZXI7XG4gIGVuZEl0ZW0oKTogbnVtYmVyO1xuICBzZWN0aW9uVGl0bGUoKTogc3RyaW5nO1xuICBub1Jlc3VsdHNUZXh0KCk6IHN0cmluZztcbiAgaXNOb1Jlc3VsdHMoKTogYm9vbGVhbjtcbiAgb3ZlcmxheVdpZHRoKCk6IHN0cmluZyB8IG51bWJlcjtcbiAgb3ZlcmxheU1heEhlaWdodCgpOiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbi8vIENvbmZpZ3VyYWNpb25lcyBwcmVkZWZpbmlkYXMgbWVqb3JhZGFzXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSB7XG4gIHBsYWNlaG9sZGVyOiAnQnVzY2FyLi4uJyxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBkZWJvdW5jZVRpbWU6IDMwMCxcbiAgbWluU2VhcmNoTGVuZ3RoOiAyLFxuICBtYXhIaXN0b3J5SXRlbXM6IDEwLFxuICBpdGVtc1BlclBhZ2U6IDEwLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogdHJ1ZSxcbiAgc3RvY2tQcm9wZXJ0eTogJ3N0b2NrJyxcbiAgZW5hYmxlUGFnaW5hdGlvbjogdHJ1ZSxcbiAgZW5hYmxlRmlsdGVyczogdHJ1ZSxcbiAgZW5hYmxlRm9vdGVyQWN0aW9uczogdHJ1ZSxcbiAgb3ZlcmxheVdpZHRoOiAnMTAwJScsXG4gIG92ZXJsYXlNYXhIZWlnaHQ6ICc1MDBweCcsXG4gIG5vUmVzdWx0c1RleHQ6ICdObyBzZSBlbmNvbnRyYXJvbiByZXN1bHRhZG9zJyxcbiAgc2VjdGlvblRpdGxlOiAnUmVzdWx0YWRvcycsXG4gIHNlYXJjaE1vZGU6ICdyZW1vdGUnLFxuICBzZWFyY2hGaWVsZHM6IFtcbiAgICB7IHZhbHVlOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogJ0Rlc2NyaXBjacOzbicsIHByb3BlcnR5OiAnZGVzY3JpcHRpb24nIH0sXG4gICAgeyB2YWx1ZTogJ2NvZGUnLCBsYWJlbDogJ0PDs2RpZ28nLCBwcm9wZXJ0eTogJ2NvZGUnIH0sXG4gICAgeyB2YWx1ZTogJ2JhcmNvZGUnLCBsYWJlbDogJ0PDs2RpZ28gZGUgQmFycmFzJywgcHJvcGVydHk6ICdiYXJjb2RlJyB9LFxuICAgIHsgdmFsdWU6ICdhdXhDb2RlJywgbGFiZWw6ICdDw7NkaWdvIEF1eGlsaWFyJywgcHJvcGVydHk6ICdhdXhDb2RlJyB9LFxuICBdLFxuICBzdG9ja09wdGlvbnM6IFtcbiAgICB7IHZhbHVlOiAnYWxsJywgbGFiZWw6ICdUb2RvcycgfSxcbiAgICB7IHZhbHVlOiAnd2l0aC1zdG9jaycsIGxhYmVsOiAnQ29uIFN0b2NrJyB9LFxuICAgIHsgdmFsdWU6ICd3aXRob3V0LXN0b2NrJywgbGFiZWw6ICdTaW4gU3RvY2snIH0sXG4gIF0sXG59O1xuXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfUFJPRFVDVF9DT05GSUc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSB7XG4gIC4uLkFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLFxuICBwbGFjZWhvbGRlcjogJ0J1c2NhciBwcm9kdWN0b3MuLi4nLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogdHJ1ZSxcbiAgZW5hYmxlRm9vdGVyQWN0aW9uczogdHJ1ZSxcbiAgc2VjdGlvblRpdGxlOiAnUHJvZHVjdG9zJyxcbiAgbm9SZXN1bHRzVGV4dDogJ05vIHNlIGVuY29udHJhcm9uIHByb2R1Y3RvcycsXG59O1xuXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfQ1VTVE9NRVJfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgcGxhY2Vob2xkZXI6ICdCdXNjYXIgY2xpZW50ZXMuLi4nLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogZmFsc2UsXG4gIGVuYWJsZUZvb3RlckFjdGlvbnM6IGZhbHNlLFxuICBzZWN0aW9uVGl0bGU6ICdDbGllbnRlcycsXG4gIG5vUmVzdWx0c1RleHQ6ICdObyBzZSBlbmNvbnRyYXJvbiBjbGllbnRlcycsXG4gIHNlYXJjaEZpZWxkczogW1xuICAgIHsgdmFsdWU6ICduYW1lJywgbGFiZWw6ICdOb21icmUnLCBwcm9wZXJ0eTogJ25hbWUnIH0sXG4gICAgeyB2YWx1ZTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcsIHByb3BlcnR5OiAnZW1haWwnIH0sXG4gICAgeyB2YWx1ZTogJ3Bob25lJywgbGFiZWw6ICdUZWzDqWZvbm8nLCBwcm9wZXJ0eTogJ3Bob25lJyB9LFxuICAgIHsgdmFsdWU6ICdkb2N1bWVudCcsIGxhYmVsOiAnRG9jdW1lbnRvJywgcHJvcGVydHk6ICdkb2N1bWVudCcgfSxcbiAgXSxcbn07XG5cbmV4cG9ydCBjb25zdCBBVVRPQ09NUExFVEVfV1JBUFBFUl9TSU1QTEVfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgcGxhY2Vob2xkZXI6ICdCdXNjYXIuLi4nLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogZmFsc2UsXG4gIGVuYWJsZUZpbHRlcnM6IGZhbHNlLFxuICBlbmFibGVGb290ZXJBY3Rpb25zOiBmYWxzZSxcbiAgZW5hYmxlUGFnaW5hdGlvbjogZmFsc2UsXG4gIGl0ZW1zUGVyUGFnZTogNTAsXG4gIHNlY3Rpb25UaXRsZTogJ1Jlc3VsdGFkb3MnLFxuICBvdmVybGF5TWF4SGVpZ2h0OiAnMzAwcHgnLFxufTtcblxuLy8gQ29uZmlndXJhY2nDs24gcGFyYSBiw7pzcXVlZGEgbG9jYWxcbmV4cG9ydCBjb25zdCBBVVRPQ09NUExFVEVfV1JBUFBFUl9MT0NBTF9DT05GSUc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSB7XG4gIC4uLkFVVE9DT01QTEVURV9XUkFQUEVSX1NJTVBMRV9DT05GSUcsXG4gIHNlYXJjaE1vZGU6ICdsb2NhbCcsXG4gIGRlYm91bmNlVGltZTogMTUwLCAvLyBNZW5vcyB0aWVtcG8gcGFyYSBiw7pzcXVlZGEgbG9jYWxcbiAgbWluU2VhcmNoTGVuZ3RoOiAxLFxufTtcblxuLy8gQ29uZmlndXJhY2nDs24gcGFyYSBsaXN0YXMgZ3JhbmRlcyBjb24gcGFnaW5hY2nDs25cbmV4cG9ydCBjb25zdCBBVVRPQ09NUExFVEVfV1JBUFBFUl9QQUdJTkFURURfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgaXRlbXNQZXJQYWdlOiAyMCxcbiAgZW5hYmxlUGFnaW5hdGlvbjogdHJ1ZSxcbiAgb3ZlcmxheU1heEhlaWdodDogJzQwMHB4Jyxcbn07XG5cbi8vIEhlbHBlciBwYXJhIGNyZWFyIGNvbmZpZ3VyYWNpw7NuIHBlcnNvbmFsaXphZGFcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnKFxuICBvdmVycmlkZXM6IFBhcnRpYWw8QXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZz4sXG4pOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH07XG59XG5cbi8vIFRpcG9zIHBhcmEgZWwgY29tcG9uZW50ZSBBbmd1bGFyXG5leHBvcnQgaW50ZXJmYWNlIFJldXNhYmxlQXV0b2NvbXBsZXRlV3JhcHBlckNvbXBvbmVudCBleHRlbmRzIEF1dG9jb21wbGV0ZVdyYXBwZXJBY3Rpb25zIHtcbiAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnO1xuICBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycztcbiAgcXVlcnk6IHN0cmluZztcbn1cblxuLy8gVGlwb3MgZGUgdXRpbGlkYWQgZXNwZWPDrWZpY29zIGRlbCB3cmFwcGVyXG5leHBvcnQgdHlwZSBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoTW9kZSA9ICdsb2NhbCcgfCAncmVtb3RlJyB8ICdoeWJyaWQnO1xuXG5leHBvcnQgdHlwZSBBdXRvY29tcGxldGVXcmFwcGVySXRlbVByb3BlcnR5ID0ga2V5b2YgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW07XG5cbmV4cG9ydCB0eXBlIEF1dG9jb21wbGV0ZVdyYXBwZXJFdmVudEhhbmRsZXI8VCA9IGFueT4gPSAoZXZlbnQ6IFQpID0+IHZvaWQ7XG4iXX0=","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, of, delay, map } from 'rxjs';\nimport { AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, } from '../models/autocomplete-wrapper';\nimport * as i0 from \"@angular/core\";\nexport class AutocompleteWrapperService {\n historySubject = new BehaviorSubject([]);\n history$ = this.historySubject.asObservable();\n constructor() {\n this.loadHistoryFromStorage();\n }\n // Búsqueda local (sin API)\n searchLocal(items, query, filters, config) {\n const filtered = this.filterItems(items, query, filters, config);\n const page = 1; // Para búsqueda local, asumimos página 1\n const pageSize = config.itemsPerPage || 10;\n const startIndex = (page - 1) * pageSize;\n const pageItems = filtered.slice(startIndex, startIndex + pageSize);\n return of({\n items: pageItems,\n totalCount: filtered.length,\n hasMore: filtered.length > startIndex + pageSize,\n });\n }\n // Filtrar elementos basado en query y filtros\n filterItems(items, query, filters, config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG) {\n if (!query || query.length < (config.minSearchLength || 2)) {\n return [];\n }\n let filteredItems = items.filter(item => {\n if (item && typeof item === 'string') {\n return true;\n }\n // Buscar por el campo seleccionado\n const searchValue = this.getSearchValue(item, filters.searchBy, config);\n return searchValue.toLowerCase().includes(query.toLowerCase());\n });\n // Aplicar filtro de stock si está habilitado\n if (config.enableStockFilter && filters.stockFilter !== 'all') {\n filteredItems = filteredItems.filter(item => {\n if (typeof item === 'string')\n return true;\n const stockValue = item[config.stockProperty || 'stock'];\n const hasStock = stockValue !== undefined && stockValue !== null && stockValue > 0;\n return filters.stockFilter === 'with-stock' ? hasStock : !hasStock;\n });\n }\n return filteredItems;\n }\n // Simular búsqueda asíncrona\n searchAsync(items, query, filters, config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG) {\n const results = this.filterItems(items, query, filters, config);\n return of(results).pipe(delay(100)); // Simular delay de API\n }\n // Obtener valor de búsqueda según el campo seleccionado\n getSearchValue(item, searchBy, config) {\n const searchField = config.searchFields?.find(field => field.value === searchBy);\n if (searchField) {\n return item[searchField.property] || '';\n }\n // Fallback a la lógica anterior\n switch (searchBy) {\n case 'description':\n return item['description'] || '';\n case 'code':\n return item['code'] || item.id?.toString() || '';\n case 'barcode':\n return item['barcode'] || '';\n case 'auxCode':\n return item['auxCode'] || '';\n case 'email':\n return item['email'] || '';\n case 'phone':\n return item['phone'] || '';\n case 'document':\n return item['document'] || '';\n case 'name':\n default:\n return item.name || item.value || '';\n }\n }\n // Gestión de historial específico del wrapper\n addToHistory(item, maxItems = 10) {\n const currentHistory = this.historySubject.value;\n // Remover si ya existe\n const filteredHistory = currentHistory.filter(historyItem => {\n if (typeof item === 'string' && typeof historyItem === 'string') {\n return item !== historyItem;\n }\n else if (typeof item === 'object' && typeof historyItem === 'object') {\n return (item.id || item.name) !== (historyItem.id || historyItem.name);\n }\n return true;\n });\n // Agregar al inicio\n const newHistory = [item, ...filteredHistory].slice(0, maxItems);\n this.historySubject.next(newHistory);\n this.saveHistoryToStorage(newHistory);\n }\n removeFromHistory(index) {\n const currentHistory = this.historySubject.value;\n currentHistory.splice(index, 1);\n this.historySubject.next([...currentHistory]);\n this.saveHistoryToStorage(currentHistory);\n }\n clearHistory() {\n this.historySubject.next([]);\n this.saveHistoryToStorage([]);\n }\n getHistory() {\n return this.historySubject.value;\n }\n // Gestión de almacenamiento específico del wrapper\n loadHistoryFromStorage() {\n try {\n const stored = localStorage.getItem('autocomplete_wrapper_history');\n if (stored) {\n const history = JSON.parse(stored);\n this.historySubject.next(history);\n }\n }\n catch (error) {\n console.warn('Error loading autocomplete wrapper history:', error);\n }\n }\n saveHistoryToStorage(history) {\n try {\n localStorage.setItem('autocomplete_wrapper_history', JSON.stringify(history));\n }\n catch (error) {\n console.warn('Error saving autocomplete wrapper history:', error);\n }\n }\n // Paginación\n paginateItems(items, page, itemsPerPage) {\n const startIndex = (page - 1) * itemsPerPage;\n const endIndex = startIndex + itemsPerPage;\n return items.slice(startIndex, endIndex);\n }\n getTotalPages(totalItems, itemsPerPage) {\n return Math.ceil(totalItems / itemsPerPage) || 1;\n }\n // Validaciones\n isValidPage(page, totalPages) {\n return page >= 1 && page <= totalPages;\n }\n // Utilidades para templates\n highlightText(text, query) {\n if (!query || !text)\n return text;\n const regex = new RegExp(`(${query})`, 'gi');\n return text.replace(regex, '<mark>$1</mark>');\n }\n getItemDisplayText(item, displayField = 'nombre') {\n if (typeof item === 'string')\n return item;\n return item[displayField] || item.name || item.value || item.id?.toString() || '';\n }\n // Configuración dinámica\n mergeConfig(userConfig) {\n return { ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, ...userConfig };\n }\n // Factory para crear función de búsqueda genérica\n createGenericSearchFunction(config) {\n return (query, filters, page = 1, pageSize = 10) => {\n const { searchBy, ...rest } = filters;\n const params = {\n [config.queryParam || 'q']: query,\n [config.searchByParam || 'searchBy']: searchBy,\n [config.pageParam || 'page']: page,\n [config.pageSizeParam || 'pageSize']: pageSize,\n ...rest,\n };\n return config.search(params).pipe(map(response => {\n if (config.responseMapper) {\n return config.responseMapper(response);\n }\n // Mapper por defecto\n const items = response.data || response.items || response;\n const totalRecords = response.totalRecords || response.totalCount || response.total || 0;\n return {\n items,\n totalCount: totalRecords,\n hasMore: response.hasMore || false,\n };\n }));\n };\n }\n // Función para crear datos de ejemplo/mock específicos del wrapper\n createMockData() {\n return [\n {\n id: 1,\n name: 'iPhone 14 Pro 128GB',\n description: 'Smartphone Apple con chip A16 Bionic y cámara Pro',\n code: 'IP14P-128',\n barcode: '1234567890123',\n auxCode: 'APL-IP14P-128',\n stock: 15,\n category: 'Smartphones',\n brand: 'Apple',\n unit: 'unidad',\n prices: [\n {\n id: 1,\n type: 'retail',\n label: 'Público',\n value: 999,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 2,\n type: 'wholesale',\n label: 'Mayorista',\n value: 850,\n currency: 'USD',\n minQuantity: 5,\n includesTax: false,\n isActive: true,\n },\n {\n id: 3,\n type: 'vip',\n label: 'VIP',\n value: 899,\n currency: 'USD',\n includesTax: true,\n isActive: true,\n },\n {\n id: 4,\n type: 'promotional',\n label: 'Black Friday',\n value: 749,\n currency: 'USD',\n validFrom: new Date('2024-11-24'),\n validTo: new Date('2024-11-30'),\n includesTax: true,\n isActive: true,\n },\n ],\n },\n {\n id: 2,\n name: 'Samsung Galaxy S23 256GB',\n description: 'Flagship Android con cámara de 200MP',\n code: 'SGS23-256',\n barcode: '2345678901234',\n auxCode: 'SAM-GS23-256',\n stock: 0,\n category: 'Smartphones',\n brand: 'Samsung',\n unit: 'unidad',\n images: [\n {\n id: 1,\n url: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=200',\n alt: 'Samsung Galaxy S23 frontal',\n type: 'main',\n isPrimary: true,\n order: 1,\n },\n {\n id: 2,\n url: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=200',\n alt: 'Samsung Galaxy S23 trasero',\n type: 'gallery',\n order: 2,\n },\n ],\n badges: [{ type: 'new', text: 'NUEVO' }, { type: 'bestseller' }],\n prices: [\n {\n id: 5,\n type: 'retail',\n label: 'Público',\n value: 799,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 6,\n type: 'wholesale',\n label: 'Mayorista',\n value: 679,\n currency: 'USD',\n minQuantity: 3,\n includesTax: false,\n isActive: true,\n },\n ],\n },\n ];\n }\n // Métodos específicos para diferentes tipos de búsqueda\n searchProducts(query, filters = {}) {\n const defaultFilters = {\n searchBy: 'description',\n stockFilter: 'all',\n ...filters,\n };\n const mockData = this.createMockData();\n return this.searchLocal(mockData, query, defaultFilters, AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG);\n }\n // Crear configuración específica para diferentes casos de uso\n createProductSearchConfig() {\n return this.mergeConfig({\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n });\n }\n createCustomerSearchConfig() {\n return this.mergeConfig({\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AutocompleteWrapperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AutocompleteWrapperService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AutocompleteWrapperService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRvY29tcGxldGUtd3JhcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQ0wsbUNBQW1DLEdBTXBDLE1BQU0sZ0NBQWdDLENBQUM7O0FBS3hDLE1BQU0sT0FBTywwQkFBMEI7SUFDN0IsY0FBYyxHQUFHLElBQUksZUFBZSxDQUE0QixFQUFFLENBQUMsQ0FBQztJQUNyRSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVyRDtRQUNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsV0FBVyxDQUNULEtBQWdDLEVBQ2hDLEtBQWEsRUFDYixPQUFtQyxFQUNuQyxNQUFpQztRQUVqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztRQUN6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLFFBQVEs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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ3BELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ3JELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ3hELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7YUFDaEU7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTVZVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZGVsYXksIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcsXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzLFxuICBBdXRvY29tcGxldGVXcmFwcGVySXRlbSxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZ1bmN0aW9uLFxuICBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoUmVzdWx0LFxufSBmcm9tICcuLi9tb2RlbHMvYXV0b2NvbXBsZXRlLXdyYXBwZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlV3JhcHBlclNlcnZpY2Uge1xuICBwcml2YXRlIGhpc3RvcnlTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdPihbXSk7XG4gIHB1YmxpYyBoaXN0b3J5JCA9IHRoaXMuaGlzdG9yeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2FkSGlzdG9yeUZyb21TdG9yYWdlKCk7XG4gIH1cblxuICAvLyBCw7pzcXVlZGEgbG9jYWwgKHNpbiBBUEkpXG4gIHNlYXJjaExvY2FsKFxuICAgIGl0ZW1zOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMsXG4gICAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnLFxuICApOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQ+IHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVySXRlbXMoaXRlbXMsIHF1ZXJ5LCBmaWx0ZXJzLCBjb25maWcpO1xuICAgIGNvbnN0IHBhZ2UgPSAxOyAvLyBQYXJhIGLDunNxdWVkYSBsb2NhbCwgYXN1bWltb3MgcMOhZ2luYSAxXG4gICAgY29uc3QgcGFnZVNpemUgPSBjb25maWcuaXRlbXNQZXJQYWdlIHx8IDEwO1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZSAtIDEpICogcGFnZVNpemU7XG4gICAgY29uc3QgcGFnZUl0ZW1zID0gZmlsdGVyZWQuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHBhZ2VTaXplKTtcblxuICAgIHJldHVybiBvZih7XG4gICAgICBpdGVtczogcGFnZUl0ZW1zLFxuICAgICAgdG90YWxDb3VudDogZmlsdGVyZWQubGVuZ3RoLFxuICAgICAgaGFzTW9yZTogZmlsdGVyZWQubGVuZ3RoID4gc3RhcnRJbmRleCArIHBhZ2VTaXplLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gRmlsdHJhciBlbGVtZW50b3MgYmFzYWRvIGVuIHF1ZXJ5IHkgZmlsdHJvc1xuICBmaWx0ZXJJdGVtcyhcbiAgICBpdGVtczogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXSxcbiAgICBxdWVyeTogc3RyaW5nLFxuICAgIGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzLFxuICAgIGNvbmZpZzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyA9IEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLFxuICApOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdIHtcbiAgICBpZiAoIXF1ZXJ5IHx8IHF1ZXJ5Lmxlbmd0aCA8IChjb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1c2NhciBwb3IgZWwgY2FtcG8gc2VsZWNjaW9uYWRvXG4gICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMuZ2V0U2VhcmNoVmFsdWUoaXRlbSwgZmlsdGVycy5zZWFyY2hCeSwgY29uZmlnKTtcbiAgICAgIHJldHVybiBzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgLy8gQXBsaWNhciBmaWx0cm8gZGUgc3RvY2sgc2kgZXN0w6EgaGFiaWxpdGFkb1xuICAgIGlmIChjb25maWcuZW5hYmxlU3RvY2tGaWx0ZXIgJiYgZmlsdGVycy5zdG9ja0ZpbHRlciAhPT0gJ2FsbCcpIHtcbiAgICAgIGZpbHRlcmVkSXRlbXMgPSBmaWx0ZXJlZEl0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY29uc3Qgc3RvY2tWYWx1ZSA9IGl0ZW1bY29uZmlnLnN0b2NrUHJvcGVydHkgfHwgJ3N0b2NrJ107XG4gICAgICAgIGNvbnN0IGhhc1N0b2NrID0gc3RvY2tWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHN0b2NrVmFsdWUgIT09IG51bGwgJiYgc3RvY2tWYWx1ZSA+IDA7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcnMuc3RvY2tGaWx0ZXIgPT09ICd3aXRoLXN0b2NrJyA/IGhhc1N0b2NrIDogIWhhc1N0b2NrO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkSXRlbXM7XG4gIH1cblxuICAvLyBTaW11bGFyIGLDunNxdWVkYSBhc8OtbmNyb25hXG4gIHNlYXJjaEFzeW5jKFxuICAgIGl0ZW1zOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMsXG4gICAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0gQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gICk6IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXT4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmZpbHRlckl0ZW1zKGl0ZW1zLCBxdWVyeSwgZmlsdGVycywgY29uZmlnKTtcbiAgICByZXR1cm4gb2YocmVzdWx0cykucGlwZShkZWxheSgxMDApKTsgLy8gU2ltdWxhciBkZWxheSBkZSBBUElcbiAgfVxuXG4gIC8vIE9idGVuZXIgdmFsb3IgZGUgYsO6c3F1ZWRhIHNlZ8O6biBlbCBjYW1wbyBzZWxlY2Npb25hZG9cbiAgcHJpdmF0ZSBnZXRTZWFyY2hWYWx1ZShcbiAgICBpdGVtOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbSxcbiAgICBzZWFyY2hCeTogc3RyaW5nLFxuICAgIGNvbmZpZzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWFyY2hGaWVsZCA9IGNvbmZpZy5zZWFyY2hGaWVsZHM/LmZpbmQoZmllbGQgPT4gZmllbGQudmFsdWUgPT09IHNlYXJjaEJ5KTtcbiAgICBpZiAoc2VhcmNoRmllbGQpIHtcbiAgICAgIHJldHVybiBpdGVtW3NlYXJjaEZpZWxkLnByb3BlcnR5XSB8fCAnJztcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBhIGxhIGzDs2dpY2EgYW50ZXJpb3JcbiAgICBzd2l0Y2ggKHNlYXJjaEJ5KSB7XG4gICAgICBjYXNlICdkZXNjcmlwdGlvbic6XG4gICAgICAgIHJldHVybiBpdGVtWydkZXNjcmlwdGlvbiddIHx8ICcnO1xuICAgICAgY2FzZSAnY29kZSc6XG4gICAgICAgIHJldHVybiBpdGVtWydjb2RlJ10gfHwgaXRlbS5pZD8udG9TdHJpbmcoKSB8fCAnJztcbiAgICAgIGNhc2UgJ2JhcmNvZGUnOlxuICAgICAgICByZXR1cm4gaXRlbVsnYmFyY29kZSddIHx8ICcnO1xuICAgICAgY2FzZSAnYXV4Q29kZSc6XG4gICAgICAgIHJldHVybiBpdGVtWydhdXhDb2RlJ10gfHwgJyc7XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgIHJldHVybiBpdGVtWydlbWFpbCddIHx8ICcnO1xuICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICByZXR1cm4gaXRlbVsncGhvbmUnXSB8fCAnJztcbiAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2RvY3VtZW50J10gfHwgJyc7XG4gICAgICBjYXNlICduYW1lJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBpdGVtLm5hbWUgfHwgaXRlbS52YWx1ZSB8fCAnJztcbiAgICB9XG4gIH1cblxuICAvLyBHZXN0acOzbiBkZSBoaXN0b3JpYWwgZXNwZWPDrWZpY28gZGVsIHdyYXBwZXJcbiAgYWRkVG9IaXN0b3J5KGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtLCBtYXhJdGVtcyA9IDEwKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEhpc3RvcnkgPSB0aGlzLmhpc3RvcnlTdWJqZWN0LnZhbHVlO1xuXG4gICAgLy8gUmVtb3ZlciBzaSB5YSBleGlzdGVcbiAgICBjb25zdCBmaWx0ZXJlZEhpc3RvcnkgPSBjdXJyZW50SGlzdG9yeS5maWx0ZXIoaGlzdG9yeUl0ZW0gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgaGlzdG9yeUl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBpdGVtICE9PSBoaXN0b3J5SXRlbTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHR5cGVvZiBoaXN0b3J5SXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIChpdGVtLmlkIHx8IGl0ZW0ubmFtZSkgIT09IChoaXN0b3J5SXRlbS5pZCB8fCBoaXN0b3J5SXRlbS5uYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgLy8gQWdyZWdhciBhbCBpbmljaW9cbiAgICBjb25zdCBuZXdIaXN0b3J5ID0gW2l0ZW0sIC4uLmZpbHRlcmVkSGlzdG9yeV0uc2xpY2UoMCwgbWF4SXRlbXMpO1xuXG4gICAgdGhpcy5oaXN0b3J5U3ViamVjdC5uZXh0KG5ld0hpc3RvcnkpO1xuICAgIHRoaXMuc2F2ZUhpc3RvcnlUb1N0b3JhZ2UobmV3SGlzdG9yeSk7XG4gIH1cblxuICByZW1vdmVGcm9tSGlzdG9yeShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEhpc3RvcnkgPSB0aGlzLmhpc3RvcnlTdWJqZWN0LnZhbHVlO1xuICAgIGN1cnJlbnRIaXN0b3J5LnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5oaXN0b3J5U3ViamVjdC5uZXh0KFsuLi5jdXJyZW50SGlzdG9yeV0pO1xuICAgIHRoaXMuc2F2ZUhpc3RvcnlUb1N0b3JhZ2UoY3VycmVudEhpc3RvcnkpO1xuICB9XG5cbiAgY2xlYXJIaXN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeVN1YmplY3QubmV4dChbXSk7XG4gICAgdGhpcy5zYXZlSGlzdG9yeVRvU3RvcmFnZShbXSk7XG4gIH1cblxuICBnZXRIaXN0b3J5KCk6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmhpc3RvcnlTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgLy8gR2VzdGnDs24gZGUgYWxtYWNlbmFtaWVudG8gZXNwZWPDrWZpY28gZGVsIHdyYXBwZXJcbiAgcHJpdmF0ZSBsb2FkSGlzdG9yeUZyb21TdG9yYWdlKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXV0b2NvbXBsZXRlX3dyYXBwZXJfaGlzdG9yeScpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gSlNPTi5wYXJzZShzdG9yZWQpO1xuICAgICAgICB0aGlzLmhpc3RvcnlTdWJqZWN0Lm5leHQoaGlzdG9yeSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXJyb3IgbG9hZGluZyBhdXRvY29tcGxldGUgd3JhcHBlciBoaXN0b3J5OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVIaXN0b3J5VG9TdG9yYWdlKGhpc3Rvcnk6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10pOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F1dG9jb21wbGV0ZV93cmFwcGVyX2hpc3RvcnknLCBKU09OLnN0cmluZ2lmeShoaXN0b3J5KSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXJyb3Igc2F2aW5nIGF1dG9jb21wbGV0ZSB3cmFwcGVyIGhpc3Rvcnk6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2luYWNpw7NuXG4gIHBhZ2luYXRlSXRlbXM8VD4oaXRlbXM6IFRbXSwgcGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcik6IFRbXSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChwYWdlIC0gMSkgKiBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgaXRlbXNQZXJQYWdlO1xuICAgIHJldHVybiBpdGVtcy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gIH1cblxuICBnZXRUb3RhbFBhZ2VzKHRvdGFsSXRlbXM6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmNlaWwodG90YWxJdGVtcyAvIGl0ZW1zUGVyUGFnZSkgfHwgMTtcbiAgfVxuXG4gIC8vIFZhbGlkYWNpb25lc1xuICBpc1ZhbGlkUGFnZShwYWdlOiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwYWdlID49IDEgJiYgcGFnZSA8PSB0b3RhbFBhZ2VzO1xuICB9XG5cbiAgLy8gVXRpbGlkYWRlcyBwYXJhIHRlbXBsYXRlc1xuICBoaWdobGlnaHRUZXh0KHRleHQ6IHN0cmluZywgcXVlcnk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFxdWVyeSB8fCAhdGV4dCkgcmV0dXJuIHRleHQ7XG5cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYCgke3F1ZXJ5fSlgLCAnZ2knKTtcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlZ2V4LCAnPG1hcms+JDE8L21hcms+Jyk7XG4gIH1cblxuICBnZXRJdGVtRGlzcGxheVRleHQoaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0sIGRpc3BsYXlGaWVsZCA9ICdub21icmUnKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSByZXR1cm4gaXRlbTtcbiAgICByZXR1cm4gaXRlbVtkaXNwbGF5RmllbGRdIHx8IGl0ZW0ubmFtZSB8fCBpdGVtLnZhbHVlIHx8IGl0ZW0uaWQ/LnRvU3RyaW5nKCkgfHwgJyc7XG4gIH1cblxuICAvLyBDb25maWd1cmFjacOzbiBkaW7DoW1pY2FcbiAgbWVyZ2VDb25maWcodXNlckNvbmZpZzogUGFydGlhbDxBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnPik6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcge1xuICAgIHJldHVybiB7IC4uLkFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLCAuLi51c2VyQ29uZmlnIH07XG4gIH1cblxuICAvLyBGYWN0b3J5IHBhcmEgY3JlYXIgZnVuY2nDs24gZGUgYsO6c3F1ZWRhIGdlbsOpcmljYVxuICBjcmVhdGVHZW5lcmljU2VhcmNoRnVuY3Rpb24oY29uZmlnOiB7XG4gICAgc2VhcmNoOiAocGFyYW1zOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcbiAgICBxdWVyeVBhcmFtPzogc3RyaW5nO1xuICAgIHNlYXJjaEJ5UGFyYW0/OiBzdHJpbmc7XG4gICAgcGFnZVBhcmFtPzogc3RyaW5nO1xuICAgIHBhZ2VTaXplUGFyYW0/OiBzdHJpbmc7XG4gICAgcmVzcG9uc2VNYXBwZXI/OiAocmVzcG9uc2U6IGFueSkgPT4gQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdDtcbiAgfSk6IEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbiB7XG4gICAgcmV0dXJuIChxdWVyeTogc3RyaW5nLCBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycywgcGFnZSA9IDEsIHBhZ2VTaXplID0gMTApID0+IHtcbiAgICAgIGNvbnN0IHsgc2VhcmNoQnksIC4uLnJlc3QgfSA9IGZpbHRlcnM7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIFtjb25maWcucXVlcnlQYXJhbSB8fCAncSddOiBxdWVyeSxcbiAgICAgICAgW2NvbmZpZy5zZWFyY2hCeVBhcmFtIHx8ICdzZWFyY2hCeSddOiBzZWFyY2hCeSxcbiAgICAgICAgW2NvbmZpZy5wYWdlUGFyYW0gfHwgJ3BhZ2UnXTogcGFnZSxcbiAgICAgICAgW2NvbmZpZy5wYWdlU2l6ZVBhcmFtIHx8ICdwYWdlU2l6ZSddOiBwYWdlU2l6ZSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjb25maWcuc2VhcmNoKHBhcmFtcykucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAoY29uZmlnLnJlc3BvbnNlTWFwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnJlc3BvbnNlTWFwcGVyKHJlc3BvbnNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBNYXBwZXIgcG9yIGRlZmVjdG9cbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmRhdGEgfHwgcmVzcG9uc2UuaXRlbXMgfHwgcmVzcG9uc2U7XG4gICAgICAgICAgY29uc3QgdG90YWxSZWNvcmRzID0gcmVzcG9uc2UudG90YWxSZWNvcmRzIHx8IHJlc3BvbnNlLnRvdGFsQ291bnQgfHwgcmVzcG9uc2UudG90YWwgfHwgMDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICB0b3RhbENvdW50OiB0b3RhbFJlY29yZHMsXG4gICAgICAgICAgICBoYXNNb3JlOiByZXNwb25zZS5oYXNNb3JlIHx8IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gRnVuY2nDs24gcGFyYSBjcmVhciBkYXRvcyBkZSBlamVtcGxvL21vY2sgZXNwZWPDrWZpY29zIGRlbCB3cmFwcGVyXG4gIGNyZWF0ZU1vY2tEYXRhKCk6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAxLFxuICAgICAgICBuYW1lOiAnaVBob25lIDE0IFBybyAxMjhHQicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU21hcnRwaG9uZSBBcHBsZSBjb24gY2hpcCBBMTYgQmlvbmljIHkgY8OhbWFyYSBQcm8nLFxuICAgICAgICBjb2RlOiAnSVAxNFAtMTI4JyxcbiAgICAgICAgYmFyY29kZTogJzEyMzQ1Njc4OTAxMjMnLFxuICAgICAgICBhdXhDb2RlOiAnQVBMLUlQMTRQLTEyOCcsXG4gICAgICAgIHN0b2NrOiAxNSxcbiAgICAgICAgY2F0ZWdvcnk6ICdTbWFydHBob25lcycsXG4gICAgICAgIGJyYW5kOiAnQXBwbGUnLFxuICAgICAgICB1bml0OiAndW5pZGFkJyxcbiAgICAgICAgcHJpY2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICB0eXBlOiAncmV0YWlsJyxcbiAgICAgICAgICAgIGxhYmVsOiAnUMO6YmxpY28nLFxuICAgICAgICAgICAgdmFsdWU6IDk5OSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICAgIGluY2x1ZGVzVGF4OiB0cnVlLFxuICAgICAgICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogMixcbiAgICAgICAgICAgIHR5cGU6ICd3aG9sZXNhbGUnLFxuICAgICAgICAgICAgbGFiZWw6ICdNYXlvcmlzdGEnLFxuICAgICAgICAgICAgdmFsdWU6IDg1MCxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICAgIG1pblF1YW50aXR5OiA1LFxuICAgICAgICAgICAgaW5jbHVkZXNUYXg6IGZhbHNlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogMyxcbiAgICAgICAgICAgIHR5cGU6ICd2aXAnLFxuICAgICAgICAgICAgbGFiZWw6ICdWSVAnLFxuICAgICAgICAgICAgdmFsdWU6IDg5OSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICAgIGluY2x1ZGVzVGF4OiB0cnVlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogNCxcbiAgICAgICAgICAgIHR5cGU6ICdwcm9tb3Rpb25hbCcsXG4gICAgICAgICAgICBsYWJlbDogJ0JsYWNrIEZyaWRheScsXG4gICAgICAgICAgICB2YWx1ZTogNzQ5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgdmFsaWRGcm9tOiBuZXcgRGF0ZSgnMjAyNC0xMS0yNCcpLFxuICAgICAgICAgICAgdmFsaWRUbzogbmV3IERhdGUoJzIwMjQtMTEtMzAnKSxcbiAgICAgICAgICAgIGluY2x1ZGVzVGF4OiB0cnVlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAyLFxuICAgICAgICBuYW1lOiAnU2Ftc3VuZyBHYWxheHkgUzIzIDI1NkdCJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGbGFnc2hpcCBBbmRyb2lkIGNvbiBjw6FtYXJhIGRlIDIwME1QJyxcbiAgICAgICAgY29kZTogJ1NHUzIzLTI1NicsXG4gICAgICAgIGJhcmNvZGU6ICcyMzQ1Njc4OTAxMjM0JyxcbiAgICAgICAgYXV4Q29kZTogJ1NBTS1HUzIzLTI1NicsXG4gICAgICAgIHN0b2NrOiAwLFxuICAgICAgICBjYXRlZ29yeTogJ1NtYXJ0cGhvbmVzJyxcbiAgICAgICAgYnJhbmQ6ICdTYW1zdW5nJyxcbiAgICAgICAgdW5pdDogJ3VuaWRhZCcsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1OTI3NTA0NzUzMzgtNzRiN2IyMTA4NWFiP3c9NDAwJyxcbiAgICAgICAgICAgIHRodW1ibmFpbFVybDogJ2h0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTkyNzUwNDc1MzM4LTc0YjdiMjEwODVhYj93PTIwMCcsXG4gICAgICAgICAgICBhbHQ6ICdTYW1zdW5nIEdhbGF4eSBTMjMgZnJvbnRhbCcsXG4gICAgICAgICAgICB0eXBlOiAnbWFpbicsXG4gICAgICAgICAgICBpc1ByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1NzQ3NTUzOTM4NDktNjIzOTQyNDk2OTM2P3c9NDAwJyxcbiAgICAgICAgICAgIHRodW1ibmFpbFVybDogJ2h0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTc0NzU1MzkzODQ5LTYyMzk0MjQ5NjkzNj93PTIwMCcsXG4gICAgICAgICAgICBhbHQ6ICdTYW1zdW5nIEdhbGF4eSBTMjMgdHJhc2VybycsXG4gICAgICAgICAgICB0eXBlOiAnZ2FsbGVyeScsXG4gICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBiYWRnZXM6IFt7IHR5cGU6ICduZXcnLCB0ZXh0OiAnTlVFVk8nIH0sIHsgdHlwZTogJ2Jlc3RzZWxsZXInIH1dLFxuICAgICAgICBwcmljZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogNSxcbiAgICAgICAgICAgIHR5cGU6ICdyZXRhaWwnLFxuICAgICAgICAgICAgbGFiZWw6ICdQw7pibGljbycsXG4gICAgICAgICAgICB2YWx1ZTogNzk5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgaW5jbHVkZXNUYXg6IHRydWUsXG4gICAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA2LFxuICAgICAgICAgICAgdHlwZTogJ3dob2xlc2FsZScsXG4gICAgICAgICAgICBsYWJlbDogJ01heW9yaXN0YScsXG4gICAgICAgICAgICB2YWx1ZTogNjc5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgbWluUXVhbnRpdHk6IDMsXG4gICAgICAgICAgICBpbmNsdWRlc1RheDogZmFsc2UsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLy8gTcOpdG9kb3MgZXNwZWPDrWZpY29zIHBhcmEgZGlmZXJlbnRlcyB0aXBvcyBkZSBiw7pzcXVlZGFcbiAgc2VhcmNoUHJvZHVjdHMoXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBmaWx0ZXJzOiBQYXJ0aWFsPEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzPiA9IHt9LFxuICApOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQ+IHtcbiAgICBjb25zdCBkZWZhdWx0RmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMgPSB7XG4gICAgICBzZWFyY2hCeTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIHN0b2NrRmlsdGVyOiAnYWxsJyxcbiAgICAgIC4uLmZpbHRlcnMsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vY2tEYXRhID0gdGhpcy5jcmVhdGVNb2NrRGF0YSgpO1xuICAgIHJldHVybiB0aGlzLnNlYXJjaExvY2FsKG1vY2tEYXRhLCBxdWVyeSwgZGVmYXVsdEZpbHRlcnMsIEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHKTtcbiAgfVxuXG4gIC8vIENyZWFyIGNvbmZpZ3VyYWNpw7NuIGVzcGVjw61maWNhIHBhcmEgZGlmZXJlbnRlcyBjYXNvcyBkZSB1c29cbiAgY3JlYXRlUHJvZHVjdFNlYXJjaENvbmZpZygpOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZUNvbmZpZyh7XG4gICAgICBwbGFjZWhvbGRlcjogJ0J1c2NhciBwcm9kdWN0b3MuLi4nLFxuICAgICAgZW5hYmxlU3RvY2tGaWx0ZXI6IHRydWUsXG4gICAgICBlbmFibGVGb290ZXJBY3Rpb25zOiB0cnVlLFxuICAgICAgc2VjdGlvblRpdGxlOiAnUHJvZHVjdG9zJyxcbiAgICAgIHNlYXJjaEZpZWxkczogW1xuICAgICAgICB7IHZhbHVlOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogJ0Rlc2NyaXBjacOzbicsIHByb3BlcnR5OiAnZGVzY3JpcHRpb24nIH0sXG4gICAgICAgIHsgdmFsdWU6ICdjb2RlJywgbGFiZWw6ICdDw7NkaWdvJywgcHJvcGVydHk6ICdjb2RlJyB9LFxuICAgICAgICB7IHZhbHVlOiAnYmFyY29kZScsIGxhYmVsOiAnQ8OzZGlnbyBkZSBCYXJyYXMnLCBwcm9wZXJ0eTogJ2JhcmNvZGUnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdhdXhDb2RlJywgbGFiZWw6ICdDw7NkaWdvIEF1eGlsaWFyJywgcHJvcGVydHk6ICdhdXhDb2RlJyB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUN1c3RvbWVyU2VhcmNoQ29uZmlnKCk6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLm1lcmdlQ29uZmlnKHtcbiAgICAgIHBsYWNlaG9sZGVyOiAnQnVzY2FyIGNsaWVudGVzLi4uJyxcbiAgICAgIGVuYWJsZVN0b2NrRmlsdGVyOiBmYWxzZSxcbiAgICAgIGVuYWJsZUZvb3RlckFjdGlvbnM6IGZhbHNlLFxuICAgICAgc2VjdGlvblRpdGxlOiAnQ2xpZW50ZXMnLFxuICAgICAgc2VhcmNoRmllbGRzOiBbXG4gICAgICAgIHsgdmFsdWU6ICduYW1lJywgbGFiZWw6ICdOb21icmUnLCBwcm9wZXJ0eTogJ25hbWUnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdlbWFpbCcsIGxhYmVsOiAnRW1haWwnLCBwcm9wZXJ0eTogJ2VtYWlsJyB9LFxuICAgICAgICB7IHZhbHVlOiAncGhvbmUnLCBsYWJlbDogJ1RlbMOpZm9ubycsIHByb3BlcnR5OiAncGhvbmUnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdkb2N1bWVudCcsIGxhYmVsOiAnRG9jdW1lbnRvJywgcHJvcGVydHk6ICdkb2N1bWVudCcgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { ThemeService } from '../../services';\nimport { MatIconButton } from '@angular/material/button';\nimport { AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nexport class ThemeToggleComponent {\n themeService = inject(ThemeService);\n darkMode$;\n constructor() {\n this.darkMode$ = this.themeService.isDarkMode$;\n }\n toggleDarkMode() {\n this.themeService.toggleDarkMode();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.2\", type: ThemeToggleComponent, isStandalone: true, selector: \"acp-theme-toggle\", ngImport: i0, template: \"<button\\n mat-icon-button\\n (click)=\\\"toggleDarkMode()\\\"\\n title=\\\"{{ (darkMode$ | async) ? 'Modo D\\u00EDa' : 'Modo Noche' }}\\\"\\n>\\n <mat-icon>{{ (darkMode$ | async) ? 'light_mode' : 'dark_mode' }}</mat-icon>\\n</button>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeToggleComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-theme-toggle', imports: [MatIconButton, MatIcon, AsyncPipe], encapsulation: ViewEncapsulation.None, template: \"<button\\n mat-icon-button\\n (click)=\\\"toggleDarkMode()\\\"\\n title=\\\"{{ (darkMode$ | async) ? 'Modo D\\u00EDa' : 'Modo Noche' }}\\\"\\n>\\n <mat-icon>{{ (darkMode$ | async) ? 'light_mode' : 'dark_mode' }}</mat-icon>\\n</button>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RoZW1lLXRvZ2dsZS90aGVtZS10b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGhlbWUtdG9nZ2xlL3RoZW1lLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBU2pELE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU1QyxTQUFTLENBQXNCO0lBRS9CO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsQ0FBQzt1R0FWVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiw0RUNkakMsbU9BT0EsMERERVksYUFBYSx1S0FBRSxPQUFPLHNJQUFFLFNBQVM7OzJGQUtoQyxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLFdBQ25CLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsaUJBRzdCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLXRoZW1lLXRvZ2dsZScsXG4gIGltcG9ydHM6IFtNYXRJY29uQnV0dG9uLCBNYXRJY29uLCBBc3luY1BpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGhlbWUtdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RoZW1lLXRvZ2dsZS5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lVG9nZ2xlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSB0aGVtZVNlcnZpY2UgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcblxuICBkYXJrTW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kYXJrTW9kZSQgPSB0aGlzLnRoZW1lU2VydmljZS5pc0RhcmtNb2RlJDtcbiAgfVxuICB0b2dnbGVEYXJrTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRoZW1lU2VydmljZS50b2dnbGVEYXJrTW9kZSgpO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIG1hdC1pY29uLWJ1dHRvblxuICAoY2xpY2spPVwidG9nZ2xlRGFya01vZGUoKVwiXG4gIHRpdGxlPVwie3sgKGRhcmtNb2RlJCB8IGFzeW5jKSA/ICdNb2RvIETDrWEnIDogJ01vZG8gTm9jaGUnIH19XCJcbj5cbiAgPG1hdC1pY29uPnt7IChkYXJrTW9kZSQgfCBhc3luYykgPyAnbGlnaHRfbW9kZScgOiAnZGFya19tb2RlJyB9fTwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==","export class FieldDefinition {\n value;\n valueLabel;\n defaultValue;\n defaultValueLabel;\n key;\n label;\n dateRangeConfig;\n isDefaultSearchField;\n required;\n disabled;\n order;\n icon;\n controlType = 'textbox';\n type = 'string';\n editor; // this attribut is for Kendo-Grid\n options;\n valueOptions;\n valuePrimitive; // for kendo dropdown\n textField; // for kendo dropdown\n valueField; // for kendo dropdown\n errorMessage;\n width;\n valueChangeCallback;\n columnType;\n body;\n constructor(options = {}) {\n this.value = options.value;\n this.valueLabel = options.valueLabel;\n this.defaultValue = options.defaultValue;\n this.defaultValueLabel = options.defaultValueLabel;\n this.key = options.key || '';\n this.label = options.label || '';\n this.dateRangeConfig = options.dateRangeConfig;\n this.isDefaultSearchField = options.isDefaultSearchField;\n this.required = !!options.required;\n this.disabled = options.disabled;\n this.order = options.order === undefined ? 1 : options.order;\n this.icon = options.icon;\n this.controlType = options.controlType || 'textbox';\n this.type = options.type || 'string';\n this.editor = options.editor || '';\n this.options = options.options || [];\n this.valueOptions = options.valueOptions || [];\n this.valuePrimitive = options.valuePrimitive;\n this.textField = options.textField;\n this.valueField = options.valueField;\n this.errorMessage = options.errorMessage || '';\n this.width = options.width;\n this.valueChangeCallback = options.valueChangeCallback;\n this.columnType = options.columnType;\n this.body = options.body;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvbWF0LXRhYmxlLW1vZGVscy9maWVsZC1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDQSxNQUFNLE9BQU8sZUFBZTtJQUMxQixLQUFLLENBQUs7SUFDVixVQUFVLENBQVU7SUFDcEIsWUFBWSxDQUFLO0lBQ2pCLGlCQUFpQixDQUFVO0lBQzNCLEdBQUcsQ0FBUztJQUNaLEtBQUssQ0FBUztJQUNkLGVBQWUsQ0FBc0I7SUFDckMsb0JBQW9CLENBQVc7SUFDL0IsUUFBUSxDQUFXO0lBQ25CLFFBQVEsQ0FBVztJQUNuQixLQUFLLENBQVU7SUFDZixJQUFJLENBQVU7SUFDZCxXQUFXLEdBQWlCLFNBQVMsQ0FBQztJQUN0QyxJQUFJLEdBQWUsUUFBUSxDQUFDO0lBQzVCLE1BQU0sQ0FBOEIsQ0FBQyxrQ0FBa0M7SUFDdkUsT0FBTyxDQUFpQztJQUN4QyxZQUFZLENBQVk7SUFDeEIsY0FBYyxDQUFXLENBQUMscUJBQXFCO0lBQy9DLFNBQVMsQ0FBVSxDQUFDLHFCQUFxQjtJQUN6QyxVQUFVLENBQVUsQ0FBQyxxQkFBcUI7SUFDMUMsWUFBWSxDQUFVO0lBQ3RCLEtBQUssQ0FBVTtJQUNmLG1CQUFtQixDQUFzQjtJQUN6QyxVQUFVLENBQWM7SUFDeEIsSUFBSSxDQUFPO0lBRVgsWUFBWSxVQUF1QyxFQUFFO1FBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERhdGVSYW5nZUNvbmZpZzxUID0gYW55PiB7XG4gIHN0YXJ0RGF0ZTogRmllbGREZWZpbml0aW9uPFQ+O1xuICBlbmREYXRlOiBGaWVsZERlZmluaXRpb248VD47XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29udHJvbFR5cGUgPVxuICB8ICd0ZXh0Ym94J1xuICB8ICdrdGV4dGJveCdcbiAgfCAnY29tYm9ib3gnXG4gIHwgJ3RleHRib3hOdW0nXG4gIHwgJ2Ryb3Bkb3duJ1xuICB8ICdkcm9wZG93bmxpc3QnXG4gIHwgJ211bHRpc2VsZWN0J1xuICB8ICdhdXRvY29tcGxldGUnXG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpb2J1dHRvbidcbiAgfCAnaW5xdWlyeUluRGlhbG9nJ1xuICB8ICd0aW1lcGlja2VyJ1xuICB8ICdkYXRlcGlja2VyJ1xuICB8ICdkYXRlcmFuZ2UnXG4gIHwgJ3RleHRhcmVhJ1xuICB8ICdzbGlkZVRvZ2dsZSdcbiAgfCAnc2xpZGVyJ1xuICB8ICdzd2l0Y2gnXG4gIHwgJ2J1dHRvblRvZ2dsZUdyb3VwJztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBGaWVsZFR5cGUgPVxuICB8ICdudW1iZXInXG4gIHwgJ3N0cmluZydcbiAgfCAnYm9vbGVhbidcbiAgfCAnZGF0ZSdcbiAgfCAnbW9udGgnXG4gIHwgJ2VtYWlsJ1xuICB8ICdwYXNzd29yZCdcbiAgfCAndGVsJ1xuICB8ICdoaWRkZW4nXG4gIHwgJ2ltYWdlJ1xuICB8ICd1cmwnXG4gIHwgJ3dlZWsnXG4gIHwgJ3NlYXJjaCdcbiAgfCAncmVzZXQnXG4gIHwgJ3RlbXBsYXRlJ1xuICB8ICdjdXN0b20nXG4gIHwgJ2V4cGFuZCc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29sdW1uVHlwZSA9ICd0ZXh0JyB8ICdjb21wb25lbnQnIHwgJ2h0bWwnIHwgJ3RlbXBsYXRlJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkRGVmaW5pdGlvbjxUID0gYW55PiB7XG4gIHZhbHVlPzogVDtcbiAgdmFsdWVMYWJlbD86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogVDtcbiAgZGVmYXVsdFZhbHVlTGFiZWw/OiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBkYXRlUmFuZ2VDb25maWc/OiBEYXRlUmFuZ2VDb25maWc8VD47XG4gIGlzRGVmYXVsdFNlYXJjaEZpZWxkPzogYm9vbGVhbjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9yZGVyPzogbnVtYmVyO1xuICBpY29uPzogc3RyaW5nO1xuICBjb250cm9sVHlwZT86IENvbnRyb2xUeXBlID0gJ3RleHRib3gnO1xuICB0eXBlPzogRmllbGRUeXBlID0gJ3N0cmluZyc7XG4gIGVkaXRvcj86ICdudW1lcmljJyB8ICdib29sZWFuJyB8ICcnOyAvLyB0aGlzIGF0dHJpYnV0IGlzIGZvciBLZW5kby1HcmlkXG4gIG9wdGlvbnM/OiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBUIH1bXTtcbiAgdmFsdWVPcHRpb25zPzogc3RyaW5nW107XG4gIHZhbHVlUHJpbWl0aXZlPzogYm9vbGVhbjsgLy8gZm9yIGtlbmRvIGRyb3Bkb3duXG4gIHRleHRGaWVsZD86IHN0cmluZzsgLy8gZm9yIGtlbmRvIGRyb3Bkb3duXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7IC8vIGZvciBrZW5kbyBkcm9wZG93blxuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICB2YWx1ZUNoYW5nZUNhbGxiYWNrPzogKHZhbHVlOiBUKSA9PiB2b2lkO1xuICBjb2x1bW5UeXBlPzogQ29sdW1uVHlwZTtcbiAgYm9keT86IGFueTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQYXJ0aWFsPEZpZWxkRGVmaW5pdGlvbjxUPj4gPSB7fSkge1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb25zLnZhbHVlO1xuICAgIHRoaXMudmFsdWVMYWJlbCA9IG9wdGlvbnMudmFsdWVMYWJlbDtcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IG9wdGlvbnMuZGVmYXVsdFZhbHVlO1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlTGFiZWwgPSBvcHRpb25zLmRlZmF1bHRWYWx1ZUxhYmVsO1xuICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXkgfHwgJyc7XG4gICAgdGhpcy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwgJyc7XG4gICAgdGhpcy5kYXRlUmFuZ2VDb25maWcgPSBvcHRpb25zLmRhdGVSYW5nZUNvbmZpZztcbiAgICB0aGlzLmlzRGVmYXVsdFNlYXJjaEZpZWxkID0gb3B0aW9ucy5pc0RlZmF1bHRTZWFyY2hGaWVsZDtcbiAgICB0aGlzLnJlcXVpcmVkID0gISFvcHRpb25zLnJlcXVpcmVkO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBvcHRpb25zLmRpc2FibGVkO1xuICAgIHRoaXMub3JkZXIgPSBvcHRpb25zLm9yZGVyID09PSB1bmRlZmluZWQgPyAxIDogb3B0aW9ucy5vcmRlcjtcbiAgICB0aGlzLmljb24gPSBvcHRpb25zLmljb247XG4gICAgdGhpcy5jb250cm9sVHlwZSA9IG9wdGlvbnMuY29udHJvbFR5cGUgfHwgJ3RleHRib3gnO1xuICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnc3RyaW5nJztcbiAgICB0aGlzLmVkaXRvciA9IG9wdGlvbnMuZWRpdG9yIHx8ICcnO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICB0aGlzLnZhbHVlT3B0aW9ucyA9IG9wdGlvbnMudmFsdWVPcHRpb25zIHx8IFtdO1xuICAgIHRoaXMudmFsdWVQcmltaXRpdmUgPSBvcHRpb25zLnZhbHVlUHJpbWl0aXZlO1xuICAgIHRoaXMudGV4dEZpZWxkID0gb3B0aW9ucy50ZXh0RmllbGQ7XG4gICAgdGhpcy52YWx1ZUZpZWxkID0gb3B0aW9ucy52YWx1ZUZpZWxkO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gb3B0aW9ucy5lcnJvck1lc3NhZ2UgfHwgJyc7XG4gICAgdGhpcy53aWR0aCA9IG9wdGlvbnMud2lkdGg7XG4gICAgdGhpcy52YWx1ZUNoYW5nZUNhbGxiYWNrID0gb3B0aW9ucy52YWx1ZUNoYW5nZUNhbGxiYWNrO1xuICAgIHRoaXMuY29sdW1uVHlwZSA9IG9wdGlvbnMuY29sdW1uVHlwZTtcbiAgICB0aGlzLmJvZHkgPSBvcHRpb25zLmJvZHk7XG4gIH1cbn1cbiJdfQ==","import { FieldDefinition } from './field-definition';\nexport class ColumnDefinition extends FieldDefinition {\n index; // if the list of columns will be displayed in material edit-grid (angular material grid), index must be given\n format; // it could be: { style: 'currency', currency: 'EUR' }, { date: 'short' }\n hasFooter;\n hideInOverlay;\n // optionsAttribut is used in stock-receipt maintenance: StockReceiptItem.Unit has options for StockReceiptItem.Birimi\n optionsAttribut; // name of the attribut that has the options list for dropdown\n templateOutlet;\n constructor(options = {}) {\n super(options);\n this.index = options.index;\n this.format = options.format;\n this.hasFooter = options.hasFooter;\n this.hideInOverlay = options.hideInOverlay;\n this.optionsAttribut = options.optionsAttribut;\n this.templateOutlet = options.templateOutlet;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvbW9kZWxzL21hdC10YWJsZS1tb2RlbHMvY29sdW1uLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBU3JELE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxlQUFrQjtJQUMvRCxLQUFLLENBQVUsQ0FBQyw4R0FBOEc7SUFDOUgsTUFBTSxDQUFPLENBQUMseUVBQXlFO0lBQ3ZGLFNBQVMsQ0FBVztJQUNwQixhQUFhLENBQVc7SUFFeEIsc0hBQXNIO0lBQ3RILGVBQWUsQ0FBVSxDQUFDLDhEQUE4RDtJQUN4RixjQUFjLENBQWdDO0lBQzlDLFlBQVksVUFBd0MsRUFBRTtRQUNwRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZERlZmluaXRpb24gfSBmcm9tICcuL2ZpZWxkLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gY29sdW1uLWRlZmluaXRpb24udHNcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb250ZXh0PFQgPSBhbnk+IHtcbiAgJGltcGxpY2l0OiBUO1xuICBpbmRleD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlZmluaXRpb248VCA9IGFueT4gZXh0ZW5kcyBGaWVsZERlZmluaXRpb248VD4ge1xuICBpbmRleD86IG51bWJlcjsgLy8gaWYgdGhlIGxpc3Qgb2YgY29sdW1ucyB3aWxsIGJlIGRpc3BsYXllZCBpbiBtYXRlcmlhbCBlZGl0LWdyaWQgKGFuZ3VsYXIgbWF0ZXJpYWwgZ3JpZCksIGluZGV4IG11c3QgYmUgZ2l2ZW5cbiAgZm9ybWF0PzogYW55OyAvLyBpdCBjb3VsZCBiZTogeyBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdFVVInIH0sIHsgZGF0ZTogJ3Nob3J0JyB9XG4gIGhhc0Zvb3Rlcj86IGJvb2xlYW47XG4gIGhpZGVJbk92ZXJsYXk/OiBib29sZWFuO1xuXG4gIC8vIG9wdGlvbnNBdHRyaWJ1dCBpcyB1c2VkIGluIHN0b2NrLXJlY2VpcHQgbWFpbnRlbmFuY2U6IFN0b2NrUmVjZWlwdEl0ZW0uVW5pdCBoYXMgb3B0aW9ucyBmb3IgU3RvY2tSZWNlaXB0SXRlbS5CaXJpbWlcbiAgb3B0aW9uc0F0dHJpYnV0Pzogc3RyaW5nOyAvLyBuYW1lIG9mIHRoZSBhdHRyaWJ1dCB0aGF0IGhhcyB0aGUgb3B0aW9ucyBsaXN0IGZvciBkcm9wZG93blxuICB0ZW1wbGF0ZU91dGxldD86IFRlbXBsYXRlUmVmPFRhYmxlQ29udGV4dDxUPj47XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBhcnRpYWw8Q29sdW1uRGVmaW5pdGlvbjxUPj4gPSB7fSkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMuaW5kZXggPSBvcHRpb25zLmluZGV4O1xuICAgIHRoaXMuZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQ7XG4gICAgdGhpcy5oYXNGb290ZXIgPSBvcHRpb25zLmhhc0Zvb3RlcjtcbiAgICB0aGlzLmhpZGVJbk92ZXJsYXkgPSBvcHRpb25zLmhpZGVJbk92ZXJsYXk7XG4gICAgdGhpcy5vcHRpb25zQXR0cmlidXQgPSBvcHRpb25zLm9wdGlvbnNBdHRyaWJ1dDtcbiAgICB0aGlzLnRlbXBsYXRlT3V0bGV0ID0gb3B0aW9ucy50ZW1wbGF0ZU91dGxldDtcbiAgfVxufVxuIl19","export class TableCellIndex {\n row;\n column;\n constructor(row, column) {\n this.row = row;\n this.column = column;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvbWF0LXRhYmxlLW1vZGVscy90YWJsZS1jZWxsLWluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLEdBQUcsQ0FBUztJQUNaLE1BQU0sQ0FBUztJQUVmLFlBQVksR0FBVyxFQUFFLE1BQWM7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVGFibGVDZWxsSW5kZXgge1xuICByb3c6IG51bWJlcjtcbiAgY29sdW1uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSB7XG4gICAgdGhpcy5yb3cgPSByb3c7XG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gIH1cbn1cbiJdfQ==","export class Pagination {\n pageIndex;\n pageSize;\n maxSize;\n totalRecords;\n pageSizeOptions;\n /**\n * @param pageIndex Current page index (0-based for MatPagination compatibility)\n * @param pageSize Number of records per page\n * @param maxSize Maximum number of pages displayed in the pagination control\n * @param totalRecords Total number of records\n * @param pageSizeOptions Available page size options\n */\n constructor(pageIndex = 0, // MatPagination starts at 0\n pageSize = 25, maxSize = 5, totalRecords = 0, pageSizeOptions = [25, 50, 75, 100]) {\n this.pageIndex = pageIndex;\n this.pageSize = pageSize;\n this.maxSize = maxSize;\n this.totalRecords = totalRecords;\n this.pageSizeOptions = pageSizeOptions;\n }\n /**\n * Calculates the total number of pages.\n */\n getTotalPages() {\n return Math.ceil(this.totalRecords / this.pageSize);\n }\n /**\n * Updates the page size and resets the page index to the first page.\n * @param newPageSize The new page size\n */\n updatePageSize(newPageSize) {\n if (this.pageSizeOptions.includes(newPageSize)) {\n this.pageSize = newPageSize;\n this.pageIndex = 0; // Reset to first page\n }\n else {\n throw new Error(`Invalid page size: ${newPageSize}`);\n }\n }\n /**\n * Updates pagination data based on paginator event.\n * @param event MatPaginator event\n */\n updateFromPaginatorEvent(event) {\n this.pageIndex = event.pageIndex;\n this.pageSize = event.pageSize;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvcGFnaW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTLENBQVM7SUFDbEIsUUFBUSxDQUFTO0lBQ2pCLE9BQU8sQ0FBUztJQUNoQixZQUFZLENBQVM7SUFDckIsZUFBZSxDQUFXO0lBRTFCOzs7Ozs7T0FNRztJQUNILFlBQ0UsU0FBUyxHQUFHLENBQUMsRUFBRSw0QkFBNEI7SUFDM0MsUUFBUSxHQUFHLEVBQUUsRUFDYixPQUFPLEdBQUcsQ0FBQyxFQUNYLFlBQVksR0FBRyxDQUFDLEVBQ2hCLGtCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUU3QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsV0FBbUI7UUFDaEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QixDQUFDLEtBQVU7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGFnaW5hdGlvbiB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBtYXhTaXplOiBudW1iZXI7XG4gIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFnZUluZGV4IEN1cnJlbnQgcGFnZSBpbmRleCAoMC1iYXNlZCBmb3IgTWF0UGFnaW5hdGlvbiBjb21wYXRpYmlsaXR5KVxuICAgKiBAcGFyYW0gcGFnZVNpemUgTnVtYmVyIG9mIHJlY29yZHMgcGVyIHBhZ2VcbiAgICogQHBhcmFtIG1heFNpemUgTWF4aW11bSBudW1iZXIgb2YgcGFnZXMgZGlzcGxheWVkIGluIHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xcbiAgICogQHBhcmFtIHRvdGFsUmVjb3JkcyBUb3RhbCBudW1iZXIgb2YgcmVjb3Jkc1xuICAgKiBAcGFyYW0gcGFnZVNpemVPcHRpb25zIEF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcGFnZUluZGV4ID0gMCwgLy8gTWF0UGFnaW5hdGlvbiBzdGFydHMgYXQgMFxuICAgIHBhZ2VTaXplID0gMjUsXG4gICAgbWF4U2l6ZSA9IDUsXG4gICAgdG90YWxSZWNvcmRzID0gMCxcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzI1LCA1MCwgNzUsIDEwMF0sXG4gICkge1xuICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4O1xuICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgIHRoaXMudG90YWxSZWNvcmRzID0gdG90YWxSZWNvcmRzO1xuICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gcGFnZVNpemVPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcy5cbiAgICovXG4gIGdldFRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxSZWNvcmRzIC8gdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFnZSBzaXplIGFuZCByZXNldHMgdGhlIHBhZ2UgaW5kZXggdG8gdGhlIGZpcnN0IHBhZ2UuXG4gICAqIEBwYXJhbSBuZXdQYWdlU2l6ZSBUaGUgbmV3IHBhZ2Ugc2l6ZVxuICAgKi9cbiAgdXBkYXRlUGFnZVNpemUobmV3UGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VTaXplT3B0aW9ucy5pbmNsdWRlcyhuZXdQYWdlU2l6ZSkpIHtcbiAgICAgIHRoaXMucGFnZVNpemUgPSBuZXdQYWdlU2l6ZTtcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gMDsgLy8gUmVzZXQgdG8gZmlyc3QgcGFnZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFnZSBzaXplOiAke25ld1BhZ2VTaXplfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHBhZ2luYXRpb24gZGF0YSBiYXNlZCBvbiBwYWdpbmF0b3IgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBNYXRQYWdpbmF0b3IgZXZlbnRcbiAgICovXG4gIHVwZGF0ZUZyb21QYWdpbmF0b3JFdmVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wYWdlSW5kZXggPSBldmVudC5wYWdlSW5kZXg7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuICB9XG59XG4iXX0=","import { Component, Input, computed, signal, inject, output, input, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { Subject, takeUntil, debounceTime, of } from 'rxjs';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, } from '../../models';\nimport { AutocompleteWrapperService } from '../../services';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/overlay\";\nimport * as i2 from \"@angular/forms\";\nexport class ReusableAutocompleteComponent {\n dataSource = input([], ...(ngDevMode ? [{ debugName: \"dataSource\" }] : [])); // Para búsqueda local\n config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG;\n itemTemplate = input(...(ngDevMode ? [undefined, { debugName: \"itemTemplate\" }] : []));\n searchFunction = input(...(ngDevMode ? [undefined, { debugName: \"searchFunction\" }] : []));\n notFoundTemplate = input(...(ngDevMode ? [undefined, { debugName: \"notFoundTemplate\" }] : []));\n overlayWidth = input('auto', ...(ngDevMode ? [{ debugName: \"overlayWidth\" }] : []));\n overlayMaxHeight = input('400px', ...(ngDevMode ? [{ debugName: \"overlayMaxHeight\" }] : []));\n itemSelected = output();\n searchChanged = output();\n searchRequested = output(); // Nuevo evento\n pageChanged = output();\n filterChanged = output();\n advancedSearchClicked = output();\n allResultsClicked = output();\n createClicked = output();\n searchInput = viewChild.required('searchInput');\n historyListElement = viewChild('historyListElement', ...(ngDevMode ? [{ debugName: \"historyListElement\" }] : []));\n resultsListElement = viewChild('resultsListElement', ...(ngDevMode ? [{ debugName: \"resultsListElement\" }] : []));\n // State\n query = '';\n isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n overlayOpen = signal(false, ...(ngDevMode ? [{ debugName: \"overlayOpen\" }] : []));\n selectedIndex = signal(-1, ...(ngDevMode ? [{ debugName: \"selectedIndex\" }] : []));\n currentPage = signal(1, ...(ngDevMode ? [{ debugName: \"currentPage\" }] : []));\n filteredItems = signal([], ...(ngDevMode ? [{ debugName: \"filteredItems\" }] : []));\n historyList = signal([], ...(ngDevMode ? [{ debugName: \"historyList\" }] : []));\n totalCount = signal(0, ...(ngDevMode ? [{ debugName: \"totalCount\" }] : []));\n // Filters\n filters = {\n searchBy: 'name',\n stockFilter: 'all',\n };\n // Computed properties\n isHistoryVisible = computed(() => {\n return this.query.length < (this.config.minSearchLength || 2) && this.historyList().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"isHistoryVisible\" }] : []));\n totalItems = computed(() => this.filteredItems().length, ...(ngDevMode ? [{ debugName: \"totalItems\" }] : []));\n totalPages = computed(() => {\n const total = this.totalCount();\n return total > 0 ? Math.ceil(total / (this.config.itemsPerPage || 10)) : 1;\n }, ...(ngDevMode ? [{ debugName: \"totalPages\" }] : []));\n currentPageItems = computed(() => {\n // if (!this.config.enablePagination) {\n // }\n return this.filteredItems();\n // return this.autocompleteService.paginateItems(\n // this.filteredItems(),\n // this.currentPage(),\n // this.config.itemsPerPage || 10\n // );\n }, ...(ngDevMode ? [{ debugName: \"currentPageItems\" }] : []));\n startItem = computed(() => {\n const total = this.totalItems();\n if (total === 0)\n return 0;\n return (this.currentPage() - 1) * (this.config.itemsPerPage || 10) + 1;\n }, ...(ngDevMode ? [{ debugName: \"startItem\" }] : []));\n endItem = computed(() => {\n const total = this.totalItems();\n const calculated = this.currentPage() * (this.config.itemsPerPage || 10);\n return Math.min(calculated, total);\n }, ...(ngDevMode ? [{ debugName: \"endItem\" }] : []));\n sectionTitle = computed(() => {\n const total = this.totalItems();\n return `Resultados (${total})`;\n }, ...(ngDevMode ? [{ debugName: \"sectionTitle\" }] : []));\n isNoResults = computed(() => {\n return (this.totalItems() === 0 &&\n !this.isLoading() &&\n this.query.length >= (this.config.minSearchLength || 2));\n }, ...(ngDevMode ? [{ debugName: \"isNoResults\" }] : []));\n // Private\n destroy$ = new Subject();\n searchSubject = new Subject();\n autocompleteService = inject(AutocompleteWrapperService);\n ngOnInit() {\n this.mergeDefaultConfig();\n this.setupSearch();\n this.loadHistory();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n mergeDefaultConfig() {\n this.config = this.autocompleteService.mergeConfig(this.config);\n this.filters.searchBy = this.config.searchFields?.[0]?.value || 'name';\n this.filters.stockFilter = this.config.stockOptions?.[0]?.value || 'all';\n }\n setupSearch() {\n this.filteredItems.set([]);\n this.searchSubject\n .pipe(debounceTime(this.config.debounceTime || 300), \n // distinctUntilChanged(),\n // distinctUntilChanged((prev, curr) => {\n // console.log(prev);\n // console.log(curr);\n // return prev.query === curr.query &&\n // JSON.stringify(prev.filters) === JSON.stringify(curr.filters) &&\n // prev.page === curr.page\n //\n // }\n //\n // ),\n takeUntil(this.destroy$), switchMap(({ query }) => this.performSearch(query)))\n .subscribe(result => {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n });\n }\n performSearch(query) {\n if (query.length < (this.config.minSearchLength || 2)) {\n return of({ items: [], totalCount: 0 });\n }\n // ESTRATEGIA A: Función de búsqueda personalizada\n const searchFunction = this.searchFunction();\n if (searchFunction) {\n return searchFunction(query, this.filters, this.currentPage(), this.config.itemsPerPage || 10).pipe(catchError(() => of({ items: [], totalCount: 0 })));\n }\n // ESTRATEGIA B: Emit evento para que el padre maneje\n if (this.config.searchMode === 'remote') {\n this.searchRequested.emit({\n query,\n filters: this.filters,\n page: this.currentPage(),\n });\n return of({ items: [], totalCount: 0 }); // El padre actualizará los datos\n }\n // ESTRATEGIA C: Búsqueda local (fallback)\n return this.autocompleteService.searchLocal(this.dataSource(), query, this.filters, this.config);\n }\n loadHistory() {\n this.autocompleteService.history$.pipe(takeUntil(this.destroy$)).subscribe(history => {\n this.historyList.set(history);\n });\n }\n searchSubjectNext() {\n this.searchSubject.next({\n query: this.query,\n filters: this.filters,\n page: this.currentPage(),\n });\n }\n // Event Handlers\n onInput(event) {\n const target = event.target;\n this.query = target.value;\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.isLoading.set(true);\n this.searchSubjectNext();\n }\n else {\n this.filteredItems.set([]);\n this.isLoading.set(false);\n }\n this.showOverlay();\n this.searchChanged.emit(this.query);\n }\n onKeyDown(event) {\n const currentList = this.isHistoryVisible() ? this.historyList() : this.currentPageItems();\n const maxIndex = currentList.length - 1;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (maxIndex >= 0) {\n const nextIndex = this.selectedIndex() < maxIndex ? this.selectedIndex() + 1 : 0;\n this.selectedIndex.set(nextIndex);\n this.scrollToSelected();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (maxIndex >= 0) {\n const prevIndex = this.selectedIndex() > 0 ? this.selectedIndex() - 1 : maxIndex;\n this.selectedIndex.set(prevIndex);\n this.scrollToSelected();\n }\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedIndex() >= 0 && this.selectedIndex() <= maxIndex) {\n this.selectItem(currentList[this.selectedIndex()]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.hideOverlay();\n break;\n case 'PageDown':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToNextPage();\n }\n break;\n case 'PageUp':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToPreviousPage();\n }\n break;\n }\n }\n onFilterChange() {\n this.currentPage.set(1);\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(this.query);\n this.searchSubjectNext();\n }\n // this.filterChanged.emit(this.filters);\n }\n // Método público para actualizar resultados desde el padre\n updateSearchResults(result) {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n }\n // Overlay Methods\n showOverlay() {\n this.overlayOpen.set(true);\n }\n hideOverlay() {\n this.overlayOpen.set(false);\n this.selectedIndex.set(-1);\n }\n isType(item) {\n return typeof item === 'string';\n }\n // Selection Methods\n selectItem(item) {\n if (this.config.clearInput) {\n this.query = '';\n }\n else {\n this.query = this.getItemDisplayText(item);\n }\n this.hideOverlay();\n this.currentPage.set(1);\n this.autocompleteService.addToHistory(item, this.config.maxHistoryItems);\n this.itemSelected.emit(item);\n setTimeout(() => {\n this.searchInput()?.nativeElement?.focus();\n }, 100);\n }\n clearSearch() {\n this.query = '';\n this.filteredItems.set([]);\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n this.searchInput()?.nativeElement?.focus();\n this.searchChanged.emit('');\n }\n // History Methods\n removeHistoryItem(index, event) {\n event.stopPropagation();\n this.autocompleteService.removeFromHistory(index);\n }\n clearHistory() {\n this.autocompleteService.clearHistory();\n }\n // Pagination Methods\n goToPage(event) {\n const target = event.target;\n const page = parseInt(target.value);\n if (this.autocompleteService.isValidPage(page, this.totalPages())) {\n this.currentPage.set(page);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(page);\n this.searchSubjectNext();\n }\n else {\n target.value = this.currentPage().toString();\n }\n }\n goToFirstPage() {\n if (this.currentPage() !== 1) {\n this.currentPage.set(1);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(1);\n this.searchSubjectNext();\n }\n }\n goToPreviousPage() {\n const prevPage = this.currentPage() - 1;\n if (prevPage >= 1) {\n this.currentPage.set(prevPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(prevPage);\n this.searchSubjectNext();\n }\n }\n goToNextPage() {\n const nextPage = this.currentPage() + 1;\n if (nextPage <= this.totalPages()) {\n this.currentPage.set(nextPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(nextPage);\n this.searchSubjectNext();\n }\n }\n goToLastPage() {\n const lastPage = this.totalPages();\n if (this.currentPage() !== lastPage) {\n this.currentPage.set(lastPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(lastPage);\n this.searchSubjectNext();\n }\n }\n // Footer Actions\n onCreateNew(_$event) {\n //$event.stopPropagation();\n // this.hideOverlay();\n this.createClicked.emit(this.query);\n }\n onAdvancedSearch() {\n this.hideOverlay();\n this.advancedSearchClicked.emit();\n }\n onShowAllResults() {\n this.hideOverlay();\n this.allResultsClicked.emit(this.query);\n }\n // Utility Methods\n getItemDisplayText(item) {\n return this.autocompleteService.getItemDisplayText(item);\n }\n noResultsText() {\n return `No se encontraron resultados para \"${this.query}\"`;\n }\n scrollToSelected() {\n const listElement = this.isHistoryVisible()\n ? this.historyListElement()?.nativeElement\n : this.resultsListElement()?.nativeElement;\n if (listElement) {\n const selectedElement = listElement.children[this.selectedIndex()];\n if (selectedElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n }\n // Public API\n getState() {\n return {\n query: this.query,\n isLoading: this.isLoading(),\n overlayOpen: this.overlayOpen(),\n selectedIndex: this.selectedIndex(),\n pagination: {\n currentPage: this.currentPage(),\n totalPages: this.totalPages(),\n totalItems: this.totalItems(),\n itemsPerPage: this.config.itemsPerPage || 10,\n startItem: this.startItem(),\n endItem: this.endItem(),\n hasNextPage: this.currentPage() < this.totalPages(),\n hasPreviousPage: this.currentPage() > 1,\n },\n hasResults: this.totalItems() > 0,\n isHistoryVisible: this.isHistoryVisible(),\n historyCount: this.historyList().length,\n filters: this.filters,\n };\n }\n setQuery(query) {\n this.query = query;\n this.currentPage.set(1);\n if (query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(query);\n this.showOverlay();\n }\n else {\n this.filteredItems.set([]);\n if (query.length === 0) {\n this.hideOverlay();\n }\n }\n this.searchChanged.emit(query);\n }\n focus() {\n this.searchInput()?.nativeElement?.focus();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ReusableAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: ReusableAutocompleteComponent, isStandalone: true, selector: \"acp-autocomplete-wrapper\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: \"config\", publicName: \"config\", isSignal: false, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, searchFunction: { classPropertyName: \"searchFunction\", publicName: \"searchFunction\", isSignal: true, isRequired: false, transformFunction: null }, notFoundTemplate: { classPropertyName: \"notFoundTemplate\", publicName: \"notFoundTemplate\", isSignal: true, isRequired: false, transformFunction: null }, overlayWidth: { classPropertyName: \"overlayWidth\", publicName: \"overlayWidth\", isSignal: true, isRequired: false, transformFunction: null }, overlayMaxHeight: { classPropertyName: \"overlayMaxHeight\", publicName: \"overlayMaxHeight\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: \"itemSelected\", searchChanged: \"searchChanged\", searchRequested: \"searchRequested\", pageChanged: \"pageChanged\", filterChanged: \"filterChanged\", advancedSearchClicked: \"advancedSearchClicked\", allResultsClicked: \"allResultsClicked\", createClicked: \"createClicked\" }, viewQueries: [{ propertyName: \"searchInput\", first: true, predicate: [\"searchInput\"], descendants: true, isSignal: true }, { propertyName: \"historyListElement\", first: true, predicate: [\"historyListElement\"], descendants: true, isSignal: true }, { propertyName: \"resultsListElement\", first: true, predicate: [\"resultsListElement\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"autocomplete-wrapper-wrapper\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <!-- Input Container -->\\n <div\\n class=\\\"autocomplete-wrapper-input-container\\\"\\n cdkOverlayOrigin\\n #overlayPosition=\\\"cdkOverlayOrigin\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-input-wrapper\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-search-icon\\\">search</mat-icon>\\n <input\\n #searchInput\\n type=\\\"text\\\"\\n class=\\\"autocomplete-wrapper-input-field\\\"\\n [placeholder]=\\\"config.placeholder\\\"\\n [(ngModel)]=\\\"query\\\"\\n (input)=\\\"onInput($event)\\\"\\n (click)=\\\"showOverlay()\\\"\\n (keydown)=\\\"onKeyDown($event)\\\"\\n [disabled]=\\\"config.disabled || false\\\"\\n autocomplete=\\\"off\\\"\\n />\\n @if (query && query.length > 0 && !isLoading()) {\\n <button\\n mat-icon-button\\n (click)=\\\"clearSearch()\\\"\\n type=\\\"button\\\"\\n class=\\\"autocomplete-wrapper-clear-button\\\"\\n >\\n <mat-icon>clear</mat-icon>\\n </button>\\n }\\n <button mat-icon-button type=\\\"button\\\">\\n <mat-icon>add</mat-icon>\\n </button>\\n </div>\\n\\n @if (isLoading()) {\\n <div class=\\\"autocomplete-wrapper-loading-spinner\\\">\\n <mat-spinner diameter=\\\"20\\\" />\\n </div>\\n }\\n </div>\\n\\n <!-- Overlay -->\\n <ng-template\\n cdkConnectedOverlay\\n [cdkConnectedOverlayOrigin]=\\\"overlayPosition\\\"\\n [cdkConnectedOverlayOpen]=\\\"overlayOpen()\\\"\\n [cdkConnectedOverlayWidth]=\\\"overlayWidth()\\\"\\n [cdkConnectedOverlayHeight]=\\\"overlayMaxHeight()\\\"\\n (overlayOutsideClick)=\\\"hideOverlay()\\\"\\n (backdropClick)=\\\"hideOverlay()\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-dropdown\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <div class=\\\"autocomplete-wrapper-dropdown-content\\\">\\n <!-- History Section -->\\n @if (isHistoryVisible() && historyList().length > 0) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">B\\u00FAsquedas recientes</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n (click)=\\\"clearHistory()\\\"\\n class=\\\"autocomplete-wrapper-clear-history-button\\\"\\n >\\n <mat-icon>delete_outline</mat-icon>\\n </button>\\n </div>\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #historyListElement\\n >\\n @for (item of historyList(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-history-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <mat-icon class=\\\"autocomplete-wrapper-history-icon\\\">history</mat-icon>\\n <div class=\\\"autocomplete-wrapper-item-details\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"autocomplete-wrapper-remove-button\\\"\\n (click)=\\\"removeHistoryItem($index, $event)\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </li>\\n }\\n </ul>\\n </div>\\n }\\n\\n <!-- Results Section -->\\n @if (!isHistoryVisible()) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <!-- Header with filters and pagination -->\\n @if (config.enableFilters || config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n\\n <!-- Filters -->\\n @if (config.enableFilters) {\\n <div class=\\\"autocomplete-wrapper-filter-controls\\\">\\n @if (config.searchFields && config.searchFields.length > 1) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"searchBySelect\\\"\\n >Buscar por:</label\\n >\\n <select\\n id=\\\"searchBySelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.searchBy\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (field of config.searchFields; track $index) {\\n <option [value]=\\\"field.value\\\">{{ field.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n\\n @if (config.enableStockFilter && config.stockOptions) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"stockSelect\\\"\\n >Stock:</label\\n >\\n <select\\n id=\\\"stockSelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.stockFilter\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (option of config.stockOptions; track $index) {\\n <option [value]=\\\"option.value\\\">{{ option.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Pagination Controls -->\\n @if (config.enablePagination && totalPages() > 1) {\\n <div class=\\\"autocomplete-wrapper-pagination-header\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-info\\\">\\n <span>P\\u00E1gina {{ currentPage() }} de {{ totalPages() }}</span>\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToFirstPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>first_page</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <input\\n type=\\\"number\\\"\\n class=\\\"autocomplete-wrapper-page-input\\\"\\n [value]=\\\"currentPage()\\\"\\n [min]=\\\"1\\\"\\n [max]=\\\"totalPages()\\\"\\n (change)=\\\"goToPage($event)\\\"\\n />\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToLastPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>last_page</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n </div>\\n }\\n\\n <!-- Items List -->\\n @if (totalItems()) {\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #resultsListElement\\n >\\n @for (item of currentPageItems(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-result-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-item-info\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n\\n <!-- No Results -->\\n @if (!isLoading() && isNoResults()) {\\n <div class=\\\"autocomplete-wrapper-no-results\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-no-results-icon\\\">search_off</mat-icon>\\n <div class=\\\"autocomplete-wrapper-no-results-content\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n notFoundTemplate() || defaultNotFoundTemplate;\\n context: { $implicit: noResultsText() }\\n \\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <!-- Footer -->\\n @if (overlayOpen() && totalItems() > 0) {\\n <div class=\\\"autocomplete-wrapper-footer\\\">\\n @if (!isHistoryVisible() && totalItems() > 0 && config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-pagination-footer\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-summary\\\">\\n Mostrando {{ startItem() }}-{{ endItem() }} de {{ totalCount() }} resultados\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls-footer\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <span class=\\\"autocomplete-wrapper-page-indicator\\\"\\n >{{ currentPage() }} / {{ totalPages() }}</span\\n >\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n\\n @if (config.enableFooterActions) {\\n <div class=\\\"autocomplete-wrapper-footer-actions\\\">\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-create-button\\\"\\n (click)=\\\"onCreateNew($event)\\\"\\n >\\n <mat-icon>add</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Crear</span>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-search-button\\\"\\n (click)=\\\"onAdvancedSearch()\\\"\\n >\\n <mat-icon>tune</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Avanzada</span>\\n </button>\\n @if (!isHistoryVisible() && totalItems() > 0) {\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-results-button\\\"\\n (click)=\\\"onShowAllResults()\\\"\\n >\\n <mat-icon>list</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Todos</span>\\n </button>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Default Templates -->\\n <ng-template #defaultItemTemplate let-item>\\n <div class=\\\"autocomplete-wrapper-default-item\\\">\\n <div class=\\\"autocomplete-wrapper-item-name\\\">{{ getItemDisplayText(item) }}</div>\\n @if (item.description && typeof item === 'object') {\\n <div class=\\\"autocomplete-wrapper-item-description\\\">{{ item.description }}</div>\\n }\\n </div>\\n </ng-template>\\n\\n <ng-template #defaultNotFoundTemplate let-text>\\n <div class=\\\"autocomplete-wrapper-default-no-results\\\">\\n <p>{{ text }}</p>\\n <p>Intenta con otros t\\u00E9rminos de b\\u00FAsqueda</p>\\n </div>\\n </ng-template>\\n</div>\\n\", styles: [\".autocomplete-wrapper{position:relative;width:100%;max-width:100%}.autocomplete-wrapper.autocomplete-wrapper-active .autocomplete-wrapper-input-wrapper{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.autocomplete-wrapper-input-container{position:relative;width:100%}.autocomplete-wrapper-input-wrapper{position:relative;display:flex;align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:0 12px;transition:all .3s ease}.autocomplete-wrapper-input-wrapper:focus-within{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.autocomplete-wrapper-search-icon{color:#666;margin-right:8px;font-size:20px}.autocomplete-wrapper-input-field{flex:1;border:none;outline:none;font-size:16px;padding:7px 0;background:transparent;color:#333}.autocomplete-wrapper-input-field::placeholder{color:#999}.autocomplete-wrapper-input-field:disabled{opacity:.6;cursor:not-allowed}.autocomplete-wrapper-clear-button{margin-left:8px;color:#666;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.autocomplete-wrapper-clear-button:hover{background-color:#0000000a;color:#333}.autocomplete-wrapper-loading-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.autocomplete-wrapper-dropdown{background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid #e0e0e0;overflow:hidden;max-height:500px;min-width:300px;display:flex;flex-direction:column}.autocomplete-wrapper-dropdown.autocomplete-wrapper-active{animation:reusableAutocompleteSlideIn .2s ease-out}@keyframes reusableAutocompleteSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.autocomplete-wrapper-dropdown-content{display:flex;flex-direction:column;height:100%;max-height:500px}.autocomplete-wrapper-section{display:flex;flex-direction:column;height:100%;min-height:0}.autocomplete-wrapper-section-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 8px;border-bottom:1px solid #f0f0f0;background:#fafafa;flex-shrink:0;min-height:56px;flex-wrap:wrap;gap:12px}.autocomplete-wrapper-section-title{font-size:13px;font-weight:500;color:#666;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.autocomplete-wrapper-clear-history-button{color:#666;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.autocomplete-wrapper-clear-history-button:hover{background-color:#0000000a;color:#333}.autocomplete-wrapper-filter-controls{display:flex;align-items:center;gap:16px;flex:1;justify-content:center}.autocomplete-wrapper-filter-group{display:flex;align-items:center;gap:6px}.autocomplete-wrapper-filter-label{font-size:12px;color:#666;font-weight:500;white-space:nowrap}.autocomplete-wrapper-filter-select{padding:4px 8px;border:1px solid #ddd;border-radius:4px;font-size:12px;background:#fff;color:#333;cursor:pointer;min-width:120px}.autocomplete-wrapper-filter-select:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 1px #1976d233}.autocomplete-wrapper-filter-select:hover{border-color:#bbb}.autocomplete-wrapper-pagination-header{display:flex;align-items:center;gap:12px;margin-left:auto}.autocomplete-wrapper-pagination-info{font-size:12px;color:#666;white-space:nowrap}.autocomplete-wrapper-pagination-controls{display:flex;align-items:center;gap:4px}.autocomplete-wrapper-pagination-button{min-width:32px;height:32px;line-height:32px;padding:0;color:#666;background:none;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.autocomplete-wrapper-pagination-button:hover:not(:disabled){background-color:#0000000a;color:#333}.autocomplete-wrapper-pagination-button:disabled{opacity:.5;cursor:not-allowed}.autocomplete-wrapper-pagination-button mat-icon{font-size:18px;width:18px;height:18px}.autocomplete-wrapper-page-input{width:50px;height:32px;border:1px solid #ddd;border-radius:4px;text-align:center;font-size:12px;padding:4px;margin:0 4px}.autocomplete-wrapper-page-input:focus{outline:none;border-color:#1976d2}.autocomplete-wrapper-items-list{list-style:none;margin:0;padding:0;flex:1;min-height:0}.autocomplete-wrapper-items-list.autocomplete-wrapper-scrollable-list{overflow-y:auto}.autocomplete-wrapper-list-item{display:flex;align-items:center;border-bottom:1px solid #f5f5f5;transition:background-color .2s ease}.autocomplete-wrapper-list-item:last-child{border-bottom:none}.autocomplete-wrapper-list-item:hover{background-color:#f8f9fa}.autocomplete-wrapper-item-content{flex:1;display:flex;align-items:center;padding:12px 16px;cursor:pointer;min-height:48px;transition:all .2s ease}.autocomplete-wrapper-item-content.autocomplete-wrapper-selected{background-color:#e3f2fd;color:#1976d2}.autocomplete-wrapper-history-item .autocomplete-wrapper-item-content{padding-left:12px}.autocomplete-wrapper-history-icon{color:#999;margin-right:12px;font-size:18px}.autocomplete-wrapper-item-details{flex:1;display:flex;align-items:center}.autocomplete-wrapper-remove-button{margin-right:8px}.autocomplete-wrapper-result-item{position:relative}.autocomplete-wrapper-item-info{flex:1;display:flex;align-items:center}.autocomplete-wrapper-default-item{flex:1}.autocomplete-wrapper-default-item .autocomplete-wrapper-item-name{font-weight:500;font-size:14px;margin-bottom:2px;color:#333}.autocomplete-wrapper-default-item .autocomplete-wrapper-item-description{font-size:12px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.autocomplete-wrapper-no-results{display:flex;flex-direction:column;align-items:center;padding:32px 16px;text-align:center;color:#666}.autocomplete-wrapper-no-results-icon{font-size:48px;color:#ccc;margin-bottom:16px;width:45px;height:45px}.autocomplete-wrapper-no-results-content{font-size:14px;line-height:1.5}.autocomplete-wrapper-default-no-results{text-align:center}.autocomplete-wrapper-default-no-results p:first-child{font-weight:500;margin-bottom:8px}.autocomplete-wrapper-footer{border-top:1px solid #f0f0f0;background:#fafafa;flex-shrink:0;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.autocomplete-wrapper-pagination-footer{display:flex;align-items:center;justify-content:space-between;width:100%;gap:16px}.autocomplete-wrapper-pagination-summary{font-size:12px;color:#666;white-space:nowrap}.autocomplete-wrapper-pagination-controls-footer{display:flex;align-items:center;gap:8px}.autocomplete-wrapper-page-indicator{font-size:12px;color:#666;min-width:40px;text-align:center}.autocomplete-wrapper-footer-actions{display:flex;gap:8px;flex-wrap:wrap}.autocomplete-wrapper-footer-button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;font-size:13px;text-transform:none;white-space:nowrap;background:none;border:1px solid #ddd;border-radius:4px;cursor:pointer;padding:8px 12px;transition:all .2s ease}.autocomplete-wrapper-footer-button.autocomplete-wrapper-create-button{background-color:#4caf500a;border-color:#4caf50;color:#4caf50}.autocomplete-wrapper-footer-button.autocomplete-wrapper-create-button:hover{background-color:#4caf5014}.autocomplete-wrapper-footer-button.autocomplete-wrapper-search-button{background-color:#ff98000a;border-color:#ff9800;color:#ff9800}.autocomplete-wrapper-footer-button.autocomplete-wrapper-search-button:hover{background-color:#ff980014}.autocomplete-wrapper-footer-button.autocomplete-wrapper-results-button{background-color:#3f51b50a;border-color:#3f51b5;color:#3f51b5}.autocomplete-wrapper-footer-button.autocomplete-wrapper-results-button:hover{background-color:#3f51b514}.autocomplete-wrapper-button-text{display:inline}.autocomplete-wrapper-items-list::-webkit-scrollbar{width:6px}.autocomplete-wrapper-items-list::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.autocomplete-wrapper-items-list::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.autocomplete-wrapper-items-list::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width: 768px){.autocomplete-wrapper-dropdown{min-width:280px;max-height:60vh}.autocomplete-wrapper-dropdown-content{max-height:60vh}.autocomplete-wrapper-input-field{font-size:16px}.autocomplete-wrapper-footer{padding:8px 12px}.autocomplete-wrapper-footer-actions{flex-direction:column;gap:6px}.autocomplete-wrapper-footer-button{width:100%;min-height:44px}.autocomplete-wrapper-pagination-footer{flex-direction:column;gap:8px}.autocomplete-wrapper-section-header{flex-direction:column;align-items:flex-start;min-height:80px;gap:8px}.autocomplete-wrapper-filter-controls{width:100%;justify-content:flex-start;flex-wrap:wrap;gap:12px}.autocomplete-wrapper-filter-select{min-width:100px;font-size:11px}.autocomplete-wrapper-filter-label{font-size:11px}.autocomplete-wrapper-pagination-header{width:100%;justify-content:space-between}.autocomplete-wrapper-pagination-header .autocomplete-wrapper-pagination-info{display:none}.autocomplete-wrapper-pagination-controls{gap:2px}.autocomplete-wrapper-page-input{width:40px}.autocomplete-wrapper-item-content{padding:16px 12px;min-height:52px}.autocomplete-wrapper-button-text{font-size:12px}.autocomplete-wrapper-items-list.autocomplete-wrapper-scrollable-list{max-height:250px}}@media (max-width: 480px){.autocomplete-wrapper-dropdown{min-width:260px;max-height:50vh}.autocomplete-wrapper-section-header{padding:8px 12px 6px;min-height:70px;gap:6px}.autocomplete-wrapper-filter-controls{gap:8px}.autocomplete-wrapper-filter-group{gap:4px}.autocomplete-wrapper-filter-select{min-width:90px;padding:3px 6px}.autocomplete-wrapper-item-content{padding:14px 12px}.autocomplete-wrapper-pagination-header{gap:8px}.autocomplete-wrapper-pagination-button{min-width:28px;height:28px}.autocomplete-wrapper-page-input{width:35px;height:28px}.autocomplete-wrapper-items-list.autocomplete-wrapper-scrollable-list{max-height:200px}.autocomplete-wrapper-footer-actions{gap:4px}.autocomplete-wrapper-footer-button{font-size:12px;padding:8px 12px;min-height:40px}.autocomplete-wrapper-button-text{display:none}}\\n\"], dependencies: [{ kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: OverlayModule }, { kind: \"directive\", type: i1.CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: [\"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPositionStrategy\", \"cdkConnectedOverlayOffsetX\", \"cdkConnectedOverlayOffsetY\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayHeight\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayMinHeight\", \"cdkConnectedOverlayBackdropClass\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayViewportMargin\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayDisableClose\", \"cdkConnectedOverlayTransformOriginOn\", \"cdkConnectedOverlayHasBackdrop\", \"cdkConnectedOverlayLockPosition\", \"cdkConnectedOverlayFlexibleDimensions\", \"cdkConnectedOverlayGrowAfterOpen\", \"cdkConnectedOverlayPush\", \"cdkConnectedOverlayDisposeOnNavigation\"], outputs: [\"backdropClick\", \"positionChange\", \"attach\", \"detach\", \"overlayKeydown\", \"overlayOutsideClick\"], exportAs: [\"cdkConnectedOverlay\"] }, { kind: \"directive\", type: i1.CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"] }, { kind: \"ngmodule\", type: MatProgressBarModule }, { kind: \"component\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: [\"color\", \"mode\", \"value\", \"diameter\", \"strokeWidth\"], exportAs: [\"matProgressSpinner\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: [\"compareWith\"] }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ReusableAutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-autocomplete-wrapper', imports: [\n MatIcon,\n NgTemplateOutlet,\n OverlayModule,\n MatProgressBarModule,\n MatProgressSpinner,\n FormsModule,\n MatIconButton,\n ], encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"autocomplete-wrapper-wrapper\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <!-- Input Container -->\\n <div\\n class=\\\"autocomplete-wrapper-input-container\\\"\\n cdkOverlayOrigin\\n #overlayPosition=\\\"cdkOverlayOrigin\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-input-wrapper\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-search-icon\\\">search</mat-icon>\\n <input\\n #searchInput\\n type=\\\"text\\\"\\n class=\\\"autocomplete-wrapper-input-field\\\"\\n [placeholder]=\\\"config.placeholder\\\"\\n [(ngModel)]=\\\"query\\\"\\n (input)=\\\"onInput($event)\\\"\\n (click)=\\\"showOverlay()\\\"\\n (keydown)=\\\"onKeyDown($event)\\\"\\n [disabled]=\\\"config.disabled || false\\\"\\n autocomplete=\\\"off\\\"\\n />\\n @if (query && query.length > 0 && !isLoading()) {\\n <button\\n mat-icon-button\\n (click)=\\\"clearSearch()\\\"\\n type=\\\"button\\\"\\n class=\\\"autocomplete-wrapper-clear-button\\\"\\n >\\n <mat-icon>clear</mat-icon>\\n </button>\\n }\\n <button mat-icon-button type=\\\"button\\\">\\n <mat-icon>add</mat-icon>\\n </button>\\n </div>\\n\\n @if (isLoading()) {\\n <div class=\\\"autocomplete-wrapper-loading-spinner\\\">\\n <mat-spinner diameter=\\\"20\\\" />\\n </div>\\n }\\n </div>\\n\\n <!-- Overlay -->\\n <ng-template\\n cdkConnectedOverlay\\n [cdkConnectedOverlayOrigin]=\\\"overlayPosition\\\"\\n [cdkConnectedOverlayOpen]=\\\"overlayOpen()\\\"\\n [cdkConnectedOverlayWidth]=\\\"overlayWidth()\\\"\\n [cdkConnectedOverlayHeight]=\\\"overlayMaxHeight()\\\"\\n (overlayOutsideClick)=\\\"hideOverlay()\\\"\\n (backdropClick)=\\\"hideOverlay()\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-dropdown\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <div class=\\\"autocomplete-wrapper-dropdown-content\\\">\\n <!-- History Section -->\\n @if (isHistoryVisible() && historyList().length > 0) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">B\\u00FAsquedas recientes</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n (click)=\\\"clearHistory()\\\"\\n class=\\\"autocomplete-wrapper-clear-history-button\\\"\\n >\\n <mat-icon>delete_outline</mat-icon>\\n </button>\\n </div>\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #historyListElement\\n >\\n @for (item of historyList(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-history-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <mat-icon class=\\\"autocomplete-wrapper-history-icon\\\">history</mat-icon>\\n <div class=\\\"autocomplete-wrapper-item-details\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"autocomplete-wrapper-remove-button\\\"\\n (click)=\\\"removeHistoryItem($index, $event)\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </li>\\n }\\n </ul>\\n </div>\\n }\\n\\n <!-- Results Section -->\\n @if (!isHistoryVisible()) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <!-- Header with filters and pagination -->\\n @if (config.enableFilters || config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n\\n <!-- Filters -->\\n @if (config.enableFilters) {\\n <div class=\\\"autocomplete-wrapper-filter-controls\\\">\\n @if (config.searchFields && config.searchFields.length > 1) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"searchBySelect\\\"\\n >Buscar por:</label\\n >\\n <select\\n id=\\\"searchBySelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.searchBy\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (field of config.searchFields; track $index) {\\n <option [value]=\\\"field.value\\\">{{ field.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n\\n @if (config.enableStockFilter && config.stockOptions) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"stockSelect\\\"\\n >Stock:</label\\n >\\n <select\\n id=\\\"stockSelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.stockFilter\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (option of config.stockOptions; track $index) {\\n <option [value]=\\\"option.value\\\">{{ option.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Pagination Controls -->\\n @if (config.enablePagination && totalPages() > 1) {\\n <div class=\\\"autocomplete-wrapper-pagination-header\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-info\\\">\\n <span>P\\u00E1gina {{ currentPage() }} de {{ totalPages() }}</span>\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToFirstPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>first_page</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <input\\n type=\\\"number\\\"\\n class=\\\"autocomplete-wrapper-page-input\\\"\\n [value]=\\\"currentPage()\\\"\\n [min]=\\\"1\\\"\\n [max]=\\\"totalPages()\\\"\\n (change)=\\\"goToPage($event)\\\"\\n />\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToLastPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>last_page</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n </div>\\n }\\n\\n <!-- Items List -->\\n @if (totalItems()) {\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #resultsListElement\\n >\\n @for (item of currentPageItems(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-result-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-item-info\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n\\n <!-- No Results -->\\n @if (!isLoading() && isNoResults()) {\\n <div class=\\\"autocomplete-wrapper-no-results\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-no-results-icon\\\">search_off</mat-icon>\\n <div class=\\\"autocomplete-wrapper-no-results-content\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n notFoundTemplate() || defaultNotFoundTemplate;\\n context: { $implicit: noResultsText() }\\n \\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <!-- Footer -->\\n @if (overlayOpen() && totalItems() > 0) {\\n <div class=\\\"autocomplete-wrapper-footer\\\">\\n @if (!isHistoryVisible() && totalItems() > 0 && config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-pagination-footer\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-summary\\\">\\n Mostrando {{ startItem() }}-{{ endItem() }} de {{ totalCount() }} resultados\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls-footer\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <span class=\\\"autocomplete-wrapper-page-indicator\\\"\\n >{{ currentPage() }} / {{ totalPages() }}</span\\n >\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n\\n @if (config.enableFooterActions) {\\n <div class=\\\"autocomplete-wrapper-footer-actions\\\">\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-create-button\\\"\\n (click)=\\\"onCreateNew($event)\\\"\\n >\\n <mat-icon>add</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Crear</span>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-search-button\\\"\\n (click)=\\\"onAdvancedSearch()\\\"\\n >\\n <mat-icon>tune</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Avanzada</span>\\n </button>\\n @if (!isHistoryVisible() && totalItems() > 0) {\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-results-button\\\"\\n (click)=\\\"onShowAllResults()\\\"\\n >\\n <mat-icon>list</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Todos</span>\\n </button>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Default Templates -->\\n <ng-template #defaultItemTemplate let-item>\\n <div class=\\\"autocomplete-wrapper-default-item\\\">\\n <div class=\\\"autocomplete-wrapper-item-name\\\">{{ getItemDisplayText(item) }}</div>\\n @if (item.description && typeof item === 'object') {\\n <div class=\\\"autocomplete-wrapper-item-description\\\">{{ item.description }}</div>\\n }\\n </div>\\n </ng-template>\\n\\n <ng-template #defaultNotFoundTemplate let-text>\\n <div class=\\\"autocomplete-wrapper-default-no-results\\\">\\n <p>{{ text }}</p>\\n <p>Intenta con otros t\\u00E9rminos de b\\u00FAsqueda</p>\\n </div>\\n </ng-template>\\n</div>\\n\", styles: [\".autocomplete-wrapper{position:relative;width:100%;max-width:100%}.autocomplete-wrapper.autocomplete-wrapper-active .autocomplete-wrapper-input-wrapper{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.autocomplete-wrapper-input-container{position:relative;width:100%}.autocomplete-wrapper-input-wrapper{position:relative;display:flex;align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:0 12px;transition:all .3s ease}.autocomplete-wrapper-input-wrapper:focus-within{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.autocomplete-wrapper-search-icon{color:#666;margin-right:8px;font-size:20px}.autocomplete-wrapper-input-field{flex:1;border:none;outline:none;font-size:16px;padding:7px 0;background:transparent;color:#333}.autocomplete-wrapper-input-field::placeholder{color:#999}.autocomplete-wrapper-input-field:disabled{opacity:.6;cursor:not-allowed}.autocomplete-wrapper-clear-button{margin-left:8px;color:#666;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.autocomplete-wrapper-clear-button:hover{background-color:#0000000a;color:#333}.autocomplete-wrapper-loading-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.autocomplete-wrapper-dropdown{background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid #e0e0e0;overflow:hidden;max-height:500px;min-width:300px;display:flex;flex-direction:column}.autocomplete-wrapper-dropdown.autocomplete-wrapper-active{animation:reusableAutocompleteSlideIn .2s ease-out}@keyframes reusableAutocompleteSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.autocomplete-wrapper-dropdown-content{display:flex;flex-direction:column;height:100%;max-height:500px}.autocomplete-wrapper-section{display:flex;flex-direction:column;height:100%;min-height:0}.autocomplete-wrapper-section-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 8px;border-bottom:1px solid #f0f0f0;background:#fafafa;flex-shrink:0;min-height:56px;flex-wrap:wrap;gap:12px}.autocomplete-wrapper-section-title{font-size:13px;font-weight:500;color:#666;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.autocomplete-wrapper-clear-history-button{color:#666;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.autocomplete-wrapper-clear-history-button:hover{background-color:#0000000a;color:#333}.autocomplete-wrapper-filter-controls{display:flex;align-items:center;gap:16px;flex:1;justify-content:center}.autocomplete-wrapper-filter-group{display:flex;align-items:center;gap:6px}.autocomplete-wrapper-filter-label{font-size:12px;color:#666;font-weight:500;white-space:nowrap}.autocomplete-wrapper-filter-select{padding:4px 8px;border:1px solid #ddd;border-radius:4px;font-size:12px;background:#fff;color:#333;cursor:pointer;min-width:120px}.autocomplete-wrapper-filter-select:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 1px #1976d233}.autocomplete-wrapper-filter-select:hover{border-color:#bbb}.autocomplete-wrapper-pagination-header{display:flex;align-items:center;gap:12px;margin-left:auto}.autocomplete-wrapper-pagination-info{font-size:12px;color:#666;white-space:nowrap}.autocomplete-wrapper-pagination-controls{display:flex;align-items:center;gap:4px}.autocomplete-wrapper-pagination-button{min-width:32px;height:32px;line-height:32px;padding:0;color:#666;background:none;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.autocomplete-wrapper-pagination-button:hover:not(:disabled){background-color:#0000000a;color:#333}.autocomplete-wrapper-pagination-button:disabled{opacity:.5;cursor:not-allowed}.autocomplete-wrapper-pagination-button mat-icon{font-size:18px;width:18px;height:18px}.autocomplete-wrapper-page-input{width:50px;height:32px;border:1px solid #ddd;border-radius:4px;text-align:center;font-size:12px;padding:4px;margin:0 4px}.autocomplete-wrapper-page-input:focus{outline:none;border-color:#1976d2}.autocomplete-wrapper-items-list{list-style:none;margin:0;padding:0;flex:1;min-height:0}.autocomplete-wrapper-items-list.autocomplete-wrapper-scrollable-list{overflow-y:auto}.autocomplete-wrapper-list-item{display:flex;align-items:center;border-bottom:1px solid #f5f5f5;transition:background-color .2s ease}.autocomplete-wrapper-list-item:last-child{border-bottom:none}.autocomplete-wrapper-list-item:hover{background-color:#f8f9fa}.autocomplete-wrapper-item-content{flex:1;display:flex;align-items:center;padding:12px 16px;cursor:pointer;min-height:48px;transition:all .2s ease}.autocomplete-wrapper-item-content.autocomplete-wrapper-selected{background-color:#e3f2fd;color:#1976d2}.autocomplete-wrapper-history-item .autocomplete-wrapper-item-content{padding-left:12px}.autocomplete-wrapper-history-icon{color:#999;margin-right:12px;font-size:18px}.autocomplete-wrapper-item-details{flex:1;display:flex;align-items:center}.autocomplete-wrapper-remove-button{margin-right:8px}.autocomplete-wrapper-result-item{position:relative}.autocomplete-wrapper-item-info{flex:1;display:flex;align-items:center}.autocomplete-wrapper-default-item{flex:1}.autocomplete-wrapper-default-item .autocomplete-wrapper-item-name{font-weight:500;font-size:14px;margin-bottom:2px;color:#333}.autocomplete-wrapper-default-item .autocomplete-wrapper-item-description{font-size:12px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.autocomplete-wrapper-no-results{display:flex;flex-direction:column;align-items:center;padding:32px 16px;text-align:center;color:#666}.autocomplete-wrapper-no-results-icon{font-size:48px;color:#ccc;margin-bottom:16px;width:45px;height:45px}.autocomplete-wrapper-no-results-content{font-size:14px;line-height:1.5}.autocomplete-wrapper-default-no-results{text-align:center}.autocomplete-wrapper-default-no-results p:first-child{font-weight:500;margin-bottom:8px}.autocomplete-wrapper-footer{border-top:1px solid #f0f0f0;background:#fafafa;flex-shrink:0;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.autocomplete-wrapper-pagination-footer{display:flex;align-items:center;justify-content:space-between;width:100%;gap:16px}.autocomplete-wrapper-pagination-summary{font-size:12px;color:#666;white-space:nowrap}.autocomplete-wrapper-pagination-controls-footer{display:flex;align-items:center;gap:8px}.autocomplete-wrapper-page-indicator{font-size:12px;color:#666;min-width:40px;text-align:center}.autocomplete-wrapper-footer-actions{display:flex;gap:8px;flex-wrap:wrap}.autocomplete-wrapper-footer-button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;font-size:13px;text-transform:none;white-space:nowrap;background:none;border:1px solid #ddd;border-radius:4px;cursor:pointer;padding:8px 12px;transition:all .2s ease}.autocomplete-wrapper-footer-button.autocomplete-wrapper-create-button{background-color:#4caf500a;border-color:#4caf50;color:#4caf50}.autocomplete-wrapper-footer-button.autocomplete-wrapper-create-button:hover{background-color:#4caf5014}.autocomplete-wrapper-footer-button.autocomplete-wrapper-search-button{background-color:#ff98000a;border-color:#ff9800;color:#ff9800}.autocomplete-wrapper-footer-button.autocomplete-wrapper-search-button:hover{background-color:#ff980014}.autocomplete-wrapper-footer-button.autocomplete-wrapper-results-button{background-color:#3f51b50a;border-color:#3f51b5;color:#3f51b5}.autocomplete-wrapper-footer-button.autocomplete-wrapper-results-button:hover{background-color:#3f51b514}.autocomplete-wrapper-button-text{display:inline}.autocomplete-wrapper-items-list::-webkit-scrollbar{width:6px}.autocomplete-wrapper-items-list::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.autocomplete-wrapper-items-list::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.autocomplete-wrapper-items-list::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width: 768px){.autocomplete-wrapper-dropdown{min-width:280px;max-height:60vh}.autocomplete-wrapper-dropdown-content{max-height:60vh}.autocomplete-wrapper-input-field{font-size:16px}.autocomplete-wrapper-footer{padding:8px 12px}.autocomplete-wrapper-footer-actions{flex-direction:column;gap:6px}.autocomplete-wrapper-footer-button{width:100%;min-height:44px}.autocomplete-wrapper-pagination-footer{flex-direction:column;gap:8px}.autocomplete-wrapper-section-header{flex-direction:column;align-items:flex-start;min-height:80px;gap:8px}.autocomplete-wrapper-filter-controls{width:100%;justify-content:flex-start;flex-wrap:wrap;gap:12px}.autocomplete-wrapper-filter-select{min-width:100px;font-size:11px}.autocomplete-wrapper-filter-label{font-size:11px}.autocomplete-wrapper-pagination-header{width:100%;justify-content:space-between}.autocomplete-wrapper-pagination-header .autocomplete-wrapper-pagination-info{display:none}.autocomplete-wrapper-pagination-controls{gap:2px}.autocomplete-wrapper-page-input{width:40px}.autocomplete-wrapper-item-content{padding:16px 12px;min-height:52px}.autocomplete-wrapper-button-text{font-size:12px}.autocomplete-wrapper-items-list.autocomplete-wrapper-scrollable-list{max-height:250px}}@media (max-width: 480px){.autocomplete-wrapper-dropdown{min-width:260px;max-height:50vh}.autocomplete-wrapper-section-header{padding:8px 12px 6px;min-height:70px;gap:6px}.autocomplete-wrapper-filter-controls{gap:8px}.autocomplete-wrapper-filter-group{gap:4px}.autocomplete-wrapper-filter-select{min-width:90px;padding:3px 6px}.autocomplete-wrapper-item-content{padding:14px 12px}.autocomplete-wrapper-pagination-header{gap:8px}.autocomplete-wrapper-pagination-button{min-width:28px;height:28px}.autocomplete-wrapper-page-input{width:35px;height:28px}.autocomplete-wrapper-items-list.autocomplete-wrapper-scrollable-list{max-height:200px}.autocomplete-wrapper-footer-actions{gap:4px}.autocomplete-wrapper-footer-button{font-size:12px;padding:8px 12px;min-height:40px}.autocomplete-wrapper-button-text{display:none}}\\n\"] }]\n }], propDecorators: { config: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXdyYXBwZXIvYXV0b2NvbXBsZXRlLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXdyYXBwZXIvYXV0b2NvbXBsZXRlLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENB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OGJBOFVBLHUyVER4U0ksT0FBTywySUFDUCxnQkFBZ0IsbUpBQ2hCLGFBQWEsMHJDQUNiLG9CQUFvQiwrQkFDcEIsa0JBQWtCLDhLQUNsQixXQUFXLDBnQ0FDWCxhQUFhOzsyRkFNSiw2QkFBNkI7a0JBZnpDLFNBQVM7K0JBQ0UsMEJBQTBCLFdBQzNCO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLGFBQWE7cUJBQ2QsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs4QkFJNUIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG4gIGluamVjdCxcbiAgb3V0cHV0LFxuICBpbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLFxuICBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnLFxuICBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0sXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbixcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdCxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclN0YXRlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXInLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SWNvbixcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25CdXR0b24sXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdXRvY29tcGxldGUtd3JhcHBlci5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFJldXNhYmxlQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBkYXRhU291cmNlID0gaW5wdXQ8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXT4oW10pOyAvLyBQYXJhIGLDunNxdWVkYSBsb2NhbFxuICBASW5wdXQoKSBjb25maWc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSBBVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRztcbiAgcmVhZG9ubHkgaXRlbVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgc2VhcmNoRnVuY3Rpb24gPSBpbnB1dDxBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoRnVuY3Rpb24+KCk7XG5cbiAgcmVhZG9ubHkgbm90Rm91bmRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgb3ZlcmxheVdpZHRoID0gaW5wdXQoJ2F1dG8nKTtcbiAgb3ZlcmxheU1heEhlaWdodCA9IGlucHV0KCc0MDBweCcpO1xuXG4gIGl0ZW1TZWxlY3RlZCA9IG91dHB1dDxBdXRvY29tcGxldGVXcmFwcGVySXRlbT4oKTtcbiAgc2VhcmNoQ2hhbmdlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHNlYXJjaFJlcXVlc3RlZCA9IG91dHB1dDx7IHF1ZXJ5OiBzdHJpbmc7IGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzOyBwYWdlOiBudW1iZXIgfT4oKTsgLy8gTnVldm8gZXZlbnRvXG4gIHBhZ2VDaGFuZ2VkID0gb3V0cHV0PG51bWJlcj4oKTtcbiAgZmlsdGVyQ2hhbmdlZCA9IG91dHB1dDxBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycz4oKTtcbiAgYWR2YW5jZWRTZWFyY2hDbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGFsbFJlc3VsdHNDbGlja2VkID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgY3JlYXRlQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoSW5wdXQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3NlYXJjaElucHV0Jyk7XG4gIHJlYWRvbmx5IGhpc3RvcnlMaXN0RWxlbWVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+PignaGlzdG9yeUxpc3RFbGVtZW50Jyk7XG4gIHJlYWRvbmx5IHJlc3VsdHNMaXN0RWxlbWVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+PigncmVzdWx0c0xpc3RFbGVtZW50Jyk7XG5cbiAgLy8gU3RhdGVcbiAgcXVlcnkgPSAnJztcbiAgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgb3ZlcmxheU9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKC0xKTtcbiAgY3VycmVudFBhZ2UgPSBzaWduYWwoMSk7XG4gIGZpbHRlcmVkSXRlbXMgPSBzaWduYWw8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXT4oW10pO1xuICBoaXN0b3J5TGlzdCA9IHNpZ25hbDxBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdPihbXSk7XG4gIHRvdGFsQ291bnQgPSBzaWduYWwoMCk7XG4gIC8vIEZpbHRlcnNcbiAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMgPSB7XG4gICAgc2VhcmNoQnk6ICduYW1lJyxcbiAgICBzdG9ja0ZpbHRlcjogJ2FsbCcsXG4gIH07XG5cbiAgLy8gQ29tcHV0ZWQgcHJvcGVydGllc1xuICBpc0hpc3RvcnlWaXNpYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5Lmxlbmd0aCA8ICh0aGlzLmNvbmZpZy5taW5TZWFyY2hMZW5ndGggfHwgMikgJiYgdGhpcy5oaXN0b3J5TGlzdCgpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHRvdGFsSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlcmVkSXRlbXMoKS5sZW5ndGgpO1xuXG4gIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsQ291bnQoKTtcbiAgICByZXR1cm4gdG90YWwgPiAwID8gTWF0aC5jZWlsKHRvdGFsIC8gKHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCkpIDogMTtcbiAgfSk7XG5cbiAgY3VycmVudFBhZ2VJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAvLyB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJdGVtcygpO1xuICAgIC8vIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UucGFnaW5hdGVJdGVtcyhcbiAgICAvLyAgIHRoaXMuZmlsdGVyZWRJdGVtcygpLFxuICAgIC8vICAgdGhpcy5jdXJyZW50UGFnZSgpLFxuICAgIC8vICAgdGhpcy5jb25maWcuaXRlbXNQZXJQYWdlIHx8IDEwXG4gICAgLy8gKTtcbiAgfSk7XG5cbiAgc3RhcnRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbEl0ZW1zKCk7XG4gICAgaWYgKHRvdGFsID09PSAwKSByZXR1cm4gMDtcbiAgICByZXR1cm4gKHRoaXMuY3VycmVudFBhZ2UoKSAtIDEpICogKHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCkgKyAxO1xuICB9KTtcblxuICBlbmRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbEl0ZW1zKCk7XG4gICAgY29uc3QgY2FsY3VsYXRlZCA9IHRoaXMuY3VycmVudFBhZ2UoKSAqICh0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2UgfHwgMTApO1xuICAgIHJldHVybiBNYXRoLm1pbihjYWxjdWxhdGVkLCB0b3RhbCk7XG4gIH0pO1xuXG4gIHNlY3Rpb25UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMudG90YWxJdGVtcygpO1xuICAgIHJldHVybiBgUmVzdWx0YWRvcyAoJHt0b3RhbH0pYDtcbiAgfSk7XG5cbiAgaXNOb1Jlc3VsdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudG90YWxJdGVtcygpID09PSAwICYmXG4gICAgICAhdGhpcy5pc0xvYWRpbmcoKSAmJlxuICAgICAgdGhpcy5xdWVyeS5sZW5ndGggPj0gKHRoaXMuY29uZmlnLm1pblNlYXJjaExlbmd0aCB8fCAyKVxuICAgICk7XG4gIH0pO1xuXG4gIC8vIFByaXZhdGVcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgcXVlcnk6IHN0cmluZzsgZmlsdGVyczogYW55OyBwYWdlOiBudW1iZXIgfT4oKTtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVTZXJ2aWNlID0gaW5qZWN0KEF1dG9jb21wbGV0ZVdyYXBwZXJTZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1lcmdlRGVmYXVsdENvbmZpZygpO1xuICAgIHRoaXMuc2V0dXBTZWFyY2goKTtcbiAgICB0aGlzLmxvYWRIaXN0b3J5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlRGVmYXVsdENvbmZpZygpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5tZXJnZUNvbmZpZyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5maWx0ZXJzLnNlYXJjaEJ5ID0gdGhpcy5jb25maWcuc2VhcmNoRmllbGRzPy5bMF0/LnZhbHVlIHx8ICduYW1lJztcbiAgICB0aGlzLmZpbHRlcnMuc3RvY2tGaWx0ZXIgPSB0aGlzLmNvbmZpZy5zdG9ja09wdGlvbnM/LlswXT8udmFsdWUgfHwgJ2FsbCc7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU2VhcmNoKCkge1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5zZXQoW10pO1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmNvbmZpZy5kZWJvdW5jZVRpbWUgfHwgMzAwKSxcbiAgICAgICAgLy8gZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgLy8gIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIC8vICAgIGNvbnNvbGUubG9nKHByZXYpO1xuICAgICAgICAvLyAgICBjb25zb2xlLmxvZyhjdXJyKTtcbiAgICAgICAgLy8gICAgICByZXR1cm4gIHByZXYucXVlcnkgPT09IGN1cnIucXVlcnkgJiZcbiAgICAgICAgLy8gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXYuZmlsdGVycykgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIuZmlsdGVycykgJiZcbiAgICAgICAgLy8gICAgICAgIHByZXYucGFnZSA9PT0gY3Vyci5wYWdlXG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IHF1ZXJ5IH0pID0+IHRoaXMucGVyZm9ybVNlYXJjaChxdWVyeSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMuc2V0KHJlc3VsdC5pdGVtcyk7XG4gICAgICAgIHRoaXMudG90YWxDb3VudC5zZXQocmVzdWx0LnRvdGFsQ291bnQpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBlcmZvcm1TZWFyY2gocXVlcnk6IHN0cmluZyk6IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdD4ge1xuICAgIGlmIChxdWVyeS5sZW5ndGggPCAodGhpcy5jb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpKSB7XG4gICAgICByZXR1cm4gb2YoeyBpdGVtczogW10sIHRvdGFsQ291bnQ6IDAgfSk7XG4gICAgfVxuXG4gICAgLy8gRVNUUkFURUdJQSBBOiBGdW5jacOzbiBkZSBiw7pzcXVlZGEgcGVyc29uYWxpemFkYVxuICAgIGNvbnN0IHNlYXJjaEZ1bmN0aW9uID0gdGhpcy5zZWFyY2hGdW5jdGlvbigpO1xuICAgIGlmIChzZWFyY2hGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHNlYXJjaEZ1bmN0aW9uKFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgdGhpcy5maWx0ZXJzLFxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlKCksXG4gICAgICAgIHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCxcbiAgICAgICkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKHsgaXRlbXM6IFtdLCB0b3RhbENvdW50OiAwIH0pKSk7XG4gICAgfVxuXG4gICAgLy8gRVNUUkFURUdJQSBCOiBFbWl0IGV2ZW50byBwYXJhIHF1ZSBlbCBwYWRyZSBtYW5lamVcbiAgICBpZiAodGhpcy5jb25maWcuc2VhcmNoTW9kZSA9PT0gJ3JlbW90ZScpIHtcbiAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlKCksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiBbXSwgdG90YWxDb3VudDogMCB9KTsgLy8gRWwgcGFkcmUgYWN0dWFsaXphcsOhIGxvcyBkYXRvc1xuICAgIH1cblxuICAgIC8vIEVTVFJBVEVHSUEgQzogQsO6c3F1ZWRhIGxvY2FsIChmYWxsYmFjaylcbiAgICByZXR1cm4gdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlLnNlYXJjaExvY2FsKFxuICAgICAgdGhpcy5kYXRhU291cmNlKCksXG4gICAgICBxdWVyeSxcbiAgICAgIHRoaXMuZmlsdGVycyxcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRIaXN0b3J5KCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5oaXN0b3J5JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGhpc3RvcnkgPT4ge1xuICAgICAgdGhpcy5oaXN0b3J5TGlzdC5zZXQoaGlzdG9yeSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaFN1YmplY3ROZXh0KCkge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJ5LFxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSgpLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gRXZlbnQgSGFuZGxlcnNcbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnF1ZXJ5ID0gdGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuXG4gICAgaWYgKHRoaXMucXVlcnkubGVuZ3RoID49ICh0aGlzLmNvbmZpZy5taW5TZWFyY2hMZW5ndGggfHwgMikpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdE5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zLnNldChbXSk7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICB0aGlzLnNlYXJjaENoYW5nZWQuZW1pdCh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaXN0ID0gdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCkgPyB0aGlzLmhpc3RvcnlMaXN0KCkgOiB0aGlzLmN1cnJlbnRQYWdlSXRlbXMoKTtcbiAgICBjb25zdCBtYXhJbmRleCA9IGN1cnJlbnRMaXN0Lmxlbmd0aCAtIDE7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKG1heEluZGV4ID49IDApIHtcbiAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLnNlbGVjdGVkSW5kZXgoKSA8IG1heEluZGV4ID8gdGhpcy5zZWxlY3RlZEluZGV4KCkgKyAxIDogMDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAobWF4SW5kZXggPj0gMCkge1xuICAgICAgICAgIGNvbnN0IHByZXZJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleCgpID4gMCA/IHRoaXMuc2VsZWN0ZWRJbmRleCgpIC0gMSA6IG1heEluZGV4O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQocHJldkluZGV4KTtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4KCkgPj0gMCAmJiB0aGlzLnNlbGVjdGVkSW5kZXgoKSA8PSBtYXhJbmRleCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShjdXJyZW50TGlzdFt0aGlzLnNlbGVjdGVkSW5kZXgoKV0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCkgJiYgdGhpcy5jb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgIHRoaXMuZ29Ub05leHRQYWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCkgJiYgdGhpcy5jb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgIGlmICh0aGlzLnF1ZXJ5Lmxlbmd0aCA+PSAodGhpcy5jb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpKSB7XG4gICAgICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5xdWVyeSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfVxuICAgIC8vIHRoaXMuZmlsdGVyQ2hhbmdlZC5lbWl0KHRoaXMuZmlsdGVycyk7XG4gIH1cblxuICAvLyBNw6l0b2RvIHDDumJsaWNvIHBhcmEgYWN0dWFsaXphciByZXN1bHRhZG9zIGRlc2RlIGVsIHBhZHJlXG4gIHB1YmxpYyB1cGRhdGVTZWFyY2hSZXN1bHRzKHJlc3VsdDogQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdCkge1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5zZXQocmVzdWx0Lml0ZW1zKTtcbiAgICB0aGlzLnRvdGFsQ291bnQuc2V0KHJlc3VsdC50b3RhbENvdW50KTtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLy8gT3ZlcmxheSBNZXRob2RzXG4gIHNob3dPdmVybGF5KCkge1xuICAgIHRoaXMub3ZlcmxheU9wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgaGlkZU92ZXJsYXkoKSB7XG4gICAgdGhpcy5vdmVybGF5T3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICB9XG5cbiAgaXNUeXBlKGl0ZW06IGFueSk6IGl0ZW0gaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgLy8gU2VsZWN0aW9uIE1ldGhvZHNcbiAgc2VsZWN0SXRlbShpdGVtOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jbGVhcklucHV0KSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcnkgPSB0aGlzLmdldEl0ZW1EaXNwbGF5VGV4dChpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5hZGRUb0hpc3RvcnkoaXRlbSwgdGhpcy5jb25maWcubWF4SGlzdG9yeUl0ZW1zKTtcbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0KCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMuc2V0KFtdKTtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCgxKTtcbiAgICB0aGlzLnNlYXJjaElucHV0KCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgdGhpcy5zZWFyY2hDaGFuZ2VkLmVtaXQoJycpO1xuICB9XG5cbiAgLy8gSGlzdG9yeSBNZXRob2RzXG4gIHJlbW92ZUhpc3RvcnlJdGVtKGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5yZW1vdmVGcm9tSGlzdG9yeShpbmRleCk7XG4gIH1cblxuICBjbGVhckhpc3RvcnkoKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlLmNsZWFySGlzdG9yeSgpO1xuICB9XG5cbiAgLy8gUGFnaW5hdGlvbiBNZXRob2RzXG4gIGdvVG9QYWdlKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IHBhZ2UgPSBwYXJzZUludCh0YXJnZXQudmFsdWUpO1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UuaXNWYWxpZFBhZ2UocGFnZSwgdGhpcy50b3RhbFBhZ2VzKCkpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UpO1xuICAgICAgdGhpcy5zZWFyY2hTdWJqZWN0TmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXQudmFsdWUgPSB0aGlzLmN1cnJlbnRQYWdlKCkudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBnb1RvRmlyc3RQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgIT09IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgtMSk7XG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoMSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub1ByZXZpb3VzUGFnZSgpIHtcbiAgICBjb25zdCBwcmV2UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKSAtIDE7XG4gICAgaWYgKHByZXZQYWdlID49IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHByZXZQYWdlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHByZXZQYWdlKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdE5leHQoKTtcbiAgICB9XG4gIH1cblxuICBnb1RvTmV4dFBhZ2UoKSB7XG4gICAgY29uc3QgbmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgKyAxO1xuICAgIGlmIChuZXh0UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQobmV4dFBhZ2UpO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgtMSk7XG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQobmV4dFBhZ2UpO1xuICAgICAgdGhpcy5zZWFyY2hTdWJqZWN0TmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9MYXN0UGFnZSgpIHtcbiAgICBjb25zdCBsYXN0UGFnZSA9IHRoaXMudG90YWxQYWdlcygpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgIT09IGxhc3RQYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChsYXN0UGFnZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChsYXN0UGFnZSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9vdGVyIEFjdGlvbnNcbiAgb25DcmVhdGVOZXcoXyRldmVudDogTW91c2VFdmVudCkge1xuICAgIC8vJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIC8vIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmNyZWF0ZUNsaWNrZWQuZW1pdCh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIG9uQWR2YW5jZWRTZWFyY2goKSB7XG4gICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hDbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2hvd0FsbFJlc3VsdHMoKSB7XG4gICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIHRoaXMuYWxsUmVzdWx0c0NsaWNrZWQuZW1pdCh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIC8vIFV0aWxpdHkgTWV0aG9kc1xuICBnZXRJdGVtRGlzcGxheVRleHQoaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UuZ2V0SXRlbURpc3BsYXlUZXh0KGl0ZW0pO1xuICB9XG5cbiAgbm9SZXN1bHRzVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcyBwYXJhIFwiJHt0aGlzLnF1ZXJ5fVwiYDtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9TZWxlY3RlZCgpIHtcbiAgICBjb25zdCBsaXN0RWxlbWVudCA9IHRoaXMuaXNIaXN0b3J5VmlzaWJsZSgpXG4gICAgICA/IHRoaXMuaGlzdG9yeUxpc3RFbGVtZW50KCk/Lm5hdGl2ZUVsZW1lbnRcbiAgICAgIDogdGhpcy5yZXN1bHRzTGlzdEVsZW1lbnQoKT8ubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChsaXN0RWxlbWVudCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gbGlzdEVsZW1lbnQuY2hpbGRyZW5bdGhpcy5zZWxlY3RlZEluZGV4KCldIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQdWJsaWMgQVBJXG4gIHB1YmxpYyBnZXRTdGF0ZSgpOiBBdXRvY29tcGxldGVXcmFwcGVyU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmcoKSxcbiAgICAgIG92ZXJsYXlPcGVuOiB0aGlzLm92ZXJsYXlPcGVuKCksXG4gICAgICBzZWxlY3RlZEluZGV4OiB0aGlzLnNlbGVjdGVkSW5kZXgoKSxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UoKSxcbiAgICAgICAgdG90YWxQYWdlczogdGhpcy50b3RhbFBhZ2VzKCksXG4gICAgICAgIHRvdGFsSXRlbXM6IHRoaXMudG90YWxJdGVtcygpLFxuICAgICAgICBpdGVtc1BlclBhZ2U6IHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCxcbiAgICAgICAgc3RhcnRJdGVtOiB0aGlzLnN0YXJ0SXRlbSgpLFxuICAgICAgICBlbmRJdGVtOiB0aGlzLmVuZEl0ZW0oKSxcbiAgICAgICAgaGFzTmV4dFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UoKSA8IHRoaXMudG90YWxQYWdlcygpLFxuICAgICAgICBoYXNQcmV2aW91c1BhZ2U6IHRoaXMuY3VycmVudFBhZ2UoKSA+IDEsXG4gICAgICB9LFxuICAgICAgaGFzUmVzdWx0czogdGhpcy50b3RhbEl0ZW1zKCkgPiAwLFxuICAgICAgaXNIaXN0b3J5VmlzaWJsZTogdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCksXG4gICAgICBoaXN0b3J5Q291bnQ6IHRoaXMuaGlzdG9yeUxpc3QoKS5sZW5ndGgsXG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgIGlmIChxdWVyeS5sZW5ndGggPj0gKHRoaXMuY29uZmlnLm1pblNlYXJjaExlbmd0aCB8fCAyKSkge1xuICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTtcbiAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zLnNldChbXSk7XG4gICAgICBpZiAocXVlcnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWFyY2hDaGFuZ2VkLmVtaXQocXVlcnkpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQoKT8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXdyYXBwZXJcIiBbY2xhc3MuYXV0b2NvbXBsZXRlLXdyYXBwZXItYWN0aXZlXT1cIm92ZXJsYXlPcGVuKClcIj5cbiAgPCEtLSBJbnB1dCBDb250YWluZXIgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWlucHV0LWNvbnRhaW5lclwiXG4gICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICNvdmVybGF5UG9zaXRpb249XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pbnB1dC13cmFwcGVyXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWFyY2gtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pbnB1dC1maWVsZFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXJcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5XCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJzaG93T3ZlcmxheSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIC8+XG4gICAgICBAaWYgKHF1ZXJ5ICYmIHF1ZXJ5Lmxlbmd0aCA+IDAgJiYgIWlzTG9hZGluZygpKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1jbGVhci1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItbG9hZGluZy1zcGlubmVyXCI+XG4gICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjIwXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPCEtLSBPdmVybGF5IC0tPlxuICA8bmctdGVtcGxhdGVcbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3ZlcmxheVBvc2l0aW9uXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwib3ZlcmxheU9wZW4oKVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJvdmVybGF5V2lkdGgoKVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHRdPVwib3ZlcmxheU1heEhlaWdodCgpXCJcbiAgICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJoaWRlT3ZlcmxheSgpXCJcbiAgICAoYmFja2Ryb3BDbGljayk9XCJoaWRlT3ZlcmxheSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1kcm9wZG93blwiIFtjbGFzcy5hdXRvY29tcGxldGUtd3JhcHBlci1hY3RpdmVdPVwib3ZlcmxheU9wZW4oKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWRyb3Bkb3duLWNvbnRlbnRcIj5cbiAgICAgICAgPCEtLSBIaXN0b3J5IFNlY3Rpb24gLS0+XG4gICAgICAgIEBpZiAoaXNIaXN0b3J5VmlzaWJsZSgpICYmIGhpc3RvcnlMaXN0KCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+QsO6c3F1ZWRhcyByZWNpZW50ZXM8L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJIaXN0b3J5KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItY2xlYXItaGlzdG9yeS1idXR0b25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW1zLWxpc3QgYXV0b2NvbXBsZXRlLXdyYXBwZXItc2Nyb2xsYWJsZS1saXN0XCJcbiAgICAgICAgICAgICAgI2hpc3RvcnlMaXN0RWxlbWVudFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGhpc3RvcnlMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWxpc3QtaXRlbSBhdXRvY29tcGxldGUtd3JhcHBlci1oaXN0b3J5LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VsZWN0ZWRdPVwiJGluZGV4ID09PSBzZWxlY3RlZEluZGV4KClcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1oaXN0b3J5LWljb25cIj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW0tZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZSgpIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXJlbW92ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSGlzdG9yeUl0ZW0oJGluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFJlc3VsdHMgU2VjdGlvbiAtLT5cbiAgICAgICAgQGlmICghaXNIaXN0b3J5VmlzaWJsZSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGVyIHdpdGggZmlsdGVycyBhbmQgcGFnaW5hdGlvbiAtLT5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZUZpbHRlcnMgfHwgY29uZmlnLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvblRpdGxlKCkgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZpbHRlcnMgLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb25maWcuZW5hYmxlRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbmZpZy5zZWFyY2hGaWVsZHMgJiYgY29uZmlnLnNlYXJjaEZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLWxhYmVsXCIgZm9yPVwic2VhcmNoQnlTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+QnVzY2FyIHBvcjo8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoQnlTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlcnMuc2VhcmNoQnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBjb25maWcuc2VhcmNoRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJmaWVsZC52YWx1ZVwiPnt7IGZpZWxkLmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb25maWcuZW5hYmxlU3RvY2tGaWx0ZXIgJiYgY29uZmlnLnN0b2NrT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1maWx0ZXItZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1sYWJlbFwiIGZvcj1cInN0b2NrU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlN0b2NrOjwvbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdG9ja1NlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVycy5zdG9ja0ZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBjb25maWcuc3RvY2tPcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gUGFnaW5hdGlvbiBDb250cm9scyAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVQYWdpbmF0aW9uICYmIHRvdGFsUGFnZXMoKSA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UMOhZ2luYSB7eyBjdXJyZW50UGFnZSgpIH19IGRlIHt7IHRvdGFsUGFnZXMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0ZpcnN0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Zmlyc3RfcGFnZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdlLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInRvdGFsUGFnZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImdvVG9QYWdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IHRvdGFsUGFnZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSB0b3RhbFBhZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5sYXN0X3BhZ2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvblRpdGxlKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIEl0ZW1zIExpc3QgLS0+XG4gICAgICAgICAgICBAaWYgKHRvdGFsSXRlbXMoKSkge1xuICAgICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW1zLWxpc3QgYXV0b2NvbXBsZXRlLXdyYXBwZXItc2Nyb2xsYWJsZS1saXN0XCJcbiAgICAgICAgICAgICAgICAjcmVzdWx0c0xpc3RFbGVtZW50XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGN1cnJlbnRQYWdlSXRlbXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1saXN0LWl0ZW0gYXV0b2NvbXBsZXRlLXdyYXBwZXItcmVzdWx0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbS1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VsZWN0ZWRdPVwiJGluZGV4ID09PSBzZWxlY3RlZEluZGV4KClcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW0taW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZSgpIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTm8gUmVzdWx0cyAtLT5cbiAgICAgICAgQGlmICghaXNMb2FkaW5nKCkgJiYgaXNOb1Jlc3VsdHMoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1uby1yZXN1bHRzXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1uby1yZXN1bHRzLWljb25cIj5zZWFyY2hfb2ZmPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1uby1yZXN1bHRzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBub3RGb3VuZFRlbXBsYXRlKCkgfHwgZGVmYXVsdE5vdEZvdW5kVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9SZXN1bHRzVGV4dCgpIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEZvb3RlciAtLT5cbiAgICAgICAgQGlmIChvdmVybGF5T3BlbigpICYmIHRvdGFsSXRlbXMoKSA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZm9vdGVyXCI+XG4gICAgICAgICAgICBAaWYgKCFpc0hpc3RvcnlWaXNpYmxlKCkgJiYgdG90YWxJdGVtcygpID4gMCAmJiBjb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1zdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgICBNb3N0cmFuZG8ge3sgc3RhcnRJdGVtKCkgfX0te3sgZW5kSXRlbSgpIH19IGRlIHt7IHRvdGFsQ291bnQoKSB9fSByZXN1bHRhZG9zXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tY29udHJvbHMtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdlLWluZGljYXRvclwiXG4gICAgICAgICAgICAgICAgICAgID57eyBjdXJyZW50UGFnZSgpIH19IC8ge3sgdG90YWxQYWdlcygpIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UoKSA9PT0gdG90YWxQYWdlcygpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVGb290ZXJBY3Rpb25zKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1mb290ZXItYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZm9vdGVyLWJ1dHRvbiBhdXRvY29tcGxldGUtd3JhcHBlci1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNyZWF0ZU5ldygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItYnV0dG9uLXRleHRcIj5DcmVhcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZvb3Rlci1idXR0b24gYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VhcmNoLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BZHZhbmNlZFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+dHVuZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWJ1dHRvbi10ZXh0XCI+QXZhbnphZGE8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgQGlmICghaXNIaXN0b3J5VmlzaWJsZSgpICYmIHRvdGFsSXRlbXMoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1mb290ZXItYnV0dG9uIGF1dG9jb21wbGV0ZS13cmFwcGVyLXJlc3VsdHMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd0FsbFJlc3VsdHMoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5saXN0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1idXR0b24tdGV4dFwiPlRvZG9zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBEZWZhdWx0IFRlbXBsYXRlcyAtLT5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1kZWZhdWx0LWl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLW5hbWVcIj57eyBnZXRJdGVtRGlzcGxheVRleHQoaXRlbSkgfX08L2Rpdj5cbiAgICAgIEBpZiAoaXRlbS5kZXNjcmlwdGlvbiAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW0tZGVzY3JpcHRpb25cIj57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm90Rm91bmRUZW1wbGF0ZSBsZXQtdGV4dD5cbiAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZGVmYXVsdC1uby1yZXN1bHRzXCI+XG4gICAgICA8cD57eyB0ZXh0IH19PC9wPlxuICAgICAgPHA+SW50ZW50YSBjb24gb3Ryb3MgdMOpcm1pbm9zIGRlIGLDunNxdWVkYTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19","import { Directive, ElementRef, HostListener, inject, Renderer2 } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class ToUpperCaseDirective {\n el = inject(ElementRef);\n renderer = inject(Renderer2);\n onInput() {\n const value = this.el.nativeElement.value;\n this.el.nativeElement.value = value.toUpperCase();\n this.onChange(value.toUpperCase()); // Llamar a la función que actualiza el valor del modelo\n }\n // Funciones de ControlValueAccessor\n onChange = (_value) => {\n // ControlValueAccessor callback\n };\n onTouched = () => {\n // ControlValueAccessor callback\n };\n writeValue(value) {\n if (value) {\n this.el.nativeElement.value = value.toUpperCase();\n }\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ToUpperCaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.2\", type: ToUpperCaseDirective, isStandalone: true, selector: \"[acpToUpperCase]\", host: { listeners: { \"input\": \"onInput()\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToUpperCaseDirective,\n multi: true,\n },\n ], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ToUpperCaseDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[acpToUpperCase]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToUpperCaseDirective,\n multi: true,\n },\n ],\n }]\n }], propDecorators: { onInput: [{\n type: HostListener,\n args: ['input']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tdXBwZXItY2FzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy90by11cHBlci1jYXNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBWXpFLE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWQsT0FBTztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0RBQXdEO0lBQzlGLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsUUFBUSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7UUFDNUIsZ0NBQWdDO0lBQ2xDLENBQUMsQ0FBQztJQUNGLFNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDZixnQ0FBZ0M7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUEyQjtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO3VHQTlCVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiw4R0FScEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzJGQUVVLG9CQUFvQjtrQkFWaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxzQkFBc0I7NEJBQ2pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzhCQUt3QixPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjcFRvVXBwZXJDYXNlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFRvVXBwZXJDYXNlRGlyZWN0aXZlLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9VcHBlckNhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByaXZhdGUgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpIG9uSW5wdXQoKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLnRvVXBwZXJDYXNlKCkpOyAvLyBMbGFtYXIgYSBsYSBmdW5jacOzbiBxdWUgYWN0dWFsaXphIGVsIHZhbG9yIGRlbCBtb2RlbG9cbiAgfVxuXG4gIC8vIEZ1bmNpb25lcyBkZSBDb250cm9sVmFsdWVBY2Nlc3NvclxuICBvbkNoYW5nZSA9IChfdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNhbGxiYWNrXG4gIH07XG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBjYWxsYmFja1xuICB9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\n/*\n InjectionToken is a generic class provided by Angular for creating custom injection tokens.\n*/\nexport const DYNAMIC_INPUT = new InjectionToken('DYNAMIC_INPUT');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9pbnB1dHMvZHluYW1pYy1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DOztFQUVFO0FBQ0YsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLypcbiAgSW5qZWN0aW9uVG9rZW4gaXMgYSBnZW5lcmljIGNsYXNzIHByb3ZpZGVkIGJ5IEFuZ3VsYXIgZm9yIGNyZWF0aW5nIGN1c3RvbSBpbmplY3Rpb24gdG9rZW5zLlxuKi9cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0lOUFVUID0gbmV3IEluamVjdGlvblRva2VuKCdEWU5BTUlDX0lOUFVUJyk7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWNvbXBvbmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9hY29udHBsdXMtbmctY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2","i3","i4","i5"],"mappings":"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"}
1
+ {"version":3,"file":"acontplus-ng-components.mjs","sources":["../tmp-esm2022/lib/components/cards/dynamic-card/dynamic-card.component.js","../tmp-esm2022/lib/components/button/button.component.js","../tmp-esm2022/lib/components/dialog-wrapper/dialog-wrapper.component.js","../tmp-esm2022/lib/components/icons/user-icon/user-icon.component.js","../tmp-esm2022/lib/components/icons/svg-icon/svg-icon.component.js","../tmp-esm2022/lib/components/input-chip/input-chip.component.js","../tmp-esm2022/lib/components/spinner/spinner.component.js","../tmp-esm2022/lib/components/tables/tabulator-table/tabulator-table.component.js","../tmp-esm2022/lib/pipes/get-total.pipe.js","../tmp-esm2022/lib/pipes/status-display.pipe.js","../tmp-esm2022/lib/components/tables/dynamic-table/dynamic-table.component.js","../tmp-esm2022/lib/services/dialog/advanced-dialog.service.js","../tmp-esm2022/lib/services/overlay.service.js","../tmp-esm2022/lib/services/theme.service.js","../tmp-esm2022/lib/models/autocomplete-wrapper.js","../tmp-esm2022/lib/services/autocomplete-wrapper.service.js","../tmp-esm2022/lib/components/theme-toggle/theme-toggle.component.js","../tmp-esm2022/lib/models/mat-table-models/field-definition.js","../tmp-esm2022/lib/models/mat-table-models/column-definition.js","../tmp-esm2022/lib/models/mat-table-models/table-cell-index.js","../tmp-esm2022/lib/models/pagination.js","../tmp-esm2022/lib/components/autocomplete-wrapper/autocomplete-wrapper.component.js","../tmp-esm2022/lib/directives/to-upper-case.directive.js","../tmp-esm2022/lib/inputs/dynamic-input.js","../tmp-esm2022/acontplus-ng-components.js"],"sourcesContent":["import { Component, input, output, booleanAttribute, ViewEncapsulation } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/card\";\nimport * as i2 from \"@angular/material/button\";\nimport * as i3 from \"@angular/material/icon\";\n/**\n * A versatile card component that wraps Angular Material's mat-card with additional functionality\n * and customization options. This component provides a consistent card layout with configurable\n * header, content, and action areas.\n *\n * @example\n * <acp-dynamic-card\n * [cardTitle]=\"'Card Title'\"\n * [cardSubtitle]=\"'Card Subtitle'\"\n * [isHeaderVisible]=\"true\"\n * [areActionsVisible]=\"true\"\n * (primaryButtonClicked)=\"onPrimaryAction()\">\n * Card content goes here\n * </acp-dynamic-card>\n */\nexport class DynamicCardComponent {\n // Header inputs\n /**\n * The title text to display in the card header.\n * @default null\n */\n cardTitle = input(null, ...(ngDevMode ? [{ debugName: \"cardTitle\" }] : []));\n /**\n * The subtitle text to display in the card header.\n * @default null\n */\n cardSubtitle = input(null, ...(ngDevMode ? [{ debugName: \"cardSubtitle\" }] : []));\n /**\n * URL for the avatar image to display in the card header.\n * @default null\n */\n avatarImageUrl = input(null, ...(ngDevMode ? [{ debugName: \"avatarImageUrl\" }] : []));\n /**\n * Whether to show the card header section.\n * @default false\n */\n isHeaderVisible = input(false, ...(ngDevMode ? [{ debugName: \"isHeaderVisible\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n // Content inputs\n /**\n * CSS padding value for the card content area.\n * @default '1rem'\n */\n contentPadding = input('1rem', ...(ngDevMode ? [{ debugName: \"contentPadding\" }] : []));\n /**\n * Whether to show a divider between the header and content sections.\n * @default false\n */\n hasDivider = input(false, ...(ngDevMode ? [{ debugName: \"hasDivider\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n // Action inputs\n /**\n * Whether to show the action buttons section.\n * @default false\n */\n areActionsVisible = input(false, ...(ngDevMode ? [{ debugName: \"areActionsVisible\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * Text for the primary action button.\n * @default 'Confirm'\n */\n primaryButtonText = input('Confirm', ...(ngDevMode ? [{ debugName: \"primaryButtonText\" }] : []));\n /**\n * Text for the secondary action button.\n * @default 'Cancel'\n */\n secondaryButtonText = input('Cancel', ...(ngDevMode ? [{ debugName: \"secondaryButtonText\" }] : []));\n /**\n * Material icon name for the primary button.\n * @default null\n */\n primaryButtonIcon = input(null, ...(ngDevMode ? [{ debugName: \"primaryButtonIcon\" }] : []));\n /**\n * Material icon name for the secondary button.\n * @default null\n */\n secondaryButtonIcon = input(null, ...(ngDevMode ? [{ debugName: \"secondaryButtonIcon\" }] : []));\n /**\n * Alignment of the action buttons.\n * @default 'end'\n */\n buttonsPosition = input('end', ...(ngDevMode ? [{ debugName: \"buttonsPosition\" }] : []));\n // Output events\n /**\n * Event emitted when the primary button is clicked.\n */\n primaryButtonClicked = output();\n /**\n * Event emitted when the secondary button is clicked.\n */\n secondaryButtonClicked = output();\n /**\n * Event emitted when the card is clicked.\n */\n cardClicked = output();\n // Methods\n /**\n * Handles the primary button click event.\n * Stops event propagation and emits the primaryButtonClicked event.\n * @param event The click event\n */\n handlePrimaryButtonClick(event) {\n event.stopPropagation();\n this.primaryButtonClicked.emit();\n }\n /**\n * Handles the secondary button click event.\n * Stops event propagation and emits the secondaryButtonClicked event.\n * @param event The click event\n */\n handleSecondaryButtonClick(event) {\n event.stopPropagation();\n this.secondaryButtonClicked.emit();\n }\n /**\n * Handles the card click event.\n * Emits the cardClicked event with the original event.\n * @param event The click event\n */\n handleCardClick(event) {\n this.cardClicked.emit(event);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DynamicCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: DynamicCardComponent, isStandalone: true, selector: \"acp-dynamic-card\", inputs: { cardTitle: { classPropertyName: \"cardTitle\", publicName: \"cardTitle\", isSignal: true, isRequired: false, transformFunction: null }, cardSubtitle: { classPropertyName: \"cardSubtitle\", publicName: \"cardSubtitle\", isSignal: true, isRequired: false, transformFunction: null }, avatarImageUrl: { classPropertyName: \"avatarImageUrl\", publicName: \"avatarImageUrl\", isSignal: true, isRequired: false, transformFunction: null }, isHeaderVisible: { classPropertyName: \"isHeaderVisible\", publicName: \"isHeaderVisible\", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: \"contentPadding\", publicName: \"contentPadding\", isSignal: true, isRequired: false, transformFunction: null }, hasDivider: { classPropertyName: \"hasDivider\", publicName: \"hasDivider\", isSignal: true, isRequired: false, transformFunction: null }, areActionsVisible: { classPropertyName: \"areActionsVisible\", publicName: \"areActionsVisible\", isSignal: true, isRequired: false, transformFunction: null }, primaryButtonText: { classPropertyName: \"primaryButtonText\", publicName: \"primaryButtonText\", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonText: { classPropertyName: \"secondaryButtonText\", publicName: \"secondaryButtonText\", isSignal: true, isRequired: false, transformFunction: null }, primaryButtonIcon: { classPropertyName: \"primaryButtonIcon\", publicName: \"primaryButtonIcon\", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonIcon: { classPropertyName: \"secondaryButtonIcon\", publicName: \"secondaryButtonIcon\", isSignal: true, isRequired: false, transformFunction: null }, buttonsPosition: { classPropertyName: \"buttonsPosition\", publicName: \"buttonsPosition\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { primaryButtonClicked: \"primaryButtonClicked\", secondaryButtonClicked: \"secondaryButtonClicked\", cardClicked: \"cardClicked\" }, ngImport: i0, template: \"<mat-card\\n appearance=\\\"outlined\\\"\\n (click)=\\\"handleCardClick($event)\\\"\\n [class.mat-card-divider]=\\\"hasDivider()\\\"\\n>\\n @if (isHeaderVisible()) {\\n <mat-card-header>\\n @if (avatarImageUrl()) {\\n <img mat-card-avatar [src]=\\\"avatarImageUrl()\\\" alt=\\\"Card avatar\\\" />\\n }\\n @if (cardTitle()) {\\n <mat-card-title>{{ cardTitle() }}</mat-card-title>\\n }\\n @if (cardSubtitle()) {\\n <mat-card-subtitle>{{ cardSubtitle() }}</mat-card-subtitle>\\n }\\n </mat-card-header>\\n }\\n\\n <mat-card-content [style.padding]=\\\"contentPadding()\\\">\\n <ng-content />\\n </mat-card-content>\\n\\n @if (areActionsVisible()) {\\n <mat-card-actions [align]=\\\"buttonsPosition()\\\">\\n @if (secondaryButtonText()) {\\n <button mat-button color=\\\"warn\\\" (click)=\\\"handleSecondaryButtonClick($event)\\\">\\n @if (secondaryButtonIcon()) {\\n <mat-icon>{{ secondaryButtonIcon() }}</mat-icon>\\n }\\n {{ secondaryButtonText() }}\\n </button>\\n }\\n\\n @if (primaryButtonText()) {\\n <button mat-button color=\\\"primary\\\" (click)=\\\"handlePrimaryButtonClick($event)\\\">\\n @if (primaryButtonIcon()) {\\n <mat-icon>{{ primaryButtonIcon() }}</mat-icon>\\n }\\n {{ primaryButtonText() }}\\n </button>\\n }\\n </mat-card-actions>\\n }\\n</mat-card>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: MatCardModule }, { kind: \"component\", type: i1.MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"directive\", type: i1.MatCardActions, selector: \"mat-card-actions\", inputs: [\"align\"], exportAs: [\"matCardActions\"] }, { kind: \"directive\", type: i1.MatCardAvatar, selector: \"[mat-card-avatar], [matCardAvatar]\" }, { kind: \"directive\", type: i1.MatCardContent, selector: \"mat-card-content\" }, { kind: \"component\", type: i1.MatCardHeader, selector: \"mat-card-header\" }, { kind: \"directive\", type: i1.MatCardSubtitle, selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\" }, { kind: \"directive\", type: i1.MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\" }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i2.MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i3.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DynamicCardComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-dynamic-card', standalone: true, imports: [MatCardModule, MatButtonModule, MatIconModule], encapsulation: ViewEncapsulation.None, template: \"<mat-card\\n appearance=\\\"outlined\\\"\\n (click)=\\\"handleCardClick($event)\\\"\\n [class.mat-card-divider]=\\\"hasDivider()\\\"\\n>\\n @if (isHeaderVisible()) {\\n <mat-card-header>\\n @if (avatarImageUrl()) {\\n <img mat-card-avatar [src]=\\\"avatarImageUrl()\\\" alt=\\\"Card avatar\\\" />\\n }\\n @if (cardTitle()) {\\n <mat-card-title>{{ cardTitle() }}</mat-card-title>\\n }\\n @if (cardSubtitle()) {\\n <mat-card-subtitle>{{ cardSubtitle() }}</mat-card-subtitle>\\n }\\n </mat-card-header>\\n }\\n\\n <mat-card-content [style.padding]=\\\"contentPadding()\\\">\\n <ng-content />\\n </mat-card-content>\\n\\n @if (areActionsVisible()) {\\n <mat-card-actions [align]=\\\"buttonsPosition()\\\">\\n @if (secondaryButtonText()) {\\n <button mat-button color=\\\"warn\\\" (click)=\\\"handleSecondaryButtonClick($event)\\\">\\n @if (secondaryButtonIcon()) {\\n <mat-icon>{{ secondaryButtonIcon() }}</mat-icon>\\n }\\n {{ secondaryButtonText() }}\\n </button>\\n }\\n\\n @if (primaryButtonText()) {\\n <button mat-button color=\\\"primary\\\" (click)=\\\"handlePrimaryButtonClick($event)\\\">\\n @if (primaryButtonIcon()) {\\n <mat-icon>{{ primaryButtonIcon() }}</mat-icon>\\n }\\n {{ primaryButtonText() }}\\n </button>\\n }\\n </mat-card-actions>\\n }\\n</mat-card>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhcmRzL2R5bmFtaWMtY2FyZC9keW5hbWljLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2FyZHMvZHluYW1pYy1jYXJkL2R5bmFtaWMtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBRXZEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBU0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixnQkFBZ0I7SUFDaEI7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxxREFBQyxDQUFDO0lBRXZDOzs7T0FHRztJQUNILFlBQVksR0FBRyxLQUFLLENBQWdCLElBQUksd0RBQUMsQ0FBQztJQUUxQzs7O09BR0c7SUFDSCxjQUFjLEdBQUcsS0FBSyxDQUFnQixJQUFJLDBEQUFDLENBQUM7SUFFNUM7OztPQUdHO0lBQ0gsZUFBZSxHQUFHLEtBQUssQ0FBQyxLQUFLLG1EQUFJLFNBQVMsRUFBRSxnQkFBZ0IsT0FBN0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBQyxDQUFDO0lBRWhFLGlCQUFpQjtJQUNqQjs7O09BR0c7SUFDSCxjQUFjLEdBQUcsS0FBSyxDQUFTLE1BQU0sMERBQUMsQ0FBQztJQUV2Qzs7O09BR0c7SUFDSCxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssOENBQUksU0FBUyxFQUFFLGdCQUFnQixPQUE3QixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFDLENBQUM7SUFFM0QsZ0JBQWdCO0lBQ2hCOzs7T0FHRztJQUNILGlCQUFpQixHQUFHLEtBQUssQ0FBQyxLQUFLLHFEQUFJLFNBQVMsRUFBRSxnQkFBZ0IsT0FBN0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBQyxDQUFDO0lBRWxFOzs7T0FHRztJQUNILGlCQUFpQixHQUFHLEtBQUssQ0FBQyxTQUFTLDZEQUFDLENBQUM7SUFFckM7OztPQUdHO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFFBQVEsK0RBQUMsQ0FBQztJQUV0Qzs7O09BR0c7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLENBQWdCLElBQUksNkRBQUMsQ0FBQztJQUUvQzs7O09BR0c7SUFDSCxtQkFBbUIsR0FBRyxLQUFLLENBQWdCLElBQUksK0RBQUMsQ0FBQztJQUVqRDs7O09BR0c7SUFDSCxlQUFlLEdBQUcsS0FBSyxDQUFrQixLQUFLLDJEQUFDLENBQUM7SUFFaEQsZ0JBQWdCO0lBQ2hCOztPQUVHO0lBQ0gsb0JBQW9CLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFdEM7O09BRUc7SUFDSCxzQkFBc0IsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUV4Qzs7T0FFRztJQUNILFdBQVcsR0FBRyxNQUFNLEVBQVMsQ0FBQztJQUU5QixVQUFVO0lBQ1Y7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLEtBQVk7UUFDbkMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUEwQixDQUFDLEtBQVk7UUFDckMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxLQUFZO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7dUdBeEhVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLG0rREM1QmpDLHcyQ0E2Q0EseUREdEJZLGFBQWEsd3VCQUFFLGVBQWUsbVhBQUUsYUFBYTs7MkZBSzVDLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsaUJBR3pDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIGJvb2xlYW5BdHRyaWJ1dGUsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG4vKipcbiAqIEEgdmVyc2F0aWxlIGNhcmQgY29tcG9uZW50IHRoYXQgd3JhcHMgQW5ndWxhciBNYXRlcmlhbCdzIG1hdC1jYXJkIHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5XG4gKiBhbmQgY3VzdG9taXphdGlvbiBvcHRpb25zLiBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgY2FyZCBsYXlvdXQgd2l0aCBjb25maWd1cmFibGVcbiAqIGhlYWRlciwgY29udGVudCwgYW5kIGFjdGlvbiBhcmVhcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPGFjcC1keW5hbWljLWNhcmRcbiAqICAgW2NhcmRUaXRsZV09XCInQ2FyZCBUaXRsZSdcIlxuICogICBbY2FyZFN1YnRpdGxlXT1cIidDYXJkIFN1YnRpdGxlJ1wiXG4gKiAgIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiXG4gKiAgIFthcmVBY3Rpb25zVmlzaWJsZV09XCJ0cnVlXCJcbiAqICAgKHByaW1hcnlCdXR0b25DbGlja2VkKT1cIm9uUHJpbWFyeUFjdGlvbigpXCI+XG4gKiAgIENhcmQgY29udGVudCBnb2VzIGhlcmVcbiAqIDwvYWNwLWR5bmFtaWMtY2FyZD5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWR5bmFtaWMtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRDYXJkTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2R5bmFtaWMtY2FyZC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNDYXJkQ29tcG9uZW50IHtcbiAgLy8gSGVhZGVyIGlucHV0c1xuICAvKipcbiAgICogVGhlIHRpdGxlIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgY2FyZCBoZWFkZXIuXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGNhcmRUaXRsZSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VidGl0bGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBjYXJkIGhlYWRlci5cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgY2FyZFN1YnRpdGxlID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFVSTCBmb3IgdGhlIGF2YXRhciBpbWFnZSB0byBkaXNwbGF5IGluIHRoZSBjYXJkIGhlYWRlci5cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgYXZhdGFySW1hZ2VVcmwgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IHRoZSBjYXJkIGhlYWRlciBzZWN0aW9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaXNIZWFkZXJWaXNpYmxlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8vIENvbnRlbnQgaW5wdXRzXG4gIC8qKlxuICAgKiBDU1MgcGFkZGluZyB2YWx1ZSBmb3IgdGhlIGNhcmQgY29udGVudCBhcmVhLlxuICAgKiBAZGVmYXVsdCAnMXJlbSdcbiAgICovXG4gIGNvbnRlbnRQYWRkaW5nID0gaW5wdXQ8c3RyaW5nPignMXJlbScpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBkaXZpZGVyIGJldHdlZW4gdGhlIGhlYWRlciBhbmQgY29udGVudCBzZWN0aW9ucy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhhc0RpdmlkZXIgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLy8gQWN0aW9uIGlucHV0c1xuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IHRoZSBhY3Rpb24gYnV0dG9ucyBzZWN0aW9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYXJlQWN0aW9uc1Zpc2libGUgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFRleHQgZm9yIHRoZSBwcmltYXJ5IGFjdGlvbiBidXR0b24uXG4gICAqIEBkZWZhdWx0ICdDb25maXJtJ1xuICAgKi9cbiAgcHJpbWFyeUJ1dHRvblRleHQgPSBpbnB1dCgnQ29uZmlybScpO1xuXG4gIC8qKlxuICAgKiBUZXh0IGZvciB0aGUgc2Vjb25kYXJ5IGFjdGlvbiBidXR0b24uXG4gICAqIEBkZWZhdWx0ICdDYW5jZWwnXG4gICAqL1xuICBzZWNvbmRhcnlCdXR0b25UZXh0ID0gaW5wdXQoJ0NhbmNlbCcpO1xuXG4gIC8qKlxuICAgKiBNYXRlcmlhbCBpY29uIG5hbWUgZm9yIHRoZSBwcmltYXJ5IGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgcHJpbWFyeUJ1dHRvbkljb24gPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogTWF0ZXJpYWwgaWNvbiBuYW1lIGZvciB0aGUgc2Vjb25kYXJ5IGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgc2Vjb25kYXJ5QnV0dG9uSWNvbiA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBBbGlnbm1lbnQgb2YgdGhlIGFjdGlvbiBidXR0b25zLlxuICAgKiBAZGVmYXVsdCAnZW5kJ1xuICAgKi9cbiAgYnV0dG9uc1Bvc2l0aW9uID0gaW5wdXQ8J3N0YXJ0JyB8ICdlbmQnPignZW5kJyk7XG5cbiAgLy8gT3V0cHV0IGV2ZW50c1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwcmltYXJ5IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgcHJpbWFyeUJ1dHRvbkNsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWNvbmRhcnkgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBzZWNvbmRhcnlCdXR0b25DbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2FyZCBpcyBjbGlja2VkLlxuICAgKi9cbiAgY2FyZENsaWNrZWQgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgLy8gTWV0aG9kc1xuICAvKipcbiAgICogSGFuZGxlcyB0aGUgcHJpbWFyeSBidXR0b24gY2xpY2sgZXZlbnQuXG4gICAqIFN0b3BzIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBlbWl0cyB0aGUgcHJpbWFyeUJ1dHRvbkNsaWNrZWQgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgY2xpY2sgZXZlbnRcbiAgICovXG4gIGhhbmRsZVByaW1hcnlCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnByaW1hcnlCdXR0b25DbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBzZWNvbmRhcnkgYnV0dG9uIGNsaWNrIGV2ZW50LlxuICAgKiBTdG9wcyBldmVudCBwcm9wYWdhdGlvbiBhbmQgZW1pdHMgdGhlIHNlY29uZGFyeUJ1dHRvbkNsaWNrZWQgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgY2xpY2sgZXZlbnRcbiAgICovXG4gIGhhbmRsZVNlY29uZGFyeUJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2Vjb25kYXJ5QnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2FyZCBjbGljayBldmVudC5cbiAgICogRW1pdHMgdGhlIGNhcmRDbGlja2VkIGV2ZW50IHdpdGggdGhlIG9yaWdpbmFsIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGNsaWNrIGV2ZW50XG4gICAqL1xuICBoYW5kbGVDYXJkQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jYXJkQ2xpY2tlZC5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkXG4gIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiXG4gIChjbGljayk9XCJoYW5kbGVDYXJkQ2xpY2soJGV2ZW50KVwiXG4gIFtjbGFzcy5tYXQtY2FyZC1kaXZpZGVyXT1cImhhc0RpdmlkZXIoKVwiXG4+XG4gIEBpZiAoaXNIZWFkZXJWaXNpYmxlKCkpIHtcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgICAgQGlmIChhdmF0YXJJbWFnZVVybCgpKSB7XG4gICAgICAgIDxpbWcgbWF0LWNhcmQtYXZhdGFyIFtzcmNdPVwiYXZhdGFySW1hZ2VVcmwoKVwiIGFsdD1cIkNhcmQgYXZhdGFyXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY2FyZFRpdGxlKCkpIHtcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPnt7IGNhcmRUaXRsZSgpIH19PC9tYXQtY2FyZC10aXRsZT5cbiAgICAgIH1cbiAgICAgIEBpZiAoY2FyZFN1YnRpdGxlKCkpIHtcbiAgICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPnt7IGNhcmRTdWJ0aXRsZSgpIH19PC9tYXQtY2FyZC1zdWJ0aXRsZT5cbiAgICAgIH1cbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgfVxuXG4gIDxtYXQtY2FyZC1jb250ZW50IFtzdHlsZS5wYWRkaW5nXT1cImNvbnRlbnRQYWRkaW5nKClcIj5cbiAgICA8bmctY29udGVudCAvPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgQGlmIChhcmVBY3Rpb25zVmlzaWJsZSgpKSB7XG4gICAgPG1hdC1jYXJkLWFjdGlvbnMgW2FsaWduXT1cImJ1dHRvbnNQb3NpdGlvbigpXCI+XG4gICAgICBAaWYgKHNlY29uZGFyeUJ1dHRvblRleHQoKSkge1xuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImhhbmRsZVNlY29uZGFyeUJ1dHRvbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICBAaWYgKHNlY29uZGFyeUJ1dHRvbkljb24oKSkge1xuICAgICAgICAgICAgPG1hdC1pY29uPnt7IHNlY29uZGFyeUJ1dHRvbkljb24oKSB9fTwvbWF0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIHt7IHNlY29uZGFyeUJ1dHRvblRleHQoKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChwcmltYXJ5QnV0dG9uVGV4dCgpKSB7XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiaGFuZGxlUHJpbWFyeUJ1dHRvbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICBAaWYgKHByaW1hcnlCdXR0b25JY29uKCkpIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBwcmltYXJ5QnV0dG9uSWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAge3sgcHJpbWFyeUJ1dHRvblRleHQoKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gIH1cbjwvbWF0LWNhcmQ+XG4iXX0=","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nexport class ButtonComponent {\n variant = input('primary', ...(ngDevMode ? [{ debugName: \"variant\" }] : []));\n text = input('', ...(ngDevMode ? [{ debugName: \"text\" }] : []));\n icon = input('', ...(ngDevMode ? [{ debugName: \"icon\" }] : []));\n disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n type = input('button', ...(ngDevMode ? [{ debugName: \"type\" }] : []));\n matStyle = input('elevated', ...(ngDevMode ? [{ debugName: \"matStyle\" }] : []));\n customClass = input(...(ngDevMode ? [undefined, { debugName: \"customClass\" }] : []));\n extended = input(false, ...(ngDevMode ? [{ debugName: \"extended\" }] : [])); // For extended FAB\n title = input('', ...(ngDevMode ? [{ debugName: \"title\" }] : []));\n ariaLabel = input('', ...(ngDevMode ? [{ debugName: \"ariaLabel\" }] : []));\n name = input('', ...(ngDevMode ? [{ debugName: \"name\" }] : []));\n id = input('', ...(ngDevMode ? [{ debugName: \"id\" }] : []));\n form = input('', ...(ngDevMode ? [{ debugName: \"form\" }] : []));\n tabIndex = input(0, ...(ngDevMode ? [{ debugName: \"tabIndex\" }] : []));\n testId = input('', ...(ngDevMode ? [{ debugName: \"testId\" }] : []));\n handleClick = output();\n getButtonClasses() {\n const classes = {\n [`mat-btn-${this.variant()}`]: true,\n };\n const customClass = this.customClass();\n if (customClass) {\n classes[customClass] = true;\n }\n return classes;\n }\n getDisplayText() {\n const style = this.matStyle();\n if (style === 'icon' || style === 'fab' || style === 'mini-fab') {\n return '';\n }\n return this.text();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: ButtonComponent, isStandalone: true, selector: \"acp-button\", inputs: { variant: { classPropertyName: \"variant\", publicName: \"variant\", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: \"icon\", publicName: \"icon\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: true, isRequired: false, transformFunction: null }, matStyle: { classPropertyName: \"matStyle\", publicName: \"matStyle\", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: \"customClass\", publicName: \"customClass\", isSignal: true, isRequired: false, transformFunction: null }, extended: { classPropertyName: \"extended\", publicName: \"extended\", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: \"ariaLabel\", publicName: \"ariaLabel\", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: \"form\", publicName: \"form\", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: true, isRequired: false, transformFunction: null }, testId: { classPropertyName: \"testId\", publicName: \"testId\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { handleClick: \"handleClick\" }, ngImport: i0, template: \"@switch (matStyle()) {\\n @case ('text') {\\n <button\\n matButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('elevated') {\\n <button\\n matButton=\\\"elevated\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('outlined') {\\n <button\\n matButton=\\\"outlined\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('tonal') {\\n <button\\n matButton=\\\"tonal\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('icon') {\\n <button\\n matIconButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('fab') {\\n <button\\n matFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('mini-fab') {\\n <button\\n matMiniFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('extended-fab') {\\n <button\\n matFab\\n extended\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @default {\\n <button\\n matButton=\\\"filled\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n}\\n\\n<ng-template #buttonContent>\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n\\n @if (getDisplayText()) {\\n {{ getDisplayText() }}\\n }\\n\\n <ng-content />\\n</ng-template>\\n\", styles: [\":root{--acp-secondary: #e0e0e0;--acp-secondary-on: #000000;--acp-success: #4caf50;--acp-success-on: #ffffff;--acp-danger: #ba1a1a;--acp-danger-on: #ffffff;--acp-warning: #ff9800;--acp-warning-on: #000000;--acp-info: #2196f3;--acp-info-on: #ffffff;--acp-dark: #212121;--acp-dark-on: #ffffff}.dark-theme{--acp-secondary: #424242;--acp-secondary-on: #ffffff;--acp-success: #81c784;--acp-success-on: #1b5e20;--acp-danger: #ef5350;--acp-danger-on: #b71c1c;--acp-warning: #ffb74d;--acp-warning-on: #e65100;--acp-info: #64b5f6;--acp-info-on: #0d47a1;--acp-dark: #616161;--acp-dark-on: #ffffff}acp-button{display:inline-block;margin:4px}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label,button[matbutton=tonal] .mdc-button__label,.mat-mdc-fab.mdc-fab--extended .mdc-button__label{display:flex;align-items:center;gap:8px}.mat-mdc-button.mat-btn-secondary,.mat-mdc-unelevated-button.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-button.mat-btn-secondary:hover,.mat-mdc-unelevated-button.mat-btn-secondary:hover{background-color:color-mix(in srgb,var(--acp-secondary) 80%,black)!important}.mat-mdc-button.mat-btn-success,.mat-mdc-unelevated-button.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-button.mat-btn-danger,.mat-mdc-unelevated-button.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-button.mat-btn-warning,.mat-mdc-unelevated-button.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-button.mat-btn-info,.mat-mdc-unelevated-button.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-button.mat-btn-dark,.mat-mdc-unelevated-button.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}button[matbutton=tonal].mat-btn-success{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important;color:var(--acp-success)!important}button[matbutton=tonal].mat-btn-danger{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important;color:var(--acp-danger)!important}button[matbutton=tonal].mat-btn-warning{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important;color:var(--acp-warning)!important}button[matbutton=tonal].mat-btn-info{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important;color:var(--acp-info)!important}button[matbutton=tonal].mat-btn-dark{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important;color:var(--acp-dark)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-success{color:var(--acp-success)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-info{color:var(--acp-info)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-dark{color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-secondary{background-color:var(--mat-sys-surface-container-low)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-raised-button.mat-btn-success{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-success)!important}.mat-mdc-raised-button.mat-btn-success:hover{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-danger{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-danger)!important}.mat-mdc-raised-button.mat-btn-danger:hover{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-warning{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-warning)!important}.mat-mdc-raised-button.mat-btn-warning:hover{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-info{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-info)!important}.mat-mdc-raised-button.mat-btn-info:hover{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-dark{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-dark:hover{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important}.mat-mdc-outlined-button.mat-btn-secondary{border-color:var(--mat-sys-outline)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-outlined-button.mat-btn-success{border-color:var(--acp-success)!important;color:var(--acp-success)!important}.mat-mdc-outlined-button.mat-btn-danger{border-color:var(--acp-danger)!important;color:var(--acp-danger)!important}.mat-mdc-outlined-button.mat-btn-warning{border-color:var(--acp-warning)!important;color:var(--acp-warning)!important}.mat-mdc-outlined-button.mat-btn-info{border-color:var(--acp-info)!important;color:var(--acp-info)!important}.mat-mdc-outlined-button.mat-btn-dark{border-color:var(--acp-dark)!important;color:var(--acp-dark)!important}.mat-mdc-fab.mat-btn-secondary,.mat-mdc-mini-fab.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-fab.mat-btn-success,.mat-mdc-mini-fab.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-fab.mat-btn-danger,.mat-mdc-mini-fab.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-fab.mat-btn-warning,.mat-mdc-mini-fab.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-fab.mat-btn-info,.mat-mdc-mini-fab.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-fab.mat-btn-dark,.mat-mdc-mini-fab.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}.mat-mdc-icon-button.mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-icon-button.mat-btn-success{color:var(--acp-success)!important}.mat-mdc-icon-button.mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-icon-button.mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-icon-button.mat-btn-info{color:var(--acp-info)!important}.mat-mdc-icon-button.mat-btn-dark{color:var(--acp-dark)!important}\\n\"], dependencies: [{ kind: \"component\", type: MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: MatMiniFabButton, selector: \"button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatFabButton, selector: \"button[mat-fab], a[mat-fab], button[matFab], a[matFab]\", inputs: [\"extended\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ButtonComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-button', imports: [\n MatButton,\n NgClass,\n MatIcon,\n MatMiniFabButton,\n MatIconButton,\n MatFabButton,\n NgTemplateOutlet,\n ], encapsulation: ViewEncapsulation.None, template: \"@switch (matStyle()) {\\n @case ('text') {\\n <button\\n matButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('elevated') {\\n <button\\n matButton=\\\"elevated\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('outlined') {\\n <button\\n matButton=\\\"outlined\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('tonal') {\\n <button\\n matButton=\\\"tonal\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('icon') {\\n <button\\n matIconButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('fab') {\\n <button\\n matFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('mini-fab') {\\n <button\\n matMiniFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @case ('extended-fab') {\\n <button\\n matFab\\n extended\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n @default {\\n <button\\n matButton=\\\"filled\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n </button>\\n }\\n}\\n\\n<ng-template #buttonContent>\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n }\\n\\n @if (getDisplayText()) {\\n {{ getDisplayText() }}\\n }\\n\\n <ng-content />\\n</ng-template>\\n\", styles: [\":root{--acp-secondary: #e0e0e0;--acp-secondary-on: #000000;--acp-success: #4caf50;--acp-success-on: #ffffff;--acp-danger: #ba1a1a;--acp-danger-on: #ffffff;--acp-warning: #ff9800;--acp-warning-on: #000000;--acp-info: #2196f3;--acp-info-on: #ffffff;--acp-dark: #212121;--acp-dark-on: #ffffff}.dark-theme{--acp-secondary: #424242;--acp-secondary-on: #ffffff;--acp-success: #81c784;--acp-success-on: #1b5e20;--acp-danger: #ef5350;--acp-danger-on: #b71c1c;--acp-warning: #ffb74d;--acp-warning-on: #e65100;--acp-info: #64b5f6;--acp-info-on: #0d47a1;--acp-dark: #616161;--acp-dark-on: #ffffff}acp-button{display:inline-block;margin:4px}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label,button[matbutton=tonal] .mdc-button__label,.mat-mdc-fab.mdc-fab--extended .mdc-button__label{display:flex;align-items:center;gap:8px}.mat-mdc-button.mat-btn-secondary,.mat-mdc-unelevated-button.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-button.mat-btn-secondary:hover,.mat-mdc-unelevated-button.mat-btn-secondary:hover{background-color:color-mix(in srgb,var(--acp-secondary) 80%,black)!important}.mat-mdc-button.mat-btn-success,.mat-mdc-unelevated-button.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-button.mat-btn-danger,.mat-mdc-unelevated-button.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-button.mat-btn-warning,.mat-mdc-unelevated-button.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-button.mat-btn-info,.mat-mdc-unelevated-button.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-button.mat-btn-dark,.mat-mdc-unelevated-button.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}button[matbutton=tonal].mat-btn-success{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important;color:var(--acp-success)!important}button[matbutton=tonal].mat-btn-danger{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important;color:var(--acp-danger)!important}button[matbutton=tonal].mat-btn-warning{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important;color:var(--acp-warning)!important}button[matbutton=tonal].mat-btn-info{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important;color:var(--acp-info)!important}button[matbutton=tonal].mat-btn-dark{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important;color:var(--acp-dark)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-success{color:var(--acp-success)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-info{color:var(--acp-info)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-dark{color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-secondary{background-color:var(--mat-sys-surface-container-low)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-raised-button.mat-btn-success{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-success)!important}.mat-mdc-raised-button.mat-btn-success:hover{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-danger{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-danger)!important}.mat-mdc-raised-button.mat-btn-danger:hover{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-warning{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-warning)!important}.mat-mdc-raised-button.mat-btn-warning:hover{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-info{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-info)!important}.mat-mdc-raised-button.mat-btn-info:hover{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-dark{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-dark:hover{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important}.mat-mdc-outlined-button.mat-btn-secondary{border-color:var(--mat-sys-outline)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-outlined-button.mat-btn-success{border-color:var(--acp-success)!important;color:var(--acp-success)!important}.mat-mdc-outlined-button.mat-btn-danger{border-color:var(--acp-danger)!important;color:var(--acp-danger)!important}.mat-mdc-outlined-button.mat-btn-warning{border-color:var(--acp-warning)!important;color:var(--acp-warning)!important}.mat-mdc-outlined-button.mat-btn-info{border-color:var(--acp-info)!important;color:var(--acp-info)!important}.mat-mdc-outlined-button.mat-btn-dark{border-color:var(--acp-dark)!important;color:var(--acp-dark)!important}.mat-mdc-fab.mat-btn-secondary,.mat-mdc-mini-fab.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-fab.mat-btn-success,.mat-mdc-mini-fab.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-fab.mat-btn-danger,.mat-mdc-mini-fab.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-fab.mat-btn-warning,.mat-mdc-mini-fab.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-fab.mat-btn-info,.mat-mdc-mini-fab.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-fab.mat-btn-dark,.mat-mdc-mini-fab.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}.mat-mdc-icon-button.mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-icon-button.mat-btn-success{color:var(--acp-success)!important}.mat-mdc-icon-button.mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-icon-button.mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-icon-button.mat-btn-info{color:var(--acp-info)!important}.mat-mdc-icon-button.mat-btn-dark{color:var(--acp-dark)!important}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUF1Q2pELE1BQU0sT0FBTyxlQUFlO0lBQzFCLE9BQU8sR0FBRyxLQUFLLENBQWdCLFNBQVMsbURBQUMsQ0FBQztJQUMxQyxJQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsZ0RBQUMsQ0FBQztJQUN6QixJQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsZ0RBQUMsQ0FBQztJQUN6QixRQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssb0RBQUMsQ0FBQztJQUNqQyxJQUFJLEdBQUcsS0FBSyxDQUFhLFFBQVEsZ0RBQUMsQ0FBQztJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFzQixVQUFVLG9EQUFDLENBQUM7SUFDbEQsV0FBVyxHQUFHLEtBQUssaUVBQXNCLENBQUM7SUFFMUMsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLG9EQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDckQsS0FBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLGlEQUFDLENBQUM7SUFDMUIsU0FBUyxHQUFHLEtBQUssQ0FBUyxFQUFFLHFEQUFDLENBQUM7SUFDOUIsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLGdEQUFDLENBQUM7SUFDekIsRUFBRSxHQUFHLEtBQUssQ0FBUyxFQUFFLDhDQUFDLENBQUM7SUFDdkIsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLGdEQUFDLENBQUM7SUFDekIsUUFBUSxHQUFHLEtBQUssQ0FBUyxDQUFDLG9EQUFDLENBQUM7SUFDNUIsTUFBTSxHQUFHLEtBQUssQ0FBUyxFQUFFLGtEQUFDLENBQUM7SUFFM0IsV0FBVyxHQUFHLE1BQU0sRUFBVyxDQUFDO0lBRWhDLGdCQUFnQjtRQUNkLE1BQU0sT0FBTyxHQUE0QjtZQUN2QyxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJO1NBQ3BDLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDaEUsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzt1R0FyQ1UsZUFBZTsyRkFBZixlQUFlLHM3REMxQzVCLG80SkFpTEEsK2lPRG5KSSxTQUFTLHlVQUNULE9BQU8sb0ZBQ1AsT0FBTywySUFDUCxnQkFBZ0IsMkpBQ2hCLGFBQWEsdUtBQ2IsWUFBWSwrSkFDWixnQkFBZ0I7OzJGQU1QLGVBQWU7a0JBZjNCLFNBQVM7K0JBQ0UsWUFBWSxXQUNiO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjtxQkFDakIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbiwgTWF0RmFiQnV0dG9uLCBNYXRJY29uQnV0dG9uLCBNYXRNaW5pRmFiQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5leHBvcnQgdHlwZSBCdXR0b25WYXJpYW50ID1cbiAgfCAncHJpbWFyeSdcbiAgfCAnc2Vjb25kYXJ5J1xuICB8ICdzdWNjZXNzJ1xuICB8ICdkYW5nZXInXG4gIHwgJ3dhcm5pbmcnXG4gIHwgJ2luZm8nXG4gIHwgJ2RhcmsnO1xuXG5leHBvcnQgdHlwZSBCdXR0b25UeXBlID0gJ2J1dHRvbicgfCAnc3VibWl0JyB8ICdyZXNldCc7XG5cbmV4cG9ydCB0eXBlIE1hdGVyaWFsQnV0dG9uU3R5bGUgPVxuICB8ICd0ZXh0J1xuICB8ICdlbGV2YXRlZCdcbiAgfCAnb3V0bGluZWQnXG4gIHwgJ2ZpbGxlZCdcbiAgfCAndG9uYWwnXG4gIHwgJ2ljb24nXG4gIHwgJ2ZhYidcbiAgfCAnbWluaS1mYWInXG4gIHwgJ2V4dGVuZGVkLWZhYic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1idXR0b24nLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uLFxuICAgIE5nQ2xhc3MsXG4gICAgTWF0SWNvbixcbiAgICBNYXRNaW5pRmFiQnV0dG9uLFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0RmFiQnV0dG9uLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcbiAgdmFyaWFudCA9IGlucHV0PEJ1dHRvblZhcmlhbnQ+KCdwcmltYXJ5Jyk7XG4gIHRleHQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgaWNvbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdHlwZSA9IGlucHV0PEJ1dHRvblR5cGU+KCdidXR0b24nKTtcbiAgbWF0U3R5bGUgPSBpbnB1dDxNYXRlcmlhbEJ1dHRvblN0eWxlPignZWxldmF0ZWQnKTtcbiAgY3VzdG9tQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgZXh0ZW5kZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIEZvciBleHRlbmRlZCBGQUJcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgYXJpYUxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgZm9ybSA9IGlucHV0PHN0cmluZz4oJycpO1xuICB0YWJJbmRleCA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHRlc3RJZCA9IGlucHV0PHN0cmluZz4oJycpO1xuXG4gIGhhbmRsZUNsaWNrID0gb3V0cHV0PHVua25vd24+KCk7XG5cbiAgZ2V0QnV0dG9uQ2xhc3NlcygpOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB7XG4gICAgY29uc3QgY2xhc3NlczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gICAgICBbYG1hdC1idG4tJHt0aGlzLnZhcmlhbnQoKX1gXTogdHJ1ZSxcbiAgICB9O1xuICAgIGNvbnN0IGN1c3RvbUNsYXNzID0gdGhpcy5jdXN0b21DbGFzcygpO1xuICAgIGlmIChjdXN0b21DbGFzcykge1xuICAgICAgY2xhc3Nlc1tjdXN0b21DbGFzc10gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldERpc3BsYXlUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLm1hdFN0eWxlKCk7XG4gICAgaWYgKHN0eWxlID09PSAnaWNvbicgfHwgc3R5bGUgPT09ICdmYWInIHx8IHN0eWxlID09PSAnbWluaS1mYWInKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgfVxufVxuIiwiQHN3aXRjaCAobWF0U3R5bGUoKSkge1xuICBAY2FzZSAoJ3RleHQnKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0QnV0dG9uXG4gICAgICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW3R5cGVdPVwidHlwZSgpXCJcbiAgICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKCkgfHwgdGl0bGUoKVwiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gICAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICAgIFthdHRyLmZvcm1dPVwiZm9ybSgpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAY2FzZSAoJ2VsZXZhdGVkJykge1xuICAgIDxidXR0b25cbiAgICAgIG1hdEJ1dHRvbj1cImVsZXZhdGVkXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldEJ1dHRvbkNsYXNzZXMoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbdHlwZV09XCJ0eXBlKClcIlxuICAgICAgW3RpdGxlXT1cInRpdGxlKClcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgICAgIFthdHRyLmlkXT1cImlkKClcIlxuICAgICAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0ZXN0SWQoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbkNvbnRlbnRcIiAvPlxuICAgIDwvYnV0dG9uPlxuICB9XG4gIEBjYXNlICgnb3V0bGluZWQnKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0QnV0dG9uPVwib3V0bGluZWRcIlxuICAgICAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgIFt0eXBlXT1cInR5cGUoKVwiXG4gICAgICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICAgICAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gICAgICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiIC8+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgQGNhc2UgKCd0b25hbCcpIHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXRCdXR0b249XCJ0b25hbFwiXG4gICAgICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW3R5cGVdPVwidHlwZSgpXCJcbiAgICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKCkgfHwgdGl0bGUoKVwiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gICAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICAgIFthdHRyLmZvcm1dPVwiZm9ybSgpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAY2FzZSAoJ2ljb24nKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0SWNvbkJ1dHRvblxuICAgICAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgIFt0eXBlXT1cInR5cGUoKVwiXG4gICAgICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICAgICAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gICAgICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiIC8+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgQGNhc2UgKCdmYWInKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0RmFiXG4gICAgICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW3R5cGVdPVwidHlwZSgpXCJcbiAgICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKCkgfHwgdGl0bGUoKVwiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gICAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICAgIFthdHRyLmZvcm1dPVwiZm9ybSgpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAY2FzZSAoJ21pbmktZmFiJykge1xuICAgIDxidXR0b25cbiAgICAgIG1hdE1pbmlGYWJcbiAgICAgIFtuZ0NsYXNzXT1cImdldEJ1dHRvbkNsYXNzZXMoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbdHlwZV09XCJ0eXBlKClcIlxuICAgICAgW3RpdGxlXT1cInRpdGxlKClcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgICAgIFthdHRyLmlkXT1cImlkKClcIlxuICAgICAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0ZXN0SWQoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbkNvbnRlbnRcIiAvPlxuICAgIDwvYnV0dG9uPlxuICB9XG4gIEBjYXNlICgnZXh0ZW5kZWQtZmFiJykge1xuICAgIDxidXR0b25cbiAgICAgIG1hdEZhYlxuICAgICAgZXh0ZW5kZWRcbiAgICAgIFtuZ0NsYXNzXT1cImdldEJ1dHRvbkNsYXNzZXMoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbdHlwZV09XCJ0eXBlKClcIlxuICAgICAgW3RpdGxlXT1cInRpdGxlKClcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgICAgIFthdHRyLmlkXT1cImlkKClcIlxuICAgICAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0ZXN0SWQoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbkNvbnRlbnRcIiAvPlxuICAgIDwvYnV0dG9uPlxuICB9XG4gIEBkZWZhdWx0IHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXRCdXR0b249XCJmaWxsZWRcIlxuICAgICAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgIFt0eXBlXT1cInR5cGUoKVwiXG4gICAgICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICAgICAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gICAgICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiIC8+XG4gICAgPC9idXR0b24+XG4gIH1cbn1cblxuPG5nLXRlbXBsYXRlICNidXR0b25Db250ZW50PlxuICBAaWYgKGljb24oKSkge1xuICAgIDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuICB9XG5cbiAgQGlmIChnZXREaXNwbGF5VGV4dCgpKSB7XG4gICAge3sgZ2V0RGlzcGxheVRleHQoKSB9fVxuICB9XG5cbiAgPG5nLWNvbnRlbnQgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=","import { Component, ViewContainerRef, ChangeDetectionStrategy, inject, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ButtonComponent } from '../button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/dialog\";\nimport * as i2 from \"@angular/material/icon\";\n/**\n * A wrapper component for Angular Material dialogs that provides a consistent look and feel,\n * including a draggable header and the ability to dynamically create components inside the dialog.\n *\n * This component is typically used with the AdvancedDialogService's openInWrapper method.\n *\n * @example\n * // In your service or component:\n * this.dialogService.openInWrapper({\n * component: YourDialogContentComponent,\n * title: 'Dialog Title',\n * icon: 'info',\n * data: { message: 'This is some data passed to the dialog content component' }\n * });\n */\nexport class DialogWrapperComponent {\n dialogRef = inject(MatDialogRef);\n config = inject(MAT_DIALOG_DATA);\n /**\n * A template reference that acts as an anchor for dynamic content.\n * This is where the component specified in the config will be rendered.\n */\n contentHost = viewChild.required('contentHost', { read: ViewContainerRef });\n /**\n * A reference to the header element for the z-index focus logic.\n * Used to bring the dialog to the front when clicked.\n */\n header = viewChild('dialogHeader', ...(ngDevMode ? [{ debugName: \"header\" }] : []));\n /**\n * Static counter to track the highest z-index for multiple dialogs.\n * Ensures that the most recently clicked dialog appears on top.\n */\n static lastZIndex = 1000;\n /**\n * Timeout ID for debouncing z-index updates to prevent excessive DOM manipulations.\n */\n bringToFrontTimeoutId = null;\n /**\n * Creates an instance of DialogWrapperComponent.\n *\n * @param dialogRef Reference to the dialog opened via the Material Dialog service\n * @param config Configuration for the dialog wrapper, injected from MAT_DIALOG_DATA\n */\n constructor() {\n // Constructor intentionally empty - required by Angular DI\n }\n /**\n * Lifecycle hook that initializes the dynamic content after the view is ready.\n * Creates the component specified in the config and passes data to it.\n */\n ngAfterViewInit() {\n // Dynamically create the content component after the view is ready.\n this.contentHost().clear();\n const componentRef = this.contentHost().createComponent(this.config.component);\n // Pass the provided data directly to the new component's instance.\n // This requires the content component to have an @Input() property named 'data'.\n if (this.config.data && componentRef.instance) {\n componentRef.instance.data = this.config.data;\n }\n }\n /**\n * Cleanup lifecycle hook to cancel any pending animation frame requests.\n */\n ngOnDestroy() {\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n this.bringToFrontTimeoutId = null;\n }\n }\n /**\n * Closes the dialog.\n * Called when the close button in the header is clicked.\n */\n onClose() {\n this.dialogRef.close();\n }\n /**\n * Brings the dialog to the front by adjusting its z-index.\n * Uses requestAnimationFrame to debounce updates and prevent excessive DOM manipulations.\n * Called when the dialog header is clicked.\n */\n bringToFront() {\n // Clear any pending update\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n }\n // Schedule the z-index update for the next animation frame\n this.bringToFrontTimeoutId = requestAnimationFrame(() => {\n const pane = this.header()?.nativeElement.closest('.cdk-overlay-pane');\n if (pane) {\n pane.style.zIndex = (++DialogWrapperComponent.lastZIndex).toString();\n }\n this.bringToFrontTimeoutId = null;\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DialogWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: DialogWrapperComponent, isStandalone: true, selector: \"acp-dialog-wrapper\", viewQueries: [{ propertyName: \"contentHost\", first: true, predicate: [\"contentHost\"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: \"header\", first: true, predicate: [\"dialogHeader\"], descendants: true, isSignal: true }], ngImport: i0, template: \"@if (!config.hideHeader) {\\n <div\\n class=\\\"acp-dialog-header\\\"\\n cdkDrag\\n cdkDragRootElement=\\\".cdk-overlay-pane\\\"\\n cdkDragHandle\\n #dialogHeader\\n (mousedown)=\\\"bringToFront()\\\"\\n >\\n <h6 mat-dialog-title class=\\\"acp-dialog-title\\\">\\n @if (config.icon) {\\n <mat-icon class=\\\"acp-dialog-title-icon\\\" aria-hidden=\\\"true\\\">{{ config.icon }}</mat-icon>\\n }\\n <span>{{ config.title }}</span>\\n @if (config.showCloseButton !== false) {\\n <acp-button\\n [customClass]=\\\"'acp-dialog-close-btn'\\\"\\n matStyle=\\\"icon\\\"\\n icon=\\\"close\\\"\\n (handleClick)=\\\"onClose()\\\"\\n ariaLabel=\\\"Close Dialog\\\"\\n />\\n }\\n </h6>\\n </div>\\n}\\n\\n<ng-template #contentHost />\\n\", styles: [\".acp-dialog-header{cursor:move;padding:12px 24px;border-bottom:1px solid var(--mat-sys-outline-variant, #dee2e6);color:var(--mat-sys-on-surface, #212529);position:relative}h6[mat-dialog-title].acp-dialog-title{display:flex;align-items:center;font-size:1.2rem;font-weight:500;margin:0;width:100%;padding-right:48px}.acp-dialog-title-icon{margin-right:12px;vertical-align:middle}h6[mat-dialog-title].acp-dialog-title span{flex-grow:1}mat-dialog-content{padding:24px}.acp-dialog-close-btn{position:absolute;top:8px;right:16px}\\n\"], dependencies: [{ 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: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"ngmodule\", type: MatDialogModule }, { kind: \"directive\", type: i1.MatDialogTitle, selector: \"[mat-dialog-title], [matDialogTitle]\", inputs: [\"id\"], exportAs: [\"matDialogTitle\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i2.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: ButtonComponent, selector: \"acp-button\", inputs: [\"variant\", \"text\", \"icon\", \"disabled\", \"type\", \"matStyle\", \"customClass\", \"extended\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DialogWrapperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-dialog-wrapper', standalone: true, imports: [CdkDrag, CdkDragHandle, MatDialogModule, MatIconModule, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"@if (!config.hideHeader) {\\n <div\\n class=\\\"acp-dialog-header\\\"\\n cdkDrag\\n cdkDragRootElement=\\\".cdk-overlay-pane\\\"\\n cdkDragHandle\\n #dialogHeader\\n (mousedown)=\\\"bringToFront()\\\"\\n >\\n <h6 mat-dialog-title class=\\\"acp-dialog-title\\\">\\n @if (config.icon) {\\n <mat-icon class=\\\"acp-dialog-title-icon\\\" aria-hidden=\\\"true\\\">{{ config.icon }}</mat-icon>\\n }\\n <span>{{ config.title }}</span>\\n @if (config.showCloseButton !== false) {\\n <acp-button\\n [customClass]=\\\"'acp-dialog-close-btn'\\\"\\n matStyle=\\\"icon\\\"\\n icon=\\\"close\\\"\\n (handleClick)=\\\"onClose()\\\"\\n ariaLabel=\\\"Close Dialog\\\"\\n />\\n }\\n </h6>\\n </div>\\n}\\n\\n<ng-template #contentHost />\\n\", styles: [\".acp-dialog-header{cursor:move;padding:12px 24px;border-bottom:1px solid var(--mat-sys-outline-variant, #dee2e6);color:var(--mat-sys-on-surface, #212529);position:relative}h6[mat-dialog-title].acp-dialog-title{display:flex;align-items:center;font-size:1.2rem;font-weight:500;margin:0;width:100%;padding-right:48px}.acp-dialog-title-icon{margin-right:12px;vertical-align:middle}h6[mat-dialog-title].acp-dialog-title span{flex-grow:1}mat-dialog-content{padding:24px}.acp-dialog-close-btn{position:absolute;top:8px;right:16px}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGlhbG9nLXdyYXBwZXIvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGlhbG9nLXdyYXBwZXIvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxnQkFBZ0IsRUFHaEIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFFNUM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFVSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFNBQVMsR0FBRyxNQUFNLENBQXVDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sR0FBRyxNQUFNLENBQXNCLGVBQWUsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUNNLFdBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFckY7OztPQUdHO0lBQ00sTUFBTSxHQUFHLFNBQVMsQ0FBYSxjQUFjLGtEQUFDLENBQUM7SUFFeEQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFFakM7O09BRUc7SUFDSyxxQkFBcUIsR0FBa0IsSUFBSSxDQUFDO0lBRXBEOzs7OztPQUtHO0lBQ0g7UUFDRSwyREFBMkQ7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvRSxtRUFBbUU7UUFDbkUsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLFlBQVksQ0FBQyxRQUFnQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVk7UUFDViwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFnQixDQUFDO1lBQ3RGLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZFLENBQUM7WUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0ExRlUsc0JBQXNCOzJGQUF0QixzQkFBc0IscUtBUWdDLGdCQUFnQixzSkNsRG5GLGl3QkE0QkEsdWtCRFFZLE9BQU8sd2NBQUUsYUFBYSw4RkFBRSxlQUFlLDhLQUFFLGFBQWEsb0xBQUUsZUFBZTs7MkZBTXRFLHNCQUFzQjtrQkFUbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxtQkFHakUsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGluamVjdCxcbiAgdmlld0NoaWxkLFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0hhbmRsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBEaWFsb2dXcmFwcGVyQ29uZmlnIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uJztcblxuLyoqXG4gKiBBIHdyYXBwZXIgY29tcG9uZW50IGZvciBBbmd1bGFyIE1hdGVyaWFsIGRpYWxvZ3MgdGhhdCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgbG9vayBhbmQgZmVlbCxcbiAqIGluY2x1ZGluZyBhIGRyYWdnYWJsZSBoZWFkZXIgYW5kIHRoZSBhYmlsaXR5IHRvIGR5bmFtaWNhbGx5IGNyZWF0ZSBjb21wb25lbnRzIGluc2lkZSB0aGUgZGlhbG9nLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHR5cGljYWxseSB1c2VkIHdpdGggdGhlIEFkdmFuY2VkRGlhbG9nU2VydmljZSdzIG9wZW5JbldyYXBwZXIgbWV0aG9kLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJbiB5b3VyIHNlcnZpY2Ugb3IgY29tcG9uZW50OlxuICogdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5JbldyYXBwZXIoe1xuICogICBjb21wb25lbnQ6IFlvdXJEaWFsb2dDb250ZW50Q29tcG9uZW50LFxuICogICB0aXRsZTogJ0RpYWxvZyBUaXRsZScsXG4gKiAgIGljb246ICdpbmZvJyxcbiAqICAgZGF0YTogeyBtZXNzYWdlOiAnVGhpcyBpcyBzb21lIGRhdGEgcGFzc2VkIHRvIHRoZSBkaWFsb2cgY29udGVudCBjb21wb25lbnQnIH1cbiAqIH0pO1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtZGlhbG9nLXdyYXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ2RrRHJhZywgQ2RrRHJhZ0hhbmRsZSwgTWF0RGlhbG9nTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBCdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctd3JhcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIGRpYWxvZ1JlZiA9IGluamVjdDxNYXREaWFsb2dSZWY8RGlhbG9nV3JhcHBlckNvbXBvbmVudD4+KE1hdERpYWxvZ1JlZik7XG4gIGNvbmZpZyA9IGluamVjdDxEaWFsb2dXcmFwcGVyQ29uZmlnPihNQVRfRElBTE9HX0RBVEEpO1xuXG4gIC8qKlxuICAgKiBBIHRlbXBsYXRlIHJlZmVyZW5jZSB0aGF0IGFjdHMgYXMgYW4gYW5jaG9yIGZvciBkeW5hbWljIGNvbnRlbnQuXG4gICAqIFRoaXMgaXMgd2hlcmUgdGhlIGNvbXBvbmVudCBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZyB3aWxsIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudEhvc3QgPSB2aWV3Q2hpbGQucmVxdWlyZWQoJ2NvbnRlbnRIb3N0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgaGVhZGVyIGVsZW1lbnQgZm9yIHRoZSB6LWluZGV4IGZvY3VzIGxvZ2ljLlxuICAgKiBVc2VkIHRvIGJyaW5nIHRoZSBkaWFsb2cgdG8gdGhlIGZyb250IHdoZW4gY2xpY2tlZC5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignZGlhbG9nSGVhZGVyJyk7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBjb3VudGVyIHRvIHRyYWNrIHRoZSBoaWdoZXN0IHotaW5kZXggZm9yIG11bHRpcGxlIGRpYWxvZ3MuXG4gICAqIEVuc3VyZXMgdGhhdCB0aGUgbW9zdCByZWNlbnRseSBjbGlja2VkIGRpYWxvZyBhcHBlYXJzIG9uIHRvcC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGxhc3RaSW5kZXggPSAxMDAwO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IElEIGZvciBkZWJvdW5jaW5nIHotaW5kZXggdXBkYXRlcyB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBET00gbWFuaXB1bGF0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgYnJpbmdUb0Zyb250VGltZW91dElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2dXcmFwcGVyQ29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZGlhbG9nUmVmIFJlZmVyZW5jZSB0byB0aGUgZGlhbG9nIG9wZW5lZCB2aWEgdGhlIE1hdGVyaWFsIERpYWxvZyBzZXJ2aWNlXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRpYWxvZyB3cmFwcGVyLCBpbmplY3RlZCBmcm9tIE1BVF9ESUFMT0dfREFUQVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gQ29uc3RydWN0b3IgaW50ZW50aW9uYWxseSBlbXB0eSAtIHJlcXVpcmVkIGJ5IEFuZ3VsYXIgRElcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGluaXRpYWxpemVzIHRoZSBkeW5hbWljIGNvbnRlbnQgYWZ0ZXIgdGhlIHZpZXcgaXMgcmVhZHkuXG4gICAqIENyZWF0ZXMgdGhlIGNvbXBvbmVudCBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZyBhbmQgcGFzc2VzIGRhdGEgdG8gaXQuXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gRHluYW1pY2FsbHkgY3JlYXRlIHRoZSBjb250ZW50IGNvbXBvbmVudCBhZnRlciB0aGUgdmlldyBpcyByZWFkeS5cbiAgICB0aGlzLmNvbnRlbnRIb3N0KCkuY2xlYXIoKTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbnRlbnRIb3N0KCkuY3JlYXRlQ29tcG9uZW50KHRoaXMuY29uZmlnLmNvbXBvbmVudCk7XG5cbiAgICAvLyBQYXNzIHRoZSBwcm92aWRlZCBkYXRhIGRpcmVjdGx5IHRvIHRoZSBuZXcgY29tcG9uZW50J3MgaW5zdGFuY2UuXG4gICAgLy8gVGhpcyByZXF1aXJlcyB0aGUgY29udGVudCBjb21wb25lbnQgdG8gaGF2ZSBhbiBASW5wdXQoKSBwcm9wZXJ0eSBuYW1lZCAnZGF0YScuXG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGEgJiYgY29tcG9uZW50UmVmLmluc3RhbmNlKSB7XG4gICAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSkuZGF0YSA9IHRoaXMuY29uZmlnLmRhdGE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFudXAgbGlmZWN5Y2xlIGhvb2sgdG8gY2FuY2VsIGFueSBwZW5kaW5nIGFuaW1hdGlvbiBmcmFtZSByZXF1ZXN0cy5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCAhPT0gbnVsbCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5icmluZ1RvRnJvbnRUaW1lb3V0SWQpO1xuICAgICAgdGhpcy5icmluZ1RvRnJvbnRUaW1lb3V0SWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGRpYWxvZy5cbiAgICogQ2FsbGVkIHdoZW4gdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgaGVhZGVyIGlzIGNsaWNrZWQuXG4gICAqL1xuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogQnJpbmdzIHRoZSBkaWFsb2cgdG8gdGhlIGZyb250IGJ5IGFkanVzdGluZyBpdHMgei1pbmRleC5cbiAgICogVXNlcyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gZGVib3VuY2UgdXBkYXRlcyBhbmQgcHJldmVudCBleGNlc3NpdmUgRE9NIG1hbmlwdWxhdGlvbnMuXG4gICAqIENhbGxlZCB3aGVuIHRoZSBkaWFsb2cgaGVhZGVyIGlzIGNsaWNrZWQuXG4gICAqL1xuICBicmluZ1RvRnJvbnQoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgYW55IHBlbmRpbmcgdXBkYXRlXG4gICAgaWYgKHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCk7XG4gICAgfVxuXG4gICAgLy8gU2NoZWR1bGUgdGhlIHotaW5kZXggdXBkYXRlIGZvciB0aGUgbmV4dCBhbmltYXRpb24gZnJhbWVcbiAgICB0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb25zdCBwYW5lID0gdGhpcy5oZWFkZXIoKT8ubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcuY2RrLW92ZXJsYXktcGFuZScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHBhbmUpIHtcbiAgICAgICAgcGFuZS5zdHlsZS56SW5kZXggPSAoKytEaWFsb2dXcmFwcGVyQ29tcG9uZW50Lmxhc3RaSW5kZXgpLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCA9IG51bGw7XG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAoIWNvbmZpZy5oaWRlSGVhZGVyKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cImFjcC1kaWFsb2ctaGVhZGVyXCJcbiAgICBjZGtEcmFnXG4gICAgY2RrRHJhZ1Jvb3RFbGVtZW50PVwiLmNkay1vdmVybGF5LXBhbmVcIlxuICAgIGNka0RyYWdIYW5kbGVcbiAgICAjZGlhbG9nSGVhZGVyXG4gICAgKG1vdXNlZG93bik9XCJicmluZ1RvRnJvbnQoKVwiXG4gID5cbiAgICA8aDYgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cImFjcC1kaWFsb2ctdGl0bGVcIj5cbiAgICAgIEBpZiAoY29uZmlnLmljb24pIHtcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWNwLWRpYWxvZy10aXRsZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgY29uZmlnLmljb24gfX08L21hdC1pY29uPlxuICAgICAgfVxuICAgICAgPHNwYW4+e3sgY29uZmlnLnRpdGxlIH19PC9zcGFuPlxuICAgICAgQGlmIChjb25maWcuc2hvd0Nsb3NlQnV0dG9uICE9PSBmYWxzZSkge1xuICAgICAgICA8YWNwLWJ1dHRvblxuICAgICAgICAgIFtjdXN0b21DbGFzc109XCInYWNwLWRpYWxvZy1jbG9zZS1idG4nXCJcbiAgICAgICAgICBtYXRTdHlsZT1cImljb25cIlxuICAgICAgICAgIGljb249XCJjbG9zZVwiXG4gICAgICAgICAgKGhhbmRsZUNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgYXJpYUxhYmVsPVwiQ2xvc2UgRGlhbG9nXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2g2PlxuICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNjb250ZW50SG9zdCAvPlxuIl19","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class UserIconComponent {\n size = input('35', ...(ngDevMode ? [{ debugName: \"size\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: UserIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: UserIconComponent, isStandalone: true, selector: \"acp-user-icon\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<svg\\n [attr.width]=\\\"size()\\\"\\n [attr.height]=\\\"size()\\\"\\n version=\\\"1.1\\\"\\n id=\\\"Capa_1\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n viewBox=\\\"0 0 480 480\\\"\\n xml:space=\\\"preserve\\\"\\n fill=\\\"#000000\\\"\\n>\\n <g id=\\\"SVGRepo_bgCarrier\\\" stroke-width=\\\"0\\\"></g>\\n <g id=\\\"SVGRepo_tracerCarrier\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"></g>\\n <g id=\\\"SVGRepo_iconCarrier\\\">\\n <g>\\n <g>\\n <circle style=\\\"fill: #b8bac0\\\" cx=\\\"240\\\" cy=\\\"240\\\" r=\\\"240\\\"></circle>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M240,360.07c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611 c2.02,1.235,3.588,3.262,3.894,5.784c3.992,32.484,34.781,56.977,71.625,56.977c36.836,0,67.625-24.496,71.625-56.977 c0.31-2.525,1.844-4.549,3.895-5.78c-3.08-12.233-3.503-28.999-3.517-40.615C293.297,348.079,267.944,360.07,240,360.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #d7dbe0\\\"\\n d=\\\"M310.44,330.174c-18.549,18.477-43.242,29.896-70.44,29.896 c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611c2.02,1.235,3.588,3.262,3.894,5.784 c1.765,14.359,8.778,27.144,19.223,36.954C235.766,405.265,290.437,357.702,310.44,330.174z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M312,160.07H176c-22.055,0-40,17.945-40,40v48c0,61.758,46.656,112,104,112s104-50.242,104-112 v-56C344,174.426,329.648,160.07,312,160.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M296,72.07H192c-15.047,0-27.695,10.438-31.102,24.449C133.359,100.02,112,123.598,112,152.07v40 c0,20.617,8.752,39.851,24,53.52v-45.52c0-22.055,17.945-40,40-40h136c17.648,0,32,14.355,32,32v53.511 c15.251-13.667,24-32.899,24-53.511v-48C368,104.371,335.703,72.07,296,72.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M61.632,400.544C105.562,449.319,169.191,480,240,480s134.438-30.681,178.368-79.456 c-7.66-10.356-18.462-18.77-32.352-22.659c-0.32-0.09-0.641-0.16-0.969-0.207l-63.859-9.582c-0.391-0.059-1.227-0.09-1.625-0.09 c-4.039,0-7.445,3.012-7.938,7.023c-4,32.48-34.789,56.977-71.625,56.977c-36.844,0-67.633-24.492-71.625-56.977 c-0.5-4.129-4.219-7.234-8.141-7.02c-0.469-0.027-0.93,0.012-1.422,0.086l-63.859,9.582c-0.328,0.047-0.648,0.117-0.969,0.207 C80.094,381.775,69.292,390.188,61.632,400.544z\\\"\\n ></path>\\n </g>\\n </g>\\n </g>\\n</svg>\\n\", styles: [\"\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: UserIconComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-user-icon', imports: [], encapsulation: ViewEncapsulation.None, template: \"<svg\\n [attr.width]=\\\"size()\\\"\\n [attr.height]=\\\"size()\\\"\\n version=\\\"1.1\\\"\\n id=\\\"Capa_1\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n viewBox=\\\"0 0 480 480\\\"\\n xml:space=\\\"preserve\\\"\\n fill=\\\"#000000\\\"\\n>\\n <g id=\\\"SVGRepo_bgCarrier\\\" stroke-width=\\\"0\\\"></g>\\n <g id=\\\"SVGRepo_tracerCarrier\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"></g>\\n <g id=\\\"SVGRepo_iconCarrier\\\">\\n <g>\\n <g>\\n <circle style=\\\"fill: #b8bac0\\\" cx=\\\"240\\\" cy=\\\"240\\\" r=\\\"240\\\"></circle>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M240,360.07c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611 c2.02,1.235,3.588,3.262,3.894,5.784c3.992,32.484,34.781,56.977,71.625,56.977c36.836,0,67.625-24.496,71.625-56.977 c0.31-2.525,1.844-4.549,3.895-5.78c-3.08-12.233-3.503-28.999-3.517-40.615C293.297,348.079,267.944,360.07,240,360.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #d7dbe0\\\"\\n d=\\\"M310.44,330.174c-18.549,18.477-43.242,29.896-70.44,29.896 c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611c2.02,1.235,3.588,3.262,3.894,5.784 c1.765,14.359,8.778,27.144,19.223,36.954C235.766,405.265,290.437,357.702,310.44,330.174z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M312,160.07H176c-22.055,0-40,17.945-40,40v48c0,61.758,46.656,112,104,112s104-50.242,104-112 v-56C344,174.426,329.648,160.07,312,160.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M296,72.07H192c-15.047,0-27.695,10.438-31.102,24.449C133.359,100.02,112,123.598,112,152.07v40 c0,20.617,8.752,39.851,24,53.52v-45.52c0-22.055,17.945-40,40-40h136c17.648,0,32,14.355,32,32v53.511 c15.251-13.667,24-32.899,24-53.511v-48C368,104.371,335.703,72.07,296,72.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M61.632,400.544C105.562,449.319,169.191,480,240,480s134.438-30.681,178.368-79.456 c-7.66-10.356-18.462-18.77-32.352-22.659c-0.32-0.09-0.641-0.16-0.969-0.207l-63.859-9.582c-0.391-0.059-1.227-0.09-1.625-0.09 c-4.039,0-7.445,3.012-7.938,7.023c-4,32.48-34.789,56.977-71.625,56.977c-36.844,0-67.633-24.492-71.625-56.977 c-0.5-4.129-4.219-7.234-8.141-7.02c-0.469-0.027-0.93,0.012-1.422,0.086l-63.859,9.582c-0.328,0.047-0.648,0.117-0.969,0.207 C80.094,381.775,69.292,390.188,61.632,400.544z\\\"\\n ></path>\\n </g>\\n </g>\\n </g>\\n</svg>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb25zL3VzZXItaWNvbi91c2VyLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaWNvbnMvdXNlci1pY29uL3VzZXItaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTcEUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksZ0RBQUMsQ0FBQzt1R0FEUixpQkFBaUI7MkZBQWpCLGlCQUFpQiwwTUNUOUIsZ3JGQTJEQTs7MkZEbERhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLFdBQ2hCLEVBQUUsaUJBR0ksaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC11c2VyLWljb24nLFxuICBpbXBvcnRzOiBbXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi91c2VyLWljb24uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VySWNvbkNvbXBvbmVudCB7XG4gIHNpemUgPSBpbnB1dCgnMzUnKTtcbn1cbiIsIjxzdmdcbiAgW2F0dHIud2lkdGhdPVwic2l6ZSgpXCJcbiAgW2F0dHIuaGVpZ2h0XT1cInNpemUoKVwiXG4gIHZlcnNpb249XCIxLjFcIlxuICBpZD1cIkNhcGFfMVwiXG4gIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICB2aWV3Qm94PVwiMCAwIDQ4MCA0ODBcIlxuICB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXG4gIGZpbGw9XCIjMDAwMDAwXCJcbj5cbiAgPGcgaWQ9XCJTVkdSZXBvX2JnQ2FycmllclwiIHN0cm9rZS13aWR0aD1cIjBcIj48L2c+XG4gIDxnIGlkPVwiU1ZHUmVwb190cmFjZXJDYXJyaWVyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9nPlxuICA8ZyBpZD1cIlNWR1JlcG9faWNvbkNhcnJpZXJcIj5cbiAgICA8Zz5cbiAgICAgIDxnPlxuICAgICAgICA8Y2lyY2xlIHN0eWxlPVwiZmlsbDogI2I4YmFjMFwiIGN4PVwiMjQwXCIgY3k9XCIyNDBcIiByPVwiMjQwXCI+PC9jaXJjbGU+XG4gICAgICA8L2c+XG4gICAgICA8Zz5cbiAgICAgICAgPGc+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHN0eWxlPVwiZmlsbDogI2ZmZmZmZlwiXG4gICAgICAgICAgICBkPVwiTTI0MCwzNjAuMDdjLTI3Ljk0NCwwLTUzLjI5Ny0xMS45OTEtNzIuMDAzLTMxLjM3MmMtMC4wMTQsMTEuNjE1LTAuNDM2LDI4LjM3OS0zLjUxNiw0MC42MTEgYzIuMDIsMS4yMzUsMy41ODgsMy4yNjIsMy44OTQsNS43ODRjMy45OTIsMzIuNDg0LDM0Ljc4MSw1Ni45NzcsNzEuNjI1LDU2Ljk3N2MzNi44MzYsMCw2Ny42MjUtMjQuNDk2LDcxLjYyNS01Ni45NzcgYzAuMzEtMi41MjUsMS44NDQtNC41NDksMy44OTUtNS43OGMtMy4wOC0xMi4yMzMtMy41MDMtMjguOTk5LTMuNTE3LTQwLjYxNUMyOTMuMjk3LDM0OC4wNzksMjY3Ljk0NCwzNjAuMDcsMjQwLDM2MC4wN3pcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvZz5cbiAgICAgIDxnPlxuICAgICAgICA8Zz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgc3R5bGU9XCJmaWxsOiAjZDdkYmUwXCJcbiAgICAgICAgICAgIGQ9XCJNMzEwLjQ0LDMzMC4xNzRjLTE4LjU0OSwxOC40NzctNDMuMjQyLDI5Ljg5Ni03MC40NCwyOS44OTYgYy0yNy45NDQsMC01My4yOTctMTEuOTkxLTcyLjAwMy0zMS4zNzJjLTAuMDE0LDExLjYxNS0wLjQzNiwyOC4zNzktMy41MTYsNDAuNjExYzIuMDIsMS4yMzUsMy41ODgsMy4yNjIsMy44OTQsNS43ODQgYzEuNzY1LDE0LjM1OSw4Ljc3OCwyNy4xNDQsMTkuMjIzLDM2Ljk1NEMyMzUuNzY2LDQwNS4yNjUsMjkwLjQzNywzNTcuNzAyLDMxMC40NCwzMzAuMTc0elwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPGc+XG4gICAgICAgIDxnPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHlsZT1cImZpbGw6ICNmZmZmZmZcIlxuICAgICAgICAgICAgZD1cIk0zMTIsMTYwLjA3SDE3NmMtMjIuMDU1LDAtNDAsMTcuOTQ1LTQwLDQwdjQ4YzAsNjEuNzU4LDQ2LjY1NiwxMTIsMTA0LDExMnMxMDQtNTAuMjQyLDEwNC0xMTIgdi01NkMzNDQsMTc0LjQyNiwzMjkuNjQ4LDE2MC4wNywzMTIsMTYwLjA3elwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPGc+XG4gICAgICAgIDxnPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHlsZT1cImZpbGw6ICM1YzU0NmFcIlxuICAgICAgICAgICAgZD1cIk0yOTYsNzIuMDdIMTkyYy0xNS4wNDcsMC0yNy42OTUsMTAuNDM4LTMxLjEwMiwyNC40NDlDMTMzLjM1OSwxMDAuMDIsMTEyLDEyMy41OTgsMTEyLDE1Mi4wN3Y0MCBjMCwyMC42MTcsOC43NTIsMzkuODUxLDI0LDUzLjUydi00NS41MmMwLTIyLjA1NSwxNy45NDUtNDAsNDAtNDBoMTM2YzE3LjY0OCwwLDMyLDE0LjM1NSwzMiwzMnY1My41MTEgYzE1LjI1MS0xMy42NjcsMjQtMzIuODk5LDI0LTUzLjUxMXYtNDhDMzY4LDEwNC4zNzEsMzM1LjcwMyw3Mi4wNywyOTYsNzIuMDd6XCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8Zz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBzdHlsZT1cImZpbGw6ICM1YzU0NmFcIlxuICAgICAgICAgIGQ9XCJNNjEuNjMyLDQwMC41NDRDMTA1LjU2Miw0NDkuMzE5LDE2OS4xOTEsNDgwLDI0MCw0ODBzMTM0LjQzOC0zMC42ODEsMTc4LjM2OC03OS40NTYgYy03LjY2LTEwLjM1Ni0xOC40NjItMTguNzctMzIuMzUyLTIyLjY1OWMtMC4zMi0wLjA5LTAuNjQxLTAuMTYtMC45NjktMC4yMDdsLTYzLjg1OS05LjU4MmMtMC4zOTEtMC4wNTktMS4yMjctMC4wOS0xLjYyNS0wLjA5IGMtNC4wMzksMC03LjQ0NSwzLjAxMi03LjkzOCw3LjAyM2MtNCwzMi40OC0zNC43ODksNTYuOTc3LTcxLjYyNSw1Ni45NzdjLTM2Ljg0NCwwLTY3LjYzMy0yNC40OTItNzEuNjI1LTU2Ljk3NyBjLTAuNS00LjEyOS00LjIxOS03LjIzNC04LjE0MS03LjAyYy0wLjQ2OS0wLjAyNy0wLjkzLDAuMDEyLTEuNDIyLDAuMDg2bC02My44NTksOS41ODJjLTAuMzI4LDAuMDQ3LTAuNjQ4LDAuMTE3LTAuOTY5LDAuMjA3IEM4MC4wOTQsMzgxLjc3NSw2OS4yOTIsMzkwLjE4OCw2MS42MzIsNDAwLjU0NHpcIlxuICAgICAgICA+PC9wYXRoPlxuICAgICAgPC9nPlxuICAgIDwvZz5cbiAgPC9nPlxuPC9zdmc+XG4iXX0=","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SvgIconComponent {\n id = input('', ...(ngDevMode ? [{ debugName: \"id\" }] : []));\n width = input('40px', ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n height = input('40px', ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n color = input('#414141', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SvgIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: SvgIconComponent, isStandalone: true, selector: \"acp-svg-icon\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<svg [attr.width]=\\\"width()\\\" [attr.height]=\\\"height()\\\" [style.color]=\\\"color()\\\">\\n <use [attr.xlink:href]=\\\"'./svg-sprite.svg#' + id()\\\"></use>\\n</svg>\\n\", styles: [\"\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SvgIconComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-svg-icon', imports: [], encapsulation: ViewEncapsulation.None, template: \"<svg [attr.width]=\\\"width()\\\" [attr.height]=\\\"height()\\\" [style.color]=\\\"color()\\\">\\n <use [attr.xlink:href]=\\\"'./svg-sprite.svg#' + id()\\\"></use>\\n</svg>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaWNvbnMvc3ZnLWljb24vc3ZnLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaWNvbnMvc3ZnLWljb24vc3ZnLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU3BFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLDhDQUFDLENBQUM7SUFDZixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0saURBQUMsQ0FBQztJQUN0QixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sa0RBQUMsQ0FBQztJQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsaURBQUMsQ0FBQzt1R0FKZCxnQkFBZ0I7MkZBQWhCLGdCQUFnQiw4aUJDVDdCLCtKQUdBOzsyRkRNYSxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsY0FBYyxXQUNmLEVBQUUsaUJBR0ksaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1zdmctaWNvbicsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ZnLWljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3ZnLWljb24uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IHtcbiAgaWQgPSBpbnB1dCgnJyk7XG4gIHdpZHRoID0gaW5wdXQoJzQwcHgnKTtcbiAgaGVpZ2h0ID0gaW5wdXQoJzQwcHgnKTtcbiAgY29sb3IgPSBpbnB1dCgnIzQxNDE0MScpO1xufVxuIiwiPHN2ZyBbYXR0ci53aWR0aF09XCJ3aWR0aCgpXCIgW2F0dHIuaGVpZ2h0XT1cImhlaWdodCgpXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yKClcIj5cbiAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cIicuL3N2Zy1zcHJpdGUuc3ZnIycgKyBpZCgpXCI+PC91c2U+XG48L3N2Zz5cbiJdfQ==","import { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { MatChipGrid, MatChipInput, MatChipRow, } from '@angular/material/chips';\nimport { MatFormField, MatLabel, MatHint } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport * as i0 from \"@angular/core\";\nexport class InputChipComponent {\n chips = input.required(...(ngDevMode ? [{ debugName: \"chips\" }] : []));\n labelText = input.required(...(ngDevMode ? [{ debugName: \"labelText\" }] : []));\n placelholder = input('', ...(ngDevMode ? [{ debugName: \"placelholder\" }] : []));\n addOnBlur = true;\n separatorKeysCodes = [ENTER, COMMA];\n announcer = inject(LiveAnnouncer);\n add(event) {\n const value = (event.value || '').trim();\n // Add our fruit\n if (value) {\n this.chips().push(value);\n }\n // Clear the input value\n event.chipInput.clear();\n }\n remove(value) {\n const index = this.chips().indexOf(value);\n if (index >= 0) {\n this.chips().splice(index, 1);\n this.announcer.announce(`Removed ${value}`);\n }\n }\n edit(inputRaw, event) {\n const value = event.value.trim();\n // Remove fruit if it no longer has a name\n if (!value) {\n this.remove(inputRaw);\n return;\n }\n // Edit existing fruit\n const index = this.chips().indexOf(inputRaw);\n if (index >= 0) {\n this.chips()[index] = value.replace(/\\s+/g, '');\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: InputChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: InputChipComponent, isStandalone: true, selector: \"acp-input-chip\", inputs: { chips: { classPropertyName: \"chips\", publicName: \"chips\", isSignal: true, isRequired: true, transformFunction: null }, labelText: { classPropertyName: \"labelText\", publicName: \"labelText\", isSignal: true, isRequired: true, transformFunction: null }, placelholder: { classPropertyName: \"placelholder\", publicName: \"placelholder\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<mat-form-field class=\\\"w-100\\\" appearance=\\\"outline\\\">\\n <mat-label>{{ labelText() }}</mat-label>\\n <mat-chip-grid #chipGrid aria-label=\\\"Enter fruits\\\">\\n @for (chip of chips(); track $index) {\\n <mat-chip-row\\n (removed)=\\\"remove(chip)\\\"\\n [editable]=\\\"true\\\"\\n (edited)=\\\"edit(chip, $event)\\\"\\n [aria-description]=\\\"'press enter to edit ' + chip\\\"\\n >\\n {{ chip }}\\n <button matChipRemove [attr.aria-label]=\\\"'remove ' + chip\\\">\\n <mat-icon>cancel</mat-icon>\\n </button>\\n </mat-chip-row>\\n }\\n <input\\n [placeholder]=\\\"placelholder()\\\"\\n [matChipInputFor]=\\\"chipGrid\\\"\\n [matChipInputSeparatorKeyCodes]=\\\"separatorKeysCodes\\\"\\n [matChipInputAddOnBlur]=\\\"addOnBlur\\\"\\n (matChipInputTokenEnd)=\\\"add($event)\\\"\\n />\\n </mat-chip-grid>\\n <mat-hint align=\\\"start\\\"\\n ><strong>Ingrese {{ labelText() }} y dale \\\"Enter\\\"</strong>\\n </mat-hint>\\n</mat-form-field>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: MatLabel, selector: \"mat-label\" }, { kind: \"component\", type: MatChipRow, selector: \"mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]\", inputs: [\"editable\"], outputs: [\"edited\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"component\", type: MatChipGrid, selector: \"mat-chip-grid\", inputs: [\"disabled\", \"placeholder\", \"required\", \"value\", \"errorStateMatcher\"], outputs: [\"change\", \"valueChange\"] }, { kind: \"directive\", type: MatChipInput, selector: \"input[matChipInputFor]\", inputs: [\"matChipInputFor\", \"matChipInputAddOnBlur\", \"matChipInputSeparatorKeyCodes\", \"placeholder\", \"id\", \"disabled\", \"readonly\", \"matChipInputDisabledInteractive\"], outputs: [\"matChipInputTokenEnd\"], exportAs: [\"matChipInput\", \"matChipInputFor\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: InputChipComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-input-chip', imports: [MatFormField, MatLabel, MatChipRow, MatIcon, MatHint, MatChipGrid, MatChipInput], encapsulation: ViewEncapsulation.None, template: \"<mat-form-field class=\\\"w-100\\\" appearance=\\\"outline\\\">\\n <mat-label>{{ labelText() }}</mat-label>\\n <mat-chip-grid #chipGrid aria-label=\\\"Enter fruits\\\">\\n @for (chip of chips(); track $index) {\\n <mat-chip-row\\n (removed)=\\\"remove(chip)\\\"\\n [editable]=\\\"true\\\"\\n (edited)=\\\"edit(chip, $event)\\\"\\n [aria-description]=\\\"'press enter to edit ' + chip\\\"\\n >\\n {{ chip }}\\n <button matChipRemove [attr.aria-label]=\\\"'remove ' + chip\\\">\\n <mat-icon>cancel</mat-icon>\\n </button>\\n </mat-chip-row>\\n }\\n <input\\n [placeholder]=\\\"placelholder()\\\"\\n [matChipInputFor]=\\\"chipGrid\\\"\\n [matChipInputSeparatorKeyCodes]=\\\"separatorKeysCodes\\\"\\n [matChipInputAddOnBlur]=\\\"addOnBlur\\\"\\n (matChipInputTokenEnd)=\\\"add($event)\\\"\\n />\\n </mat-chip-grid>\\n <mat-hint align=\\\"start\\\"\\n ><strong>Ingrese {{ labelText() }} y dale \\\"Enter\\\"</strong>\\n </mat-hint>\\n</mat-form-field>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1jaGlwL2lucHV0LWNoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtY2hpcC9pbnB1dC1jaGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFFWixVQUFVLEdBQ1gsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBU3JELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLGdEQUFZLENBQUM7SUFDbkMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLG9EQUFVLENBQUM7SUFDckMsWUFBWSxHQUFHLEtBQUssQ0FBUyxFQUFFLHdEQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNSLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBVSxDQUFDO0lBRXRELFNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFbEMsR0FBRyxDQUFDLEtBQXdCO1FBQzFCLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6QyxnQkFBZ0I7UUFDaEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELHdCQUF3QjtRQUN4QixLQUFLLENBQUMsU0FBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsS0FBeUI7UUFDOUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQywwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO3VHQTdDVSxrQkFBa0I7MkZBQWxCLGtCQUFrQiw2ZENwQi9CLHE5QkE0QkEsMEREYlksWUFBWSw0TEFBRSxRQUFRLHNEQUFFLFVBQVUsOEpBQUUsT0FBTywySUFBRSxPQUFPLDhFQUFFLFdBQVcsNktBQUUsWUFBWTs7MkZBSzlFLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxnQkFBZ0IsV0FDakIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsaUJBRzNFLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNYXRDaGlwRWRpdGVkRXZlbnQsXG4gIE1hdENoaXBHcmlkLFxuICBNYXRDaGlwSW5wdXQsXG4gIE1hdENoaXBJbnB1dEV2ZW50LFxuICBNYXRDaGlwUm93LFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRIaW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWlucHV0LWNoaXAnLFxuICBpbXBvcnRzOiBbTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0Q2hpcFJvdywgTWF0SWNvbiwgTWF0SGludCwgTWF0Q2hpcEdyaWQsIE1hdENoaXBJbnB1dF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jaGlwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2lucHV0LWNoaXAuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENoaXBDb21wb25lbnQge1xuICBjaGlwcyA9IGlucHV0LnJlcXVpcmVkPHN0cmluZ1tdPigpO1xuICBsYWJlbFRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHBsYWNlbGhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xuICBhZGRPbkJsdXIgPSB0cnVlO1xuICByZWFkb25seSBzZXBhcmF0b3JLZXlzQ29kZXMgPSBbRU5URVIsIENPTU1BXSBhcyBjb25zdDtcblxuICBhbm5vdW5jZXIgPSBpbmplY3QoTGl2ZUFubm91bmNlcik7XG5cbiAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XG5cbiAgICAvLyBBZGQgb3VyIGZydWl0XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmNoaXBzKCkucHVzaCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgdGhlIGlucHV0IHZhbHVlXG4gICAgZXZlbnQuY2hpcElucHV0IS5jbGVhcigpO1xuICB9XG5cbiAgcmVtb3ZlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hpcHMoKS5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLmNoaXBzKCkuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgdGhpcy5hbm5vdW5jZXIuYW5ub3VuY2UoYFJlbW92ZWQgJHt2YWx1ZX1gKTtcbiAgICB9XG4gIH1cblxuICBlZGl0KGlucHV0UmF3OiBzdHJpbmcsIGV2ZW50OiBNYXRDaGlwRWRpdGVkRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlLnRyaW0oKTtcblxuICAgIC8vIFJlbW92ZSBmcnVpdCBpZiBpdCBubyBsb25nZXIgaGFzIGEgbmFtZVxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMucmVtb3ZlKGlucHV0UmF3KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFZGl0IGV4aXN0aW5nIGZydWl0XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmNoaXBzKCkuaW5kZXhPZihpbnB1dFJhdyk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuY2hpcHMoKVtpbmRleF0gPSB2YWx1ZS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgPG1hdC1sYWJlbD57eyBsYWJlbFRleHQoKSB9fTwvbWF0LWxhYmVsPlxuICA8bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWQgYXJpYS1sYWJlbD1cIkVudGVyIGZydWl0c1wiPlxuICAgIEBmb3IgKGNoaXAgb2YgY2hpcHMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8bWF0LWNoaXAtcm93XG4gICAgICAgIChyZW1vdmVkKT1cInJlbW92ZShjaGlwKVwiXG4gICAgICAgIFtlZGl0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgKGVkaXRlZCk9XCJlZGl0KGNoaXAsICRldmVudClcIlxuICAgICAgICBbYXJpYS1kZXNjcmlwdGlvbl09XCIncHJlc3MgZW50ZXIgdG8gZWRpdCAnICsgY2hpcFwiXG4gICAgICA+XG4gICAgICAgIHt7IGNoaXAgfX1cbiAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3JlbW92ZSAnICsgY2hpcFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgIH1cbiAgICA8aW5wdXRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWxob2xkZXIoKVwiXG4gICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBHcmlkXCJcbiAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIlxuICAgICAgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJhZGRPbkJsdXJcIlxuICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCJcbiAgICAvPlxuICA8L21hdC1jaGlwLWdyaWQ+XG4gIDxtYXQtaGludCBhbGlnbj1cInN0YXJ0XCJcbiAgICA+PHN0cm9uZz5JbmdyZXNlIHt7IGxhYmVsVGV4dCgpIH19IHkgZGFsZSBcIkVudGVyXCI8L3N0cm9uZz5cbiAgPC9tYXQtaGludD5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=","import { Component, ViewEncapsulation } from '@angular/core';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport * as i0 from \"@angular/core\";\nexport class SpinnerComponent {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.2\", type: SpinnerComponent, isStandalone: true, selector: \"acp-spinner\", ngImport: i0, template: \"<div class=\\\"acp-spinner\\\">\\n <mat-spinner />\\n</div>\\n\", styles: [\".acp-spinner{display:flex;justify-content:center;align-items:center;height:100%}\\n\"], dependencies: [{ kind: \"component\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: [\"color\", \"mode\", \"value\", \"diameter\", \"strokeWidth\"], exportAs: [\"matProgressSpinner\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SpinnerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-spinner', imports: [MatProgressSpinner], encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"acp-spinner\\\">\\n <mat-spinner />\\n</div>\\n\", styles: [\".acp-spinner{display:flex;justify-content:center;align-items:center;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBU3hFLE1BQU0sT0FBTyxnQkFBZ0I7dUdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLHVFQ1Y3QiwwREFHQSw0SURFWSxrQkFBa0I7OzJGQUtqQixnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsYUFBYSxXQUNkLENBQUMsa0JBQWtCLENBQUMsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3Atc3Bpbm5lcicsXG4gIGltcG9ydHM6IFtNYXRQcm9ncmVzc1NwaW5uZXJdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zcGlubmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU3Bpbm5lckNvbXBvbmVudCB7fVxuIiwiPGRpdiBjbGFzcz1cImFjcC1zcGlubmVyXCI+XG4gIDxtYXQtc3Bpbm5lciAvPlxuPC9kaXY+XG4iXX0=","// tabulator-table.component.ts\nimport { Component, ViewEncapsulation, input, output, } from '@angular/core';\nimport { Tabulator, PageModule, ReactiveDataModule } from 'tabulator-tables';\nimport * as i0 from \"@angular/core\";\nTabulator.registerModule([PageModule, ReactiveDataModule]);\nexport class TabulatorTableComponent {\n // Data inputs\n data = input([], ...(ngDevMode ? [{ debugName: \"data\" }] : []));\n columns = input([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n // Layout inputs\n height = input('400px', ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n layout = input('fitData', ...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n // Tree structure inputs\n dataTree = input(false, ...(ngDevMode ? [{ debugName: \"dataTree\" }] : []));\n dataTreeChildField = input('children', ...(ngDevMode ? [{ debugName: \"dataTreeChildField\" }] : []));\n dataTreeStartExpanded = input(false, ...(ngDevMode ? [{ debugName: \"dataTreeStartExpanded\" }] : []));\n dataTreeSelectPropagate = input(false, ...(ngDevMode ? [{ debugName: \"dataTreeSelectPropagate\" }] : []));\n // Behavior inputs\n selectable = input(true, ...(ngDevMode ? [{ debugName: \"selectable\" }] : []));\n reactiveData = input(true, ...(ngDevMode ? [{ debugName: \"reactiveData\" }] : []));\n placeholder = input('No data available', ...(ngDevMode ? [{ debugName: \"placeholder\" }] : []));\n autoResize = input(true, ...(ngDevMode ? [{ debugName: \"autoResize\" }] : []));\n // Theme configuration\n theme = input({ name: 'default' }, ...(ngDevMode ? [{ debugName: \"theme\" }] : []));\n // Custom styling\n customClass = input('', ...(ngDevMode ? [{ debugName: \"customClass\" }] : []));\n rowFormatter = input(...(ngDevMode ? [undefined, { debugName: \"rowFormatter\" }] : []));\n // Custom options\n options = input({}, ...(ngDevMode ? [{ debugName: \"options\" }] : []));\n // Events\n cellEdited = output();\n rowClick = output();\n rowSelected = output();\n tableReady = output();\n _tabulator;\n // Made public for template access\n containerId = `acp-tabulator-table-${Math.random().toString(36).substr(2, 9)}`;\n ngAfterViewInit() {\n this.initializeTable();\n }\n ngOnChanges(changes) {\n if (changes['data'] && !changes['data'].isFirstChange()) {\n this.updateData();\n }\n if (changes['columns'] && !changes['columns'].isFirstChange()) {\n this.updateColumns();\n }\n if (changes['theme'] && !changes['theme'].isFirstChange()) {\n this.applyTheme();\n }\n if (changes['customClass'] && !changes['customClass'].isFirstChange()) {\n this.applyCustomClass(changes['customClass'].previousValue, this.customClass());\n }\n if (changes['rowFormatter'] && !changes['rowFormatter'].isFirstChange()) {\n this.updateRowFormatter();\n }\n }\n ngOnDestroy() {\n this.destroyTable();\n }\n initializeTable() {\n if (this._tabulator) {\n this.destroyTable();\n }\n const container = document.getElementById(this.containerId);\n if (!container) {\n console.warn('Tabulator container not found');\n return;\n }\n const config = {\n data: this.data(),\n columns: this.columns(),\n height: this.height(),\n layout: this.layout(),\n dataTree: this.dataTree(),\n dataTreeChildField: this.dataTreeChildField(),\n dataTreeStartExpanded: this.dataTreeStartExpanded(),\n dataTreeSelectPropagate: this.dataTreeSelectPropagate(),\n reactiveData: this.reactiveData(),\n placeholder: this.placeholder(),\n autoResize: this.autoResize(),\n selectable: this.selectable(),\n renderVertical: 'virtual',\n renderVerticalBuffer: 300,\n rowFormatter: this.getRowFormatter(),\n ...this.options(),\n };\n try {\n this._tabulator = new Tabulator(container, config);\n this.applyTheme();\n this.registerEvents();\n this.tableReady.emit(this._tabulator);\n }\n catch (error) {\n console.error('Error initializing Tabulator:', error);\n }\n }\n applyTheme() {\n if (this._tabulator) {\n // Tabulator themes are applied via CSS classes on the table element\n const tableElement = this._tabulator.element;\n // Remove existing theme classes\n tableElement.classList.remove('tabulator-modern', 'tabulator-midnight', 'tabulator-simple', 'tabulator-site', 'tabulator-site-dark');\n // Add current theme class (skip 'default' as it uses base styles)\n const theme = this.theme();\n if (theme.name !== 'default') {\n tableElement.classList.add(`tabulator-${theme.name}`);\n }\n // Apply custom classes\n this.applyCustomClass('', this.customClass());\n }\n }\n applyCustomClass(previousClass, newClass) {\n if (this._tabulator) {\n const tableElement = this._tabulator.element;\n // Remove previous custom classes\n if (previousClass) {\n const prevClasses = previousClass.split(' ').filter(cls => cls.trim());\n prevClasses.forEach(cls => tableElement.classList.remove(cls));\n }\n // Add new custom classes\n if (newClass) {\n const newClasses = newClass.split(' ').filter(cls => cls.trim());\n newClasses.forEach(cls => tableElement.classList.add(cls));\n }\n }\n }\n registerEvents() {\n this._tabulator.on('cellEdited', cell => {\n this.cellEdited.emit(cell);\n });\n this._tabulator.on('rowClick', (e, row) => {\n this.rowClick.emit(row);\n });\n this._tabulator.on('rowSelected', row => {\n this.rowSelected.emit(row);\n });\n }\n updateData() {\n if (this._tabulator) {\n this._tabulator.replaceData(this.data());\n }\n }\n updateColumns() {\n if (this._tabulator) {\n this._tabulator.setColumns(this.columns());\n }\n }\n destroyTable() {\n if (this._tabulator) {\n this._tabulator.destroy();\n }\n }\n updateRowFormatter() {\n if (this._tabulator) {\n this._tabulator.redraw(true);\n }\n }\n // Public API methods\n getInstance() {\n return this._tabulator;\n }\n redraw() {\n if (this._tabulator) {\n this._tabulator.redraw();\n }\n }\n getRowFormatter() {\n return (row) => {\n const data = row.getData();\n const element = row.getElement();\n // Apply custom row formatter if provided\n const customFormatter = this.rowFormatter();\n if (customFormatter) {\n customFormatter(row);\n return;\n }\n // Apply rowStyle if present in data\n if (data.rowStyle) {\n Object.assign(element.style, data.rowStyle);\n }\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TabulatorTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: TabulatorTableComponent, isStandalone: true, selector: \"acp-tabulator-table\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: \"columns\", publicName: \"columns\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: \"layout\", publicName: \"layout\", isSignal: true, isRequired: false, transformFunction: null }, dataTree: { classPropertyName: \"dataTree\", publicName: \"dataTree\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeChildField: { classPropertyName: \"dataTreeChildField\", publicName: \"dataTreeChildField\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeStartExpanded: { classPropertyName: \"dataTreeStartExpanded\", publicName: \"dataTreeStartExpanded\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeSelectPropagate: { classPropertyName: \"dataTreeSelectPropagate\", publicName: \"dataTreeSelectPropagate\", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: \"selectable\", publicName: \"selectable\", isSignal: true, isRequired: false, transformFunction: null }, reactiveData: { classPropertyName: \"reactiveData\", publicName: \"reactiveData\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: \"autoResize\", publicName: \"autoResize\", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: \"customClass\", publicName: \"customClass\", isSignal: true, isRequired: false, transformFunction: null }, rowFormatter: { classPropertyName: \"rowFormatter\", publicName: \"rowFormatter\", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellEdited: \"cellEdited\", rowClick: \"rowClick\", rowSelected: \"rowSelected\", tableReady: \"tableReady\" }, usesOnChanges: true, ngImport: i0, template: \"<div [id]=\\\"containerId\\\" class=\\\"acp-tabulator-table-container\\\"></div>\\n\", styles: [\".acp-tabulator-table{display:block}.acp-tabulator-table-container{width:100%}.acp-tabulator-table-container .tabulator-row.tabulator-selectable:hover{background-color:#0000000a;cursor:pointer;transition:background-color .2s ease}.acp-tabulator-table-container .tabulator-row.tabulator-selected{background-color:var(--mat-sys-primary-container, rgba(25, 118, 210, .12))}@media (max-width: 768px){.acp-tabulator-table-container .tabulator-header{font-size:.875rem}.acp-tabulator-table-container .tabulator-cell{font-size:.875rem;padding:8px 6px}}.acp-tabulator-table-container .tabulator-loader{background:var(--mat-sys-surface-container, rgba(255, 255, 255, .8));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar{width:8px;height:8px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}\\n\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TabulatorTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-tabulator-table', standalone: true, imports: [], encapsulation: ViewEncapsulation.None, template: \"<div [id]=\\\"containerId\\\" class=\\\"acp-tabulator-table-container\\\"></div>\\n\", styles: [\".acp-tabulator-table{display:block}.acp-tabulator-table-container{width:100%}.acp-tabulator-table-container .tabulator-row.tabulator-selectable:hover{background-color:#0000000a;cursor:pointer;transition:background-color .2s ease}.acp-tabulator-table-container .tabulator-row.tabulator-selected{background-color:var(--mat-sys-primary-container, rgba(25, 118, 210, .12))}@media (max-width: 768px){.acp-tabulator-table-container .tabulator-header{font-size:.875rem}.acp-tabulator-table-container .tabulator-cell{font-size:.875rem;padding:8px 6px}}.acp-tabulator-table-container .tabulator-loader{background:var(--mat-sys-surface-container, rgba(255, 255, 255, .8));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar{width:8px;height:8px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFidWxhdG9yLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy90YWJ1bGF0b3ItdGFibGUvdGFidWxhdG9yLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy90YWJ1bGF0b3ItdGFibGUvdGFidWxhdG9yLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBRUwsU0FBUyxFQUlULGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRzdFLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0FBVTNELE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsY0FBYztJQUNMLElBQUksR0FBRyxLQUFLLENBQVEsRUFBRSxnREFBQyxDQUFDO0lBQ3hCLE9BQU8sR0FBRyxLQUFLLENBQVEsRUFBRSxtREFBQyxDQUFDO0lBRXBDLGdCQUFnQjtJQUNQLE1BQU0sR0FBRyxLQUFLLENBQTBCLE9BQU8sa0RBQUMsQ0FBQztJQUNqRCxNQUFNLEdBQUcsS0FBSyxDQUE4RCxTQUFTLGtEQUFDLENBQUM7SUFFaEcsd0JBQXdCO0lBQ2YsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLG9EQUFDLENBQUM7SUFDeEIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFVBQVUsOERBQUMsQ0FBQztJQUN2QyxxQkFBcUIsR0FBRyxLQUFLLENBQUMs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O1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQzt1R0E3TlUsdUJBQXVCOzJGQUF2Qix1QkFBdUIsbzNFQ3pCcEMsNEVBQ0E7OzJGRHdCYSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxFQUFFLGlCQUdJLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0YWJ1bGF0b3ItdGFibGUuY29tcG9uZW50LnRzXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5wdXQsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRhYnVsYXRvciwgUGFnZU1vZHVsZSwgUmVhY3RpdmVEYXRhTW9kdWxlIH0gZnJvbSAndGFidWxhdG9yLXRhYmxlcyc7XG5pbXBvcnQgeyBUYWJ1bGF0b3JUaGVtZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuVGFidWxhdG9yLnJlZ2lzdGVyTW9kdWxlKFtQYWdlTW9kdWxlLCBSZWFjdGl2ZURhdGFNb2R1bGVdKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLXRhYnVsYXRvci10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFidWxhdG9yLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFidWxhdG9yLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRhYnVsYXRvclRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvLyBEYXRhIGlucHV0c1xuICByZWFkb25seSBkYXRhID0gaW5wdXQ8YW55W10+KFtdKTtcbiAgcmVhZG9ubHkgY29sdW1ucyA9IGlucHV0PGFueVtdPihbXSk7XG5cbiAgLy8gTGF5b3V0IGlucHV0c1xuICByZWFkb25seSBoZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudW1iZXIgfCBmYWxzZT4oJzQwMHB4Jyk7XG4gIHJlYWRvbmx5IGxheW91dCA9IGlucHV0PCdmaXREYXRhJyB8ICdmaXRDb2x1bW5zJyB8ICdmaXREYXRhRmlsbCcgfCAnZml0RGF0YVN0cmV0Y2gnPignZml0RGF0YScpO1xuXG4gIC8vIFRyZWUgc3RydWN0dXJlIGlucHV0c1xuICByZWFkb25seSBkYXRhVHJlZSA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGF0YVRyZWVDaGlsZEZpZWxkID0gaW5wdXQoJ2NoaWxkcmVuJyk7XG4gIHJlYWRvbmx5IGRhdGFUcmVlU3RhcnRFeHBhbmRlZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGF0YVRyZWVTZWxlY3RQcm9wYWdhdGUgPSBpbnB1dChmYWxzZSk7XG5cbiAgLy8gQmVoYXZpb3IgaW5wdXRzXG4gIHJlYWRvbmx5IHNlbGVjdGFibGUgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgcmVhY3RpdmVEYXRhID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQoJ05vIGRhdGEgYXZhaWxhYmxlJyk7XG4gIHJlYWRvbmx5IGF1dG9SZXNpemUgPSBpbnB1dCh0cnVlKTtcblxuICAvLyBUaGVtZSBjb25maWd1cmF0aW9uXG4gIHJlYWRvbmx5IHRoZW1lID0gaW5wdXQ8VGFidWxhdG9yVGhlbWU+KHsgbmFtZTogJ2RlZmF1bHQnIH0pO1xuXG4gIC8vIEN1c3RvbSBzdHlsaW5nXG4gIHJlYWRvbmx5IGN1c3RvbUNsYXNzID0gaW5wdXQoJycpO1xuICByZWFkb25seSByb3dGb3JtYXR0ZXIgPSBpbnB1dDwocm93OiBhbnkpID0+IHZvaWQgfCBudWxsPigpO1xuXG4gIC8vIEN1c3RvbSBvcHRpb25zXG4gIHJlYWRvbmx5IG9wdGlvbnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLy8gRXZlbnRzXG4gIHJlYWRvbmx5IGNlbGxFZGl0ZWQgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSByb3dDbGljayA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IHJvd1NlbGVjdGVkID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgdGFibGVSZWFkeSA9IG91dHB1dDxUYWJ1bGF0b3I+KCk7XG5cbiAgcHJpdmF0ZSBfdGFidWxhdG9yITogVGFidWxhdG9yO1xuXG4gIC8vIE1hZGUgcHVibGljIGZvciB0ZW1wbGF0ZSBhY2Nlc3NcbiAgcHVibGljIGNvbnRhaW5lcklkID0gYGFjcC10YWJ1bGF0b3ItdGFibGUtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplVGFibGUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddICYmICFjaGFuZ2VzWydkYXRhJ10uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddICYmICFjaGFuZ2VzWydjb2x1bW5zJ10uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sndGhlbWUnXSAmJiAhY2hhbmdlc1sndGhlbWUnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjdXN0b21DbGFzcyddICYmICFjaGFuZ2VzWydjdXN0b21DbGFzcyddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy5hcHBseUN1c3RvbUNsYXNzKGNoYW5nZXNbJ2N1c3RvbUNsYXNzJ10ucHJldmlvdXNWYWx1ZSwgdGhpcy5jdXN0b21DbGFzcygpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sncm93Rm9ybWF0dGVyJ10gJiYgIWNoYW5nZXNbJ3Jvd0Zvcm1hdHRlciddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy51cGRhdGVSb3dGb3JtYXR0ZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lUYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGFibGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5kZXN0cm95VGFibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvbnRhaW5lcklkKTtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29uc29sZS53YXJuKCdUYWJ1bGF0b3IgY29udGFpbmVyIG5vdCBmb3VuZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xuICAgICAgZGF0YTogdGhpcy5kYXRhKCksXG4gICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMoKSxcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQoKSxcbiAgICAgIGxheW91dDogdGhpcy5sYXlvdXQoKSxcbiAgICAgIGRhdGFUcmVlOiB0aGlzLmRhdGFUcmVlKCksXG4gICAgICBkYXRhVHJlZUNoaWxkRmllbGQ6IHRoaXMuZGF0YVRyZWVDaGlsZEZpZWxkKCksXG4gICAgICBkYXRhVHJlZVN0YXJ0RXhwYW5kZWQ6IHRoaXMuZGF0YVRyZWVTdGFydEV4cGFuZGVkKCksXG4gICAgICBkYXRhVHJlZVNlbGVjdFByb3BhZ2F0ZTogdGhpcy5kYXRhVHJlZVNlbGVjdFByb3BhZ2F0ZSgpLFxuICAgICAgcmVhY3RpdmVEYXRhOiB0aGlzLnJlYWN0aXZlRGF0YSgpLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucGxhY2Vob2xkZXIoKSxcbiAgICAgIGF1dG9SZXNpemU6IHRoaXMuYXV0b1Jlc2l6ZSgpLFxuICAgICAgc2VsZWN0YWJsZTogdGhpcy5zZWxlY3RhYmxlKCksXG4gICAgICByZW5kZXJWZXJ0aWNhbDogJ3ZpcnR1YWwnLFxuICAgICAgcmVuZGVyVmVydGljYWxCdWZmZXI6IDMwMCxcbiAgICAgIHJvd0Zvcm1hdHRlcjogdGhpcy5nZXRSb3dGb3JtYXR0ZXIoKSxcbiAgICAgIC4uLnRoaXMub3B0aW9ucygpLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fdGFidWxhdG9yID0gbmV3IFRhYnVsYXRvcihjb250YWluZXIsIGNvbmZpZyk7XG4gICAgICB0aGlzLmFwcGx5VGhlbWUoKTtcbiAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMoKTtcbiAgICAgIHRoaXMudGFibGVSZWFkeS5lbWl0KHRoaXMuX3RhYnVsYXRvcik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUYWJ1bGF0b3I6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUaGVtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdGFidWxhdG9yKSB7XG4gICAgICAvLyBUYWJ1bGF0b3IgdGhlbWVzIGFyZSBhcHBsaWVkIHZpYSBDU1MgY2xhc3NlcyBvbiB0aGUgdGFibGUgZWxlbWVudFxuICAgICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5fdGFidWxhdG9yLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIC8vIFJlbW92ZSBleGlzdGluZyB0aGVtZSBjbGFzc2VzXG4gICAgICB0YWJsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgJ3RhYnVsYXRvci1tb2Rlcm4nLFxuICAgICAgICAndGFidWxhdG9yLW1pZG5pZ2h0JyxcbiAgICAgICAgJ3RhYnVsYXRvci1zaW1wbGUnLFxuICAgICAgICAndGFidWxhdG9yLXNpdGUnLFxuICAgICAgICAndGFidWxhdG9yLXNpdGUtZGFyaycsXG4gICAgICApO1xuXG4gICAgICAvLyBBZGQgY3VycmVudCB0aGVtZSBjbGFzcyAoc2tpcCAnZGVmYXVsdCcgYXMgaXQgdXNlcyBiYXNlIHN0eWxlcylcbiAgICAgIGNvbnN0IHRoZW1lID0gdGhpcy50aGVtZSgpO1xuICAgICAgaWYgKHRoZW1lLm5hbWUgIT09ICdkZWZhdWx0Jykge1xuICAgICAgICB0YWJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgdGFidWxhdG9yLSR7dGhlbWUubmFtZX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gQXBwbHkgY3VzdG9tIGNsYXNzZXNcbiAgICAgIHRoaXMuYXBwbHlDdXN0b21DbGFzcygnJywgdGhpcy5jdXN0b21DbGFzcygpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q3VzdG9tQ2xhc3MocHJldmlvdXNDbGFzczogc3RyaW5nLCBuZXdDbGFzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5fdGFidWxhdG9yLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIC8vIFJlbW92ZSBwcmV2aW91cyBjdXN0b20gY2xhc3Nlc1xuICAgICAgaWYgKHByZXZpb3VzQ2xhc3MpIHtcbiAgICAgICAgY29uc3QgcHJldkNsYXNzZXMgPSBwcmV2aW91c0NsYXNzLnNwbGl0KCcgJykuZmlsdGVyKGNscyA9PiBjbHMudHJpbSgpKTtcbiAgICAgICAgcHJldkNsYXNzZXMuZm9yRWFjaChjbHMgPT4gdGFibGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xzKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBuZXcgY3VzdG9tIGNsYXNzZXNcbiAgICAgIGlmIChuZXdDbGFzcykge1xuICAgICAgICBjb25zdCBuZXdDbGFzc2VzID0gbmV3Q2xhc3Muc3BsaXQoJyAnKS5maWx0ZXIoY2xzID0+IGNscy50cmltKCkpO1xuICAgICAgICBuZXdDbGFzc2VzLmZvckVhY2goY2xzID0+IHRhYmxlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGNscykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fdGFidWxhdG9yLm9uKCdjZWxsRWRpdGVkJywgY2VsbCA9PiB7XG4gICAgICB0aGlzLmNlbGxFZGl0ZWQuZW1pdChjZWxsKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3RhYnVsYXRvci5vbigncm93Q2xpY2snLCAoZSwgcm93KSA9PiB7XG4gICAgICB0aGlzLnJvd0NsaWNrLmVtaXQocm93KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3RhYnVsYXRvci5vbigncm93U2VsZWN0ZWQnLCByb3cgPT4ge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KHJvdyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnJlcGxhY2VEYXRhKHRoaXMuZGF0YSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnNldENvbHVtbnModGhpcy5jb2x1bW5zKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveVRhYmxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90YWJ1bGF0b3IpIHtcbiAgICAgIHRoaXMuX3RhYnVsYXRvci5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dGb3JtYXR0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnJlZHJhdyh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBQdWJsaWMgQVBJIG1ldGhvZHNcbiAgcHVibGljIGdldEluc3RhbmNlKCk6IFRhYnVsYXRvciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYnVsYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyByZWRyYXcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um93Rm9ybWF0dGVyKCk6IChyb3c6IGFueSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIChyb3c6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHJvdy5nZXREYXRhKCk7XG4gICAgICBjb25zdCBlbGVtZW50ID0gcm93LmdldEVsZW1lbnQoKTtcblxuICAgICAgLy8gQXBwbHkgY3VzdG9tIHJvdyBmb3JtYXR0ZXIgaWYgcHJvdmlkZWRcbiAgICAgIGNvbnN0IGN1c3RvbUZvcm1hdHRlciA9IHRoaXMucm93Rm9ybWF0dGVyKCk7XG4gICAgICBpZiAoY3VzdG9tRm9ybWF0dGVyKSB7XG4gICAgICAgIGN1c3RvbUZvcm1hdHRlcihyb3cpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHJvd1N0eWxlIGlmIHByZXNlbnQgaW4gZGF0YVxuICAgICAgaWYgKGRhdGEucm93U3R5bGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBkYXRhLnJvd1N0eWxlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IFtpZF09XCJjb250YWluZXJJZFwiIGNsYXNzPVwiYWNwLXRhYnVsYXRvci10YWJsZS1jb250YWluZXJcIj48L2Rpdj5cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class GetTotalPipe {\n transform(colName, dataSource) {\n return this.getTotal(colName, dataSource) || '';\n }\n /**\n * Calculate and return the total (sum) of all the column --> the column must be number\n */\n getTotal(colName, dataSource) {\n const total = dataSource\n .map(row => row[colName])\n .reduce((acc, value) => (value ? acc + Number(value) : acc), 0);\n return total?.toFixed(2);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GetTotalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.2\", ngImport: i0, type: GetTotalPipe, isStandalone: true, name: \"getTotal\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GetTotalPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'getTotal',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRvdGFsLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvcGlwZXMvZ2V0LXRvdGFsLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFNBQVMsQ0FBQyxPQUFlLEVBQUUsVUFBaUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLE9BQWUsRUFBRSxVQUFpQjtRQUN6QyxNQUFNLEtBQUssR0FBRyxVQUFVO2FBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7dUdBYlUsWUFBWTtxR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO29CQUNoQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2dldFRvdGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgR2V0VG90YWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShjb2xOYW1lOiBzdHJpbmcsIGRhdGFTb3VyY2U6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRUb3RhbChjb2xOYW1lLCBkYXRhU291cmNlKSB8fCAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgYW5kIHJldHVybiB0aGUgdG90YWwgKHN1bSkgb2YgYWxsIHRoZSBjb2x1bW4gLS0+IHRoZSBjb2x1bW4gbXVzdCBiZSBudW1iZXJcbiAgICovXG4gIGdldFRvdGFsKGNvbE5hbWU6IHN0cmluZywgZGF0YVNvdXJjZTogYW55W10pOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gZGF0YVNvdXJjZVxuICAgICAgLm1hcChyb3cgPT4gcm93W2NvbE5hbWVdKVxuICAgICAgLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4gKHZhbHVlID8gYWNjICsgTnVtYmVyKHZhbHVlKSA6IGFjYyksIDApO1xuICAgIHJldHVybiB0b3RhbD8udG9GaXhlZCgyKTtcbiAgfVxufVxuIl19","import { inject, Pipe } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslocoService } from '@jsverse/transloco';\nimport * as i0 from \"@angular/core\";\nexport class StatusDisplayPipe {\n sanitizer = inject(DomSanitizer);\n transloco = inject(TranslocoService, { optional: true });\n transform(isActive, options = {}) {\n const { gender = 'neutral', showIcon = true, customActiveText, customInactiveText, textClass = '', iconClass = '', } = options;\n const text = this.getStatusText(isActive, gender, customActiveText, customInactiveText);\n const icon = isActive ? 'check_circle' : 'cancel';\n const colorClass = isActive ? 'text-green-500' : 'text-red-500';\n const combinedIconClass = `${colorClass} align-middle mr-1 ${iconClass}`.trim();\n const combinedTextClass = `align-middle ${textClass}`.trim();\n let html = '';\n if (showIcon) {\n html += `<mat-icon class=\"${combinedIconClass}\" fontIcon=\"${icon}\"></mat-icon>`;\n }\n html += `<span class=\"${combinedTextClass}\">${text}</span>`;\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n getStatusText(isActive, gender, customActive, customInactive) {\n if (customActive && isActive)\n return customActive;\n if (customInactive && !isActive)\n return customInactive;\n if (!this.transloco)\n return this.getFallbackText(isActive, gender);\n const translationKey = this.getTranslationKey(isActive, gender);\n const translation = this.transloco.translate(translationKey);\n return translation !== translationKey ? translation : this.getFallbackText(isActive, gender);\n }\n getTranslationKey(isActive, gender) {\n const base = isActive ? 'status.active' : 'status.inactive';\n return gender !== 'neutral'\n ? `${base}.${gender}`\n : base;\n }\n getFallbackText(isActive, gender) {\n const lang = this.transloco?.getActiveLang() || 'en';\n const isSpanish = lang.startsWith('es');\n if (!isSpanish) {\n return isActive ? 'Active' : 'Inactive';\n }\n if (isActive) {\n return gender === 'female' ? 'Activa' : 'Activo';\n }\n else {\n return gender === 'female' ? 'Inactiva' : 'Inactivo';\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: StatusDisplayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.2\", ngImport: i0, type: StatusDisplayPipe, isStandalone: true, name: \"statusDisplay\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: StatusDisplayPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'statusDisplay',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWRpc3BsYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9waXBlcy9zdGF0dXMtZGlzcGxheS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBd0J0RCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWpFLFNBQVMsQ0FBQyxRQUFpQixFQUFFLFVBQXlCLEVBQUU7UUFDdEQsTUFBTSxFQUNKLE1BQU0sR0FBRyxTQUFTLEVBQ2xCLFFBQVEsR0FBRyxJQUFJLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixTQUFTLEdBQUcsRUFBRSxFQUNkLFNBQVMsR0FBRyxFQUFFLEdBQ2YsR0FBRyxPQUFPLENBQUM7UUFFWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN4RixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNoRSxNQUFNLGlCQUFpQixHQUFHLEdBQUcsVUFBVSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEYsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksSUFBSSxvQkFBb0IsaUJBQWlCLGVBQWUsSUFBSSxlQUFlLENBQUM7UUFDbEYsQ0FBQztRQUVELElBQUksSUFBSSxnQkFBZ0IsaUJBQWlCLEtBQUssSUFBSSxTQUFTLENBQUM7UUFFNUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxhQUFhLENBQ25CLFFBQWlCLEVBQ2pCLE1BQW9CLEVBQ3BCLFlBQXFCLEVBQ3JCLGNBQXVCO1FBRXZCLElBQUksWUFBWSxJQUFJLFFBQVE7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUNsRCxJQUFJLGNBQWMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLGNBQWMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5FLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0QsT0FBTyxXQUFXLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxRQUFpQixFQUFFLE1BQW9CO1FBQy9ELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUM1RCxPQUFPLE1BQU0sS0FBSyxTQUFTO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLElBQUksSUFBSSxNQUFNLEVBQXFCO1lBQ3pDLENBQUMsQ0FBRSxJQUF1QixDQUFDO0lBQy9CLENBQUM7SUFFTyxlQUFlLENBQUMsUUFBaUIsRUFBRSxNQUFvQjtRQUM3RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO3VHQW5FVSxpQkFBaUI7cUdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFIN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuXG50eXBlIFN0YXR1c0dlbmRlciA9ICdtYWxlJyB8ICdmZW1hbGUnIHwgJ25ldXRyYWwnO1xuXG5pbnRlcmZhY2UgU3RhdHVzT3B0aW9ucyB7XG4gIGdlbmRlcj86IFN0YXR1c0dlbmRlcjtcbiAgc2hvd0ljb24/OiBib29sZWFuO1xuICBjdXN0b21BY3RpdmVUZXh0Pzogc3RyaW5nO1xuICBjdXN0b21JbmFjdGl2ZVRleHQ/OiBzdHJpbmc7XG4gIHRleHRDbGFzcz86IHN0cmluZztcbiAgaWNvbkNsYXNzPzogc3RyaW5nO1xufVxuXG50eXBlIFRyYW5zbGF0aW9uS2V5ID1cbiAgfCAnc3RhdHVzLmFjdGl2ZSdcbiAgfCAnc3RhdHVzLmluYWN0aXZlJ1xuICB8ICdzdGF0dXMuYWN0aXZlLm1hbGUnXG4gIHwgJ3N0YXR1cy5hY3RpdmUuZmVtYWxlJ1xuICB8ICdzdGF0dXMuaW5hY3RpdmUubWFsZSdcbiAgfCAnc3RhdHVzLmluYWN0aXZlLmZlbWFsZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3N0YXR1c0Rpc3BsYXknLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0dXNEaXNwbGF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHRyYW5zZm9ybShpc0FjdGl2ZTogYm9vbGVhbiwgb3B0aW9uczogU3RhdHVzT3B0aW9ucyA9IHt9KTogU2FmZUh0bWwge1xuICAgIGNvbnN0IHtcbiAgICAgIGdlbmRlciA9ICduZXV0cmFsJyxcbiAgICAgIHNob3dJY29uID0gdHJ1ZSxcbiAgICAgIGN1c3RvbUFjdGl2ZVRleHQsXG4gICAgICBjdXN0b21JbmFjdGl2ZVRleHQsXG4gICAgICB0ZXh0Q2xhc3MgPSAnJyxcbiAgICAgIGljb25DbGFzcyA9ICcnLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0U3RhdHVzVGV4dChpc0FjdGl2ZSwgZ2VuZGVyLCBjdXN0b21BY3RpdmVUZXh0LCBjdXN0b21JbmFjdGl2ZVRleHQpO1xuICAgIGNvbnN0IGljb24gPSBpc0FjdGl2ZSA/ICdjaGVja19jaXJjbGUnIDogJ2NhbmNlbCc7XG4gICAgY29uc3QgY29sb3JDbGFzcyA9IGlzQWN0aXZlID8gJ3RleHQtZ3JlZW4tNTAwJyA6ICd0ZXh0LXJlZC01MDAnO1xuICAgIGNvbnN0IGNvbWJpbmVkSWNvbkNsYXNzID0gYCR7Y29sb3JDbGFzc30gYWxpZ24tbWlkZGxlIG1yLTEgJHtpY29uQ2xhc3N9YC50cmltKCk7XG4gICAgY29uc3QgY29tYmluZWRUZXh0Q2xhc3MgPSBgYWxpZ24tbWlkZGxlICR7dGV4dENsYXNzfWAudHJpbSgpO1xuXG4gICAgbGV0IGh0bWwgPSAnJztcblxuICAgIGlmIChzaG93SWNvbikge1xuICAgICAgaHRtbCArPSBgPG1hdC1pY29uIGNsYXNzPVwiJHtjb21iaW5lZEljb25DbGFzc31cIiBmb250SWNvbj1cIiR7aWNvbn1cIj48L21hdC1pY29uPmA7XG4gICAgfVxuXG4gICAgaHRtbCArPSBgPHNwYW4gY2xhc3M9XCIke2NvbWJpbmVkVGV4dENsYXNzfVwiPiR7dGV4dH08L3NwYW4+YDtcblxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhdHVzVGV4dChcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBnZW5kZXI6IFN0YXR1c0dlbmRlcixcbiAgICBjdXN0b21BY3RpdmU/OiBzdHJpbmcsXG4gICAgY3VzdG9tSW5hY3RpdmU/OiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGN1c3RvbUFjdGl2ZSAmJiBpc0FjdGl2ZSkgcmV0dXJuIGN1c3RvbUFjdGl2ZTtcbiAgICBpZiAoY3VzdG9tSW5hY3RpdmUgJiYgIWlzQWN0aXZlKSByZXR1cm4gY3VzdG9tSW5hY3RpdmU7XG4gICAgaWYgKCF0aGlzLnRyYW5zbG9jbykgcmV0dXJuIHRoaXMuZ2V0RmFsbGJhY2tUZXh0KGlzQWN0aXZlLCBnZW5kZXIpO1xuXG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSB0aGlzLmdldFRyYW5zbGF0aW9uS2V5KGlzQWN0aXZlLCBnZW5kZXIpO1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xvY28udHJhbnNsYXRlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIHJldHVybiB0cmFuc2xhdGlvbiAhPT0gdHJhbnNsYXRpb25LZXkgPyB0cmFuc2xhdGlvbiA6IHRoaXMuZ2V0RmFsbGJhY2tUZXh0KGlzQWN0aXZlLCBnZW5kZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbktleShpc0FjdGl2ZTogYm9vbGVhbiwgZ2VuZGVyOiBTdGF0dXNHZW5kZXIpOiBUcmFuc2xhdGlvbktleSB7XG4gICAgY29uc3QgYmFzZSA9IGlzQWN0aXZlID8gJ3N0YXR1cy5hY3RpdmUnIDogJ3N0YXR1cy5pbmFjdGl2ZSc7XG4gICAgcmV0dXJuIGdlbmRlciAhPT0gJ25ldXRyYWwnXG4gICAgICA/IChgJHtiYXNlfS4ke2dlbmRlcn1gIGFzIFRyYW5zbGF0aW9uS2V5KVxuICAgICAgOiAoYmFzZSBhcyBUcmFuc2xhdGlvbktleSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZhbGxiYWNrVGV4dChpc0FjdGl2ZTogYm9vbGVhbiwgZ2VuZGVyOiBTdGF0dXNHZW5kZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnRyYW5zbG9jbz8uZ2V0QWN0aXZlTGFuZygpIHx8ICdlbic7XG4gICAgY29uc3QgaXNTcGFuaXNoID0gbGFuZy5zdGFydHNXaXRoKCdlcycpO1xuXG4gICAgaWYgKCFpc1NwYW5pc2gpIHtcbiAgICAgIHJldHVybiBpc0FjdGl2ZSA/ICdBY3RpdmUnIDogJ0luYWN0aXZlJztcbiAgICB9XG5cbiAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiBnZW5kZXIgPT09ICdmZW1hbGUnID8gJ0FjdGl2YScgOiAnQWN0aXZvJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdlbmRlciA9PT0gJ2ZlbWFsZScgPyAnSW5hY3RpdmEnIDogJ0luYWN0aXZvJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ViewContainerRef, input, output, contentChildren, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { MatColumnDef, MatFooterRowDef, MatHeaderRowDef, MatRowDef, MatTable, MatTableDataSource, MatTableModule, } from '@angular/material/table';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { DatePipe, DecimalPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSortModule } from '@angular/material/sort';\nimport { GetTotalPipe } from '../../../pipes';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/table\";\nimport * as i2 from \"@angular/material/checkbox\";\nimport * as i3 from \"@angular/material/sort\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"@angular/material/button\";\nimport * as i6 from \"@angular/material/paginator\";\nexport class DynamicTableComponent {\n componentRefs = [];\n embeddedViews = [];\n cdr = inject(ChangeDetectorRef);\n showExpand = input(false, ...(ngDevMode ? [{ debugName: \"showExpand\" }] : []));\n showFooter = input(false, ...(ngDevMode ? [{ debugName: \"showFooter\" }] : []));\n locale = input('en-US', ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n highlightRowIndex = input(0, ...(ngDevMode ? [{ debugName: \"highlightRowIndex\" }] : []));\n visibleColumns = [];\n columnDefinitions = [];\n showSelectBox = input(false, ...(ngDevMode ? [{ debugName: \"showSelectBox\" }] : []));\n multipleSelection = input(true, ...(ngDevMode ? [{ debugName: \"multipleSelection\" }] : []));\n tableData = input([], ...(ngDevMode ? [{ debugName: \"tableData\" }] : []));\n rowTemplate = input(null, ...(ngDevMode ? [{ debugName: \"rowTemplate\" }] : []));\n expandedDetail = null;\n enablePagination = input(false, ...(ngDevMode ? [{ debugName: \"enablePagination\" }] : []));\n paginationConfig = null;\n isLoadingData = input(false, ...(ngDevMode ? [{ debugName: \"isLoadingData\" }] : []));\n rowSelected = output();\n copyRow = output();\n showExpanded = output();\n hideExpanded = output();\n pageEvent = output();\n isNormalRow = (_, row) => this.expandedElement !== row;\n isExpandedRow = (_, row) => this.expandedElement === row;\n dataSource = new MatTableDataSource([]);\n selection = new SelectionModel(true, []);\n expandedElement = null;\n columnsToDisplayWithExpand = [];\n headerRowDefs = contentChildren(MatHeaderRowDef, ...(ngDevMode ? [{ debugName: \"headerRowDefs\" }] : []));\n rowDefs = contentChildren(MatRowDef, ...(ngDevMode ? [{ debugName: \"rowDefs\" }] : []));\n footerRowDefs = contentChildren(MatFooterRowDef, ...(ngDevMode ? [{ debugName: \"footerRowDefs\" }] : []));\n columnDefs = contentChildren(MatColumnDef, ...(ngDevMode ? [{ debugName: \"columnDefs\" }] : []));\n table = viewChild.required(MatTable);\n rows = contentChildren(ViewContainerRef, ...(ngDevMode ? [{ debugName: \"rows\" }] : []));\n ngOnInit() {\n this.updateColumnsToDisplay();\n this.initializeSelection();\n }\n ngOnChanges(changes) {\n if (changes['tableData']) {\n this.updateTableData();\n }\n if (changes['showExpand'] || changes['visibleColumns'] || changes['columnDefinitions']) {\n this.updateColumnsToDisplay();\n }\n // Trigger change detection for OnPush strategy\n this.cdr.markForCheck();\n }\n ngAfterContentInit() {\n this.registerTableContent();\n this.initializeTable();\n this.cdr.markForCheck();\n }\n ngOnDestroy() {\n this.cleanupDynamicComponents();\n }\n updateTableData() {\n // Clear selection when new data arrives\n this.selection.clear();\n // Update data source\n this.dataSource.data = this.tableData() || [];\n // Reset expanded element if it's no longer in the new data\n if (this.expandedElement && !this.dataSource.data.includes(this.expandedElement)) {\n this.expandedElement = null;\n }\n // Trigger change detection\n this.cdr.markForCheck();\n }\n updateColumnsToDisplay() {\n if (!this.visibleColumns.length && this.columnDefinitions) {\n this.visibleColumns = this.columnDefinitions.map(col => col.key);\n this.columnDefinitions.forEach((col, index) => (col.index = index));\n }\n const newColumns = [...this.visibleColumns];\n if (this.showSelectBox() && !newColumns.includes('select')) {\n newColumns.unshift('select');\n }\n if (this.showExpand() && this.expandedDetail) {\n if (!this.columnDefinitions?.some(col => col.key === 'expand')) {\n this.columnDefinitions = [\n ...(this.columnDefinitions || []),\n {\n key: 'expand',\n label: '',\n type: 'expand',\n index: this.columnDefinitions?.length || 0,\n },\n ];\n }\n if (!newColumns.includes('expand')) {\n newColumns.push('expand');\n }\n }\n this.columnsToDisplayWithExpand = newColumns;\n }\n initializeSelection() {\n this.selection = new SelectionModel(this.multipleSelection(), []);\n }\n registerTableContent() {\n this.columnDefs().forEach(columnDef => this.table().addColumnDef(columnDef));\n this.rowDefs().forEach(rowDef => this.table().addRowDef(rowDef));\n this.headerRowDefs().forEach(headerRowDef => this.table().addHeaderRowDef(headerRowDef));\n if (this.showFooter()) {\n this.footerRowDefs().forEach(footerRowDef => this.table().addFooterRowDef(footerRowDef));\n }\n else {\n this.footerRowDefs().forEach(footerRowDef => this.table().removeFooterRowDef(footerRowDef));\n }\n }\n initializeTable() {\n this.dataSource = new MatTableDataSource(this.tableData() || []);\n }\n cleanupDynamicComponents() {\n this.componentRefs.forEach(ref => ref.destroy());\n this.embeddedViews.forEach(view => view.destroy());\n }\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const selectableRows = this.dataSource.data.filter(row => !row.disableSelection);\n return numSelected === selectableRows.length && selectableRows.length > 0;\n }\n masterToggle() {\n if (!this.multipleSelection())\n return;\n if (this.isAllSelected()) {\n this.selection.clear();\n }\n else {\n this.dataSource.data\n .filter(row => !row.disableSelection)\n .forEach(row => this.selection.select(row));\n }\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n checkboxLabel(row) {\n if (!row) {\n return `${this.isAllSelected() ? 'deselect' : 'select'} all`;\n }\n return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row`;\n }\n selectRow(row) {\n if (row.disableSelection)\n return;\n this.selection.toggle(row);\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n onExpand(event, element) {\n event.stopPropagation();\n this.expandedElement = this.expandedElement === element ? null : element;\n if (this.expandedElement) {\n this.showExpanded.emit(element);\n }\n else {\n this.hideExpanded.emit(element);\n }\n this.cdr.markForCheck();\n }\n getRowStyle(element) {\n return element.rowStyle || {};\n }\n handlePageEvent(e) {\n this.pageEvent.emit(e);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DynamicTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: DynamicTableComponent, isStandalone: true, selector: \"acp-dynamic-table\", inputs: { showExpand: { classPropertyName: \"showExpand\", publicName: \"showExpand\", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: \"showFooter\", publicName: \"showFooter\", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: \"locale\", publicName: \"locale\", isSignal: true, isRequired: false, transformFunction: null }, highlightRowIndex: { classPropertyName: \"highlightRowIndex\", publicName: \"highlightRowIndex\", isSignal: true, isRequired: false, transformFunction: null }, visibleColumns: { classPropertyName: \"visibleColumns\", publicName: \"visibleColumns\", isSignal: false, isRequired: false, transformFunction: null }, columnDefinitions: { classPropertyName: \"columnDefinitions\", publicName: \"columnDefinitions\", isSignal: false, isRequired: false, transformFunction: null }, showSelectBox: { classPropertyName: \"showSelectBox\", publicName: \"showSelectBox\", isSignal: true, isRequired: false, transformFunction: null }, multipleSelection: { classPropertyName: \"multipleSelection\", publicName: \"multipleSelection\", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: \"tableData\", publicName: \"tableData\", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: \"rowTemplate\", publicName: \"rowTemplate\", isSignal: true, isRequired: false, transformFunction: null }, expandedDetail: { classPropertyName: \"expandedDetail\", publicName: \"expandedDetail\", isSignal: false, isRequired: false, transformFunction: null }, enablePagination: { classPropertyName: \"enablePagination\", publicName: \"enablePagination\", isSignal: true, isRequired: false, transformFunction: null }, paginationConfig: { classPropertyName: \"paginationConfig\", publicName: \"paginationConfig\", isSignal: false, isRequired: false, transformFunction: null }, isLoadingData: { classPropertyName: \"isLoadingData\", publicName: \"isLoadingData\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowSelected: \"rowSelected\", copyRow: \"copyRow\", showExpanded: \"showExpanded\", hideExpanded: \"hideExpanded\", pageEvent: \"pageEvent\" }, queries: [{ propertyName: \"headerRowDefs\", predicate: MatHeaderRowDef, isSignal: true }, { propertyName: \"rowDefs\", predicate: MatRowDef, isSignal: true }, { propertyName: \"footerRowDefs\", predicate: MatFooterRowDef, isSignal: true }, { propertyName: \"columnDefs\", predicate: MatColumnDef, isSignal: true }, { propertyName: \"rows\", predicate: ViewContainerRef, isSignal: true }], viewQueries: [{ propertyName: \"table\", first: true, predicate: MatTable, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"acp-dynamic-table\\\">\\n <div class=\\\"acp-table-container small-table\\\">\\n <table #sort=\\\"matSort\\\" [dataSource]=\\\"dataSource.data\\\" mat-table matSort>\\n @if (columnDefinitions) {\\n <!-- Checkbox Column -->\\n @if (showSelectBox()) {\\n <ng-container matColumnDef=\\\"select\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n @if (multipleSelection()) {\\n <mat-checkbox\\n (change)=\\\"$event ? masterToggle() : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel()\\\"\\n [checked]=\\\"selection.hasValue() && isAllSelected()\\\"\\n [indeterminate]=\\\"selection.hasValue() && !isAllSelected()\\\"\\n />\\n }\\n </th>\\n <td *matCellDef=\\\"let row\\\" mat-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? selectRow(row) : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel(row)\\\"\\n [checked]=\\\"selection.isSelected(row)\\\"\\n [disabled]=\\\"row.disableSelection\\\"\\n />\\n </td>\\n <td *matFooterCellDef mat-footer-cell></td>\\n </ng-container>\\n }\\n\\n <!-- Dynamic Columns -->\\n @for (col of columnDefinitions; track col.key) {\\n <ng-container [matColumnDef]=\\\"col.key\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n {{ col.label }}\\n </th>\\n\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [ngClass]=\\\"{ highlighted: highlightRowIndex() === i }\\\"\\n >\\n @if (col.key === 'op') {\\n <div class=\\\"d-flex flex-row gap-1\\\">\\n @if (col.templateOutlet) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @else if (rowTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"rowTemplate(); context: { $implicit: element, index: i }\\\"\\n />\\n }\\n </div>\\n } @else {\\n @switch (col.type) {\\n @case ('image') {\\n <img\\n [src]=\\\"element[col.key]\\\"\\n class=\\\"img-fluid img-thumbnail my-1\\\"\\n width=\\\"50\\\"\\n alt=\\\"\\\"\\n />\\n }\\n @case ('number') {\\n <div>{{ element[col.key] | number: '1.2' : locale() }}</div>\\n }\\n @case ('date') {\\n <div>{{ element[col.key] | date: 'dd.MM.yyyy' }}</div>\\n }\\n @case ('expand') {\\n <button\\n mat-icon-button\\n aria-label=\\\"expand row\\\"\\n (click)=\\\"onExpand($event, element)\\\"\\n >\\n @if (expandedElement === element) {\\n <mat-icon>keyboard_arrow_up</mat-icon>\\n } @else {\\n <mat-icon>keyboard_arrow_down</mat-icon>\\n }\\n </button>\\n }\\n @case ('template') {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n }\\n @case ('custom') {\\n <ng-container #dynamicContent />\\n }\\n @default {\\n <div>{{ element[col.key] }}</div>\\n }\\n }\\n }\\n </td>\\n\\n <td *matFooterCellDef mat-footer-cell>\\n @if (col.index === 0) {\\n <div>Total</div>\\n }\\n @if (col.hasFooter) {\\n <div>{{ col.key | getTotal: dataSource.data }}</div>\\n }\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Expanded Detail Row -->\\n @if (showExpand() && expandedDetail) {\\n <ng-container matColumnDef=\\\"expandedDetail\\\">\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\"\\n >\\n <div\\n class=\\\"m-0 p-0 acp-detail-expand\\\"\\n [class.acp-expanded]=\\\"element === expandedElement\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"expandedDetail; context: { $implicit: element, index: i }\\\"\\n />\\n </div>\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Header Row -->\\n <tr mat-header-row *matHeaderRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n\\n <!-- Data Rows -->\\n @if (showExpand() && expandedDetail) {\\n <!-- Regular Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand; when: isNormalRow\\\"\\n class=\\\"acp-dynamic-table-row\\\"\\n [class.acp-dynamic-table-expanded-row]=\\\"expandedElement === row\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n (click)=\\\"expandedElement = expandedElement === row ? null : row\\\"\\n ></tr>\\n\\n <!-- Expanded Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: ['expandedDetail']; when: isExpandedRow\\\"\\n class=\\\"acp-dynamic-table-detail-row\\\"\\n ></tr>\\n } @else {\\n <!-- Regular Row without expansion -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n ></tr>\\n }\\n\\n <!-- No Data Row -->\\n <tr class=\\\"mat-row\\\" *matNoDataRow>\\n <td class=\\\"mat-cell text-center\\\" [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\">\\n No records found\\n </td>\\n </tr>\\n\\n <!-- Footer -->\\n @if (showFooter() && dataSource.data.length > 0) {\\n <tr mat-footer-row *matFooterRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n }\\n }\\n </table>\\n </div>\\n\\n @if (enablePagination() && paginationConfig) {\\n <mat-paginator\\n #paginator\\n [disabled]=\\\"isLoadingData()\\\"\\n (page)=\\\"handlePageEvent($event)\\\"\\n [length]=\\\"paginationConfig.totalRecords\\\"\\n [pageSize]=\\\"paginationConfig.pageSize\\\"\\n [pageSizeOptions]=\\\"paginationConfig.pageSizeOptions || []\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n [pageIndex]=\\\"paginationConfig.pageIndex\\\"\\n aria-label=\\\"Select page\\\"\\n />\\n }\\n</div>\\n\", styles: [\".acp-dynamic-table{display:block}.acp-dynamic-table .acp-table-container{position:relative;min-height:200px;max-height:400px;overflow:auto}.acp-dynamic-table table{width:100%}.acp-dynamic-table tr.acp-dynamic-table-detail-row{height:0}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):hover{background:var(--mat-sys-surface-variant, whitesmoke)}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):active{background:var(--mat-sys-surface-container, #efefef)}.acp-dynamic-table .acp-dynamic-table-row td{border-bottom-width:0}.acp-dynamic-table .acp-detail-expand{height:0;overflow:hidden;transition:height .15s ease-in-out}.acp-dynamic-table .acp-detail-expand.acp-expanded{height:auto;overflow:visible}@starting-style{.acp-dynamic-table .acp-detail-expand.acp-expanded{height:0}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: MatTableModule }, { kind: \"component\", type: i1.MatTable, selector: \"mat-table, table[mat-table]\", exportAs: [\"matTable\"] }, { kind: \"directive\", type: i1.MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { kind: \"directive\", type: i1.MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: [\"matHeaderRowDef\", \"matHeaderRowDefSticky\"] }, { kind: \"directive\", type: i1.MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"matColumnDef\"] }, { kind: \"directive\", type: i1.MatCellDef, selector: \"[matCellDef]\" }, { kind: \"directive\", type: i1.MatRowDef, selector: \"[matRowDef]\", inputs: [\"matRowDefColumns\", \"matRowDefWhen\"] }, { kind: \"directive\", type: i1.MatFooterCellDef, selector: \"[matFooterCellDef]\" }, { kind: \"directive\", type: i1.MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: [\"matFooterRowDef\", \"matFooterRowDefSticky\"] }, { kind: \"directive\", type: i1.MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { kind: \"directive\", type: i1.MatCell, selector: \"mat-cell, td[mat-cell]\" }, { kind: \"directive\", type: i1.MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\" }, { kind: \"component\", type: i1.MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", exportAs: [\"matHeaderRow\"] }, { kind: \"component\", type: i1.MatRow, selector: \"mat-row, tr[mat-row]\", exportAs: [\"matRow\"] }, { kind: \"component\", type: i1.MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", exportAs: [\"matFooterRow\"] }, { kind: \"directive\", type: i1.MatNoDataRow, selector: \"ng-template[matNoDataRow]\" }, { kind: \"ngmodule\", type: MatCheckboxModule }, { kind: \"component\", type: i2.MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"ngmodule\", type: MatSortModule }, { kind: \"directive\", type: i3.MatSort, selector: \"[matSort]\", inputs: [\"matSortActive\", \"matSortStart\", \"matSortDirection\", \"matSortDisableClear\", \"matSortDisabled\"], outputs: [\"matSortChange\"], exportAs: [\"matSort\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i5.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatPaginatorModule }, { kind: \"component\", type: i6.MatPaginator, selector: \"mat-paginator\", inputs: [\"color\", \"pageIndex\", \"length\", \"pageSize\", \"pageSizeOptions\", \"hidePageSize\", \"showFirstLastButtons\", \"selectConfig\", \"disabled\"], outputs: [\"page\"], exportAs: [\"matPaginator\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: GetTotalPipe, name: \"getTotal\" }, { kind: \"pipe\", type: DatePipe, name: \"date\" }, { kind: \"pipe\", type: DecimalPipe, name: \"number\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: DynamicTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-dynamic-table', standalone: true, imports: [\n MatTableModule,\n MatCheckboxModule,\n MatSortModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n NgClass,\n NgStyle,\n GetTotalPipe,\n DatePipe,\n DecimalPipe,\n NgTemplateOutlet,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"acp-dynamic-table\\\">\\n <div class=\\\"acp-table-container small-table\\\">\\n <table #sort=\\\"matSort\\\" [dataSource]=\\\"dataSource.data\\\" mat-table matSort>\\n @if (columnDefinitions) {\\n <!-- Checkbox Column -->\\n @if (showSelectBox()) {\\n <ng-container matColumnDef=\\\"select\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n @if (multipleSelection()) {\\n <mat-checkbox\\n (change)=\\\"$event ? masterToggle() : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel()\\\"\\n [checked]=\\\"selection.hasValue() && isAllSelected()\\\"\\n [indeterminate]=\\\"selection.hasValue() && !isAllSelected()\\\"\\n />\\n }\\n </th>\\n <td *matCellDef=\\\"let row\\\" mat-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? selectRow(row) : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel(row)\\\"\\n [checked]=\\\"selection.isSelected(row)\\\"\\n [disabled]=\\\"row.disableSelection\\\"\\n />\\n </td>\\n <td *matFooterCellDef mat-footer-cell></td>\\n </ng-container>\\n }\\n\\n <!-- Dynamic Columns -->\\n @for (col of columnDefinitions; track col.key) {\\n <ng-container [matColumnDef]=\\\"col.key\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n {{ col.label }}\\n </th>\\n\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [ngClass]=\\\"{ highlighted: highlightRowIndex() === i }\\\"\\n >\\n @if (col.key === 'op') {\\n <div class=\\\"d-flex flex-row gap-1\\\">\\n @if (col.templateOutlet) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @else if (rowTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"rowTemplate(); context: { $implicit: element, index: i }\\\"\\n />\\n }\\n </div>\\n } @else {\\n @switch (col.type) {\\n @case ('image') {\\n <img\\n [src]=\\\"element[col.key]\\\"\\n class=\\\"img-fluid img-thumbnail my-1\\\"\\n width=\\\"50\\\"\\n alt=\\\"\\\"\\n />\\n }\\n @case ('number') {\\n <div>{{ element[col.key] | number: '1.2' : locale() }}</div>\\n }\\n @case ('date') {\\n <div>{{ element[col.key] | date: 'dd.MM.yyyy' }}</div>\\n }\\n @case ('expand') {\\n <button\\n mat-icon-button\\n aria-label=\\\"expand row\\\"\\n (click)=\\\"onExpand($event, element)\\\"\\n >\\n @if (expandedElement === element) {\\n <mat-icon>keyboard_arrow_up</mat-icon>\\n } @else {\\n <mat-icon>keyboard_arrow_down</mat-icon>\\n }\\n </button>\\n }\\n @case ('template') {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n }\\n @case ('custom') {\\n <ng-container #dynamicContent />\\n }\\n @default {\\n <div>{{ element[col.key] }}</div>\\n }\\n }\\n }\\n </td>\\n\\n <td *matFooterCellDef mat-footer-cell>\\n @if (col.index === 0) {\\n <div>Total</div>\\n }\\n @if (col.hasFooter) {\\n <div>{{ col.key | getTotal: dataSource.data }}</div>\\n }\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Expanded Detail Row -->\\n @if (showExpand() && expandedDetail) {\\n <ng-container matColumnDef=\\\"expandedDetail\\\">\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\"\\n >\\n <div\\n class=\\\"m-0 p-0 acp-detail-expand\\\"\\n [class.acp-expanded]=\\\"element === expandedElement\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"expandedDetail; context: { $implicit: element, index: i }\\\"\\n />\\n </div>\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Header Row -->\\n <tr mat-header-row *matHeaderRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n\\n <!-- Data Rows -->\\n @if (showExpand() && expandedDetail) {\\n <!-- Regular Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand; when: isNormalRow\\\"\\n class=\\\"acp-dynamic-table-row\\\"\\n [class.acp-dynamic-table-expanded-row]=\\\"expandedElement === row\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n (click)=\\\"expandedElement = expandedElement === row ? null : row\\\"\\n ></tr>\\n\\n <!-- Expanded Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: ['expandedDetail']; when: isExpandedRow\\\"\\n class=\\\"acp-dynamic-table-detail-row\\\"\\n ></tr>\\n } @else {\\n <!-- Regular Row without expansion -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n ></tr>\\n }\\n\\n <!-- No Data Row -->\\n <tr class=\\\"mat-row\\\" *matNoDataRow>\\n <td class=\\\"mat-cell text-center\\\" [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\">\\n No records found\\n </td>\\n </tr>\\n\\n <!-- Footer -->\\n @if (showFooter() && dataSource.data.length > 0) {\\n <tr mat-footer-row *matFooterRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n }\\n }\\n </table>\\n </div>\\n\\n @if (enablePagination() && paginationConfig) {\\n <mat-paginator\\n #paginator\\n [disabled]=\\\"isLoadingData()\\\"\\n (page)=\\\"handlePageEvent($event)\\\"\\n [length]=\\\"paginationConfig.totalRecords\\\"\\n [pageSize]=\\\"paginationConfig.pageSize\\\"\\n [pageSizeOptions]=\\\"paginationConfig.pageSizeOptions || []\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n [pageIndex]=\\\"paginationConfig.pageIndex\\\"\\n aria-label=\\\"Select page\\\"\\n />\\n }\\n</div>\\n\", styles: [\".acp-dynamic-table{display:block}.acp-dynamic-table .acp-table-container{position:relative;min-height:200px;max-height:400px;overflow:auto}.acp-dynamic-table table{width:100%}.acp-dynamic-table tr.acp-dynamic-table-detail-row{height:0}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):hover{background:var(--mat-sys-surface-variant, whitesmoke)}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):active{background:var(--mat-sys-surface-container, #efefef)}.acp-dynamic-table .acp-dynamic-table-row td{border-bottom-width:0}.acp-dynamic-table .acp-detail-expand{height:0;overflow:hidden;transition:height .15s ease-in-out}.acp-dynamic-table .acp-detail-expand.acp-expanded{height:auto;overflow:visible}@starting-style{.acp-dynamic-table .acp-detail-expand.acp-expanded{height:0}}\\n\"] }]\n }], propDecorators: { visibleColumns: [{\n type: Input\n }], columnDefinitions: [{\n type: Input\n }], expandedDetail: [{\n type: Input\n }], paginationConfig: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBTUwsZ0JBQWdCLEVBR2hCLEtBQUssRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsZUFBZSxFQUNmLFNBQVMsRUFDVCxRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLGNBQWMsR0FDZixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2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Q0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7dUdBck1VLHFCQUFxQjsyRkFBckIscUJBQXFCLCt1RUFvQ1MsZUFBZSwwREFDckIsU0FBUyxnRUFDSCxlQUFlLDZEQUNsQixZQUFZLHVEQUdsQixnQkFBZ0Isb0ZBRFosUUFBUSxxRkN4RzlDLGlpT0FtTUEsazRCRHRKSSxjQUFjLDhnREFDZCxpQkFBaUIsbWJBQ2pCLGFBQWEsMFBBQ2IsYUFBYSxtTEFDYixlQUFlLHFOQUNmLGtCQUFrQixvU0FDbEIsT0FBTyxvRkFDUCxPQUFPLDJFQUlQLGdCQUFnQiwrSUFIaEIsWUFBWSw0Q0FDWixRQUFRLHdDQUNSLFdBQVc7OzJGQVFGLHFCQUFxQjtrQkF0QmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFhNUIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWF0Q29sdW1uRGVmLFxuICBNYXRGb290ZXJSb3dEZWYsXG4gIE1hdEhlYWRlclJvd0RlZixcbiAgTWF0Um93RGVmLFxuICBNYXRUYWJsZSxcbiAgTWF0VGFibGVEYXRhU291cmNlLFxuICBNYXRUYWJsZU1vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIE5nQ2xhc3MsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgR2V0VG90YWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgQ29sdW1uRGVmaW5pdGlvbiwgUGFnaW5hdGlvbiwgVGFibGVDb250ZXh0LCBUYWJsZVJvdyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1keW5hbWljLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgTmdTdHlsZSxcbiAgICBHZXRUb3RhbFBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgRGVjaW1hbFBpcGUsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFRhYmxlUm93PlxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWZzOiBDb21wb25lbnRSZWY8dW5rbm93bj5bXSA9IFtdO1xuICBwcml2YXRlIGVtYmVkZGVkVmlld3M6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPltdID0gW107XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICByZWFkb25seSBzaG93RXhwYW5kID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBzaG93Rm9vdGVyID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dCgnZW4tVVMnKTtcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0Um93SW5kZXggPSBpbnB1dCgwKTtcbiAgQElucHV0KCkgdmlzaWJsZUNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10gPSBbXTtcbiAgcmVhZG9ubHkgc2hvd1NlbGVjdEJveCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgbXVsdGlwbGVTZWxlY3Rpb24gPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgdGFibGVEYXRhID0gaW5wdXQ8VFtdPihbXSk7XG4gIHJlYWRvbmx5IHJvd1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8VGFibGVDb250ZXh0PFQ+PiB8IG51bGw+KG51bGwpO1xuICBASW5wdXQoKSBleHBhbmRlZERldGFpbDogVGVtcGxhdGVSZWY8VGFibGVDb250ZXh0PFQ+PiB8IG51bGwgPSBudWxsO1xuICByZWFkb25seSBlbmFibGVQYWdpbmF0aW9uID0gaW5wdXQoZmFsc2UpO1xuICBASW5wdXQoKSBwYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHJlYWRvbmx5IGlzTG9hZGluZ0RhdGEgPSBpbnB1dChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcm93U2VsZWN0ZWQgPSBvdXRwdXQ8VFtdPigpO1xuICByZWFkb25seSBjb3B5Um93ID0gb3V0cHV0PFQ+KCk7XG4gIHJlYWRvbmx5IHNob3dFeHBhbmRlZCA9IG91dHB1dDxUPigpO1xuICByZWFkb25seSBoaWRlRXhwYW5kZWQgPSBvdXRwdXQ8VD4oKTtcbiAgcmVhZG9ubHkgcGFnZUV2ZW50ID0gb3V0cHV0PFBhZ2VFdmVudD4oKTtcblxuICBpc05vcm1hbFJvdyA9IChfOiBudW1iZXIsIHJvdzogVCkgPT4gdGhpcy5leHBhbmRlZEVsZW1lbnQgIT09IHJvdztcbiAgaXNFeHBhbmRlZFJvdyA9IChfOiBudW1iZXIsIHJvdzogVCkgPT4gdGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IHJvdztcblxuICBkYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUPihbXSk7XG4gIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0cnVlLCBbXSk7XG4gIGV4cGFuZGVkRWxlbWVudDogVCB8IG51bGwgPSBudWxsO1xuICBjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZDogc3RyaW5nW10gPSBbXTtcblxuICByZWFkb25seSBoZWFkZXJSb3dEZWZzID0gY29udGVudENoaWxkcmVuKE1hdEhlYWRlclJvd0RlZik7XG4gIHJlYWRvbmx5IHJvd0RlZnMgPSBjb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmKTtcbiAgcmVhZG9ubHkgZm9vdGVyUm93RGVmcyA9IGNvbnRlbnRDaGlsZHJlbihNYXRGb290ZXJSb3dEZWYpO1xuICByZWFkb25seSBjb2x1bW5EZWZzID0gY29udGVudENoaWxkcmVuKE1hdENvbHVtbkRlZik7XG5cbiAgcmVhZG9ubHkgdGFibGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQoTWF0VGFibGUpO1xuICByZWFkb25seSByb3dzID0gY29udGVudENoaWxkcmVuKFZpZXdDb250YWluZXJSZWYpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29sdW1uc1RvRGlzcGxheSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0YWJsZURhdGEnXSkge1xuICAgICAgdGhpcy51cGRhdGVUYWJsZURhdGEoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snc2hvd0V4cGFuZCddIHx8IGNoYW5nZXNbJ3Zpc2libGVDb2x1bW5zJ10gfHwgY2hhbmdlc1snY29sdW1uRGVmaW5pdGlvbnMnXSkge1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5zVG9EaXNwbGF5KCk7XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBPblB1c2ggc3RyYXRlZ3lcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyVGFibGVDb250ZW50KCk7XG4gICAgdGhpcy5pbml0aWFsaXplVGFibGUoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cER5bmFtaWNDb21wb25lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlRGF0YSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBuZXcgZGF0YSBhcnJpdmVzXG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcblxuICAgIC8vIFVwZGF0ZSBkYXRhIHNvdXJjZVxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy50YWJsZURhdGEoKSB8fCBbXTtcblxuICAgIC8vIFJlc2V0IGV4cGFuZGVkIGVsZW1lbnQgaWYgaXQncyBubyBsb25nZXIgaW4gdGhlIG5ldyBkYXRhXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRFbGVtZW50ICYmICF0aGlzLmRhdGFTb3VyY2UuZGF0YS5pbmNsdWRlcyh0aGlzLmV4cGFuZGVkRWxlbWVudCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uc1RvRGlzcGxheSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZUNvbHVtbnMubGVuZ3RoICYmIHRoaXMuY29sdW1uRGVmaW5pdGlvbnMpIHtcbiAgICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbkRlZmluaXRpb25zLm1hcChjb2wgPT4gY29sLmtleSk7XG4gICAgICB0aGlzLmNvbHVtbkRlZmluaXRpb25zLmZvckVhY2goKGNvbCwgaW5kZXgpID0+IChjb2wuaW5kZXggPSBpbmRleCkpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0NvbHVtbnM6IHN0cmluZ1tdID0gWy4uLnRoaXMudmlzaWJsZUNvbHVtbnNdO1xuXG4gICAgaWYgKHRoaXMuc2hvd1NlbGVjdEJveCgpICYmICFuZXdDb2x1bW5zLmluY2x1ZGVzKCdzZWxlY3QnKSkge1xuICAgICAgbmV3Q29sdW1ucy51bnNoaWZ0KCdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93RXhwYW5kKCkgJiYgdGhpcy5leHBhbmRlZERldGFpbCkge1xuICAgICAgaWYgKCF0aGlzLmNvbHVtbkRlZmluaXRpb25zPy5zb21lKGNvbCA9PiBjb2wua2V5ID09PSAnZXhwYW5kJykpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZpbml0aW9ucyA9IFtcbiAgICAgICAgICAuLi4odGhpcy5jb2x1bW5EZWZpbml0aW9ucyB8fCBbXSksXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZXhwYW5kJyxcbiAgICAgICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgICAgIHR5cGU6ICdleHBhbmQnLFxuICAgICAgICAgICAgaW5kZXg6IHRoaXMuY29sdW1uRGVmaW5pdGlvbnM/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV3Q29sdW1ucy5pbmNsdWRlcygnZXhwYW5kJykpIHtcbiAgICAgICAgbmV3Q29sdW1ucy5wdXNoKCdleHBhbmQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtbnNUb0Rpc3BsYXlXaXRoRXhwYW5kID0gbmV3Q29sdW1ucztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0aGlzLm11bHRpcGxlU2VsZWN0aW9uKCksIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJUYWJsZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5EZWZzKCkuZm9yRWFjaChjb2x1bW5EZWYgPT4gdGhpcy50YWJsZSgpLmFkZENvbHVtbkRlZihjb2x1bW5EZWYpKTtcbiAgICB0aGlzLnJvd0RlZnMoKS5mb3JFYWNoKHJvd0RlZiA9PiB0aGlzLnRhYmxlKCkuYWRkUm93RGVmKHJvd0RlZikpO1xuICAgIHRoaXMuaGVhZGVyUm93RGVmcygpLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUoKS5hZGRIZWFkZXJSb3dEZWYoaGVhZGVyUm93RGVmKSk7XG5cbiAgICBpZiAodGhpcy5zaG93Rm9vdGVyKCkpIHtcbiAgICAgIHRoaXMuZm9vdGVyUm93RGVmcygpLmZvckVhY2goZm9vdGVyUm93RGVmID0+IHRoaXMudGFibGUoKS5hZGRGb290ZXJSb3dEZWYoZm9vdGVyUm93RGVmKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9vdGVyUm93RGVmcygpLmZvckVhY2goZm9vdGVyUm93RGVmID0+IHRoaXMudGFibGUoKS5yZW1vdmVGb290ZXJSb3dEZWYoZm9vdGVyUm93RGVmKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUPih0aGlzLnRhYmxlRGF0YSgpIHx8IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cER5bmFtaWNDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50UmVmcy5mb3JFYWNoKHJlZiA9PiByZWYuZGVzdHJveSgpKTtcbiAgICB0aGlzLmVtYmVkZGVkVmlld3MuZm9yRWFjaCh2aWV3ID0+IHZpZXcuZGVzdHJveSgpKTtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3Qgc2VsZWN0YWJsZVJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maWx0ZXIocm93ID0+ICFyb3cuZGlzYWJsZVNlbGVjdGlvbik7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBzZWxlY3RhYmxlUm93cy5sZW5ndGggJiYgc2VsZWN0YWJsZVJvd3MubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG1hc3RlclRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGVTZWxlY3Rpb24oKSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YVxuICAgICAgICAuZmlsdGVyKHJvdyA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAgIC5mb3JFYWNoKHJvdyA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KSk7XG4gICAgfVxuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjaGVja2JveExhYmVsKHJvdz86IFQpOiBzdHJpbmcge1xuICAgIGlmICghcm93KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IGFsbGA7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdykgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IHJvd2A7XG4gIH1cblxuICBzZWxlY3RSb3cocm93OiBUKTogdm9pZCB7XG4gICAgaWYgKHJvdy5kaXNhYmxlU2VsZWN0aW9uKSByZXR1cm47XG4gICAgdGhpcy5zZWxlY3Rpb24udG9nZ2xlKHJvdyk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uRXhwYW5kKGV2ZW50OiBFdmVudCwgZWxlbWVudDogVCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gdGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IGVsZW1lbnQgPyBudWxsIDogZWxlbWVudDtcbiAgICBpZiAodGhpcy5leHBhbmRlZEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2hvd0V4cGFuZGVkLmVtaXQoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUV4cGFuZGVkLmVtaXQoZWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0Um93U3R5bGUoZWxlbWVudDogVCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiBlbGVtZW50LnJvd1N0eWxlIHx8IHt9O1xuICB9XG5cbiAgaGFuZGxlUGFnZUV2ZW50KGU6IFBhZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucGFnZUV2ZW50LmVtaXQoZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY3AtZHluYW1pYy10YWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWNwLXRhYmxlLWNvbnRhaW5lciBzbWFsbC10YWJsZVwiPlxuICAgIDx0YWJsZSAjc29ydD1cIm1hdFNvcnRcIiBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlLmRhdGFcIiBtYXQtdGFibGUgbWF0U29ydD5cbiAgICAgIEBpZiAoY29sdW1uRGVmaW5pdGlvbnMpIHtcbiAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgIEBpZiAoc2hvd1NlbGVjdEJveCgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgIEBpZiAobXVsdGlwbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY2hlY2tib3hMYWJlbCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIG1hdC1jZWxsPlxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3RSb3cocm93KSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNoZWNrYm94TGFiZWwocm93KVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvdy5kaXNhYmxlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgKm1hdEZvb3RlckNlbGxEZWYgbWF0LWZvb3Rlci1jZWxsPjwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIER5bmFtaWMgQ29sdW1ucyAtLT5cbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbkRlZmluaXRpb25zOyB0cmFjayBjb2wua2V5KSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbC5rZXlcIj5cbiAgICAgICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgIHt7IGNvbC5sYWJlbCB9fVxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIG1hdC1jZWxsXG4gICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGhpZ2hsaWdodGVkOiBoaWdobGlnaHRSb3dJbmRleCgpID09PSBpIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGNvbC5rZXkgPT09ICdvcCcpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbC50ZW1wbGF0ZU91dGxldCkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbC50ZW1wbGF0ZU91dGxldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50LCBpbmRleDogaSB9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHJvd1RlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93VGVtcGxhdGUoKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnQsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAc3dpdGNoIChjb2wudHlwZSkge1xuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdpbWFnZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZWxlbWVudFtjb2wua2V5XVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWctZmx1aWQgaW1nLXRodW1ibmFpbCBteS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZWxlbWVudFtjb2wua2V5XSB8IG51bWJlcjogJzEuMicgOiBsb2NhbGUoKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGVsZW1lbnRbY29sLmtleV0gfCBkYXRlOiAnZGQuTU0ueXl5eScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnZXhwYW5kJykge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImV4cGFuZCByb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZCgkZXZlbnQsIGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfdXA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ3RlbXBsYXRlJykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbC50ZW1wbGF0ZU91dGxldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50LCBpbmRleDogaSB9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnY3VzdG9tJykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNkeW5hbWljQ29udGVudCAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGVsZW1lbnRbY29sLmtleV0gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZCAqbWF0Rm9vdGVyQ2VsbERlZiBtYXQtZm9vdGVyLWNlbGw+XG4gICAgICAgICAgICAgIEBpZiAoY29sLmluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdj5Ub3RhbDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoY29sLmhhc0Zvb3Rlcikge1xuICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmtleSB8IGdldFRvdGFsOiBkYXRhU291cmNlLmRhdGEgfX08L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRXhwYW5kZWQgRGV0YWlsIFJvdyAtLT5cbiAgICAgICAgQGlmIChzaG93RXhwYW5kKCkgJiYgZXhwYW5kZWREZXRhaWwpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmQubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibS0wIHAtMCBhY3AtZGV0YWlsLWV4cGFuZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjcC1leHBhbmRlZF09XCJlbGVtZW50ID09PSBleHBhbmRlZEVsZW1lbnRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHBhbmRlZERldGFpbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnQsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gSGVhZGVyIFJvdyAtLT5cbiAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZFwiPjwvdHI+XG5cbiAgICAgICAgPCEtLSBEYXRhIFJvd3MgLS0+XG4gICAgICAgIEBpZiAoc2hvd0V4cGFuZCgpICYmIGV4cGFuZGVkRGV0YWlsKSB7XG4gICAgICAgICAgPCEtLSBSZWd1bGFyIFJvdyAtLT5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIG1hdC1yb3dcbiAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZDsgd2hlbjogaXNOb3JtYWxSb3dcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3AtZHluYW1pYy10YWJsZS1yb3dcIlxuICAgICAgICAgICAgW2NsYXNzLmFjcC1keW5hbWljLXRhYmxlLWV4cGFuZGVkLXJvd109XCJleHBhbmRlZEVsZW1lbnQgPT09IHJvd1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRSb3dTdHlsZShyb3cpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBhbmRlZEVsZW1lbnQgPSBleHBhbmRlZEVsZW1lbnQgPT09IHJvdyA/IG51bGwgOiByb3dcIlxuICAgICAgICAgID48L3RyPlxuXG4gICAgICAgICAgPCEtLSBFeHBhbmRlZCBSb3cgLS0+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBtYXQtcm93XG4gICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddOyB3aGVuOiBpc0V4cGFuZGVkUm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNwLWR5bmFtaWMtdGFibGUtZGV0YWlsLXJvd1wiXG4gICAgICAgICAgPjwvdHI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDwhLS0gUmVndWxhciBSb3cgd2l0aG91dCBleHBhbnNpb24gLS0+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBtYXQtcm93XG4gICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmRcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0Um93U3R5bGUocm93KVwiXG4gICAgICAgICAgPjwvdHI+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE5vIERhdGEgUm93IC0tPlxuICAgICAgICA8dHIgY2xhc3M9XCJtYXQtcm93XCIgKm1hdE5vRGF0YVJvdz5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbCB0ZXh0LWNlbnRlclwiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmQubGVuZ3RoXCI+XG4gICAgICAgICAgICBObyByZWNvcmRzIGZvdW5kXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8IS0tIEZvb3RlciAtLT5cbiAgICAgICAgQGlmIChzaG93Rm9vdGVyKCkgJiYgZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cImNvbHVtbnNUb0Rpc3BsYXlXaXRoRXhwYW5kXCI+PC90cj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuXG4gIEBpZiAoZW5hYmxlUGFnaW5hdGlvbigpICYmIHBhZ2luYXRpb25Db25maWcpIHtcbiAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgI3BhZ2luYXRvclxuICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ0RhdGEoKVwiXG4gICAgICAocGFnZSk9XCJoYW5kbGVQYWdlRXZlbnQoJGV2ZW50KVwiXG4gICAgICBbbGVuZ3RoXT1cInBhZ2luYXRpb25Db25maWcudG90YWxSZWNvcmRzXCJcbiAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplXCJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgfHwgW11cIlxuICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxuICAgICAgW3BhZ2VJbmRleF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2VJbmRleFwiXG4gICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHBhZ2VcIlxuICAgIC8+XG4gIH1cbjwvZGl2PlxuIl19","import { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { firstValueFrom, map } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { DialogWrapperComponent } from '../../components/dialog-wrapper/dialog-wrapper.component';\nimport * as i0 from \"@angular/core\";\nexport class AdvancedDialogService {\n dialog = inject(MatDialog);\n overlay = inject(Overlay);\n breakpointObserver = inject(BreakpointObserver);\n // An observable that emits true if the viewport matches mobile dimensions.\n isMobile$ = this.breakpointObserver\n .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n .pipe(map(result => result.matches));\n /**\n * Main method to open any component in a dialog.\n * This provides maximum flexibility.\n * @param component The component to render.\n * @param config The detailed configuration for the dialog.\n * @returns A MatDialogRef instance.\n */\n async open(component, config = {}) {\n const dialogConfig = await this.buildDialogConfig(config);\n return this.dialog.open(component, dialogConfig);\n }\n /**\n * A powerful helper to open a component inside our standard, branded \"wrapper\".\n * This provides maximum consistency.\n * @param wrapperConfig Configuration for the title, icon, and the content component.\n * @param matDialogConfig Standard MatDialog configuration (size, position, etc.).\n * @returns A MatDialogRef instance pointing to the wrapper.\n */\n async openInWrapper(wrapperConfig, matDialogConfig = {}) {\n // Package the wrapper config into the `data` property for the DialogWrapperComponent to consume.\n const configWithWrapperData = {\n ...matDialogConfig,\n data: wrapperConfig,\n };\n const dialogConfig = await this.buildDialogConfig(configWithWrapperData);\n return this.dialog.open(DialogWrapperComponent, dialogConfig);\n }\n /**\n * Helper to open a dialog and only get an observable of the result.\n */\n async openAndGetResult(component, config = {}) {\n const dialogRef = await this.open(component, config);\n return firstValueFrom(dialogRef.afterClosed());\n }\n /**\n * Closes all currently open dialogs.\n */\n closeAll() {\n this.dialog.closeAll();\n }\n // --- Private Configuration Builder ---\n async buildDialogConfig(config) {\n const dialogConfig = new MatDialogConfig();\n // Asynchronously check for mobile state to prevent memory leaks from dangling subscriptions.\n const isMobile = await firstValueFrom(this.isMobile$);\n // Apply fullscreen if 'full' size is set OR if mobile fullscreen is enabled on a mobile device.\n if (config.size === 'full' || (config.isMobileFullScreen && isMobile)) {\n this.applyFullScreenConfig(dialogConfig);\n }\n else {\n this.applyStandardConfig(dialogConfig, config);\n }\n // Apply all other common configurations.\n this.applyCommonConfig(dialogConfig, config);\n return dialogConfig;\n }\n applyFullScreenConfig(dialogConfig) {\n dialogConfig.width = '100vw';\n dialogConfig.height = '100vh';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.panelClass = ['full-screen-dialog'];\n }\n applyStandardConfig(dialogConfig, config) {\n dialogConfig.width = config.width ?? this.getDialogWidth(config.size);\n dialogConfig.height = config.height;\n dialogConfig.minWidth = config.minWidth;\n dialogConfig.maxWidth = config.maxWidth ?? '95vw';\n dialogConfig.maxHeight = config.maxHeight ?? 'auto';\n dialogConfig.position = config.position;\n }\n applyCommonConfig(dialogConfig, config) {\n dialogConfig.data = config.data;\n dialogConfig.hasBackdrop = config.hasBackdrop ?? true;\n dialogConfig.backdropClass = config.backdropClass;\n const panelClasses = Array.isArray(config.panelClass)\n ? [...config.panelClass]\n : config.panelClass\n ? [config.panelClass]\n : [];\n if (config.size) {\n panelClasses.push(`dialog-${config.size}`);\n }\n dialogConfig.panelClass = panelClasses;\n dialogConfig.disableClose = !(config.backdropClickClosable ?? true);\n // Note: escapeKeyClosable is handled by MatDialog separately and doesn't affect disableClose directly.\n dialogConfig.autoFocus = config.autoFocus ?? 'first-tabbable';\n dialogConfig.scrollStrategy = config.scrollStrategy ?? this.overlay.scrollStrategies.block();\n dialogConfig.enterAnimationDuration = config.enterAnimationDuration ?? '300ms';\n dialogConfig.exitAnimationDuration = config.exitAnimationDuration ?? '200ms';\n dialogConfig.ariaLabel = config.ariaLabel;\n dialogConfig.ariaLabelledBy = config.ariaLabelledBy;\n dialogConfig.ariaDescribedBy = config.ariaDescribedBy;\n dialogConfig.role = config.role;\n }\n getDialogWidth(size = 'md') {\n const sizeMap = {\n xs: '320px',\n sm: '450px',\n md: '600px',\n lg: '800px',\n xl: '1000px',\n xxl: '1280px',\n full: '100vw',\n };\n return sizeMap[size];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AdvancedDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AdvancedDialogService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AdvancedDialogService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvZGlhbG9nL2FkdmFuY2VkLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMERBQTBELENBQUM7O0FBS2xHLE1BQU0sT0FBTyxxQkFBcUI7SUFDZixNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFakUsMkVBQTJFO0lBQzFELFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCO1NBQ2pELE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXZDOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQ1IsU0FBMkIsRUFDM0IsU0FBbUMsRUFBRTtR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QUM7UUFDMUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ3BELFlBQVksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUN0RCxZQUFZLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFtQixJQUFJO1FBQzVDLE1BQU0sT0FBTyxHQUErQjtZQUMxQyxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxPQUFPO1lBQ1gsRUFBRSxFQUFFLE9BQU87WUFDWCxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxRQUFRO1lBQ1osR0FBRyxFQUFFLFFBQVE7WUFDYixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO3VHQXJKVSxxQkFBcUI7MkdBQXJCLHFCQUFxQixjQUZwQixNQUFNOzsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbmltcG9ydCB7IE1hdEN1c3RvbURpYWxvZ0NvbmZpZywgRGlhbG9nU2l6ZSwgRGlhbG9nV3JhcHBlckNvbmZpZyB9IGZyb20gJy4vZGlhbG9nLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGlhbG9nV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGlhbG9nLXdyYXBwZXIvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkRGlhbG9nU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcblxuICAvLyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdHJ1ZSBpZiB0aGUgdmlld3BvcnQgbWF0Y2hlcyBtb2JpbGUgZGltZW5zaW9ucy5cbiAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZSQgPSB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgIC5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0UG9ydHJhaXQsIEJyZWFrcG9pbnRzLkhhbmRzZXRMYW5kc2NhcGVdKVxuICAgIC5waXBlKG1hcChyZXN1bHQgPT4gcmVzdWx0Lm1hdGNoZXMpKTtcblxuICAvKipcbiAgICogTWFpbiBtZXRob2QgdG8gb3BlbiBhbnkgY29tcG9uZW50IGluIGEgZGlhbG9nLlxuICAgKiBUaGlzIHByb3ZpZGVzIG1heGltdW0gZmxleGliaWxpdHkuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBkaWFsb2cuXG4gICAqIEByZXR1cm5zIEEgTWF0RGlhbG9nUmVmIGluc3RhbmNlLlxuICAgKi9cbiAgYXN5bmMgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPiA9IHt9LFxuICApOiBQcm9taXNlPE1hdERpYWxvZ1JlZjxULCBSPj4ge1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IGF3YWl0IHRoaXMuYnVpbGREaWFsb2dDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbjxULCBELCBSPihjb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQSBwb3dlcmZ1bCBoZWxwZXIgdG8gb3BlbiBhIGNvbXBvbmVudCBpbnNpZGUgb3VyIHN0YW5kYXJkLCBicmFuZGVkIFwid3JhcHBlclwiLlxuICAgKiBUaGlzIHByb3ZpZGVzIG1heGltdW0gY29uc2lzdGVuY3kuXG4gICAqIEBwYXJhbSB3cmFwcGVyQ29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB0aXRsZSwgaWNvbiwgYW5kIHRoZSBjb250ZW50IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIG1hdERpYWxvZ0NvbmZpZyBTdGFuZGFyZCBNYXREaWFsb2cgY29uZmlndXJhdGlvbiAoc2l6ZSwgcG9zaXRpb24sIGV0Yy4pLlxuICAgKiBAcmV0dXJucyBBIE1hdERpYWxvZ1JlZiBpbnN0YW5jZSBwb2ludGluZyB0byB0aGUgd3JhcHBlci5cbiAgICovXG4gIGFzeW5jIG9wZW5JbldyYXBwZXI8VCwgUiA9IHVua25vd24+KFxuICAgIHdyYXBwZXJDb25maWc6IERpYWxvZ1dyYXBwZXJDb25maWc8VD4sXG4gICAgbWF0RGlhbG9nQ29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8VD4gPSB7fSxcbiAgKTogUHJvbWlzZTxNYXREaWFsb2dSZWY8RGlhbG9nV3JhcHBlckNvbXBvbmVudCwgUj4+IHtcbiAgICAvLyBQYWNrYWdlIHRoZSB3cmFwcGVyIGNvbmZpZyBpbnRvIHRoZSBgZGF0YWAgcHJvcGVydHkgZm9yIHRoZSBEaWFsb2dXcmFwcGVyQ29tcG9uZW50IHRvIGNvbnN1bWUuXG4gICAgY29uc3QgY29uZmlnV2l0aFdyYXBwZXJEYXRhOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RGlhbG9nV3JhcHBlckNvbmZpZzxUPj4gPSB7XG4gICAgICAuLi5tYXREaWFsb2dDb25maWcsXG4gICAgICBkYXRhOiB3cmFwcGVyQ29uZmlnLFxuICAgIH0gYXMgTWF0Q3VzdG9tRGlhbG9nQ29uZmlnPERpYWxvZ1dyYXBwZXJDb25maWc8VD4+O1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IGF3YWl0IHRoaXMuYnVpbGREaWFsb2dDb25maWcoY29uZmlnV2l0aFdyYXBwZXJEYXRhKTtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbjxEaWFsb2dXcmFwcGVyQ29tcG9uZW50LCBEaWFsb2dXcmFwcGVyQ29uZmlnPFQ+LCBSPihcbiAgICAgIERpYWxvZ1dyYXBwZXJDb21wb25lbnQsXG4gICAgICBkaWFsb2dDb25maWcsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gb3BlbiBhIGRpYWxvZyBhbmQgb25seSBnZXQgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgb3BlbkFuZEdldFJlc3VsdDxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPiA9IHt9LFxuICApOiBQcm9taXNlPFIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSBhd2FpdCB0aGlzLm9wZW4oY29tcG9uZW50LCBjb25maWcpO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSkgYXMgUHJvbWlzZTxSIHwgdW5kZWZpbmVkPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgYWxsIGN1cnJlbnRseSBvcGVuIGRpYWxvZ3MuXG4gICAqL1xuICBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICB9XG5cbiAgLy8gLS0tIFByaXZhdGUgQ29uZmlndXJhdGlvbiBCdWlsZGVyIC0tLVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREaWFsb2dDb25maWc8RD4oXG4gICAgY29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RD4sXG4gICk6IFByb21pc2U8TWF0RGlhbG9nQ29uZmlnPEQ+PiB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZzxEPigpO1xuXG4gICAgLy8gQXN5bmNocm9ub3VzbHkgY2hlY2sgZm9yIG1vYmlsZSBzdGF0ZSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBmcm9tIGRhbmdsaW5nIHN1YnNjcmlwdGlvbnMuXG4gICAgY29uc3QgaXNNb2JpbGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmlzTW9iaWxlJCk7XG5cbiAgICAvLyBBcHBseSBmdWxsc2NyZWVuIGlmICdmdWxsJyBzaXplIGlzIHNldCBPUiBpZiBtb2JpbGUgZnVsbHNjcmVlbiBpcyBlbmFibGVkIG9uIGEgbW9iaWxlIGRldmljZS5cbiAgICBpZiAoY29uZmlnLnNpemUgPT09ICdmdWxsJyB8fCAoY29uZmlnLmlzTW9iaWxlRnVsbFNjcmVlbiAmJiBpc01vYmlsZSkpIHtcbiAgICAgIHRoaXMuYXBwbHlGdWxsU2NyZWVuQ29uZmlnKGRpYWxvZ0NvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbHlTdGFuZGFyZENvbmZpZyhkaWFsb2dDb25maWcsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgYWxsIG90aGVyIGNvbW1vbiBjb25maWd1cmF0aW9ucy5cbiAgICB0aGlzLmFwcGx5Q29tbW9uQ29uZmlnKGRpYWxvZ0NvbmZpZywgY29uZmlnKTtcblxuICAgIHJldHVybiBkaWFsb2dDb25maWc7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RnVsbFNjcmVlbkNvbmZpZyhkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZyk6IHZvaWQge1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICcxMDB2dyc7XG4gICAgZGlhbG9nQ29uZmlnLmhlaWdodCA9ICcxMDB2aCc7XG4gICAgZGlhbG9nQ29uZmlnLm1heFdpZHRoID0gJzEwMHZ3JztcbiAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9IFsnZnVsbC1zY3JlZW4tZGlhbG9nJ107XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3RhbmRhcmRDb25maWc8RD4oXG4gICAgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc8RD4sXG4gICAgY29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RD4sXG4gICk6IHZvaWQge1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9IGNvbmZpZy53aWR0aCA/PyB0aGlzLmdldERpYWxvZ1dpZHRoKGNvbmZpZy5zaXplKTtcbiAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gY29uZmlnLmhlaWdodDtcbiAgICBkaWFsb2dDb25maWcubWluV2lkdGggPSBjb25maWcubWluV2lkdGg7XG4gICAgZGlhbG9nQ29uZmlnLm1heFdpZHRoID0gY29uZmlnLm1heFdpZHRoID8/ICc5NXZ3JztcbiAgICBkaWFsb2dDb25maWcubWF4SGVpZ2h0ID0gY29uZmlnLm1heEhlaWdodCA/PyAnYXV0byc7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0gY29uZmlnLnBvc2l0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbW1vbkNvbmZpZzxEPihcbiAgICBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZzxEPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPixcbiAgKTogdm9pZCB7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSBjb25maWcuZGF0YTtcbiAgICBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AgPSBjb25maWcuaGFzQmFja2Ryb3AgPz8gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuYmFja2Ryb3BDbGFzcyA9IGNvbmZpZy5iYWNrZHJvcENsYXNzO1xuXG4gICAgY29uc3QgcGFuZWxDbGFzc2VzID0gQXJyYXkuaXNBcnJheShjb25maWcucGFuZWxDbGFzcylcbiAgICAgID8gWy4uLmNvbmZpZy5wYW5lbENsYXNzXVxuICAgICAgOiBjb25maWcucGFuZWxDbGFzc1xuICAgICAgICA/IFtjb25maWcucGFuZWxDbGFzc11cbiAgICAgICAgOiBbXTtcbiAgICBpZiAoY29uZmlnLnNpemUpIHtcbiAgICAgIHBhbmVsQ2xhc3Nlcy5wdXNoKGBkaWFsb2ctJHtjb25maWcuc2l6ZX1gKTtcbiAgICB9XG4gICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSBwYW5lbENsYXNzZXM7XG5cbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gIShjb25maWcuYmFja2Ryb3BDbGlja0Nsb3NhYmxlID8/IHRydWUpO1xuICAgIC8vIE5vdGU6IGVzY2FwZUtleUNsb3NhYmxlIGlzIGhhbmRsZWQgYnkgTWF0RGlhbG9nIHNlcGFyYXRlbHkgYW5kIGRvZXNuJ3QgYWZmZWN0IGRpc2FibGVDbG9zZSBkaXJlY3RseS5cbiAgICBkaWFsb2dDb25maWcuYXV0b0ZvY3VzID0gY29uZmlnLmF1dG9Gb2N1cyA/PyAnZmlyc3QtdGFiYmFibGUnO1xuICAgIGRpYWxvZ0NvbmZpZy5zY3JvbGxTdHJhdGVneSA9IGNvbmZpZy5zY3JvbGxTdHJhdGVneSA/PyB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgIGRpYWxvZ0NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uID0gY29uZmlnLmVudGVyQW5pbWF0aW9uRHVyYXRpb24gPz8gJzMwMG1zJztcbiAgICBkaWFsb2dDb25maWcuZXhpdEFuaW1hdGlvbkR1cmF0aW9uID0gY29uZmlnLmV4aXRBbmltYXRpb25EdXJhdGlvbiA/PyAnMjAwbXMnO1xuICAgIGRpYWxvZ0NvbmZpZy5hcmlhTGFiZWwgPSBjb25maWcuYXJpYUxhYmVsO1xuICAgIGRpYWxvZ0NvbmZpZy5hcmlhTGFiZWxsZWRCeSA9IGNvbmZpZy5hcmlhTGFiZWxsZWRCeTtcbiAgICBkaWFsb2dDb25maWcuYXJpYURlc2NyaWJlZEJ5ID0gY29uZmlnLmFyaWFEZXNjcmliZWRCeTtcbiAgICBkaWFsb2dDb25maWcucm9sZSA9IGNvbmZpZy5yb2xlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaWFsb2dXaWR0aChzaXplOiBEaWFsb2dTaXplID0gJ21kJyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l6ZU1hcDogUmVjb3JkPERpYWxvZ1NpemUsIHN0cmluZz4gPSB7XG4gICAgICB4czogJzMyMHB4JyxcbiAgICAgIHNtOiAnNDUwcHgnLFxuICAgICAgbWQ6ICc2MDBweCcsXG4gICAgICBsZzogJzgwMHB4JyxcbiAgICAgIHhsOiAnMTAwMHB4JyxcbiAgICAgIHh4bDogJzEyODBweCcsXG4gICAgICBmdWxsOiAnMTAwdncnLFxuICAgIH07XG4gICAgcmV0dXJuIHNpemVNYXBbc2l6ZV07XG4gIH1cbn1cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { SpinnerComponent } from '../components/spinner/spinner.component';\nimport * as i0 from \"@angular/core\";\nexport class OverlayService {\n overlay = inject(Overlay);\n overlayRef;\n showSpinner() {\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n });\n const spinnerPortal = new ComponentPortal(SpinnerComponent);\n this.overlayRef.attach(spinnerPortal);\n }\n }\n hideSpinner() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: OverlayService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: OverlayService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL292ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUkzRSxNQUFNLE9BQU8sY0FBYztJQUNSLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsVUFBVSxDQUFjO0lBRWhDLFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3BDLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsZ0JBQWdCLEVBQUU7YUFDM0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQXJCVSxjQUFjOzJHQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG5cbiAgc2hvd1NwaW5uZXIoKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHNwaW5uZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFNwaW5uZXJDb21wb25lbnQpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChzcGlubmVyUG9ydGFsKTtcbiAgICB9XG4gIH1cblxuICBoaWRlU3Bpbm5lcigpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsITtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class ThemeService {\n _darkMode = new BehaviorSubject(false);\n platformId = inject(PLATFORM_ID);\n isDarkMode$ = this._darkMode.asObservable();\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadMode();\n }\n }\n loadMode() {\n if (!isPlatformBrowser(this.platformId))\n return;\n const savedTheme = localStorage.getItem('theme');\n if (savedTheme) {\n this._darkMode.next(savedTheme === 'dark');\n this.applyTheme(savedTheme === 'dark');\n }\n else {\n // Check system preference\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n this._darkMode.next(prefersDark);\n this.applyTheme(prefersDark);\n }\n }\n toggleDarkMode() {\n const newValue = !this._darkMode.value;\n this._darkMode.next(newValue);\n this.applyTheme(newValue);\n localStorage.setItem('theme', newValue ? 'dark' : 'light');\n }\n applyTheme(isDark) {\n if (!isPlatformBrowser(this.platformId))\n return;\n document.documentElement.classList.toggle('dark-theme', isDark);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt2QyxNQUFNLE9BQU8sWUFBWTtJQUNOLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoRCxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTVDO1FBQ0UsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ2hELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLDBCQUEwQjtZQUMxQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQWU7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ2hELFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsQ0FBQzt1R0FuQ1UsWUFBWTsyR0FBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhcmtNb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGlzRGFya01vZGUkID0gdGhpcy5fZGFya01vZGUuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMubG9hZE1vZGUoKTtcbiAgICB9XG4gIH1cblxuICBsb2FkTW9kZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcbiAgICBjb25zdCBzYXZlZFRoZW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lJyk7XG4gICAgaWYgKHNhdmVkVGhlbWUpIHtcbiAgICAgIHRoaXMuX2RhcmtNb2RlLm5leHQoc2F2ZWRUaGVtZSA9PT0gJ2RhcmsnKTtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZShzYXZlZFRoZW1lID09PSAnZGFyaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBzeXN0ZW0gcHJlZmVyZW5jZVxuICAgICAgY29uc3QgcHJlZmVyc0RhcmsgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XG4gICAgICB0aGlzLl9kYXJrTW9kZS5uZXh0KHByZWZlcnNEYXJrKTtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZShwcmVmZXJzRGFyayk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRGFya01vZGUoKTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSAhdGhpcy5fZGFya01vZGUudmFsdWU7XG4gICAgdGhpcy5fZGFya01vZGUubmV4dChuZXdWYWx1ZSk7XG4gICAgdGhpcy5hcHBseVRoZW1lKG5ld1ZhbHVlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWUnLCBuZXdWYWx1ZSA/ICdkYXJrJyA6ICdsaWdodCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRoZW1lKGlzRGFyazogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdkYXJrLXRoZW1lJywgaXNEYXJrKTtcbiAgfVxufVxuIl19","// Configuraciones predefinidas mejoradas\nexport const AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG = {\n placeholder: 'Buscar...',\n disabled: false,\n debounceTime: 300,\n minSearchLength: 2,\n maxHistoryItems: 10,\n itemsPerPage: 10,\n enableStockFilter: true,\n stockProperty: 'stock',\n enablePagination: true,\n enableFilters: true,\n enableFooterActions: true,\n overlayWidth: '100%',\n overlayMaxHeight: '500px',\n noResultsText: 'No se encontraron resultados',\n sectionTitle: 'Resultados',\n searchMode: 'remote',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n stockOptions: [\n { value: 'all', label: 'Todos' },\n { value: 'with-stock', label: 'Con Stock' },\n { value: 'without-stock', label: 'Sin Stock' },\n ],\n};\nexport const AUTOCOMPLETE_WRAPPER_PRODUCT_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n noResultsText: 'No se encontraron productos',\n};\nexport const AUTOCOMPLETE_WRAPPER_CUSTOMER_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n noResultsText: 'No se encontraron clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n};\nexport const AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar...',\n enableStockFilter: false,\n enableFilters: false,\n enableFooterActions: false,\n enablePagination: false,\n itemsPerPage: 50,\n sectionTitle: 'Resultados',\n overlayMaxHeight: '300px',\n};\n// Configuración para búsqueda local\nexport const AUTOCOMPLETE_WRAPPER_LOCAL_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG,\n searchMode: 'local',\n debounceTime: 150, // Menos tiempo para búsqueda local\n minSearchLength: 1,\n};\n// Configuración para listas grandes con paginación\nexport const AUTOCOMPLETE_WRAPPER_PAGINATED_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n itemsPerPage: 20,\n enablePagination: true,\n overlayMaxHeight: '400px',\n};\n// Helper para crear configuración personalizada\nexport function createAutocompleteWrapperConfig(overrides) {\n return {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n ...overrides,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvbW9kZWxzL2F1dG9jb21wbGV0ZS13cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdLQSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQThCO0lBQzVFLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsZUFBZSxFQUFFLENBQUM7SUFDbEIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsWUFBWSxFQUFFLEVBQUU7SUFDaEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixhQUFhLEVBQUUsT0FBTztJQUN0QixnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLG1CQUFtQixFQUFFLElBQUk7SUFDekIsWUFBWSxFQUFFLE1BQU07SUFDcEIsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixhQUFhLEVBQUUsOEJBQThCO0lBQzdDLFlBQVksRUFBRSxZQUFZO0lBQzFCLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLFlBQVksRUFBRTtRQUNaLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7UUFDdkUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtRQUNwRCxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7UUFDcEUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO0tBQ3BFO0lBQ0QsWUFBWSxFQUFFO1FBQ1osRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7UUFDaEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7UUFDM0MsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7S0FDL0M7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQThCO0lBQzVFLEdBQUcsbUNBQW1DO0lBQ3RDLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLFlBQVksRUFBRSxXQUFXO0lBQ3pCLGFBQWEsRUFBRSw2QkFBNkI7Q0FDN0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUE4QjtJQUM3RSxHQUFHLG1DQUFtQztJQUN0QyxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixZQUFZLEVBQUUsVUFBVTtJQUN4QixhQUFhLEVBQUUsNEJBQTRCO0lBQzNDLFlBQVksRUFBRTtRQUNaLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDcEQsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtRQUNyRCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1FBQ3hELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7S0FDaEU7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQThCO0lBQzNFLEdBQUcsbUNBQW1DO0lBQ3RDLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLFlBQVksRUFBRSxFQUFFO0lBQ2hCLFlBQVksRUFBRSxZQUFZO0lBQzFCLGdCQUFnQixFQUFFLE9BQU87Q0FDMUIsQ0FBQztBQUVGLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBOEI7SUFDMUUsR0FBRyxrQ0FBa0M7SUFDckMsVUFBVSxFQUFFLE9BQU87SUFDbkIsWUFBWSxFQUFFLEdBQUcsRUFBRSxtQ0FBbUM7SUFDdEQsZUFBZSxFQUFFLENBQUM7Q0FDbkIsQ0FBQztBQUVGLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBOEI7SUFDOUUsR0FBRyxtQ0FBbUM7SUFDdEMsWUFBWSxFQUFFLEVBQUU7SUFDaEIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixnQkFBZ0IsRUFBRSxPQUFPO0NBQzFCLENBQUM7QUFFRixnREFBZ0Q7QUFDaEQsTUFBTSxVQUFVLCtCQUErQixDQUM3QyxTQUE2QztJQUU3QyxPQUFPO1FBQ0wsR0FBRyxtQ0FBbUM7UUFDdEMsR0FBRyxTQUFTO0tBQ2IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0ge1xuICBpZD86IHN0cmluZyB8IG51bWJlcjtcbiAgbmFtZT86IHN0cmluZztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nOyAvLyBQYXJhIG1vc3RyYXIgZW4gZWwgdGVtcGxhdGUgcG9yIGRlZmVjdG9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQge1xuICBpdGVtczogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZ1bmN0aW9uID0gKFxuICBxdWVyeTogc3RyaW5nLFxuICBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyxcbiAgcGFnZT86IG51bWJlcixcbiAgcGFnZVNpemU/OiBudW1iZXIsXG4pID0+IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyB7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBjbGVhcklucHV0PzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBkZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIG1pblNlYXJjaExlbmd0aD86IG51bWJlcjtcbiAgbWF4SGlzdG9yeUl0ZW1zPzogbnVtYmVyO1xuICBpdGVtc1BlclBhZ2U/OiBudW1iZXI7XG4gIGVuYWJsZVN0b2NrRmlsdGVyPzogYm9vbGVhbjtcbiAgc3RvY2tQcm9wZXJ0eT86IHN0cmluZztcbiAgZW5hYmxlUGFnaW5hdGlvbj86IGJvb2xlYW47XG4gIGVuYWJsZUZpbHRlcnM/OiBib29sZWFuO1xuICBlbmFibGVGb290ZXJBY3Rpb25zPzogYm9vbGVhbjtcbiAgc2VhcmNoRmllbGRzPzogQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZpZWxkW107XG4gIHN0b2NrT3B0aW9ucz86IEF1dG9jb21wbGV0ZVdyYXBwZXJTdG9ja09wdGlvbltdO1xuXG4gIC8vIENvbmZpZ3VyYWNpw7NuIGRlbCBvdmVybGF5XG4gIG92ZXJsYXlXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgb3ZlcmxheU1heEhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcblxuICAvLyBGdW5jacOzbiBkZSBiw7pzcXVlZGEgcGVyc29uYWxpemFkYVxuICBzZWFyY2hGdW5jdGlvbj86IEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbjtcblxuICAvLyBNb2RvIGRlIGLDunNxdWVkYVxuICBzZWFyY2hNb2RlPzogJ2xvY2FsJyB8ICdyZW1vdGUnIHwgJ2h5YnJpZCc7XG5cbiAgLy8gQ29uZmlndXJhY2nDs24gZGUgZGF0b3MgbG9jYWxlcyAocGFyYSBzZWFyY2hNb2RlICdsb2NhbCcgbyAnaHlicmlkJylcbiAgbG9jYWxEYXRhPzogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcblxuICAvLyBUZXh0byBwZXJzb25hbGl6YWJsZVxuICBub1Jlc3VsdHNUZXh0Pzogc3RyaW5nO1xuICBzZWN0aW9uVGl0bGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZpZWxkIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJvcGVydHk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyU3RvY2tPcHRpb24ge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzIHtcbiAgc2VhcmNoQnk6IHN0cmluZztcbiAgc3RvY2tGaWx0ZXI6IHN0cmluZztcbn1cblxuLy8gRXZlbnRvcyBxdWUgZW1pdGUgZWwgY29tcG9uZW50ZVxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyRXZlbnRzIHtcbiAgaXRlbVNlbGVjdGVkOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbTtcbiAgc2VhcmNoQ2hhbmdlZDogc3RyaW5nO1xuICBwYWdlQ2hhbmdlZDogbnVtYmVyO1xuICBmaWx0ZXJDaGFuZ2VkOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycztcbiAgYWR2YW5jZWRTZWFyY2hDbGlja2VkOiB2b2lkO1xuICBhbGxSZXN1bHRzQ2xpY2tlZDogc3RyaW5nO1xuICBjcmVhdGVOZXdDbGlja2VkOiBzdHJpbmc7IC8vIEFsaW5lYWRvIGNvbiBvbkNyZWF0ZU5ldyBkZWwgSFRNTFxuICBoaXN0b3J5Q2xlYXJlZDogdm9pZDtcbiAgaGlzdG9yeUl0ZW1SZW1vdmVkOiB7IGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtOyBpbmRleDogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlclBhZ2luYXRpb25JbmZvIHtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBzdGFydEl0ZW06IG51bWJlcjtcbiAgZW5kSXRlbTogbnVtYmVyO1xuICBoYXNOZXh0UGFnZTogYm9vbGVhbjtcbiAgaGFzUHJldmlvdXNQYWdlOiBib29sZWFuO1xufVxuXG4vLyBFc3RhZG8gaW50ZXJubyBkZWwgY29tcG9uZW50ZSAocGFyYSB1c2FyIGNvbiBzaWduYWxzKVxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyU3RhdGUge1xuICBxdWVyeTogc3RyaW5nO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIG92ZXJsYXlPcGVuOiBib29sZWFuO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHBhZ2luYXRpb246IEF1dG9jb21wbGV0ZVdyYXBwZXJQYWdpbmF0aW9uSW5mbztcbiAgaGFzUmVzdWx0czogYm9vbGVhbjtcbiAgaXNIaXN0b3J5VmlzaWJsZTogYm9vbGVhbjtcbiAgaGlzdG9yeUNvdW50OiBudW1iZXI7XG4gIGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzO1xuXG4gIC8vIEVzdGFkb3MgYWRpY2lvbmFsZXMgcXVlIGFwYXJlY2VuIGVuIGVsIEhUTUxcbiAgLy8gdG90YWxJdGVtczogbnVtYmVyO1xuICAvLyBjdXJyZW50UGFnZUl0ZW1zOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdO1xuICAvLyBoaXN0b3J5TGlzdDogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcbiAgLy8gbm9SZXN1bHRzOiBib29sZWFuO1xufVxuXG4vLyBQYXJhIG3DqXRvZG9zIGRlbCBjb21wb25lbnRlIHF1ZSBhcGFyZWNlbiBlbiBlbCBIVE1MXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJBY3Rpb25zIHtcbiAgLy8gSW5wdXQgYWN0aW9uc1xuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQ7XG4gIHNob3dPdmVybGF5KCk6IHZvaWQ7XG4gIGhpZGVPdmVybGF5KCk6IHZvaWQ7XG4gIGNsZWFyU2VhcmNoKCk6IHZvaWQ7XG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG5cbiAgLy8gSXRlbSBhY3Rpb25zXG4gIHNlbGVjdEl0ZW0oaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0pOiB2b2lkO1xuICBnZXRJdGVtRGlzcGxheVRleHQoaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0pOiBzdHJpbmc7XG5cbiAgLy8gSGlzdG9yeSBhY3Rpb25zXG4gIGNsZWFySGlzdG9yeSgpOiB2b2lkO1xuICByZW1vdmVIaXN0b3J5SXRlbShpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkO1xuXG4gIC8vIFBhZ2luYXRpb24gYWN0aW9uc1xuICBnb1RvRmlyc3RQYWdlKCk6IHZvaWQ7XG4gIGdvVG9QcmV2aW91c1BhZ2UoKTogdm9pZDtcbiAgZ29Ub05leHRQYWdlKCk6IHZvaWQ7XG4gIGdvVG9MYXN0UGFnZSgpOiB2b2lkO1xuICBnb1RvUGFnZShldmVudDogRXZlbnQpOiB2b2lkO1xuXG4gIC8vIEZpbHRlciBhY3Rpb25zXG4gIG9uRmlsdGVyQ2hhbmdlKCk6IHZvaWQ7XG5cbiAgLy8gRm9vdGVyIGFjdGlvbnNcbiAgb25DcmVhdGVOZXcoZXZlbnQ6IEV2ZW50KTogdm9pZDtcbiAgb25BZHZhbmNlZFNlYXJjaCgpOiB2b2lkO1xuICBvblNob3dBbGxSZXN1bHRzKCk6IHZvaWQ7XG5cbiAgLy8gU3RhdGUgZ2V0dGVycyAocGFyYSB1c2FyIGNvbiBzaWduYWxzKVxuICBvdmVybGF5T3BlbigpOiBib29sZWFuO1xuICBpc0xvYWRpbmcoKTogYm9vbGVhbjtcbiAgaXNIaXN0b3J5VmlzaWJsZSgpOiBib29sZWFuO1xuICBoaXN0b3J5TGlzdCgpOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdO1xuICBzZWxlY3RlZEluZGV4KCk6IG51bWJlcjtcbiAgY3VycmVudFBhZ2VJdGVtcygpOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdO1xuICB0b3RhbEl0ZW1zKCk6IG51bWJlcjtcbiAgdG90YWxQYWdlcygpOiBudW1iZXI7XG4gIGN1cnJlbnRQYWdlKCk6IG51bWJlcjtcbiAgdG90YWxDb3VudCgpOiBudW1iZXI7XG4gIHN0YXJ0SXRlbSgpOiBudW1iZXI7XG4gIGVuZEl0ZW0oKTogbnVtYmVyO1xuICBzZWN0aW9uVGl0bGUoKTogc3RyaW5nO1xuICBub1Jlc3VsdHNUZXh0KCk6IHN0cmluZztcbiAgaXNOb1Jlc3VsdHMoKTogYm9vbGVhbjtcbiAgb3ZlcmxheVdpZHRoKCk6IHN0cmluZyB8IG51bWJlcjtcbiAgb3ZlcmxheU1heEhlaWdodCgpOiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbi8vIENvbmZpZ3VyYWNpb25lcyBwcmVkZWZpbmlkYXMgbWVqb3JhZGFzXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSB7XG4gIHBsYWNlaG9sZGVyOiAnQnVzY2FyLi4uJyxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBkZWJvdW5jZVRpbWU6IDMwMCxcbiAgbWluU2VhcmNoTGVuZ3RoOiAyLFxuICBtYXhIaXN0b3J5SXRlbXM6IDEwLFxuICBpdGVtc1BlclBhZ2U6IDEwLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogdHJ1ZSxcbiAgc3RvY2tQcm9wZXJ0eTogJ3N0b2NrJyxcbiAgZW5hYmxlUGFnaW5hdGlvbjogdHJ1ZSxcbiAgZW5hYmxlRmlsdGVyczogdHJ1ZSxcbiAgZW5hYmxlRm9vdGVyQWN0aW9uczogdHJ1ZSxcbiAgb3ZlcmxheVdpZHRoOiAnMTAwJScsXG4gIG92ZXJsYXlNYXhIZWlnaHQ6ICc1MDBweCcsXG4gIG5vUmVzdWx0c1RleHQ6ICdObyBzZSBlbmNvbnRyYXJvbiByZXN1bHRhZG9zJyxcbiAgc2VjdGlvblRpdGxlOiAnUmVzdWx0YWRvcycsXG4gIHNlYXJjaE1vZGU6ICdyZW1vdGUnLFxuICBzZWFyY2hGaWVsZHM6IFtcbiAgICB7IHZhbHVlOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogJ0Rlc2NyaXBjacOzbicsIHByb3BlcnR5OiAnZGVzY3JpcHRpb24nIH0sXG4gICAgeyB2YWx1ZTogJ2NvZGUnLCBsYWJlbDogJ0PDs2RpZ28nLCBwcm9wZXJ0eTogJ2NvZGUnIH0sXG4gICAgeyB2YWx1ZTogJ2JhcmNvZGUnLCBsYWJlbDogJ0PDs2RpZ28gZGUgQmFycmFzJywgcHJvcGVydHk6ICdiYXJjb2RlJyB9LFxuICAgIHsgdmFsdWU6ICdhdXhDb2RlJywgbGFiZWw6ICdDw7NkaWdvIEF1eGlsaWFyJywgcHJvcGVydHk6ICdhdXhDb2RlJyB9LFxuICBdLFxuICBzdG9ja09wdGlvbnM6IFtcbiAgICB7IHZhbHVlOiAnYWxsJywgbGFiZWw6ICdUb2RvcycgfSxcbiAgICB7IHZhbHVlOiAnd2l0aC1zdG9jaycsIGxhYmVsOiAnQ29uIFN0b2NrJyB9LFxuICAgIHsgdmFsdWU6ICd3aXRob3V0LXN0b2NrJywgbGFiZWw6ICdTaW4gU3RvY2snIH0sXG4gIF0sXG59O1xuXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfUFJPRFVDVF9DT05GSUc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSB7XG4gIC4uLkFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLFxuICBwbGFjZWhvbGRlcjogJ0J1c2NhciBwcm9kdWN0b3MuLi4nLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogdHJ1ZSxcbiAgZW5hYmxlRm9vdGVyQWN0aW9uczogdHJ1ZSxcbiAgc2VjdGlvblRpdGxlOiAnUHJvZHVjdG9zJyxcbiAgbm9SZXN1bHRzVGV4dDogJ05vIHNlIGVuY29udHJhcm9uIHByb2R1Y3RvcycsXG59O1xuXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfQ1VTVE9NRVJfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgcGxhY2Vob2xkZXI6ICdCdXNjYXIgY2xpZW50ZXMuLi4nLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogZmFsc2UsXG4gIGVuYWJsZUZvb3RlckFjdGlvbnM6IGZhbHNlLFxuICBzZWN0aW9uVGl0bGU6ICdDbGllbnRlcycsXG4gIG5vUmVzdWx0c1RleHQ6ICdObyBzZSBlbmNvbnRyYXJvbiBjbGllbnRlcycsXG4gIHNlYXJjaEZpZWxkczogW1xuICAgIHsgdmFsdWU6ICduYW1lJywgbGFiZWw6ICdOb21icmUnLCBwcm9wZXJ0eTogJ25hbWUnIH0sXG4gICAgeyB2YWx1ZTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcsIHByb3BlcnR5OiAnZW1haWwnIH0sXG4gICAgeyB2YWx1ZTogJ3Bob25lJywgbGFiZWw6ICdUZWzDqWZvbm8nLCBwcm9wZXJ0eTogJ3Bob25lJyB9LFxuICAgIHsgdmFsdWU6ICdkb2N1bWVudCcsIGxhYmVsOiAnRG9jdW1lbnRvJywgcHJvcGVydHk6ICdkb2N1bWVudCcgfSxcbiAgXSxcbn07XG5cbmV4cG9ydCBjb25zdCBBVVRPQ09NUExFVEVfV1JBUFBFUl9TSU1QTEVfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgcGxhY2Vob2xkZXI6ICdCdXNjYXIuLi4nLFxuICBlbmFibGVTdG9ja0ZpbHRlcjogZmFsc2UsXG4gIGVuYWJsZUZpbHRlcnM6IGZhbHNlLFxuICBlbmFibGVGb290ZXJBY3Rpb25zOiBmYWxzZSxcbiAgZW5hYmxlUGFnaW5hdGlvbjogZmFsc2UsXG4gIGl0ZW1zUGVyUGFnZTogNTAsXG4gIHNlY3Rpb25UaXRsZTogJ1Jlc3VsdGFkb3MnLFxuICBvdmVybGF5TWF4SGVpZ2h0OiAnMzAwcHgnLFxufTtcblxuLy8gQ29uZmlndXJhY2nDs24gcGFyYSBiw7pzcXVlZGEgbG9jYWxcbmV4cG9ydCBjb25zdCBBVVRPQ09NUExFVEVfV1JBUFBFUl9MT0NBTF9DT05GSUc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSB7XG4gIC4uLkFVVE9DT01QTEVURV9XUkFQUEVSX1NJTVBMRV9DT05GSUcsXG4gIHNlYXJjaE1vZGU6ICdsb2NhbCcsXG4gIGRlYm91bmNlVGltZTogMTUwLCAvLyBNZW5vcyB0aWVtcG8gcGFyYSBiw7pzcXVlZGEgbG9jYWxcbiAgbWluU2VhcmNoTGVuZ3RoOiAxLFxufTtcblxuLy8gQ29uZmlndXJhY2nDs24gcGFyYSBsaXN0YXMgZ3JhbmRlcyBjb24gcGFnaW5hY2nDs25cbmV4cG9ydCBjb25zdCBBVVRPQ09NUExFVEVfV1JBUFBFUl9QQUdJTkFURURfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgaXRlbXNQZXJQYWdlOiAyMCxcbiAgZW5hYmxlUGFnaW5hdGlvbjogdHJ1ZSxcbiAgb3ZlcmxheU1heEhlaWdodDogJzQwMHB4Jyxcbn07XG5cbi8vIEhlbHBlciBwYXJhIGNyZWFyIGNvbmZpZ3VyYWNpw7NuIHBlcnNvbmFsaXphZGFcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnKFxuICBvdmVycmlkZXM6IFBhcnRpYWw8QXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZz4sXG4pOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH07XG59XG5cbi8vIFRpcG9zIHBhcmEgZWwgY29tcG9uZW50ZSBBbmd1bGFyXG5leHBvcnQgaW50ZXJmYWNlIFJldXNhYmxlQXV0b2NvbXBsZXRlV3JhcHBlckNvbXBvbmVudCBleHRlbmRzIEF1dG9jb21wbGV0ZVdyYXBwZXJBY3Rpb25zIHtcbiAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnO1xuICBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycztcbiAgcXVlcnk6IHN0cmluZztcbn1cblxuLy8gVGlwb3MgZGUgdXRpbGlkYWQgZXNwZWPDrWZpY29zIGRlbCB3cmFwcGVyXG5leHBvcnQgdHlwZSBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoTW9kZSA9ICdsb2NhbCcgfCAncmVtb3RlJyB8ICdoeWJyaWQnO1xuXG5leHBvcnQgdHlwZSBBdXRvY29tcGxldGVXcmFwcGVySXRlbVByb3BlcnR5ID0ga2V5b2YgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW07XG5cbmV4cG9ydCB0eXBlIEF1dG9jb21wbGV0ZVdyYXBwZXJFdmVudEhhbmRsZXI8VCA9IGFueT4gPSAoZXZlbnQ6IFQpID0+IHZvaWQ7XG4iXX0=","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, of, delay, map } from 'rxjs';\nimport { AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, } from '../models/autocomplete-wrapper';\nimport * as i0 from \"@angular/core\";\nexport class AutocompleteWrapperService {\n historySubject = new BehaviorSubject([]);\n history$ = this.historySubject.asObservable();\n constructor() {\n this.loadHistoryFromStorage();\n }\n // Búsqueda local (sin API)\n searchLocal(items, query, filters, config) {\n const filtered = this.filterItems(items, query, filters, config);\n const page = 1; // Para búsqueda local, asumimos página 1\n const pageSize = config.itemsPerPage || 10;\n const startIndex = (page - 1) * pageSize;\n const pageItems = filtered.slice(startIndex, startIndex + pageSize);\n return of({\n items: pageItems,\n totalCount: filtered.length,\n hasMore: filtered.length > startIndex + pageSize,\n });\n }\n // Filtrar elementos basado en query y filtros\n filterItems(items, query, filters, config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG) {\n if (!query || query.length < (config.minSearchLength || 2)) {\n return [];\n }\n let filteredItems = items.filter(item => {\n if (item && typeof item === 'string') {\n return true;\n }\n // Buscar por el campo seleccionado\n const searchValue = this.getSearchValue(item, filters.searchBy, config);\n return searchValue.toLowerCase().includes(query.toLowerCase());\n });\n // Aplicar filtro de stock si está habilitado\n if (config.enableStockFilter && filters.stockFilter !== 'all') {\n filteredItems = filteredItems.filter(item => {\n if (typeof item === 'string')\n return true;\n const stockValue = item[config.stockProperty || 'stock'];\n const hasStock = stockValue !== undefined && stockValue !== null && stockValue > 0;\n return filters.stockFilter === 'with-stock' ? hasStock : !hasStock;\n });\n }\n return filteredItems;\n }\n // Simular búsqueda asíncrona\n searchAsync(items, query, filters, config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG) {\n const results = this.filterItems(items, query, filters, config);\n return of(results).pipe(delay(100)); // Simular delay de API\n }\n // Obtener valor de búsqueda según el campo seleccionado\n getSearchValue(item, searchBy, config) {\n const searchField = config.searchFields?.find(field => field.value === searchBy);\n if (searchField) {\n return item[searchField.property] || '';\n }\n // Fallback a la lógica anterior\n switch (searchBy) {\n case 'description':\n return item['description'] || '';\n case 'code':\n return item['code'] || item.id?.toString() || '';\n case 'barcode':\n return item['barcode'] || '';\n case 'auxCode':\n return item['auxCode'] || '';\n case 'email':\n return item['email'] || '';\n case 'phone':\n return item['phone'] || '';\n case 'document':\n return item['document'] || '';\n case 'name':\n default:\n return item.name || item.value || '';\n }\n }\n // Gestión de historial específico del wrapper\n addToHistory(item, maxItems = 10) {\n const currentHistory = this.historySubject.value;\n // Remover si ya existe\n const filteredHistory = currentHistory.filter(historyItem => {\n if (typeof item === 'string' && typeof historyItem === 'string') {\n return item !== historyItem;\n }\n else if (typeof item === 'object' && typeof historyItem === 'object') {\n return (item.id || item.name) !== (historyItem.id || historyItem.name);\n }\n return true;\n });\n // Agregar al inicio\n const newHistory = [item, ...filteredHistory].slice(0, maxItems);\n this.historySubject.next(newHistory);\n this.saveHistoryToStorage(newHistory);\n }\n removeFromHistory(index) {\n const currentHistory = this.historySubject.value;\n currentHistory.splice(index, 1);\n this.historySubject.next([...currentHistory]);\n this.saveHistoryToStorage(currentHistory);\n }\n clearHistory() {\n this.historySubject.next([]);\n this.saveHistoryToStorage([]);\n }\n getHistory() {\n return this.historySubject.value;\n }\n // Gestión de almacenamiento específico del wrapper\n loadHistoryFromStorage() {\n try {\n const stored = localStorage.getItem('autocomplete_wrapper_history');\n if (stored) {\n const history = JSON.parse(stored);\n this.historySubject.next(history);\n }\n }\n catch (error) {\n console.warn('Error loading autocomplete wrapper history:', error);\n }\n }\n saveHistoryToStorage(history) {\n try {\n localStorage.setItem('autocomplete_wrapper_history', JSON.stringify(history));\n }\n catch (error) {\n console.warn('Error saving autocomplete wrapper history:', error);\n }\n }\n // Paginación\n paginateItems(items, page, itemsPerPage) {\n const startIndex = (page - 1) * itemsPerPage;\n const endIndex = startIndex + itemsPerPage;\n return items.slice(startIndex, endIndex);\n }\n getTotalPages(totalItems, itemsPerPage) {\n return Math.ceil(totalItems / itemsPerPage) || 1;\n }\n // Validaciones\n isValidPage(page, totalPages) {\n return page >= 1 && page <= totalPages;\n }\n // Utilidades para templates\n highlightText(text, query) {\n if (!query || !text)\n return text;\n const regex = new RegExp(`(${query})`, 'gi');\n return text.replace(regex, '<mark>$1</mark>');\n }\n getItemDisplayText(item, displayField = 'nombre') {\n if (typeof item === 'string')\n return item;\n return item[displayField] || item.name || item.value || item.id?.toString() || '';\n }\n // Configuración dinámica\n mergeConfig(userConfig) {\n return { ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, ...userConfig };\n }\n // Factory para crear función de búsqueda genérica\n createGenericSearchFunction(config) {\n return (query, filters, page = 1, pageSize = 10) => {\n const { searchBy, ...rest } = filters;\n const params = {\n [config.queryParam || 'q']: query,\n [config.searchByParam || 'searchBy']: searchBy,\n [config.pageParam || 'page']: page,\n [config.pageSizeParam || 'pageSize']: pageSize,\n ...rest,\n };\n return config.search(params).pipe(map(response => {\n if (config.responseMapper) {\n return config.responseMapper(response);\n }\n // Mapper por defecto\n const items = response.data || response.items || response;\n const totalRecords = response.totalRecords || response.totalCount || response.total || 0;\n return {\n items,\n totalCount: totalRecords,\n hasMore: response.hasMore || false,\n };\n }));\n };\n }\n // Función para crear datos de ejemplo/mock específicos del wrapper\n createMockData() {\n return [\n {\n id: 1,\n name: 'iPhone 14 Pro 128GB',\n description: 'Smartphone Apple con chip A16 Bionic y cámara Pro',\n code: 'IP14P-128',\n barcode: '1234567890123',\n auxCode: 'APL-IP14P-128',\n stock: 15,\n category: 'Smartphones',\n brand: 'Apple',\n unit: 'unidad',\n prices: [\n {\n id: 1,\n type: 'retail',\n label: 'Público',\n value: 999,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 2,\n type: 'wholesale',\n label: 'Mayorista',\n value: 850,\n currency: 'USD',\n minQuantity: 5,\n includesTax: false,\n isActive: true,\n },\n {\n id: 3,\n type: 'vip',\n label: 'VIP',\n value: 899,\n currency: 'USD',\n includesTax: true,\n isActive: true,\n },\n {\n id: 4,\n type: 'promotional',\n label: 'Black Friday',\n value: 749,\n currency: 'USD',\n validFrom: new Date('2024-11-24'),\n validTo: new Date('2024-11-30'),\n includesTax: true,\n isActive: true,\n },\n ],\n },\n {\n id: 2,\n name: 'Samsung Galaxy S23 256GB',\n description: 'Flagship Android con cámara de 200MP',\n code: 'SGS23-256',\n barcode: '2345678901234',\n auxCode: 'SAM-GS23-256',\n stock: 0,\n category: 'Smartphones',\n brand: 'Samsung',\n unit: 'unidad',\n images: [\n {\n id: 1,\n url: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=200',\n alt: 'Samsung Galaxy S23 frontal',\n type: 'main',\n isPrimary: true,\n order: 1,\n },\n {\n id: 2,\n url: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=200',\n alt: 'Samsung Galaxy S23 trasero',\n type: 'gallery',\n order: 2,\n },\n ],\n badges: [{ type: 'new', text: 'NUEVO' }, { type: 'bestseller' }],\n prices: [\n {\n id: 5,\n type: 'retail',\n label: 'Público',\n value: 799,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 6,\n type: 'wholesale',\n label: 'Mayorista',\n value: 679,\n currency: 'USD',\n minQuantity: 3,\n includesTax: false,\n isActive: true,\n },\n ],\n },\n ];\n }\n // Métodos específicos para diferentes tipos de búsqueda\n searchProducts(query, filters = {}) {\n const defaultFilters = {\n searchBy: 'description',\n stockFilter: 'all',\n ...filters,\n };\n const mockData = this.createMockData();\n return this.searchLocal(mockData, query, defaultFilters, AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG);\n }\n // Crear configuración específica para diferentes casos de uso\n createProductSearchConfig() {\n return this.mergeConfig({\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n });\n }\n createCustomerSearchConfig() {\n return this.mergeConfig({\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AutocompleteWrapperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AutocompleteWrapperService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AutocompleteWrapperService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRvY29tcGxldGUtd3JhcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQ0wsbUNBQW1DLEdBTXBDLE1BQU0sZ0NBQWdDLENBQUM7O0FBS3hDLE1BQU0sT0FBTywwQkFBMEI7SUFDN0IsY0FBYyxHQUFHLElBQUksZUFBZSxDQUE0QixFQUFFLENBQUMsQ0FBQztJQUNyRSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVyRDtRQUNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsV0FBVyxDQUNULEtBQWdDLEVBQ2hDLEtBQWEsRUFDYixPQUFtQyxFQUNuQyxNQUFpQztRQUVqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztRQUN6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLFFBQVEs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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ3BELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ3JELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ3hELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7YUFDaEU7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTVZVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZGVsYXksIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcsXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzLFxuICBBdXRvY29tcGxldGVXcmFwcGVySXRlbSxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZ1bmN0aW9uLFxuICBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoUmVzdWx0LFxufSBmcm9tICcuLi9tb2RlbHMvYXV0b2NvbXBsZXRlLXdyYXBwZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlV3JhcHBlclNlcnZpY2Uge1xuICBwcml2YXRlIGhpc3RvcnlTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdPihbXSk7XG4gIHB1YmxpYyBoaXN0b3J5JCA9IHRoaXMuaGlzdG9yeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2FkSGlzdG9yeUZyb21TdG9yYWdlKCk7XG4gIH1cblxuICAvLyBCw7pzcXVlZGEgbG9jYWwgKHNpbiBBUEkpXG4gIHNlYXJjaExvY2FsKFxuICAgIGl0ZW1zOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMsXG4gICAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnLFxuICApOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQ+IHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVySXRlbXMoaXRlbXMsIHF1ZXJ5LCBmaWx0ZXJzLCBjb25maWcpO1xuICAgIGNvbnN0IHBhZ2UgPSAxOyAvLyBQYXJhIGLDunNxdWVkYSBsb2NhbCwgYXN1bWltb3MgcMOhZ2luYSAxXG4gICAgY29uc3QgcGFnZVNpemUgPSBjb25maWcuaXRlbXNQZXJQYWdlIHx8IDEwO1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZSAtIDEpICogcGFnZVNpemU7XG4gICAgY29uc3QgcGFnZUl0ZW1zID0gZmlsdGVyZWQuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHBhZ2VTaXplKTtcblxuICAgIHJldHVybiBvZih7XG4gICAgICBpdGVtczogcGFnZUl0ZW1zLFxuICAgICAgdG90YWxDb3VudDogZmlsdGVyZWQubGVuZ3RoLFxuICAgICAgaGFzTW9yZTogZmlsdGVyZWQubGVuZ3RoID4gc3RhcnRJbmRleCArIHBhZ2VTaXplLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gRmlsdHJhciBlbGVtZW50b3MgYmFzYWRvIGVuIHF1ZXJ5IHkgZmlsdHJvc1xuICBmaWx0ZXJJdGVtcyhcbiAgICBpdGVtczogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXSxcbiAgICBxdWVyeTogc3RyaW5nLFxuICAgIGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzLFxuICAgIGNvbmZpZzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyA9IEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLFxuICApOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdIHtcbiAgICBpZiAoIXF1ZXJ5IHx8IHF1ZXJ5Lmxlbmd0aCA8IChjb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1c2NhciBwb3IgZWwgY2FtcG8gc2VsZWNjaW9uYWRvXG4gICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMuZ2V0U2VhcmNoVmFsdWUoaXRlbSwgZmlsdGVycy5zZWFyY2hCeSwgY29uZmlnKTtcbiAgICAgIHJldHVybiBzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgLy8gQXBsaWNhciBmaWx0cm8gZGUgc3RvY2sgc2kgZXN0w6EgaGFiaWxpdGFkb1xuICAgIGlmIChjb25maWcuZW5hYmxlU3RvY2tGaWx0ZXIgJiYgZmlsdGVycy5zdG9ja0ZpbHRlciAhPT0gJ2FsbCcpIHtcbiAgICAgIGZpbHRlcmVkSXRlbXMgPSBmaWx0ZXJlZEl0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY29uc3Qgc3RvY2tWYWx1ZSA9IGl0ZW1bY29uZmlnLnN0b2NrUHJvcGVydHkgfHwgJ3N0b2NrJ107XG4gICAgICAgIGNvbnN0IGhhc1N0b2NrID0gc3RvY2tWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHN0b2NrVmFsdWUgIT09IG51bGwgJiYgc3RvY2tWYWx1ZSA+IDA7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcnMuc3RvY2tGaWx0ZXIgPT09ICd3aXRoLXN0b2NrJyA/IGhhc1N0b2NrIDogIWhhc1N0b2NrO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkSXRlbXM7XG4gIH1cblxuICAvLyBTaW11bGFyIGLDunNxdWVkYSBhc8OtbmNyb25hXG4gIHNlYXJjaEFzeW5jKFxuICAgIGl0ZW1zOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMsXG4gICAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0gQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gICk6IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXT4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmZpbHRlckl0ZW1zKGl0ZW1zLCBxdWVyeSwgZmlsdGVycywgY29uZmlnKTtcbiAgICByZXR1cm4gb2YocmVzdWx0cykucGlwZShkZWxheSgxMDApKTsgLy8gU2ltdWxhciBkZWxheSBkZSBBUElcbiAgfVxuXG4gIC8vIE9idGVuZXIgdmFsb3IgZGUgYsO6c3F1ZWRhIHNlZ8O6biBlbCBjYW1wbyBzZWxlY2Npb25hZG9cbiAgcHJpdmF0ZSBnZXRTZWFyY2hWYWx1ZShcbiAgICBpdGVtOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbSxcbiAgICBzZWFyY2hCeTogc3RyaW5nLFxuICAgIGNvbmZpZzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWFyY2hGaWVsZCA9IGNvbmZpZy5zZWFyY2hGaWVsZHM/LmZpbmQoZmllbGQgPT4gZmllbGQudmFsdWUgPT09IHNlYXJjaEJ5KTtcbiAgICBpZiAoc2VhcmNoRmllbGQpIHtcbiAgICAgIHJldHVybiBpdGVtW3NlYXJjaEZpZWxkLnByb3BlcnR5XSB8fCAnJztcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBhIGxhIGzDs2dpY2EgYW50ZXJpb3JcbiAgICBzd2l0Y2ggKHNlYXJjaEJ5KSB7XG4gICAgICBjYXNlICdkZXNjcmlwdGlvbic6XG4gICAgICAgIHJldHVybiBpdGVtWydkZXNjcmlwdGlvbiddIHx8ICcnO1xuICAgICAgY2FzZSAnY29kZSc6XG4gICAgICAgIHJldHVybiBpdGVtWydjb2RlJ10gfHwgaXRlbS5pZD8udG9TdHJpbmcoKSB8fCAnJztcbiAgICAgIGNhc2UgJ2JhcmNvZGUnOlxuICAgICAgICByZXR1cm4gaXRlbVsnYmFyY29kZSddIHx8ICcnO1xuICAgICAgY2FzZSAnYXV4Q29kZSc6XG4gICAgICAgIHJldHVybiBpdGVtWydhdXhDb2RlJ10gfHwgJyc7XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgIHJldHVybiBpdGVtWydlbWFpbCddIHx8ICcnO1xuICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICByZXR1cm4gaXRlbVsncGhvbmUnXSB8fCAnJztcbiAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2RvY3VtZW50J10gfHwgJyc7XG4gICAgICBjYXNlICduYW1lJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBpdGVtLm5hbWUgfHwgaXRlbS52YWx1ZSB8fCAnJztcbiAgICB9XG4gIH1cblxuICAvLyBHZXN0acOzbiBkZSBoaXN0b3JpYWwgZXNwZWPDrWZpY28gZGVsIHdyYXBwZXJcbiAgYWRkVG9IaXN0b3J5KGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtLCBtYXhJdGVtcyA9IDEwKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEhpc3RvcnkgPSB0aGlzLmhpc3RvcnlTdWJqZWN0LnZhbHVlO1xuXG4gICAgLy8gUmVtb3ZlciBzaSB5YSBleGlzdGVcbiAgICBjb25zdCBmaWx0ZXJlZEhpc3RvcnkgPSBjdXJyZW50SGlzdG9yeS5maWx0ZXIoaGlzdG9yeUl0ZW0gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgaGlzdG9yeUl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBpdGVtICE9PSBoaXN0b3J5SXRlbTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHR5cGVvZiBoaXN0b3J5SXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIChpdGVtLmlkIHx8IGl0ZW0ubmFtZSkgIT09IChoaXN0b3J5SXRlbS5pZCB8fCBoaXN0b3J5SXRlbS5uYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgLy8gQWdyZWdhciBhbCBpbmljaW9cbiAgICBjb25zdCBuZXdIaXN0b3J5ID0gW2l0ZW0sIC4uLmZpbHRlcmVkSGlzdG9yeV0uc2xpY2UoMCwgbWF4SXRlbXMpO1xuXG4gICAgdGhpcy5oaXN0b3J5U3ViamVjdC5uZXh0KG5ld0hpc3RvcnkpO1xuICAgIHRoaXMuc2F2ZUhpc3RvcnlUb1N0b3JhZ2UobmV3SGlzdG9yeSk7XG4gIH1cblxuICByZW1vdmVGcm9tSGlzdG9yeShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEhpc3RvcnkgPSB0aGlzLmhpc3RvcnlTdWJqZWN0LnZhbHVlO1xuICAgIGN1cnJlbnRIaXN0b3J5LnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5oaXN0b3J5U3ViamVjdC5uZXh0KFsuLi5jdXJyZW50SGlzdG9yeV0pO1xuICAgIHRoaXMuc2F2ZUhpc3RvcnlUb1N0b3JhZ2UoY3VycmVudEhpc3RvcnkpO1xuICB9XG5cbiAgY2xlYXJIaXN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeVN1YmplY3QubmV4dChbXSk7XG4gICAgdGhpcy5zYXZlSGlzdG9yeVRvU3RvcmFnZShbXSk7XG4gIH1cblxuICBnZXRIaXN0b3J5KCk6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmhpc3RvcnlTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgLy8gR2VzdGnDs24gZGUgYWxtYWNlbmFtaWVudG8gZXNwZWPDrWZpY28gZGVsIHdyYXBwZXJcbiAgcHJpdmF0ZSBsb2FkSGlzdG9yeUZyb21TdG9yYWdlKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXV0b2NvbXBsZXRlX3dyYXBwZXJfaGlzdG9yeScpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gSlNPTi5wYXJzZShzdG9yZWQpO1xuICAgICAgICB0aGlzLmhpc3RvcnlTdWJqZWN0Lm5leHQoaGlzdG9yeSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXJyb3IgbG9hZGluZyBhdXRvY29tcGxldGUgd3JhcHBlciBoaXN0b3J5OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVIaXN0b3J5VG9TdG9yYWdlKGhpc3Rvcnk6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10pOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F1dG9jb21wbGV0ZV93cmFwcGVyX2hpc3RvcnknLCBKU09OLnN0cmluZ2lmeShoaXN0b3J5KSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXJyb3Igc2F2aW5nIGF1dG9jb21wbGV0ZSB3cmFwcGVyIGhpc3Rvcnk6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2luYWNpw7NuXG4gIHBhZ2luYXRlSXRlbXM8VD4oaXRlbXM6IFRbXSwgcGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcik6IFRbXSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChwYWdlIC0gMSkgKiBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgaXRlbXNQZXJQYWdlO1xuICAgIHJldHVybiBpdGVtcy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gIH1cblxuICBnZXRUb3RhbFBhZ2VzKHRvdGFsSXRlbXM6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmNlaWwodG90YWxJdGVtcyAvIGl0ZW1zUGVyUGFnZSkgfHwgMTtcbiAgfVxuXG4gIC8vIFZhbGlkYWNpb25lc1xuICBpc1ZhbGlkUGFnZShwYWdlOiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwYWdlID49IDEgJiYgcGFnZSA8PSB0b3RhbFBhZ2VzO1xuICB9XG5cbiAgLy8gVXRpbGlkYWRlcyBwYXJhIHRlbXBsYXRlc1xuICBoaWdobGlnaHRUZXh0KHRleHQ6IHN0cmluZywgcXVlcnk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFxdWVyeSB8fCAhdGV4dCkgcmV0dXJuIHRleHQ7XG5cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYCgke3F1ZXJ5fSlgLCAnZ2knKTtcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlZ2V4LCAnPG1hcms+JDE8L21hcms+Jyk7XG4gIH1cblxuICBnZXRJdGVtRGlzcGxheVRleHQoaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0sIGRpc3BsYXlGaWVsZCA9ICdub21icmUnKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSByZXR1cm4gaXRlbTtcbiAgICByZXR1cm4gaXRlbVtkaXNwbGF5RmllbGRdIHx8IGl0ZW0ubmFtZSB8fCBpdGVtLnZhbHVlIHx8IGl0ZW0uaWQ/LnRvU3RyaW5nKCkgfHwgJyc7XG4gIH1cblxuICAvLyBDb25maWd1cmFjacOzbiBkaW7DoW1pY2FcbiAgbWVyZ2VDb25maWcodXNlckNvbmZpZzogUGFydGlhbDxBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnPik6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcge1xuICAgIHJldHVybiB7IC4uLkFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLCAuLi51c2VyQ29uZmlnIH07XG4gIH1cblxuICAvLyBGYWN0b3J5IHBhcmEgY3JlYXIgZnVuY2nDs24gZGUgYsO6c3F1ZWRhIGdlbsOpcmljYVxuICBjcmVhdGVHZW5lcmljU2VhcmNoRnVuY3Rpb24oY29uZmlnOiB7XG4gICAgc2VhcmNoOiAocGFyYW1zOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcbiAgICBxdWVyeVBhcmFtPzogc3RyaW5nO1xuICAgIHNlYXJjaEJ5UGFyYW0/OiBzdHJpbmc7XG4gICAgcGFnZVBhcmFtPzogc3RyaW5nO1xuICAgIHBhZ2VTaXplUGFyYW0/OiBzdHJpbmc7XG4gICAgcmVzcG9uc2VNYXBwZXI/OiAocmVzcG9uc2U6IGFueSkgPT4gQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdDtcbiAgfSk6IEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbiB7XG4gICAgcmV0dXJuIChxdWVyeTogc3RyaW5nLCBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycywgcGFnZSA9IDEsIHBhZ2VTaXplID0gMTApID0+IHtcbiAgICAgIGNvbnN0IHsgc2VhcmNoQnksIC4uLnJlc3QgfSA9IGZpbHRlcnM7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIFtjb25maWcucXVlcnlQYXJhbSB8fCAncSddOiBxdWVyeSxcbiAgICAgICAgW2NvbmZpZy5zZWFyY2hCeVBhcmFtIHx8ICdzZWFyY2hCeSddOiBzZWFyY2hCeSxcbiAgICAgICAgW2NvbmZpZy5wYWdlUGFyYW0gfHwgJ3BhZ2UnXTogcGFnZSxcbiAgICAgICAgW2NvbmZpZy5wYWdlU2l6ZVBhcmFtIHx8ICdwYWdlU2l6ZSddOiBwYWdlU2l6ZSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjb25maWcuc2VhcmNoKHBhcmFtcykucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAoY29uZmlnLnJlc3BvbnNlTWFwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnJlc3BvbnNlTWFwcGVyKHJlc3BvbnNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBNYXBwZXIgcG9yIGRlZmVjdG9cbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmRhdGEgfHwgcmVzcG9uc2UuaXRlbXMgfHwgcmVzcG9uc2U7XG4gICAgICAgICAgY29uc3QgdG90YWxSZWNvcmRzID0gcmVzcG9uc2UudG90YWxSZWNvcmRzIHx8IHJlc3BvbnNlLnRvdGFsQ291bnQgfHwgcmVzcG9uc2UudG90YWwgfHwgMDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICB0b3RhbENvdW50OiB0b3RhbFJlY29yZHMsXG4gICAgICAgICAgICBoYXNNb3JlOiByZXNwb25zZS5oYXNNb3JlIHx8IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gRnVuY2nDs24gcGFyYSBjcmVhciBkYXRvcyBkZSBlamVtcGxvL21vY2sgZXNwZWPDrWZpY29zIGRlbCB3cmFwcGVyXG4gIGNyZWF0ZU1vY2tEYXRhKCk6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAxLFxuICAgICAgICBuYW1lOiAnaVBob25lIDE0IFBybyAxMjhHQicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU21hcnRwaG9uZSBBcHBsZSBjb24gY2hpcCBBMTYgQmlvbmljIHkgY8OhbWFyYSBQcm8nLFxuICAgICAgICBjb2RlOiAnSVAxNFAtMTI4JyxcbiAgICAgICAgYmFyY29kZTogJzEyMzQ1Njc4OTAxMjMnLFxuICAgICAgICBhdXhDb2RlOiAnQVBMLUlQMTRQLTEyOCcsXG4gICAgICAgIHN0b2NrOiAxNSxcbiAgICAgICAgY2F0ZWdvcnk6ICdTbWFydHBob25lcycsXG4gICAgICAgIGJyYW5kOiAnQXBwbGUnLFxuICAgICAgICB1bml0OiAndW5pZGFkJyxcbiAgICAgICAgcHJpY2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICB0eXBlOiAncmV0YWlsJyxcbiAgICAgICAgICAgIGxhYmVsOiAnUMO6YmxpY28nLFxuICAgICAgICAgICAgdmFsdWU6IDk5OSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICAgIGluY2x1ZGVzVGF4OiB0cnVlLFxuICAgICAgICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogMixcbiAgICAgICAgICAgIHR5cGU6ICd3aG9sZXNhbGUnLFxuICAgICAgICAgICAgbGFiZWw6ICdNYXlvcmlzdGEnLFxuICAgICAgICAgICAgdmFsdWU6IDg1MCxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICAgIG1pblF1YW50aXR5OiA1LFxuICAgICAgICAgICAgaW5jbHVkZXNUYXg6IGZhbHNlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogMyxcbiAgICAgICAgICAgIHR5cGU6ICd2aXAnLFxuICAgICAgICAgICAgbGFiZWw6ICdWSVAnLFxuICAgICAgICAgICAgdmFsdWU6IDg5OSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICAgIGluY2x1ZGVzVGF4OiB0cnVlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogNCxcbiAgICAgICAgICAgIHR5cGU6ICdwcm9tb3Rpb25hbCcsXG4gICAgICAgICAgICBsYWJlbDogJ0JsYWNrIEZyaWRheScsXG4gICAgICAgICAgICB2YWx1ZTogNzQ5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgdmFsaWRGcm9tOiBuZXcgRGF0ZSgnMjAyNC0xMS0yNCcpLFxuICAgICAgICAgICAgdmFsaWRUbzogbmV3IERhdGUoJzIwMjQtMTEtMzAnKSxcbiAgICAgICAgICAgIGluY2x1ZGVzVGF4OiB0cnVlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAyLFxuICAgICAgICBuYW1lOiAnU2Ftc3VuZyBHYWxheHkgUzIzIDI1NkdCJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGbGFnc2hpcCBBbmRyb2lkIGNvbiBjw6FtYXJhIGRlIDIwME1QJyxcbiAgICAgICAgY29kZTogJ1NHUzIzLTI1NicsXG4gICAgICAgIGJhcmNvZGU6ICcyMzQ1Njc4OTAxMjM0JyxcbiAgICAgICAgYXV4Q29kZTogJ1NBTS1HUzIzLTI1NicsXG4gICAgICAgIHN0b2NrOiAwLFxuICAgICAgICBjYXRlZ29yeTogJ1NtYXJ0cGhvbmVzJyxcbiAgICAgICAgYnJhbmQ6ICdTYW1zdW5nJyxcbiAgICAgICAgdW5pdDogJ3VuaWRhZCcsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1OTI3NTA0NzUzMzgtNzRiN2IyMTA4NWFiP3c9NDAwJyxcbiAgICAgICAgICAgIHRodW1ibmFpbFVybDogJ2h0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTkyNzUwNDc1MzM4LTc0YjdiMjEwODVhYj93PTIwMCcsXG4gICAgICAgICAgICBhbHQ6ICdTYW1zdW5nIEdhbGF4eSBTMjMgZnJvbnRhbCcsXG4gICAgICAgICAgICB0eXBlOiAnbWFpbicsXG4gICAgICAgICAgICBpc1ByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1NzQ3NTUzOTM4NDktNjIzOTQyNDk2OTM2P3c9NDAwJyxcbiAgICAgICAgICAgIHRodW1ibmFpbFVybDogJ2h0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTc0NzU1MzkzODQ5LTYyMzk0MjQ5NjkzNj93PTIwMCcsXG4gICAgICAgICAgICBhbHQ6ICdTYW1zdW5nIEdhbGF4eSBTMjMgdHJhc2VybycsXG4gICAgICAgICAgICB0eXBlOiAnZ2FsbGVyeScsXG4gICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBiYWRnZXM6IFt7IHR5cGU6ICduZXcnLCB0ZXh0OiAnTlVFVk8nIH0sIHsgdHlwZTogJ2Jlc3RzZWxsZXInIH1dLFxuICAgICAgICBwcmljZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogNSxcbiAgICAgICAgICAgIHR5cGU6ICdyZXRhaWwnLFxuICAgICAgICAgICAgbGFiZWw6ICdQw7pibGljbycsXG4gICAgICAgICAgICB2YWx1ZTogNzk5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgaW5jbHVkZXNUYXg6IHRydWUsXG4gICAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA2LFxuICAgICAgICAgICAgdHlwZTogJ3dob2xlc2FsZScsXG4gICAgICAgICAgICBsYWJlbDogJ01heW9yaXN0YScsXG4gICAgICAgICAgICB2YWx1ZTogNjc5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgbWluUXVhbnRpdHk6IDMsXG4gICAgICAgICAgICBpbmNsdWRlc1RheDogZmFsc2UsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLy8gTcOpdG9kb3MgZXNwZWPDrWZpY29zIHBhcmEgZGlmZXJlbnRlcyB0aXBvcyBkZSBiw7pzcXVlZGFcbiAgc2VhcmNoUHJvZHVjdHMoXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBmaWx0ZXJzOiBQYXJ0aWFsPEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzPiA9IHt9LFxuICApOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQ+IHtcbiAgICBjb25zdCBkZWZhdWx0RmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMgPSB7XG4gICAgICBzZWFyY2hCeTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIHN0b2NrRmlsdGVyOiAnYWxsJyxcbiAgICAgIC4uLmZpbHRlcnMsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vY2tEYXRhID0gdGhpcy5jcmVhdGVNb2NrRGF0YSgpO1xuICAgIHJldHVybiB0aGlzLnNlYXJjaExvY2FsKG1vY2tEYXRhLCBxdWVyeSwgZGVmYXVsdEZpbHRlcnMsIEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHKTtcbiAgfVxuXG4gIC8vIENyZWFyIGNvbmZpZ3VyYWNpw7NuIGVzcGVjw61maWNhIHBhcmEgZGlmZXJlbnRlcyBjYXNvcyBkZSB1c29cbiAgY3JlYXRlUHJvZHVjdFNlYXJjaENvbmZpZygpOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZUNvbmZpZyh7XG4gICAgICBwbGFjZWhvbGRlcjogJ0J1c2NhciBwcm9kdWN0b3MuLi4nLFxuICAgICAgZW5hYmxlU3RvY2tGaWx0ZXI6IHRydWUsXG4gICAgICBlbmFibGVGb290ZXJBY3Rpb25zOiB0cnVlLFxuICAgICAgc2VjdGlvblRpdGxlOiAnUHJvZHVjdG9zJyxcbiAgICAgIHNlYXJjaEZpZWxkczogW1xuICAgICAgICB7IHZhbHVlOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogJ0Rlc2NyaXBjacOzbicsIHByb3BlcnR5OiAnZGVzY3JpcHRpb24nIH0sXG4gICAgICAgIHsgdmFsdWU6ICdjb2RlJywgbGFiZWw6ICdDw7NkaWdvJywgcHJvcGVydHk6ICdjb2RlJyB9LFxuICAgICAgICB7IHZhbHVlOiAnYmFyY29kZScsIGxhYmVsOiAnQ8OzZGlnbyBkZSBCYXJyYXMnLCBwcm9wZXJ0eTogJ2JhcmNvZGUnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdhdXhDb2RlJywgbGFiZWw6ICdDw7NkaWdvIEF1eGlsaWFyJywgcHJvcGVydHk6ICdhdXhDb2RlJyB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUN1c3RvbWVyU2VhcmNoQ29uZmlnKCk6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLm1lcmdlQ29uZmlnKHtcbiAgICAgIHBsYWNlaG9sZGVyOiAnQnVzY2FyIGNsaWVudGVzLi4uJyxcbiAgICAgIGVuYWJsZVN0b2NrRmlsdGVyOiBmYWxzZSxcbiAgICAgIGVuYWJsZUZvb3RlckFjdGlvbnM6IGZhbHNlLFxuICAgICAgc2VjdGlvblRpdGxlOiAnQ2xpZW50ZXMnLFxuICAgICAgc2VhcmNoRmllbGRzOiBbXG4gICAgICAgIHsgdmFsdWU6ICduYW1lJywgbGFiZWw6ICdOb21icmUnLCBwcm9wZXJ0eTogJ25hbWUnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdlbWFpbCcsIGxhYmVsOiAnRW1haWwnLCBwcm9wZXJ0eTogJ2VtYWlsJyB9LFxuICAgICAgICB7IHZhbHVlOiAncGhvbmUnLCBsYWJlbDogJ1RlbMOpZm9ubycsIHByb3BlcnR5OiAncGhvbmUnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdkb2N1bWVudCcsIGxhYmVsOiAnRG9jdW1lbnRvJywgcHJvcGVydHk6ICdkb2N1bWVudCcgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { ThemeService } from '../../services';\nimport { MatIconButton } from '@angular/material/button';\nimport { AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nexport class ThemeToggleComponent {\n themeService = inject(ThemeService);\n darkMode$;\n constructor() {\n this.darkMode$ = this.themeService.isDarkMode$;\n }\n toggleDarkMode() {\n this.themeService.toggleDarkMode();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.2\", type: ThemeToggleComponent, isStandalone: true, selector: \"acp-theme-toggle\", ngImport: i0, template: \"<button\\n mat-icon-button\\n (click)=\\\"toggleDarkMode()\\\"\\n title=\\\"{{ (darkMode$ | async) ? 'Modo D\\u00EDa' : 'Modo Noche' }}\\\"\\n>\\n <mat-icon>{{ (darkMode$ | async) ? 'light_mode' : 'dark_mode' }}</mat-icon>\\n</button>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ThemeToggleComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-theme-toggle', imports: [MatIconButton, MatIcon, AsyncPipe], encapsulation: ViewEncapsulation.None, template: \"<button\\n mat-icon-button\\n (click)=\\\"toggleDarkMode()\\\"\\n title=\\\"{{ (darkMode$ | async) ? 'Modo D\\u00EDa' : 'Modo Noche' }}\\\"\\n>\\n <mat-icon>{{ (darkMode$ | async) ? 'light_mode' : 'dark_mode' }}</mat-icon>\\n</button>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RoZW1lLXRvZ2dsZS90aGVtZS10b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGhlbWUtdG9nZ2xlL3RoZW1lLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBU2pELE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU1QyxTQUFTLENBQXNCO0lBRS9CO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsQ0FBQzt1R0FWVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiw0RUNkakMsbU9BT0EsMERERVksYUFBYSx1S0FBRSxPQUFPLHNJQUFFLFNBQVM7OzJGQUtoQyxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLFdBQ25CLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsaUJBRzdCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLXRoZW1lLXRvZ2dsZScsXG4gIGltcG9ydHM6IFtNYXRJY29uQnV0dG9uLCBNYXRJY29uLCBBc3luY1BpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGhlbWUtdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RoZW1lLXRvZ2dsZS5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lVG9nZ2xlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSB0aGVtZVNlcnZpY2UgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcblxuICBkYXJrTW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kYXJrTW9kZSQgPSB0aGlzLnRoZW1lU2VydmljZS5pc0RhcmtNb2RlJDtcbiAgfVxuICB0b2dnbGVEYXJrTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRoZW1lU2VydmljZS50b2dnbGVEYXJrTW9kZSgpO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIG1hdC1pY29uLWJ1dHRvblxuICAoY2xpY2spPVwidG9nZ2xlRGFya01vZGUoKVwiXG4gIHRpdGxlPVwie3sgKGRhcmtNb2RlJCB8IGFzeW5jKSA/ICdNb2RvIETDrWEnIDogJ01vZG8gTm9jaGUnIH19XCJcbj5cbiAgPG1hdC1pY29uPnt7IChkYXJrTW9kZSQgfCBhc3luYykgPyAnbGlnaHRfbW9kZScgOiAnZGFya19tb2RlJyB9fTwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==","export class FieldDefinition {\n value;\n valueLabel;\n defaultValue;\n defaultValueLabel;\n key;\n label;\n dateRangeConfig;\n isDefaultSearchField;\n required;\n disabled;\n order;\n icon;\n controlType = 'textbox';\n type = 'string';\n editor; // this attribut is for Kendo-Grid\n options;\n valueOptions;\n valuePrimitive; // for kendo dropdown\n textField; // for kendo dropdown\n valueField; // for kendo dropdown\n errorMessage;\n width;\n valueChangeCallback;\n columnType;\n body;\n constructor(options = {}) {\n this.value = options.value;\n this.valueLabel = options.valueLabel;\n this.defaultValue = options.defaultValue;\n this.defaultValueLabel = options.defaultValueLabel;\n this.key = options.key || '';\n this.label = options.label || '';\n this.dateRangeConfig = options.dateRangeConfig;\n this.isDefaultSearchField = options.isDefaultSearchField;\n this.required = !!options.required;\n this.disabled = options.disabled;\n this.order = options.order === undefined ? 1 : options.order;\n this.icon = options.icon;\n this.controlType = options.controlType || 'textbox';\n this.type = options.type || 'string';\n this.editor = options.editor || '';\n this.options = options.options || [];\n this.valueOptions = options.valueOptions || [];\n this.valuePrimitive = options.valuePrimitive;\n this.textField = options.textField;\n this.valueField = options.valueField;\n this.errorMessage = options.errorMessage || '';\n this.width = options.width;\n this.valueChangeCallback = options.valueChangeCallback;\n this.columnType = options.columnType;\n this.body = options.body;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvbWF0LXRhYmxlLW1vZGVscy9maWVsZC1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDQSxNQUFNLE9BQU8sZUFBZTtJQUMxQixLQUFLLENBQUs7SUFDVixVQUFVLENBQVU7SUFDcEIsWUFBWSxDQUFLO0lBQ2pCLGlCQUFpQixDQUFVO0lBQzNCLEdBQUcsQ0FBUztJQUNaLEtBQUssQ0FBUztJQUNkLGVBQWUsQ0FBc0I7SUFDckMsb0JBQW9CLENBQVc7SUFDL0IsUUFBUSxDQUFXO0lBQ25CLFFBQVEsQ0FBVztJQUNuQixLQUFLLENBQVU7SUFDZixJQUFJLENBQVU7SUFDZCxXQUFXLEdBQWlCLFNBQVMsQ0FBQztJQUN0QyxJQUFJLEdBQWUsUUFBUSxDQUFDO0lBQzVCLE1BQU0sQ0FBOEIsQ0FBQyxrQ0FBa0M7SUFDdkUsT0FBTyxDQUFpQztJQUN4QyxZQUFZLENBQVk7SUFDeEIsY0FBYyxDQUFXLENBQUMscUJBQXFCO0lBQy9DLFNBQVMsQ0FBVSxDQUFDLHFCQUFxQjtJQUN6QyxVQUFVLENBQVUsQ0FBQyxxQkFBcUI7SUFDMUMsWUFBWSxDQUFVO0lBQ3RCLEtBQUssQ0FBVTtJQUNmLG1CQUFtQixDQUFzQjtJQUN6QyxVQUFVLENBQWM7SUFDeEIsSUFBSSxDQUFPO0lBRVgsWUFBWSxVQUF1QyxFQUFFO1FBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERhdGVSYW5nZUNvbmZpZzxUID0gYW55PiB7XG4gIHN0YXJ0RGF0ZTogRmllbGREZWZpbml0aW9uPFQ+O1xuICBlbmREYXRlOiBGaWVsZERlZmluaXRpb248VD47XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29udHJvbFR5cGUgPVxuICB8ICd0ZXh0Ym94J1xuICB8ICdrdGV4dGJveCdcbiAgfCAnY29tYm9ib3gnXG4gIHwgJ3RleHRib3hOdW0nXG4gIHwgJ2Ryb3Bkb3duJ1xuICB8ICdkcm9wZG93bmxpc3QnXG4gIHwgJ211bHRpc2VsZWN0J1xuICB8ICdhdXRvY29tcGxldGUnXG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpb2J1dHRvbidcbiAgfCAnaW5xdWlyeUluRGlhbG9nJ1xuICB8ICd0aW1lcGlja2VyJ1xuICB8ICdkYXRlcGlja2VyJ1xuICB8ICdkYXRlcmFuZ2UnXG4gIHwgJ3RleHRhcmVhJ1xuICB8ICdzbGlkZVRvZ2dsZSdcbiAgfCAnc2xpZGVyJ1xuICB8ICdzd2l0Y2gnXG4gIHwgJ2J1dHRvblRvZ2dsZUdyb3VwJztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBGaWVsZFR5cGUgPVxuICB8ICdudW1iZXInXG4gIHwgJ3N0cmluZydcbiAgfCAnYm9vbGVhbidcbiAgfCAnZGF0ZSdcbiAgfCAnbW9udGgnXG4gIHwgJ2VtYWlsJ1xuICB8ICdwYXNzd29yZCdcbiAgfCAndGVsJ1xuICB8ICdoaWRkZW4nXG4gIHwgJ2ltYWdlJ1xuICB8ICd1cmwnXG4gIHwgJ3dlZWsnXG4gIHwgJ3NlYXJjaCdcbiAgfCAncmVzZXQnXG4gIHwgJ3RlbXBsYXRlJ1xuICB8ICdjdXN0b20nXG4gIHwgJ2V4cGFuZCc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29sdW1uVHlwZSA9ICd0ZXh0JyB8ICdjb21wb25lbnQnIHwgJ2h0bWwnIHwgJ3RlbXBsYXRlJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkRGVmaW5pdGlvbjxUID0gYW55PiB7XG4gIHZhbHVlPzogVDtcbiAgdmFsdWVMYWJlbD86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogVDtcbiAgZGVmYXVsdFZhbHVlTGFiZWw/OiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBkYXRlUmFuZ2VDb25maWc/OiBEYXRlUmFuZ2VDb25maWc8VD47XG4gIGlzRGVmYXVsdFNlYXJjaEZpZWxkPzogYm9vbGVhbjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9yZGVyPzogbnVtYmVyO1xuICBpY29uPzogc3RyaW5nO1xuICBjb250cm9sVHlwZT86IENvbnRyb2xUeXBlID0gJ3RleHRib3gnO1xuICB0eXBlPzogRmllbGRUeXBlID0gJ3N0cmluZyc7XG4gIGVkaXRvcj86ICdudW1lcmljJyB8ICdib29sZWFuJyB8ICcnOyAvLyB0aGlzIGF0dHJpYnV0IGlzIGZvciBLZW5kby1HcmlkXG4gIG9wdGlvbnM/OiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBUIH1bXTtcbiAgdmFsdWVPcHRpb25zPzogc3RyaW5nW107XG4gIHZhbHVlUHJpbWl0aXZlPzogYm9vbGVhbjsgLy8gZm9yIGtlbmRvIGRyb3Bkb3duXG4gIHRleHRGaWVsZD86IHN0cmluZzsgLy8gZm9yIGtlbmRvIGRyb3Bkb3duXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7IC8vIGZvciBrZW5kbyBkcm9wZG93blxuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICB2YWx1ZUNoYW5nZUNhbGxiYWNrPzogKHZhbHVlOiBUKSA9PiB2b2lkO1xuICBjb2x1bW5UeXBlPzogQ29sdW1uVHlwZTtcbiAgYm9keT86IGFueTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQYXJ0aWFsPEZpZWxkRGVmaW5pdGlvbjxUPj4gPSB7fSkge1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb25zLnZhbHVlO1xuICAgIHRoaXMudmFsdWVMYWJlbCA9IG9wdGlvbnMudmFsdWVMYWJlbDtcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IG9wdGlvbnMuZGVmYXVsdFZhbHVlO1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlTGFiZWwgPSBvcHRpb25zLmRlZmF1bHRWYWx1ZUxhYmVsO1xuICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXkgfHwgJyc7XG4gICAgdGhpcy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwgJyc7XG4gICAgdGhpcy5kYXRlUmFuZ2VDb25maWcgPSBvcHRpb25zLmRhdGVSYW5nZUNvbmZpZztcbiAgICB0aGlzLmlzRGVmYXVsdFNlYXJjaEZpZWxkID0gb3B0aW9ucy5pc0RlZmF1bHRTZWFyY2hGaWVsZDtcbiAgICB0aGlzLnJlcXVpcmVkID0gISFvcHRpb25zLnJlcXVpcmVkO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBvcHRpb25zLmRpc2FibGVkO1xuICAgIHRoaXMub3JkZXIgPSBvcHRpb25zLm9yZGVyID09PSB1bmRlZmluZWQgPyAxIDogb3B0aW9ucy5vcmRlcjtcbiAgICB0aGlzLmljb24gPSBvcHRpb25zLmljb247XG4gICAgdGhpcy5jb250cm9sVHlwZSA9IG9wdGlvbnMuY29udHJvbFR5cGUgfHwgJ3RleHRib3gnO1xuICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnc3RyaW5nJztcbiAgICB0aGlzLmVkaXRvciA9IG9wdGlvbnMuZWRpdG9yIHx8ICcnO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICB0aGlzLnZhbHVlT3B0aW9ucyA9IG9wdGlvbnMudmFsdWVPcHRpb25zIHx8IFtdO1xuICAgIHRoaXMudmFsdWVQcmltaXRpdmUgPSBvcHRpb25zLnZhbHVlUHJpbWl0aXZlO1xuICAgIHRoaXMudGV4dEZpZWxkID0gb3B0aW9ucy50ZXh0RmllbGQ7XG4gICAgdGhpcy52YWx1ZUZpZWxkID0gb3B0aW9ucy52YWx1ZUZpZWxkO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gb3B0aW9ucy5lcnJvck1lc3NhZ2UgfHwgJyc7XG4gICAgdGhpcy53aWR0aCA9IG9wdGlvbnMud2lkdGg7XG4gICAgdGhpcy52YWx1ZUNoYW5nZUNhbGxiYWNrID0gb3B0aW9ucy52YWx1ZUNoYW5nZUNhbGxiYWNrO1xuICAgIHRoaXMuY29sdW1uVHlwZSA9IG9wdGlvbnMuY29sdW1uVHlwZTtcbiAgICB0aGlzLmJvZHkgPSBvcHRpb25zLmJvZHk7XG4gIH1cbn1cbiJdfQ==","import { FieldDefinition } from './field-definition';\nexport class ColumnDefinition extends FieldDefinition {\n index; // if the list of columns will be displayed in material edit-grid (angular material grid), index must be given\n format; // it could be: { style: 'currency', currency: 'EUR' }, { date: 'short' }\n hasFooter;\n hideInOverlay;\n // optionsAttribut is used in stock-receipt maintenance: StockReceiptItem.Unit has options for StockReceiptItem.Birimi\n optionsAttribut; // name of the attribut that has the options list for dropdown\n templateOutlet;\n constructor(options = {}) {\n super(options);\n this.index = options.index;\n this.format = options.format;\n this.hasFooter = options.hasFooter;\n this.hideInOverlay = options.hideInOverlay;\n this.optionsAttribut = options.optionsAttribut;\n this.templateOutlet = options.templateOutlet;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvbW9kZWxzL21hdC10YWJsZS1tb2RlbHMvY29sdW1uLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBU3JELE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxlQUFrQjtJQUMvRCxLQUFLLENBQVUsQ0FBQyw4R0FBOEc7SUFDOUgsTUFBTSxDQUFPLENBQUMseUVBQXlFO0lBQ3ZGLFNBQVMsQ0FBVztJQUNwQixhQUFhLENBQVc7SUFFeEIsc0hBQXNIO0lBQ3RILGVBQWUsQ0FBVSxDQUFDLDhEQUE4RDtJQUN4RixjQUFjLENBQWdDO0lBQzlDLFlBQVksVUFBd0MsRUFBRTtRQUNwRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZERlZmluaXRpb24gfSBmcm9tICcuL2ZpZWxkLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gY29sdW1uLWRlZmluaXRpb24udHNcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb250ZXh0PFQgPSBhbnk+IHtcbiAgJGltcGxpY2l0OiBUO1xuICBpbmRleD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlZmluaXRpb248VCA9IGFueT4gZXh0ZW5kcyBGaWVsZERlZmluaXRpb248VD4ge1xuICBpbmRleD86IG51bWJlcjsgLy8gaWYgdGhlIGxpc3Qgb2YgY29sdW1ucyB3aWxsIGJlIGRpc3BsYXllZCBpbiBtYXRlcmlhbCBlZGl0LWdyaWQgKGFuZ3VsYXIgbWF0ZXJpYWwgZ3JpZCksIGluZGV4IG11c3QgYmUgZ2l2ZW5cbiAgZm9ybWF0PzogYW55OyAvLyBpdCBjb3VsZCBiZTogeyBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdFVVInIH0sIHsgZGF0ZTogJ3Nob3J0JyB9XG4gIGhhc0Zvb3Rlcj86IGJvb2xlYW47XG4gIGhpZGVJbk92ZXJsYXk/OiBib29sZWFuO1xuXG4gIC8vIG9wdGlvbnNBdHRyaWJ1dCBpcyB1c2VkIGluIHN0b2NrLXJlY2VpcHQgbWFpbnRlbmFuY2U6IFN0b2NrUmVjZWlwdEl0ZW0uVW5pdCBoYXMgb3B0aW9ucyBmb3IgU3RvY2tSZWNlaXB0SXRlbS5CaXJpbWlcbiAgb3B0aW9uc0F0dHJpYnV0Pzogc3RyaW5nOyAvLyBuYW1lIG9mIHRoZSBhdHRyaWJ1dCB0aGF0IGhhcyB0aGUgb3B0aW9ucyBsaXN0IGZvciBkcm9wZG93blxuICB0ZW1wbGF0ZU91dGxldD86IFRlbXBsYXRlUmVmPFRhYmxlQ29udGV4dDxUPj47XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBhcnRpYWw8Q29sdW1uRGVmaW5pdGlvbjxUPj4gPSB7fSkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMuaW5kZXggPSBvcHRpb25zLmluZGV4O1xuICAgIHRoaXMuZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQ7XG4gICAgdGhpcy5oYXNGb290ZXIgPSBvcHRpb25zLmhhc0Zvb3RlcjtcbiAgICB0aGlzLmhpZGVJbk92ZXJsYXkgPSBvcHRpb25zLmhpZGVJbk92ZXJsYXk7XG4gICAgdGhpcy5vcHRpb25zQXR0cmlidXQgPSBvcHRpb25zLm9wdGlvbnNBdHRyaWJ1dDtcbiAgICB0aGlzLnRlbXBsYXRlT3V0bGV0ID0gb3B0aW9ucy50ZW1wbGF0ZU91dGxldDtcbiAgfVxufVxuIl19","export class TableCellIndex {\n row;\n column;\n constructor(row, column) {\n this.row = row;\n this.column = column;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvbWF0LXRhYmxlLW1vZGVscy90YWJsZS1jZWxsLWluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLEdBQUcsQ0FBUztJQUNaLE1BQU0sQ0FBUztJQUVmLFlBQVksR0FBVyxFQUFFLE1BQWM7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVGFibGVDZWxsSW5kZXgge1xuICByb3c6IG51bWJlcjtcbiAgY29sdW1uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSB7XG4gICAgdGhpcy5yb3cgPSByb3c7XG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gIH1cbn1cbiJdfQ==","export class Pagination {\n pageIndex;\n pageSize;\n maxSize;\n totalRecords;\n pageSizeOptions;\n /**\n * @param pageIndex Current page index (0-based for MatPagination compatibility)\n * @param pageSize Number of records per page\n * @param maxSize Maximum number of pages displayed in the pagination control\n * @param totalRecords Total number of records\n * @param pageSizeOptions Available page size options\n */\n constructor(pageIndex = 0, // MatPagination starts at 0\n pageSize = 25, maxSize = 5, totalRecords = 0, pageSizeOptions = [25, 50, 75, 100]) {\n this.pageIndex = pageIndex;\n this.pageSize = pageSize;\n this.maxSize = maxSize;\n this.totalRecords = totalRecords;\n this.pageSizeOptions = pageSizeOptions;\n }\n /**\n * Calculates the total number of pages.\n */\n getTotalPages() {\n return Math.ceil(this.totalRecords / this.pageSize);\n }\n /**\n * Updates the page size and resets the page index to the first page.\n * @param newPageSize The new page size\n */\n updatePageSize(newPageSize) {\n if (this.pageSizeOptions.includes(newPageSize)) {\n this.pageSize = newPageSize;\n this.pageIndex = 0; // Reset to first page\n }\n else {\n throw new Error(`Invalid page size: ${newPageSize}`);\n }\n }\n /**\n * Updates pagination data based on paginator event.\n * @param event MatPaginator event\n */\n updateFromPaginatorEvent(event) {\n this.pageIndex = event.pageIndex;\n this.pageSize = event.pageSize;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvcGFnaW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTLENBQVM7SUFDbEIsUUFBUSxDQUFTO0lBQ2pCLE9BQU8sQ0FBUztJQUNoQixZQUFZLENBQVM7SUFDckIsZUFBZSxDQUFXO0lBRTFCOzs7Ozs7T0FNRztJQUNILFlBQ0UsU0FBUyxHQUFHLENBQUMsRUFBRSw0QkFBNEI7SUFDM0MsUUFBUSxHQUFHLEVBQUUsRUFDYixPQUFPLEdBQUcsQ0FBQyxFQUNYLFlBQVksR0FBRyxDQUFDLEVBQ2hCLGtCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUU3QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsV0FBbUI7UUFDaEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QixDQUFDLEtBQVU7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGFnaW5hdGlvbiB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBtYXhTaXplOiBudW1iZXI7XG4gIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFnZUluZGV4IEN1cnJlbnQgcGFnZSBpbmRleCAoMC1iYXNlZCBmb3IgTWF0UGFnaW5hdGlvbiBjb21wYXRpYmlsaXR5KVxuICAgKiBAcGFyYW0gcGFnZVNpemUgTnVtYmVyIG9mIHJlY29yZHMgcGVyIHBhZ2VcbiAgICogQHBhcmFtIG1heFNpemUgTWF4aW11bSBudW1iZXIgb2YgcGFnZXMgZGlzcGxheWVkIGluIHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xcbiAgICogQHBhcmFtIHRvdGFsUmVjb3JkcyBUb3RhbCBudW1iZXIgb2YgcmVjb3Jkc1xuICAgKiBAcGFyYW0gcGFnZVNpemVPcHRpb25zIEF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcGFnZUluZGV4ID0gMCwgLy8gTWF0UGFnaW5hdGlvbiBzdGFydHMgYXQgMFxuICAgIHBhZ2VTaXplID0gMjUsXG4gICAgbWF4U2l6ZSA9IDUsXG4gICAgdG90YWxSZWNvcmRzID0gMCxcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzI1LCA1MCwgNzUsIDEwMF0sXG4gICkge1xuICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4O1xuICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgIHRoaXMudG90YWxSZWNvcmRzID0gdG90YWxSZWNvcmRzO1xuICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gcGFnZVNpemVPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcy5cbiAgICovXG4gIGdldFRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxSZWNvcmRzIC8gdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFnZSBzaXplIGFuZCByZXNldHMgdGhlIHBhZ2UgaW5kZXggdG8gdGhlIGZpcnN0IHBhZ2UuXG4gICAqIEBwYXJhbSBuZXdQYWdlU2l6ZSBUaGUgbmV3IHBhZ2Ugc2l6ZVxuICAgKi9cbiAgdXBkYXRlUGFnZVNpemUobmV3UGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VTaXplT3B0aW9ucy5pbmNsdWRlcyhuZXdQYWdlU2l6ZSkpIHtcbiAgICAgIHRoaXMucGFnZVNpemUgPSBuZXdQYWdlU2l6ZTtcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gMDsgLy8gUmVzZXQgdG8gZmlyc3QgcGFnZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFnZSBzaXplOiAke25ld1BhZ2VTaXplfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHBhZ2luYXRpb24gZGF0YSBiYXNlZCBvbiBwYWdpbmF0b3IgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBNYXRQYWdpbmF0b3IgZXZlbnRcbiAgICovXG4gIHVwZGF0ZUZyb21QYWdpbmF0b3JFdmVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wYWdlSW5kZXggPSBldmVudC5wYWdlSW5kZXg7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuICB9XG59XG4iXX0=","import { Component, Input, computed, signal, inject, output, input, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { Subject, takeUntil, debounceTime, of } from 'rxjs';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, } from '../../models';\nimport { AutocompleteWrapperService } from '../../services';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/overlay\";\nimport * as i2 from \"@angular/forms\";\nexport class ReusableAutocompleteComponent {\n dataSource = input([], ...(ngDevMode ? [{ debugName: \"dataSource\" }] : [])); // Para búsqueda local\n config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG;\n itemTemplate = input(...(ngDevMode ? [undefined, { debugName: \"itemTemplate\" }] : []));\n searchFunction = input(...(ngDevMode ? [undefined, { debugName: \"searchFunction\" }] : []));\n notFoundTemplate = input(...(ngDevMode ? [undefined, { debugName: \"notFoundTemplate\" }] : []));\n overlayWidth = input('auto', ...(ngDevMode ? [{ debugName: \"overlayWidth\" }] : []));\n overlayMaxHeight = input('400px', ...(ngDevMode ? [{ debugName: \"overlayMaxHeight\" }] : []));\n itemSelected = output();\n searchChanged = output();\n searchRequested = output(); // Nuevo evento\n pageChanged = output();\n filterChanged = output();\n advancedSearchClicked = output();\n allResultsClicked = output();\n createClicked = output();\n searchInput = viewChild.required('searchInput');\n historyListElement = viewChild('historyListElement', ...(ngDevMode ? [{ debugName: \"historyListElement\" }] : []));\n resultsListElement = viewChild('resultsListElement', ...(ngDevMode ? [{ debugName: \"resultsListElement\" }] : []));\n // State\n query = '';\n isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n overlayOpen = signal(false, ...(ngDevMode ? [{ debugName: \"overlayOpen\" }] : []));\n selectedIndex = signal(-1, ...(ngDevMode ? [{ debugName: \"selectedIndex\" }] : []));\n currentPage = signal(1, ...(ngDevMode ? [{ debugName: \"currentPage\" }] : []));\n filteredItems = signal([], ...(ngDevMode ? [{ debugName: \"filteredItems\" }] : []));\n historyList = signal([], ...(ngDevMode ? [{ debugName: \"historyList\" }] : []));\n totalCount = signal(0, ...(ngDevMode ? [{ debugName: \"totalCount\" }] : []));\n // Filters\n filters = {\n searchBy: 'name',\n stockFilter: 'all',\n };\n // Computed properties\n isHistoryVisible = computed(() => {\n return this.query.length < (this.config.minSearchLength || 2) && this.historyList().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"isHistoryVisible\" }] : []));\n totalItems = computed(() => this.filteredItems().length, ...(ngDevMode ? [{ debugName: \"totalItems\" }] : []));\n totalPages = computed(() => {\n const total = this.totalCount();\n return total > 0 ? Math.ceil(total / (this.config.itemsPerPage || 10)) : 1;\n }, ...(ngDevMode ? [{ debugName: \"totalPages\" }] : []));\n currentPageItems = computed(() => {\n // if (!this.config.enablePagination) {\n // }\n return this.filteredItems();\n // return this.autocompleteService.paginateItems(\n // this.filteredItems(),\n // this.currentPage(),\n // this.config.itemsPerPage || 10\n // );\n }, ...(ngDevMode ? [{ debugName: \"currentPageItems\" }] : []));\n startItem = computed(() => {\n const total = this.totalItems();\n if (total === 0)\n return 0;\n return (this.currentPage() - 1) * (this.config.itemsPerPage || 10) + 1;\n }, ...(ngDevMode ? [{ debugName: \"startItem\" }] : []));\n endItem = computed(() => {\n const total = this.totalItems();\n const calculated = this.currentPage() * (this.config.itemsPerPage || 10);\n return Math.min(calculated, total);\n }, ...(ngDevMode ? [{ debugName: \"endItem\" }] : []));\n sectionTitle = computed(() => {\n const total = this.totalItems();\n return `Resultados (${total})`;\n }, ...(ngDevMode ? [{ debugName: \"sectionTitle\" }] : []));\n isNoResults = computed(() => {\n return (this.totalItems() === 0 &&\n !this.isLoading() &&\n this.query.length >= (this.config.minSearchLength || 2));\n }, ...(ngDevMode ? [{ debugName: \"isNoResults\" }] : []));\n // Private\n destroy$ = new Subject();\n searchSubject = new Subject();\n autocompleteService = inject(AutocompleteWrapperService);\n ngOnInit() {\n this.mergeDefaultConfig();\n this.setupSearch();\n this.loadHistory();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n mergeDefaultConfig() {\n this.config = this.autocompleteService.mergeConfig(this.config);\n this.filters.searchBy = this.config.searchFields?.[0]?.value || 'name';\n this.filters.stockFilter = this.config.stockOptions?.[0]?.value || 'all';\n }\n setupSearch() {\n this.filteredItems.set([]);\n this.searchSubject\n .pipe(debounceTime(this.config.debounceTime || 300), \n // distinctUntilChanged(),\n // distinctUntilChanged((prev, curr) => {\n // console.log(prev);\n // console.log(curr);\n // return prev.query === curr.query &&\n // JSON.stringify(prev.filters) === JSON.stringify(curr.filters) &&\n // prev.page === curr.page\n //\n // }\n //\n // ),\n takeUntil(this.destroy$), switchMap(({ query }) => this.performSearch(query)))\n .subscribe(result => {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n });\n }\n performSearch(query) {\n if (query.length < (this.config.minSearchLength || 2)) {\n return of({ items: [], totalCount: 0 });\n }\n // ESTRATEGIA A: Función de búsqueda personalizada\n const searchFunction = this.searchFunction();\n if (searchFunction) {\n return searchFunction(query, this.filters, this.currentPage(), this.config.itemsPerPage || 10).pipe(catchError(() => of({ items: [], totalCount: 0 })));\n }\n // ESTRATEGIA B: Emit evento para que el padre maneje\n if (this.config.searchMode === 'remote') {\n this.searchRequested.emit({\n query,\n filters: this.filters,\n page: this.currentPage(),\n });\n return of({ items: [], totalCount: 0 }); // El padre actualizará los datos\n }\n // ESTRATEGIA C: Búsqueda local (fallback)\n return this.autocompleteService.searchLocal(this.dataSource(), query, this.filters, this.config);\n }\n loadHistory() {\n this.autocompleteService.history$.pipe(takeUntil(this.destroy$)).subscribe(history => {\n this.historyList.set(history);\n });\n }\n searchSubjectNext() {\n this.searchSubject.next({\n query: this.query,\n filters: this.filters,\n page: this.currentPage(),\n });\n }\n // Event Handlers\n onInput(event) {\n const target = event.target;\n this.query = target.value;\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.isLoading.set(true);\n this.searchSubjectNext();\n }\n else {\n this.filteredItems.set([]);\n this.isLoading.set(false);\n }\n this.showOverlay();\n this.searchChanged.emit(this.query);\n }\n onKeyDown(event) {\n const currentList = this.isHistoryVisible() ? this.historyList() : this.currentPageItems();\n const maxIndex = currentList.length - 1;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (maxIndex >= 0) {\n const nextIndex = this.selectedIndex() < maxIndex ? this.selectedIndex() + 1 : 0;\n this.selectedIndex.set(nextIndex);\n this.scrollToSelected();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (maxIndex >= 0) {\n const prevIndex = this.selectedIndex() > 0 ? this.selectedIndex() - 1 : maxIndex;\n this.selectedIndex.set(prevIndex);\n this.scrollToSelected();\n }\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedIndex() >= 0 && this.selectedIndex() <= maxIndex) {\n this.selectItem(currentList[this.selectedIndex()]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.hideOverlay();\n break;\n case 'PageDown':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToNextPage();\n }\n break;\n case 'PageUp':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToPreviousPage();\n }\n break;\n }\n }\n onFilterChange() {\n this.currentPage.set(1);\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(this.query);\n this.searchSubjectNext();\n }\n // this.filterChanged.emit(this.filters);\n }\n // Método público para actualizar resultados desde el padre\n updateSearchResults(result) {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n }\n // Overlay Methods\n showOverlay() {\n this.overlayOpen.set(true);\n }\n hideOverlay() {\n this.overlayOpen.set(false);\n this.selectedIndex.set(-1);\n }\n isType(item) {\n return typeof item === 'string';\n }\n // Selection Methods\n selectItem(item) {\n if (this.config.clearInput) {\n this.query = '';\n }\n else {\n this.query = this.getItemDisplayText(item);\n }\n this.hideOverlay();\n this.currentPage.set(1);\n this.autocompleteService.addToHistory(item, this.config.maxHistoryItems);\n this.itemSelected.emit(item);\n setTimeout(() => {\n this.searchInput()?.nativeElement?.focus();\n }, 100);\n }\n clearSearch() {\n this.query = '';\n this.filteredItems.set([]);\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n this.searchInput()?.nativeElement?.focus();\n this.searchChanged.emit('');\n }\n // History Methods\n removeHistoryItem(index, event) {\n event.stopPropagation();\n this.autocompleteService.removeFromHistory(index);\n }\n clearHistory() {\n this.autocompleteService.clearHistory();\n }\n // Pagination Methods\n goToPage(event) {\n const target = event.target;\n const page = parseInt(target.value);\n if (this.autocompleteService.isValidPage(page, this.totalPages())) {\n this.currentPage.set(page);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(page);\n this.searchSubjectNext();\n }\n else {\n target.value = this.currentPage().toString();\n }\n }\n goToFirstPage() {\n if (this.currentPage() !== 1) {\n this.currentPage.set(1);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(1);\n this.searchSubjectNext();\n }\n }\n goToPreviousPage() {\n const prevPage = this.currentPage() - 1;\n if (prevPage >= 1) {\n this.currentPage.set(prevPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(prevPage);\n this.searchSubjectNext();\n }\n }\n goToNextPage() {\n const nextPage = this.currentPage() + 1;\n if (nextPage <= this.totalPages()) {\n this.currentPage.set(nextPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(nextPage);\n this.searchSubjectNext();\n }\n }\n goToLastPage() {\n const lastPage = this.totalPages();\n if (this.currentPage() !== lastPage) {\n this.currentPage.set(lastPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(lastPage);\n this.searchSubjectNext();\n }\n }\n // Footer Actions\n onCreateNew(_$event) {\n //$event.stopPropagation();\n // this.hideOverlay();\n this.createClicked.emit(this.query);\n }\n onAdvancedSearch() {\n this.hideOverlay();\n this.advancedSearchClicked.emit();\n }\n onShowAllResults() {\n this.hideOverlay();\n this.allResultsClicked.emit(this.query);\n }\n // Utility Methods\n getItemDisplayText(item) {\n return this.autocompleteService.getItemDisplayText(item);\n }\n noResultsText() {\n return `No se encontraron resultados para \"${this.query}\"`;\n }\n scrollToSelected() {\n const listElement = this.isHistoryVisible()\n ? this.historyListElement()?.nativeElement\n : this.resultsListElement()?.nativeElement;\n if (listElement) {\n const selectedElement = listElement.children[this.selectedIndex()];\n if (selectedElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n }\n // Public API\n getState() {\n return {\n query: this.query,\n isLoading: this.isLoading(),\n overlayOpen: this.overlayOpen(),\n selectedIndex: this.selectedIndex(),\n pagination: {\n currentPage: this.currentPage(),\n totalPages: this.totalPages(),\n totalItems: this.totalItems(),\n itemsPerPage: this.config.itemsPerPage || 10,\n startItem: this.startItem(),\n endItem: this.endItem(),\n hasNextPage: this.currentPage() < this.totalPages(),\n hasPreviousPage: this.currentPage() > 1,\n },\n hasResults: this.totalItems() > 0,\n isHistoryVisible: this.isHistoryVisible(),\n historyCount: this.historyList().length,\n filters: this.filters,\n };\n }\n setQuery(query) {\n this.query = query;\n this.currentPage.set(1);\n if (query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(query);\n this.showOverlay();\n }\n else {\n this.filteredItems.set([]);\n if (query.length === 0) {\n this.hideOverlay();\n }\n }\n this.searchChanged.emit(query);\n }\n focus() {\n this.searchInput()?.nativeElement?.focus();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ReusableAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: ReusableAutocompleteComponent, isStandalone: true, selector: \"acp-autocomplete-wrapper\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: \"config\", publicName: \"config\", isSignal: false, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, searchFunction: { classPropertyName: \"searchFunction\", publicName: \"searchFunction\", isSignal: true, isRequired: false, transformFunction: null }, notFoundTemplate: { classPropertyName: \"notFoundTemplate\", publicName: \"notFoundTemplate\", isSignal: true, isRequired: false, transformFunction: null }, overlayWidth: { classPropertyName: \"overlayWidth\", publicName: \"overlayWidth\", isSignal: true, isRequired: false, transformFunction: null }, overlayMaxHeight: { classPropertyName: \"overlayMaxHeight\", publicName: \"overlayMaxHeight\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: \"itemSelected\", searchChanged: \"searchChanged\", searchRequested: \"searchRequested\", pageChanged: \"pageChanged\", filterChanged: \"filterChanged\", advancedSearchClicked: \"advancedSearchClicked\", allResultsClicked: \"allResultsClicked\", createClicked: \"createClicked\" }, viewQueries: [{ propertyName: \"searchInput\", first: true, predicate: [\"searchInput\"], descendants: true, isSignal: true }, { propertyName: \"historyListElement\", first: true, predicate: [\"historyListElement\"], descendants: true, isSignal: true }, { propertyName: \"resultsListElement\", first: true, predicate: [\"resultsListElement\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"acp-autocomplete-wrapper\\\" [class.acp-autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <!-- Input Container -->\\n <div\\n class=\\\"acp-autocomplete-wrapper-input-container\\\"\\n cdkOverlayOrigin\\n #overlayPosition=\\\"cdkOverlayOrigin\\\"\\n >\\n <div class=\\\"acp-autocomplete-wrapper-input-wrapper\\\">\\n <mat-icon class=\\\"acp-autocomplete-wrapper-search-icon\\\">search</mat-icon>\\n <input\\n #searchInput\\n type=\\\"text\\\"\\n class=\\\"acp-autocomplete-wrapper-input-field\\\"\\n [placeholder]=\\\"config.placeholder\\\"\\n [(ngModel)]=\\\"query\\\"\\n (input)=\\\"onInput($event)\\\"\\n (click)=\\\"showOverlay()\\\"\\n (keydown)=\\\"onKeyDown($event)\\\"\\n [disabled]=\\\"config.disabled || false\\\"\\n autocomplete=\\\"off\\\"\\n />\\n @if (query && query.length > 0 && !isLoading()) {\\n <button\\n mat-icon-button\\n (click)=\\\"clearSearch()\\\"\\n type=\\\"button\\\"\\n class=\\\"acp-autocomplete-wrapper-clear-button\\\"\\n >\\n <mat-icon>clear</mat-icon>\\n </button>\\n }\\n <button mat-icon-button type=\\\"button\\\">\\n <mat-icon>add</mat-icon>\\n </button>\\n </div>\\n\\n @if (isLoading()) {\\n <div class=\\\"acp-autocomplete-wrapper-loading-spinner\\\">\\n <mat-spinner diameter=\\\"20\\\" />\\n </div>\\n }\\n </div>\\n\\n <!-- Overlay -->\\n <ng-template\\n cdkConnectedOverlay\\n [cdkConnectedOverlayOrigin]=\\\"overlayPosition\\\"\\n [cdkConnectedOverlayOpen]=\\\"overlayOpen()\\\"\\n [cdkConnectedOverlayWidth]=\\\"overlayWidth()\\\"\\n [cdkConnectedOverlayHeight]=\\\"overlayMaxHeight()\\\"\\n (overlayOutsideClick)=\\\"hideOverlay()\\\"\\n (backdropClick)=\\\"hideOverlay()\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-dropdown\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <div class=\\\"autocomplete-wrapper-dropdown-content\\\">\\n <!-- History Section -->\\n @if (isHistoryVisible() && historyList().length > 0) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">B\\u00FAsquedas recientes</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n (click)=\\\"clearHistory()\\\"\\n class=\\\"autocomplete-wrapper-clear-history-button\\\"\\n >\\n <mat-icon>delete_outline</mat-icon>\\n </button>\\n </div>\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #historyListElement\\n >\\n @for (item of historyList(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-history-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <mat-icon class=\\\"autocomplete-wrapper-history-icon\\\">history</mat-icon>\\n <div class=\\\"autocomplete-wrapper-item-details\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"autocomplete-wrapper-remove-button\\\"\\n (click)=\\\"removeHistoryItem($index, $event)\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </li>\\n }\\n </ul>\\n </div>\\n }\\n\\n <!-- Results Section -->\\n @if (!isHistoryVisible()) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <!-- Header with filters and pagination -->\\n @if (config.enableFilters || config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n\\n <!-- Filters -->\\n @if (config.enableFilters) {\\n <div class=\\\"autocomplete-wrapper-filter-controls\\\">\\n @if (config.searchFields && config.searchFields.length > 1) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"searchBySelect\\\"\\n >Buscar por:</label\\n >\\n <select\\n id=\\\"searchBySelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.searchBy\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (field of config.searchFields; track $index) {\\n <option [value]=\\\"field.value\\\">{{ field.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n\\n @if (config.enableStockFilter && config.stockOptions) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"stockSelect\\\"\\n >Stock:</label\\n >\\n <select\\n id=\\\"stockSelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.stockFilter\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (option of config.stockOptions; track $index) {\\n <option [value]=\\\"option.value\\\">{{ option.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Pagination Controls -->\\n @if (config.enablePagination && totalPages() > 1) {\\n <div class=\\\"autocomplete-wrapper-pagination-header\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-info\\\">\\n <span>P\\u00E1gina {{ currentPage() }} de {{ totalPages() }}</span>\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToFirstPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>first_page</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <input\\n type=\\\"number\\\"\\n class=\\\"autocomplete-wrapper-page-input\\\"\\n [value]=\\\"currentPage()\\\"\\n [min]=\\\"1\\\"\\n [max]=\\\"totalPages()\\\"\\n (change)=\\\"goToPage($event)\\\"\\n />\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToLastPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>last_page</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n </div>\\n }\\n\\n <!-- Items List -->\\n @if (totalItems()) {\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #resultsListElement\\n >\\n @for (item of currentPageItems(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-result-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-item-info\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n\\n <!-- No Results -->\\n @if (!isLoading() && isNoResults()) {\\n <div class=\\\"autocomplete-wrapper-no-results\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-no-results-icon\\\">search_off</mat-icon>\\n <div class=\\\"autocomplete-wrapper-no-results-content\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n notFoundTemplate() || defaultNotFoundTemplate;\\n context: { $implicit: noResultsText() }\\n \\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <!-- Footer -->\\n @if (overlayOpen() && totalItems() > 0) {\\n <div class=\\\"autocomplete-wrapper-footer\\\">\\n @if (!isHistoryVisible() && totalItems() > 0 && config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-pagination-footer\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-summary\\\">\\n Mostrando {{ startItem() }}-{{ endItem() }} de {{ totalCount() }} resultados\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls-footer\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <span class=\\\"autocomplete-wrapper-page-indicator\\\"\\n >{{ currentPage() }} / {{ totalPages() }}</span\\n >\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n\\n @if (config.enableFooterActions) {\\n <div class=\\\"autocomplete-wrapper-footer-actions\\\">\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-create-button\\\"\\n (click)=\\\"onCreateNew($event)\\\"\\n >\\n <mat-icon>add</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Crear</span>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-search-button\\\"\\n (click)=\\\"onAdvancedSearch()\\\"\\n >\\n <mat-icon>tune</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Avanzada</span>\\n </button>\\n @if (!isHistoryVisible() && totalItems() > 0) {\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-results-button\\\"\\n (click)=\\\"onShowAllResults()\\\"\\n >\\n <mat-icon>list</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Todos</span>\\n </button>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Default Templates -->\\n <ng-template #defaultItemTemplate let-item>\\n <div class=\\\"autocomplete-wrapper-default-item\\\">\\n <div class=\\\"autocomplete-wrapper-item-name\\\">{{ getItemDisplayText(item) }}</div>\\n @if (item.description && typeof item === 'object') {\\n <div class=\\\"autocomplete-wrapper-item-description\\\">{{ item.description }}</div>\\n }\\n </div>\\n </ng-template>\\n\\n <ng-template #defaultNotFoundTemplate let-text>\\n <div class=\\\"autocomplete-wrapper-default-no-results\\\">\\n <p>{{ text }}</p>\\n <p>Intenta con otros t\\u00E9rminos de b\\u00FAsqueda</p>\\n </div>\\n </ng-template>\\n</div>\\n\", styles: [\".acp-autocomplete-wrapper{display:block}.acp-autocomplete-wrapper{position:relative;width:100%;max-width:100%}.acp-autocomplete-wrapper.acp-autocomplete-wrapper-active .acp-autocomplete-wrapper-input-wrapper{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-input-container{position:relative;width:100%}.acp-autocomplete-wrapper-input-wrapper{position:relative;display:flex;align-items:center;background:var(--mat-sys-surface, white);border:1px solid var(--mat-sys-outline-variant, #e0e0e0);border-radius:8px;padding:0 12px;transition:all .3s ease}.acp-autocomplete-wrapper-input-wrapper:focus-within{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-search-icon{color:var(--mat-sys-on-surface-variant, #666);margin-right:8px;font-size:20px}.acp-autocomplete-wrapper-input-field{flex:1;border:none;outline:none;font-size:16px;padding:7px 0;background:transparent;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-input-field::placeholder{color:var(--mat-sys-on-surface-variant, #999)}.acp-autocomplete-wrapper-input-field:disabled{opacity:.6;cursor:not-allowed}.acp-autocomplete-wrapper-clear-button{margin-left:8px;color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-loading-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.acp-autocomplete-wrapper-dropdown{background:var(--mat-sys-surface-container, white);border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid var(--mat-sys-outline-variant, #e0e0e0);overflow:hidden;max-height:500px;min-width:300px;display:flex;flex-direction:column}.acp-autocomplete-wrapper-dropdown.acp-autocomplete-wrapper-active{animation:reusableAutocompleteSlideIn .2s ease-out}@keyframes reusableAutocompleteSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.acp-autocomplete-wrapper-dropdown-content{display:flex;flex-direction:column;height:100%;max-height:500px}.acp-autocomplete-wrapper-section{display:flex;flex-direction:column;height:100%;min-height:0}.acp-autocomplete-wrapper-section-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 8px;border-bottom:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;min-height:56px;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-section-title{font-size:13px;font-weight:500;color:var(--mat-sys-on-surface-variant, #666);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.acp-autocomplete-wrapper-clear-history-button{color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-history-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-filter-controls{display:flex;align-items:center;gap:16px;flex:1;justify-content:center}.acp-autocomplete-wrapper-filter-group{display:flex;align-items:center;gap:6px}.acp-autocomplete-wrapper-filter-label{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);font-weight:500;white-space:nowrap}.acp-autocomplete-wrapper-filter-select{padding:4px 8px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;font-size:12px;background:var(--mat-sys-surface, white);color:var(--mat-sys-on-surface, #333);cursor:pointer;min-width:120px}.acp-autocomplete-wrapper-filter-select:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 1px #1976d233}.acp-autocomplete-wrapper-filter-select:hover{border-color:#bbb}.acp-autocomplete-wrapper-pagination-header{display:flex;align-items:center;gap:12px;margin-left:auto}.acp-autocomplete-wrapper-pagination-info{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls{display:flex;align-items:center;gap:4px}.acp-autocomplete-wrapper-pagination-button{min-width:32px;height:32px;line-height:32px;padding:0;color:var(--mat-sys-on-surface-variant, #666);background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.acp-autocomplete-wrapper-pagination-button:hover:not(:disabled){background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-pagination-button:disabled{opacity:.5;cursor:not-allowed}.acp-autocomplete-wrapper-pagination-button mat-icon{font-size:18px;width:18px;height:18px}.acp-autocomplete-wrapper-page-input{width:50px;height:32px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;text-align:center;font-size:12px;padding:4px;margin:0 4px}.acp-autocomplete-wrapper-page-input:focus{outline:none;border-color:#1976d2}.acp-autocomplete-wrapper-items-list{list-style:none;margin:0;padding:0;flex:1;min-height:0}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{overflow-y:auto}.acp-autocomplete-wrapper-list-item{display:flex;align-items:center;border-bottom:1px solid var(--mat-sys-outline-variant, #f5f5f5);transition:background-color .2s ease}.acp-autocomplete-wrapper-list-item:last-child{border-bottom:none}.acp-autocomplete-wrapper-list-item:hover{background-color:var(--mat-sys-surface-variant, #f8f9fa)}.acp-autocomplete-wrapper-item-content{flex:1;display:flex;align-items:center;padding:12px 16px;cursor:pointer;min-height:48px;transition:all .2s ease}.acp-autocomplete-wrapper-item-content.acp-autocomplete-wrapper-selected{background-color:var(--mat-sys-primary-container, #e3f2fd);color:var(--mat-sys-on-primary-container, #1976d2)}.acp-autocomplete-wrapper-history-item .acp-autocomplete-wrapper-item-content{padding-left:12px}.acp-autocomplete-wrapper-history-icon{color:var(--mat-sys-on-surface-variant, #999);margin-right:12px;font-size:18px}.acp-autocomplete-wrapper-item-details{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-remove-button{margin-right:8px}.acp-autocomplete-wrapper-result-item{position:relative}.acp-autocomplete-wrapper-item-info{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-default-item{flex:1}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-name{font-weight:500;font-size:14px;margin-bottom:2px;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-description{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acp-autocomplete-wrapper-no-results{display:flex;flex-direction:column;align-items:center;padding:32px 16px;text-align:center;color:var(--mat-sys-on-surface-variant, #666)}.acp-autocomplete-wrapper-no-results-icon{font-size:48px;color:var(--mat-sys-outline, #ccc);margin-bottom:16px;width:45px;height:45px}.acp-autocomplete-wrapper-no-results-content{font-size:14px;line-height:1.5}.acp-autocomplete-wrapper-default-no-results{text-align:center}.acp-autocomplete-wrapper-default-no-results p:first-child{font-weight:500;margin-bottom:8px}.acp-autocomplete-wrapper-footer{border-top:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.acp-autocomplete-wrapper-pagination-footer{display:flex;align-items:center;justify-content:space-between;width:100%;gap:16px}.acp-autocomplete-wrapper-pagination-summary{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls-footer{display:flex;align-items:center;gap:8px}.acp-autocomplete-wrapper-page-indicator{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);min-width:40px;text-align:center}.acp-autocomplete-wrapper-footer-actions{display:flex;gap:8px;flex-wrap:wrap}.acp-autocomplete-wrapper-footer-button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;font-size:13px;text-transform:none;white-space:nowrap;background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;padding:8px 12px;transition:all .2s ease}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button{background-color:#4caf500a;border-color:#4caf50;color:#4caf50}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button:hover{background-color:#4caf5014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button{background-color:#ff98000a;border-color:#ff9800;color:#ff9800}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button:hover{background-color:#ff980014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button{background-color:#3f51b50a;border-color:#3f51b5;color:#3f51b5}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button:hover{background-color:#3f51b514}.acp-autocomplete-wrapper-button-text{display:inline}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar{width:6px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}@media (max-width: 768px){.acp-autocomplete-wrapper-dropdown{min-width:280px;max-height:60vh}.acp-autocomplete-wrapper-dropdown-content{max-height:60vh}.acp-autocomplete-wrapper-input-field{font-size:16px}.acp-autocomplete-wrapper-footer{padding:8px 12px}.acp-autocomplete-wrapper-footer-actions{flex-direction:column;gap:6px}.acp-autocomplete-wrapper-footer-button{width:100%;min-height:44px}.acp-autocomplete-wrapper-pagination-footer{flex-direction:column;gap:8px}.acp-autocomplete-wrapper-section-header{flex-direction:column;align-items:flex-start;min-height:80px;gap:8px}.acp-autocomplete-wrapper-filter-controls{width:100%;justify-content:flex-start;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-filter-select{min-width:100px;font-size:11px}.acp-autocomplete-wrapper-filter-label{font-size:11px}.acp-autocomplete-wrapper-pagination-header{width:100%;justify-content:space-between}.acp-autocomplete-wrapper-pagination-header .acp-autocomplete-wrapper-pagination-info{display:none}.acp-autocomplete-wrapper-pagination-controls{gap:2px}.acp-autocomplete-wrapper-page-input{width:40px}.acp-autocomplete-wrapper-item-content{padding:16px 12px;min-height:52px}.acp-autocomplete-wrapper-button-text{font-size:12px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:250px}}@media (max-width: 480px){.acp-autocomplete-wrapper-dropdown{min-width:260px;max-height:50vh}.acp-autocomplete-wrapper-section-header{padding:8px 12px 6px;min-height:70px;gap:6px}.acp-autocomplete-wrapper-filter-controls{gap:8px}.acp-autocomplete-wrapper-filter-group{gap:4px}.acp-autocomplete-wrapper-filter-select{min-width:90px;padding:3px 6px}.acp-autocomplete-wrapper-item-content{padding:14px 12px}.acp-autocomplete-wrapper-pagination-header{gap:8px}.acp-autocomplete-wrapper-pagination-button{min-width:28px;height:28px}.acp-autocomplete-wrapper-page-input{width:35px;height:28px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:200px}.acp-autocomplete-wrapper-footer-actions{gap:4px}.acp-autocomplete-wrapper-footer-button{font-size:12px;padding:8px 12px;min-height:40px}.acp-autocomplete-wrapper-button-text{display:none}}\\n\"], dependencies: [{ kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: OverlayModule }, { kind: \"directive\", type: i1.CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: [\"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPositionStrategy\", \"cdkConnectedOverlayOffsetX\", \"cdkConnectedOverlayOffsetY\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayHeight\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayMinHeight\", \"cdkConnectedOverlayBackdropClass\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayViewportMargin\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayDisableClose\", \"cdkConnectedOverlayTransformOriginOn\", \"cdkConnectedOverlayHasBackdrop\", \"cdkConnectedOverlayLockPosition\", \"cdkConnectedOverlayFlexibleDimensions\", \"cdkConnectedOverlayGrowAfterOpen\", \"cdkConnectedOverlayPush\", \"cdkConnectedOverlayDisposeOnNavigation\"], outputs: [\"backdropClick\", \"positionChange\", \"attach\", \"detach\", \"overlayKeydown\", \"overlayOutsideClick\"], exportAs: [\"cdkConnectedOverlay\"] }, { kind: \"directive\", type: i1.CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"] }, { kind: \"ngmodule\", type: MatProgressBarModule }, { kind: \"component\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: [\"color\", \"mode\", \"value\", \"diameter\", \"strokeWidth\"], exportAs: [\"matProgressSpinner\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: [\"compareWith\"] }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ReusableAutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-autocomplete-wrapper', imports: [\n MatIcon,\n NgTemplateOutlet,\n OverlayModule,\n MatProgressBarModule,\n MatProgressSpinner,\n FormsModule,\n MatIconButton,\n ], encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"acp-autocomplete-wrapper\\\" [class.acp-autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <!-- Input Container -->\\n <div\\n class=\\\"acp-autocomplete-wrapper-input-container\\\"\\n cdkOverlayOrigin\\n #overlayPosition=\\\"cdkOverlayOrigin\\\"\\n >\\n <div class=\\\"acp-autocomplete-wrapper-input-wrapper\\\">\\n <mat-icon class=\\\"acp-autocomplete-wrapper-search-icon\\\">search</mat-icon>\\n <input\\n #searchInput\\n type=\\\"text\\\"\\n class=\\\"acp-autocomplete-wrapper-input-field\\\"\\n [placeholder]=\\\"config.placeholder\\\"\\n [(ngModel)]=\\\"query\\\"\\n (input)=\\\"onInput($event)\\\"\\n (click)=\\\"showOverlay()\\\"\\n (keydown)=\\\"onKeyDown($event)\\\"\\n [disabled]=\\\"config.disabled || false\\\"\\n autocomplete=\\\"off\\\"\\n />\\n @if (query && query.length > 0 && !isLoading()) {\\n <button\\n mat-icon-button\\n (click)=\\\"clearSearch()\\\"\\n type=\\\"button\\\"\\n class=\\\"acp-autocomplete-wrapper-clear-button\\\"\\n >\\n <mat-icon>clear</mat-icon>\\n </button>\\n }\\n <button mat-icon-button type=\\\"button\\\">\\n <mat-icon>add</mat-icon>\\n </button>\\n </div>\\n\\n @if (isLoading()) {\\n <div class=\\\"acp-autocomplete-wrapper-loading-spinner\\\">\\n <mat-spinner diameter=\\\"20\\\" />\\n </div>\\n }\\n </div>\\n\\n <!-- Overlay -->\\n <ng-template\\n cdkConnectedOverlay\\n [cdkConnectedOverlayOrigin]=\\\"overlayPosition\\\"\\n [cdkConnectedOverlayOpen]=\\\"overlayOpen()\\\"\\n [cdkConnectedOverlayWidth]=\\\"overlayWidth()\\\"\\n [cdkConnectedOverlayHeight]=\\\"overlayMaxHeight()\\\"\\n (overlayOutsideClick)=\\\"hideOverlay()\\\"\\n (backdropClick)=\\\"hideOverlay()\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-dropdown\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <div class=\\\"autocomplete-wrapper-dropdown-content\\\">\\n <!-- History Section -->\\n @if (isHistoryVisible() && historyList().length > 0) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">B\\u00FAsquedas recientes</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n (click)=\\\"clearHistory()\\\"\\n class=\\\"autocomplete-wrapper-clear-history-button\\\"\\n >\\n <mat-icon>delete_outline</mat-icon>\\n </button>\\n </div>\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #historyListElement\\n >\\n @for (item of historyList(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-history-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <mat-icon class=\\\"autocomplete-wrapper-history-icon\\\">history</mat-icon>\\n <div class=\\\"autocomplete-wrapper-item-details\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"autocomplete-wrapper-remove-button\\\"\\n (click)=\\\"removeHistoryItem($index, $event)\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </li>\\n }\\n </ul>\\n </div>\\n }\\n\\n <!-- Results Section -->\\n @if (!isHistoryVisible()) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <!-- Header with filters and pagination -->\\n @if (config.enableFilters || config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n\\n <!-- Filters -->\\n @if (config.enableFilters) {\\n <div class=\\\"autocomplete-wrapper-filter-controls\\\">\\n @if (config.searchFields && config.searchFields.length > 1) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"searchBySelect\\\"\\n >Buscar por:</label\\n >\\n <select\\n id=\\\"searchBySelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.searchBy\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (field of config.searchFields; track $index) {\\n <option [value]=\\\"field.value\\\">{{ field.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n\\n @if (config.enableStockFilter && config.stockOptions) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"stockSelect\\\"\\n >Stock:</label\\n >\\n <select\\n id=\\\"stockSelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.stockFilter\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (option of config.stockOptions; track $index) {\\n <option [value]=\\\"option.value\\\">{{ option.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Pagination Controls -->\\n @if (config.enablePagination && totalPages() > 1) {\\n <div class=\\\"autocomplete-wrapper-pagination-header\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-info\\\">\\n <span>P\\u00E1gina {{ currentPage() }} de {{ totalPages() }}</span>\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToFirstPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>first_page</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <input\\n type=\\\"number\\\"\\n class=\\\"autocomplete-wrapper-page-input\\\"\\n [value]=\\\"currentPage()\\\"\\n [min]=\\\"1\\\"\\n [max]=\\\"totalPages()\\\"\\n (change)=\\\"goToPage($event)\\\"\\n />\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToLastPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>last_page</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n </div>\\n }\\n\\n <!-- Items List -->\\n @if (totalItems()) {\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #resultsListElement\\n >\\n @for (item of currentPageItems(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-result-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-item-info\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n\\n <!-- No Results -->\\n @if (!isLoading() && isNoResults()) {\\n <div class=\\\"autocomplete-wrapper-no-results\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-no-results-icon\\\">search_off</mat-icon>\\n <div class=\\\"autocomplete-wrapper-no-results-content\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n notFoundTemplate() || defaultNotFoundTemplate;\\n context: { $implicit: noResultsText() }\\n \\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <!-- Footer -->\\n @if (overlayOpen() && totalItems() > 0) {\\n <div class=\\\"autocomplete-wrapper-footer\\\">\\n @if (!isHistoryVisible() && totalItems() > 0 && config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-pagination-footer\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-summary\\\">\\n Mostrando {{ startItem() }}-{{ endItem() }} de {{ totalCount() }} resultados\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls-footer\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <span class=\\\"autocomplete-wrapper-page-indicator\\\"\\n >{{ currentPage() }} / {{ totalPages() }}</span\\n >\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n\\n @if (config.enableFooterActions) {\\n <div class=\\\"autocomplete-wrapper-footer-actions\\\">\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-create-button\\\"\\n (click)=\\\"onCreateNew($event)\\\"\\n >\\n <mat-icon>add</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Crear</span>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-search-button\\\"\\n (click)=\\\"onAdvancedSearch()\\\"\\n >\\n <mat-icon>tune</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Avanzada</span>\\n </button>\\n @if (!isHistoryVisible() && totalItems() > 0) {\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-results-button\\\"\\n (click)=\\\"onShowAllResults()\\\"\\n >\\n <mat-icon>list</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Todos</span>\\n </button>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Default Templates -->\\n <ng-template #defaultItemTemplate let-item>\\n <div class=\\\"autocomplete-wrapper-default-item\\\">\\n <div class=\\\"autocomplete-wrapper-item-name\\\">{{ getItemDisplayText(item) }}</div>\\n @if (item.description && typeof item === 'object') {\\n <div class=\\\"autocomplete-wrapper-item-description\\\">{{ item.description }}</div>\\n }\\n </div>\\n </ng-template>\\n\\n <ng-template #defaultNotFoundTemplate let-text>\\n <div class=\\\"autocomplete-wrapper-default-no-results\\\">\\n <p>{{ text }}</p>\\n <p>Intenta con otros t\\u00E9rminos de b\\u00FAsqueda</p>\\n </div>\\n </ng-template>\\n</div>\\n\", styles: [\".acp-autocomplete-wrapper{display:block}.acp-autocomplete-wrapper{position:relative;width:100%;max-width:100%}.acp-autocomplete-wrapper.acp-autocomplete-wrapper-active .acp-autocomplete-wrapper-input-wrapper{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-input-container{position:relative;width:100%}.acp-autocomplete-wrapper-input-wrapper{position:relative;display:flex;align-items:center;background:var(--mat-sys-surface, white);border:1px solid var(--mat-sys-outline-variant, #e0e0e0);border-radius:8px;padding:0 12px;transition:all .3s ease}.acp-autocomplete-wrapper-input-wrapper:focus-within{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-search-icon{color:var(--mat-sys-on-surface-variant, #666);margin-right:8px;font-size:20px}.acp-autocomplete-wrapper-input-field{flex:1;border:none;outline:none;font-size:16px;padding:7px 0;background:transparent;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-input-field::placeholder{color:var(--mat-sys-on-surface-variant, #999)}.acp-autocomplete-wrapper-input-field:disabled{opacity:.6;cursor:not-allowed}.acp-autocomplete-wrapper-clear-button{margin-left:8px;color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-loading-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.acp-autocomplete-wrapper-dropdown{background:var(--mat-sys-surface-container, white);border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid var(--mat-sys-outline-variant, #e0e0e0);overflow:hidden;max-height:500px;min-width:300px;display:flex;flex-direction:column}.acp-autocomplete-wrapper-dropdown.acp-autocomplete-wrapper-active{animation:reusableAutocompleteSlideIn .2s ease-out}@keyframes reusableAutocompleteSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.acp-autocomplete-wrapper-dropdown-content{display:flex;flex-direction:column;height:100%;max-height:500px}.acp-autocomplete-wrapper-section{display:flex;flex-direction:column;height:100%;min-height:0}.acp-autocomplete-wrapper-section-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 8px;border-bottom:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;min-height:56px;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-section-title{font-size:13px;font-weight:500;color:var(--mat-sys-on-surface-variant, #666);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.acp-autocomplete-wrapper-clear-history-button{color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-history-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-filter-controls{display:flex;align-items:center;gap:16px;flex:1;justify-content:center}.acp-autocomplete-wrapper-filter-group{display:flex;align-items:center;gap:6px}.acp-autocomplete-wrapper-filter-label{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);font-weight:500;white-space:nowrap}.acp-autocomplete-wrapper-filter-select{padding:4px 8px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;font-size:12px;background:var(--mat-sys-surface, white);color:var(--mat-sys-on-surface, #333);cursor:pointer;min-width:120px}.acp-autocomplete-wrapper-filter-select:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 1px #1976d233}.acp-autocomplete-wrapper-filter-select:hover{border-color:#bbb}.acp-autocomplete-wrapper-pagination-header{display:flex;align-items:center;gap:12px;margin-left:auto}.acp-autocomplete-wrapper-pagination-info{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls{display:flex;align-items:center;gap:4px}.acp-autocomplete-wrapper-pagination-button{min-width:32px;height:32px;line-height:32px;padding:0;color:var(--mat-sys-on-surface-variant, #666);background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.acp-autocomplete-wrapper-pagination-button:hover:not(:disabled){background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-pagination-button:disabled{opacity:.5;cursor:not-allowed}.acp-autocomplete-wrapper-pagination-button mat-icon{font-size:18px;width:18px;height:18px}.acp-autocomplete-wrapper-page-input{width:50px;height:32px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;text-align:center;font-size:12px;padding:4px;margin:0 4px}.acp-autocomplete-wrapper-page-input:focus{outline:none;border-color:#1976d2}.acp-autocomplete-wrapper-items-list{list-style:none;margin:0;padding:0;flex:1;min-height:0}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{overflow-y:auto}.acp-autocomplete-wrapper-list-item{display:flex;align-items:center;border-bottom:1px solid var(--mat-sys-outline-variant, #f5f5f5);transition:background-color .2s ease}.acp-autocomplete-wrapper-list-item:last-child{border-bottom:none}.acp-autocomplete-wrapper-list-item:hover{background-color:var(--mat-sys-surface-variant, #f8f9fa)}.acp-autocomplete-wrapper-item-content{flex:1;display:flex;align-items:center;padding:12px 16px;cursor:pointer;min-height:48px;transition:all .2s ease}.acp-autocomplete-wrapper-item-content.acp-autocomplete-wrapper-selected{background-color:var(--mat-sys-primary-container, #e3f2fd);color:var(--mat-sys-on-primary-container, #1976d2)}.acp-autocomplete-wrapper-history-item .acp-autocomplete-wrapper-item-content{padding-left:12px}.acp-autocomplete-wrapper-history-icon{color:var(--mat-sys-on-surface-variant, #999);margin-right:12px;font-size:18px}.acp-autocomplete-wrapper-item-details{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-remove-button{margin-right:8px}.acp-autocomplete-wrapper-result-item{position:relative}.acp-autocomplete-wrapper-item-info{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-default-item{flex:1}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-name{font-weight:500;font-size:14px;margin-bottom:2px;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-description{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acp-autocomplete-wrapper-no-results{display:flex;flex-direction:column;align-items:center;padding:32px 16px;text-align:center;color:var(--mat-sys-on-surface-variant, #666)}.acp-autocomplete-wrapper-no-results-icon{font-size:48px;color:var(--mat-sys-outline, #ccc);margin-bottom:16px;width:45px;height:45px}.acp-autocomplete-wrapper-no-results-content{font-size:14px;line-height:1.5}.acp-autocomplete-wrapper-default-no-results{text-align:center}.acp-autocomplete-wrapper-default-no-results p:first-child{font-weight:500;margin-bottom:8px}.acp-autocomplete-wrapper-footer{border-top:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.acp-autocomplete-wrapper-pagination-footer{display:flex;align-items:center;justify-content:space-between;width:100%;gap:16px}.acp-autocomplete-wrapper-pagination-summary{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls-footer{display:flex;align-items:center;gap:8px}.acp-autocomplete-wrapper-page-indicator{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);min-width:40px;text-align:center}.acp-autocomplete-wrapper-footer-actions{display:flex;gap:8px;flex-wrap:wrap}.acp-autocomplete-wrapper-footer-button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;font-size:13px;text-transform:none;white-space:nowrap;background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;padding:8px 12px;transition:all .2s ease}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button{background-color:#4caf500a;border-color:#4caf50;color:#4caf50}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button:hover{background-color:#4caf5014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button{background-color:#ff98000a;border-color:#ff9800;color:#ff9800}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button:hover{background-color:#ff980014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button{background-color:#3f51b50a;border-color:#3f51b5;color:#3f51b5}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button:hover{background-color:#3f51b514}.acp-autocomplete-wrapper-button-text{display:inline}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar{width:6px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}@media (max-width: 768px){.acp-autocomplete-wrapper-dropdown{min-width:280px;max-height:60vh}.acp-autocomplete-wrapper-dropdown-content{max-height:60vh}.acp-autocomplete-wrapper-input-field{font-size:16px}.acp-autocomplete-wrapper-footer{padding:8px 12px}.acp-autocomplete-wrapper-footer-actions{flex-direction:column;gap:6px}.acp-autocomplete-wrapper-footer-button{width:100%;min-height:44px}.acp-autocomplete-wrapper-pagination-footer{flex-direction:column;gap:8px}.acp-autocomplete-wrapper-section-header{flex-direction:column;align-items:flex-start;min-height:80px;gap:8px}.acp-autocomplete-wrapper-filter-controls{width:100%;justify-content:flex-start;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-filter-select{min-width:100px;font-size:11px}.acp-autocomplete-wrapper-filter-label{font-size:11px}.acp-autocomplete-wrapper-pagination-header{width:100%;justify-content:space-between}.acp-autocomplete-wrapper-pagination-header .acp-autocomplete-wrapper-pagination-info{display:none}.acp-autocomplete-wrapper-pagination-controls{gap:2px}.acp-autocomplete-wrapper-page-input{width:40px}.acp-autocomplete-wrapper-item-content{padding:16px 12px;min-height:52px}.acp-autocomplete-wrapper-button-text{font-size:12px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:250px}}@media (max-width: 480px){.acp-autocomplete-wrapper-dropdown{min-width:260px;max-height:50vh}.acp-autocomplete-wrapper-section-header{padding:8px 12px 6px;min-height:70px;gap:6px}.acp-autocomplete-wrapper-filter-controls{gap:8px}.acp-autocomplete-wrapper-filter-group{gap:4px}.acp-autocomplete-wrapper-filter-select{min-width:90px;padding:3px 6px}.acp-autocomplete-wrapper-item-content{padding:14px 12px}.acp-autocomplete-wrapper-pagination-header{gap:8px}.acp-autocomplete-wrapper-pagination-button{min-width:28px;height:28px}.acp-autocomplete-wrapper-page-input{width:35px;height:28px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:200px}.acp-autocomplete-wrapper-footer-actions{gap:4px}.acp-autocomplete-wrapper-footer-button{font-size:12px;padding:8px 12px;min-height:40px}.acp-autocomplete-wrapper-button-text{display:none}}\\n\"] }]\n }], propDecorators: { config: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXdyYXBwZXIvYXV0b2NvbXBsZXRlLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXdyYXBwZXIvYXV0b2NvbXBsZXRlLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLG1DQUFtQyxHQU9wQyxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWdCNUQsTUFBTSxPQUFPLDZCQUE2QjtJQUMvQixVQUFVLEdBQUcsS0FBSyxDQUE0QixFQUFFLHNEQUFDLENBQUMsQ0FBQyxzQkFBc0I7SUFDekUsTUFBTSxHQUE4QixtQ0FBbUMsQ0FBQztJQUN4RSxZQUFZLEdBQUcsS0FBSyxrRUFBb0IsQ0FBQztJQUN6QyxjQUFjLEdBQUcsS0FBSyxvRUFBcUMsQ0FBQztJQUU1RCxnQkFBZ0IsR0FBRyxLQUFLLHNFQUFvQixDQUFDO0lBRXRELFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSx3REFBQyxDQUFDO0lBQzdCLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxPQUFPLDREQUFDLENBQUM7SUFFbEMsWUFBWSxHQUFHLE1BQU0sRUFBMkIsQ0FBQztJQUNqRCxhQUFhLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFDakMsZUFBZSxHQUFHLE1BQU0sRUFBd0UsQ0FBQyxDQUFDLGVBQWU7SUFDakgsV0FBVyxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBQy9CLGFBQWEsR0FBRyxNQUFNLEVBQThCLENBQUM7SUFDckQscUJBQXFCLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDdkMsaUJBQWlCLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFDckMsYUFBYSxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBRXhCLFdBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUErQixhQUFhLENBQUMsQ0FBQztJQUM5RSxrQkFBa0IsR0FBRyxTQUFTLENBQStCLG9CQUFvQiw4REFBQyxDQUFDO0lBQ25GLGtCQUFrQixHQUFHLFNBQVMsQ0FBK0Isb0JBQW9CLDhEQUFDLENBQUM7SUFFNUYsUUFBUTtJQUNSLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUsscURBQUMsQ0FBQztJQUMxQixXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssdURBQUMsQ0FBQztJQUM1QixhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyx5REFBQyxDQUFDO0lBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyx1REFBQyxDQUFDO0lBQ3hCLGFBQWEsR0FBRyxNQUFNLENBQTRCLEVBQUUseURBQUMsQ0FBQztJQUN0RCxXQUFXLEdBQUcsTUFBTSxDQUE0QixFQUFFLHVEQUFDLENBQUM7SUFDcEQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLHNEQUFDLENBQUM7SUFDdkIsVUFBVTtJQUNWLE9BQU8sR0FBK0I7UUFDcEMsUUFBUSxFQUFFLE1BQU07UUFDaEIsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztJQUVGLHNCQUFzQjtJQUN0QixnQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqRyxDQUFDLDREQUFDLENBQUM7SUFFSCxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLHNEQUFDLENBQUM7SUFFekQsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQyxzREFBQyxDQUFDO0lBRUgsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMvQix1Q0FBdUM7UUFDdkMsSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVCLGlEQUFpRDtRQUNqRCwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLG1DQUFtQztRQUNuQyxLQUFLO0lBQ1AsQ0FBQyw0REFBQyxDQUFDO0lBRUgsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLElBQUksS0FBSyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUMscURBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUMsbURBQUMsQ0FBQztJQUVILFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxPQUFPLGVBQWUsS0FBSyxHQUFHLENBQUM7SUFDakMsQ0FBQyx3REFBQyxDQUFDO0lBRUgsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDMUIsT0FBTyxDQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1lBQ3ZCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQyx1REFBQyxDQUFDO0lBRUgsVUFBVTtJQUNGLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBaUQsQ0FBQztJQUM3RSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUVqRSxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUMzRSxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYTthQUNmLElBQUksQ0FDSCxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDO1FBQzdDLDBCQUEwQjtRQUMxQiwwQ0FBMEM7UUFDMUMsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qiw0Q0FBNEM7UUFDNUMsMEVBQTBFO1FBQzFFLGlDQUFpQztRQUNqQyxFQUFFO1FBQ0YsT0FBTztRQUNQLEVBQUU7UUFDRixNQUFNO1FBQ04sU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNwRDthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFhO1FBQ2pDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEQsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxrREFBa0Q7UUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsT0FBTyxjQUFjLENBQ25CLEtBQUssRUFDTCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUMvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELHFEQUFxRDtRQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUN4QixLQUFLO2dCQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1FBQzVFLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUN6QyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLEtBQUssRUFDTCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixPQUFPLENBQUMsS0FBWTtRQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBb0I7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0YsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFeEMsUUFBUSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbEIsS0FBSyxXQUFXO2dCQUNkLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixDQUFDO2dCQUNELE1BQU07WUFFUixLQUFLLFNBQVM7Z0JBQ1osS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO29CQUNqRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsTUFBTTtZQUVSLEtBQUssT0FBTztnQkFDVixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTTtZQUVSLEtBQUssUUFBUTtnQkFDWCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsTUFBTTtZQUVSLEtBQUssVUFBVTtnQkFDYixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQzdELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztnQkFDRCxNQUFNO1lBRVIsS0FBSyxRQUFRO2dCQUNYLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCx5Q0FBeUM7SUFDM0MsQ0FBQztJQUVELDJEQUEyRDtJQUNwRCxtQkFBbUIsQ0FBQyxNQUF1QztRQUNoRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVM7UUFDZCxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLFVBQVUsQ0FBQyxJQUE2QjtRQUN0QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsS0FBWTtRQUMzQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsUUFBUSxDQUFDLEtBQVk7UUFDbkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLFdBQVcsQ0FBQyxPQUFtQjtRQUM3QiwyQkFBMkI7UUFDM0Isc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCLENBQUMsSUFBNkI7UUFDOUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLHNDQUFzQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7SUFDN0QsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLGFBQWE7WUFDMUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLGFBQWEsQ0FBQztRQUU3QyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFnQixDQUFDO1lBQ2xGLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLGVBQWUsQ0FBQyxjQUFjLENBQUM7b0JBQzdCLEtBQUssRUFBRSxTQUFTO29CQUNoQixRQUFRLEVBQUUsUUFBUTtpQkFDbkIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtJQUNOLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ25DLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDL0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzdCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksRUFBRTtnQkFDNUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25ELGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQzthQUN4QztZQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQztZQUNqQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNO1lBQ3ZDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM3QyxDQUFDO3VHQXhjVSw2QkFBNkI7MkZBQTdCLDZCQUE2Qix1dERDbEQxQyw2OWJBOFVBLCtrWER4U0ksT0FBTywySUFDUCxnQkFBZ0IsbUpBQ2hCLGFBQWEsMHJDQUNiLG9CQUFvQiwrQkFDcEIsa0JBQWtCLDhLQUNsQixXQUFXLDBnQ0FDWCxhQUFhOzsyRkFNSiw2QkFBNkI7a0JBZnpDLFNBQVM7K0JBQ0UsMEJBQTBCLFdBQzNCO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLGFBQWE7cUJBQ2QsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs4QkFJNUIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG4gIGluamVjdCxcbiAgb3V0cHV0LFxuICBpbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLFxuICBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnLFxuICBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0sXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbixcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdCxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclN0YXRlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXInLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SWNvbixcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25CdXR0b24sXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdXRvY29tcGxldGUtd3JhcHBlci5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFJldXNhYmxlQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBkYXRhU291cmNlID0gaW5wdXQ8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXT4oW10pOyAvLyBQYXJhIGLDunNxdWVkYSBsb2NhbFxuICBASW5wdXQoKSBjb25maWc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSBBVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRztcbiAgcmVhZG9ubHkgaXRlbVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgc2VhcmNoRnVuY3Rpb24gPSBpbnB1dDxBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoRnVuY3Rpb24+KCk7XG5cbiAgcmVhZG9ubHkgbm90Rm91bmRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgb3ZlcmxheVdpZHRoID0gaW5wdXQoJ2F1dG8nKTtcbiAgb3ZlcmxheU1heEhlaWdodCA9IGlucHV0KCc0MDBweCcpO1xuXG4gIGl0ZW1TZWxlY3RlZCA9IG91dHB1dDxBdXRvY29tcGxldGVXcmFwcGVySXRlbT4oKTtcbiAgc2VhcmNoQ2hhbmdlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHNlYXJjaFJlcXVlc3RlZCA9IG91dHB1dDx7IHF1ZXJ5OiBzdHJpbmc7IGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzOyBwYWdlOiBudW1iZXIgfT4oKTsgLy8gTnVldm8gZXZlbnRvXG4gIHBhZ2VDaGFuZ2VkID0gb3V0cHV0PG51bWJlcj4oKTtcbiAgZmlsdGVyQ2hhbmdlZCA9IG91dHB1dDxBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycz4oKTtcbiAgYWR2YW5jZWRTZWFyY2hDbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGFsbFJlc3VsdHNDbGlja2VkID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgY3JlYXRlQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoSW5wdXQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3NlYXJjaElucHV0Jyk7XG4gIHJlYWRvbmx5IGhpc3RvcnlMaXN0RWxlbWVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+PignaGlzdG9yeUxpc3RFbGVtZW50Jyk7XG4gIHJlYWRvbmx5IHJlc3VsdHNMaXN0RWxlbWVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+PigncmVzdWx0c0xpc3RFbGVtZW50Jyk7XG5cbiAgLy8gU3RhdGVcbiAgcXVlcnkgPSAnJztcbiAgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgb3ZlcmxheU9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKC0xKTtcbiAgY3VycmVudFBhZ2UgPSBzaWduYWwoMSk7XG4gIGZpbHRlcmVkSXRlbXMgPSBzaWduYWw8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXT4oW10pO1xuICBoaXN0b3J5TGlzdCA9IHNpZ25hbDxBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdPihbXSk7XG4gIHRvdGFsQ291bnQgPSBzaWduYWwoMCk7XG4gIC8vIEZpbHRlcnNcbiAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMgPSB7XG4gICAgc2VhcmNoQnk6ICduYW1lJyxcbiAgICBzdG9ja0ZpbHRlcjogJ2FsbCcsXG4gIH07XG5cbiAgLy8gQ29tcHV0ZWQgcHJvcGVydGllc1xuICBpc0hpc3RvcnlWaXNpYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5Lmxlbmd0aCA8ICh0aGlzLmNvbmZpZy5taW5TZWFyY2hMZW5ndGggfHwgMikgJiYgdGhpcy5oaXN0b3J5TGlzdCgpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHRvdGFsSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlcmVkSXRlbXMoKS5sZW5ndGgpO1xuXG4gIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsQ291bnQoKTtcbiAgICByZXR1cm4gdG90YWwgPiAwID8gTWF0aC5jZWlsKHRvdGFsIC8gKHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCkpIDogMTtcbiAgfSk7XG5cbiAgY3VycmVudFBhZ2VJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAvLyB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJdGVtcygpO1xuICAgIC8vIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UucGFnaW5hdGVJdGVtcyhcbiAgICAvLyAgIHRoaXMuZmlsdGVyZWRJdGVtcygpLFxuICAgIC8vICAgdGhpcy5jdXJyZW50UGFnZSgpLFxuICAgIC8vICAgdGhpcy5jb25maWcuaXRlbXNQZXJQYWdlIHx8IDEwXG4gICAgLy8gKTtcbiAgfSk7XG5cbiAgc3RhcnRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbEl0ZW1zKCk7XG4gICAgaWYgKHRvdGFsID09PSAwKSByZXR1cm4gMDtcbiAgICByZXR1cm4gKHRoaXMuY3VycmVudFBhZ2UoKSAtIDEpICogKHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCkgKyAxO1xuICB9KTtcblxuICBlbmRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbEl0ZW1zKCk7XG4gICAgY29uc3QgY2FsY3VsYXRlZCA9IHRoaXMuY3VycmVudFBhZ2UoKSAqICh0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2UgfHwgMTApO1xuICAgIHJldHVybiBNYXRoLm1pbihjYWxjdWxhdGVkLCB0b3RhbCk7XG4gIH0pO1xuXG4gIHNlY3Rpb25UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMudG90YWxJdGVtcygpO1xuICAgIHJldHVybiBgUmVzdWx0YWRvcyAoJHt0b3RhbH0pYDtcbiAgfSk7XG5cbiAgaXNOb1Jlc3VsdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudG90YWxJdGVtcygpID09PSAwICYmXG4gICAgICAhdGhpcy5pc0xvYWRpbmcoKSAmJlxuICAgICAgdGhpcy5xdWVyeS5sZW5ndGggPj0gKHRoaXMuY29uZmlnLm1pblNlYXJjaExlbmd0aCB8fCAyKVxuICAgICk7XG4gIH0pO1xuXG4gIC8vIFByaXZhdGVcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgcXVlcnk6IHN0cmluZzsgZmlsdGVyczogYW55OyBwYWdlOiBudW1iZXIgfT4oKTtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVTZXJ2aWNlID0gaW5qZWN0KEF1dG9jb21wbGV0ZVdyYXBwZXJTZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1lcmdlRGVmYXVsdENvbmZpZygpO1xuICAgIHRoaXMuc2V0dXBTZWFyY2goKTtcbiAgICB0aGlzLmxvYWRIaXN0b3J5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlRGVmYXVsdENvbmZpZygpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5tZXJnZUNvbmZpZyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5maWx0ZXJzLnNlYXJjaEJ5ID0gdGhpcy5jb25maWcuc2VhcmNoRmllbGRzPy5bMF0/LnZhbHVlIHx8ICduYW1lJztcbiAgICB0aGlzLmZpbHRlcnMuc3RvY2tGaWx0ZXIgPSB0aGlzLmNvbmZpZy5zdG9ja09wdGlvbnM/LlswXT8udmFsdWUgfHwgJ2FsbCc7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU2VhcmNoKCkge1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5zZXQoW10pO1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmNvbmZpZy5kZWJvdW5jZVRpbWUgfHwgMzAwKSxcbiAgICAgICAgLy8gZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgLy8gIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIC8vICAgIGNvbnNvbGUubG9nKHByZXYpO1xuICAgICAgICAvLyAgICBjb25zb2xlLmxvZyhjdXJyKTtcbiAgICAgICAgLy8gICAgICByZXR1cm4gIHByZXYucXVlcnkgPT09IGN1cnIucXVlcnkgJiZcbiAgICAgICAgLy8gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXYuZmlsdGVycykgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIuZmlsdGVycykgJiZcbiAgICAgICAgLy8gICAgICAgIHByZXYucGFnZSA9PT0gY3Vyci5wYWdlXG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IHF1ZXJ5IH0pID0+IHRoaXMucGVyZm9ybVNlYXJjaChxdWVyeSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMuc2V0KHJlc3VsdC5pdGVtcyk7XG4gICAgICAgIHRoaXMudG90YWxDb3VudC5zZXQocmVzdWx0LnRvdGFsQ291bnQpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBlcmZvcm1TZWFyY2gocXVlcnk6IHN0cmluZyk6IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdD4ge1xuICAgIGlmIChxdWVyeS5sZW5ndGggPCAodGhpcy5jb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpKSB7XG4gICAgICByZXR1cm4gb2YoeyBpdGVtczogW10sIHRvdGFsQ291bnQ6IDAgfSk7XG4gICAgfVxuXG4gICAgLy8gRVNUUkFURUdJQSBBOiBGdW5jacOzbiBkZSBiw7pzcXVlZGEgcGVyc29uYWxpemFkYVxuICAgIGNvbnN0IHNlYXJjaEZ1bmN0aW9uID0gdGhpcy5zZWFyY2hGdW5jdGlvbigpO1xuICAgIGlmIChzZWFyY2hGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHNlYXJjaEZ1bmN0aW9uKFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgdGhpcy5maWx0ZXJzLFxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlKCksXG4gICAgICAgIHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCxcbiAgICAgICkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKHsgaXRlbXM6IFtdLCB0b3RhbENvdW50OiAwIH0pKSk7XG4gICAgfVxuXG4gICAgLy8gRVNUUkFURUdJQSBCOiBFbWl0IGV2ZW50byBwYXJhIHF1ZSBlbCBwYWRyZSBtYW5lamVcbiAgICBpZiAodGhpcy5jb25maWcuc2VhcmNoTW9kZSA9PT0gJ3JlbW90ZScpIHtcbiAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlKCksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiBbXSwgdG90YWxDb3VudDogMCB9KTsgLy8gRWwgcGFkcmUgYWN0dWFsaXphcsOhIGxvcyBkYXRvc1xuICAgIH1cblxuICAgIC8vIEVTVFJBVEVHSUEgQzogQsO6c3F1ZWRhIGxvY2FsIChmYWxsYmFjaylcbiAgICByZXR1cm4gdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlLnNlYXJjaExvY2FsKFxuICAgICAgdGhpcy5kYXRhU291cmNlKCksXG4gICAgICBxdWVyeSxcbiAgICAgIHRoaXMuZmlsdGVycyxcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRIaXN0b3J5KCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5oaXN0b3J5JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGhpc3RvcnkgPT4ge1xuICAgICAgdGhpcy5oaXN0b3J5TGlzdC5zZXQoaGlzdG9yeSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaFN1YmplY3ROZXh0KCkge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJ5LFxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSgpLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gRXZlbnQgSGFuZGxlcnNcbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnF1ZXJ5ID0gdGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuXG4gICAgaWYgKHRoaXMucXVlcnkubGVuZ3RoID49ICh0aGlzLmNvbmZpZy5taW5TZWFyY2hMZW5ndGggfHwgMikpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdE5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zLnNldChbXSk7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICB0aGlzLnNlYXJjaENoYW5nZWQuZW1pdCh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaXN0ID0gdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCkgPyB0aGlzLmhpc3RvcnlMaXN0KCkgOiB0aGlzLmN1cnJlbnRQYWdlSXRlbXMoKTtcbiAgICBjb25zdCBtYXhJbmRleCA9IGN1cnJlbnRMaXN0Lmxlbmd0aCAtIDE7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKG1heEluZGV4ID49IDApIHtcbiAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLnNlbGVjdGVkSW5kZXgoKSA8IG1heEluZGV4ID8gdGhpcy5zZWxlY3RlZEluZGV4KCkgKyAxIDogMDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAobWF4SW5kZXggPj0gMCkge1xuICAgICAgICAgIGNvbnN0IHByZXZJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleCgpID4gMCA/IHRoaXMuc2VsZWN0ZWRJbmRleCgpIC0gMSA6IG1heEluZGV4O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQocHJldkluZGV4KTtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4KCkgPj0gMCAmJiB0aGlzLnNlbGVjdGVkSW5kZXgoKSA8PSBtYXhJbmRleCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShjdXJyZW50TGlzdFt0aGlzLnNlbGVjdGVkSW5kZXgoKV0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCkgJiYgdGhpcy5jb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgIHRoaXMuZ29Ub05leHRQYWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCkgJiYgdGhpcy5jb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgIGlmICh0aGlzLnF1ZXJ5Lmxlbmd0aCA+PSAodGhpcy5jb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpKSB7XG4gICAgICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5xdWVyeSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfVxuICAgIC8vIHRoaXMuZmlsdGVyQ2hhbmdlZC5lbWl0KHRoaXMuZmlsdGVycyk7XG4gIH1cblxuICAvLyBNw6l0b2RvIHDDumJsaWNvIHBhcmEgYWN0dWFsaXphciByZXN1bHRhZG9zIGRlc2RlIGVsIHBhZHJlXG4gIHB1YmxpYyB1cGRhdGVTZWFyY2hSZXN1bHRzKHJlc3VsdDogQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdCkge1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5zZXQocmVzdWx0Lml0ZW1zKTtcbiAgICB0aGlzLnRvdGFsQ291bnQuc2V0KHJlc3VsdC50b3RhbENvdW50KTtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLy8gT3ZlcmxheSBNZXRob2RzXG4gIHNob3dPdmVybGF5KCkge1xuICAgIHRoaXMub3ZlcmxheU9wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgaGlkZU92ZXJsYXkoKSB7XG4gICAgdGhpcy5vdmVybGF5T3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICB9XG5cbiAgaXNUeXBlKGl0ZW06IGFueSk6IGl0ZW0gaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgLy8gU2VsZWN0aW9uIE1ldGhvZHNcbiAgc2VsZWN0SXRlbShpdGVtOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jbGVhcklucHV0KSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcnkgPSB0aGlzLmdldEl0ZW1EaXNwbGF5VGV4dChpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5hZGRUb0hpc3RvcnkoaXRlbSwgdGhpcy5jb25maWcubWF4SGlzdG9yeUl0ZW1zKTtcbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0KCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMuc2V0KFtdKTtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCgxKTtcbiAgICB0aGlzLnNlYXJjaElucHV0KCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgdGhpcy5zZWFyY2hDaGFuZ2VkLmVtaXQoJycpO1xuICB9XG5cbiAgLy8gSGlzdG9yeSBNZXRob2RzXG4gIHJlbW92ZUhpc3RvcnlJdGVtKGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5yZW1vdmVGcm9tSGlzdG9yeShpbmRleCk7XG4gIH1cblxuICBjbGVhckhpc3RvcnkoKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlLmNsZWFySGlzdG9yeSgpO1xuICB9XG5cbiAgLy8gUGFnaW5hdGlvbiBNZXRob2RzXG4gIGdvVG9QYWdlKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IHBhZ2UgPSBwYXJzZUludCh0YXJnZXQudmFsdWUpO1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UuaXNWYWxpZFBhZ2UocGFnZSwgdGhpcy50b3RhbFBhZ2VzKCkpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UpO1xuICAgICAgdGhpcy5zZWFyY2hTdWJqZWN0TmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXQudmFsdWUgPSB0aGlzLmN1cnJlbnRQYWdlKCkudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBnb1RvRmlyc3RQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgIT09IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgtMSk7XG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoMSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub1ByZXZpb3VzUGFnZSgpIHtcbiAgICBjb25zdCBwcmV2UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKSAtIDE7XG4gICAgaWYgKHByZXZQYWdlID49IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHByZXZQYWdlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHByZXZQYWdlKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdE5leHQoKTtcbiAgICB9XG4gIH1cblxuICBnb1RvTmV4dFBhZ2UoKSB7XG4gICAgY29uc3QgbmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgKyAxO1xuICAgIGlmIChuZXh0UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQobmV4dFBhZ2UpO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgtMSk7XG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQobmV4dFBhZ2UpO1xuICAgICAgdGhpcy5zZWFyY2hTdWJqZWN0TmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9MYXN0UGFnZSgpIHtcbiAgICBjb25zdCBsYXN0UGFnZSA9IHRoaXMudG90YWxQYWdlcygpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKCkgIT09IGxhc3RQYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChsYXN0UGFnZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChsYXN0UGFnZSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9vdGVyIEFjdGlvbnNcbiAgb25DcmVhdGVOZXcoXyRldmVudDogTW91c2VFdmVudCkge1xuICAgIC8vJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIC8vIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmNyZWF0ZUNsaWNrZWQuZW1pdCh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIG9uQWR2YW5jZWRTZWFyY2goKSB7XG4gICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hDbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2hvd0FsbFJlc3VsdHMoKSB7XG4gICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIHRoaXMuYWxsUmVzdWx0c0NsaWNrZWQuZW1pdCh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIC8vIFV0aWxpdHkgTWV0aG9kc1xuICBnZXRJdGVtRGlzcGxheVRleHQoaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UuZ2V0SXRlbURpc3BsYXlUZXh0KGl0ZW0pO1xuICB9XG5cbiAgbm9SZXN1bHRzVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcyBwYXJhIFwiJHt0aGlzLnF1ZXJ5fVwiYDtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9TZWxlY3RlZCgpIHtcbiAgICBjb25zdCBsaXN0RWxlbWVudCA9IHRoaXMuaXNIaXN0b3J5VmlzaWJsZSgpXG4gICAgICA/IHRoaXMuaGlzdG9yeUxpc3RFbGVtZW50KCk/Lm5hdGl2ZUVsZW1lbnRcbiAgICAgIDogdGhpcy5yZXN1bHRzTGlzdEVsZW1lbnQoKT8ubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChsaXN0RWxlbWVudCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gbGlzdEVsZW1lbnQuY2hpbGRyZW5bdGhpcy5zZWxlY3RlZEluZGV4KCldIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQdWJsaWMgQVBJXG4gIHB1YmxpYyBnZXRTdGF0ZSgpOiBBdXRvY29tcGxldGVXcmFwcGVyU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmcoKSxcbiAgICAgIG92ZXJsYXlPcGVuOiB0aGlzLm92ZXJsYXlPcGVuKCksXG4gICAgICBzZWxlY3RlZEluZGV4OiB0aGlzLnNlbGVjdGVkSW5kZXgoKSxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UoKSxcbiAgICAgICAgdG90YWxQYWdlczogdGhpcy50b3RhbFBhZ2VzKCksXG4gICAgICAgIHRvdGFsSXRlbXM6IHRoaXMudG90YWxJdGVtcygpLFxuICAgICAgICBpdGVtc1BlclBhZ2U6IHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMCxcbiAgICAgICAgc3RhcnRJdGVtOiB0aGlzLnN0YXJ0SXRlbSgpLFxuICAgICAgICBlbmRJdGVtOiB0aGlzLmVuZEl0ZW0oKSxcbiAgICAgICAgaGFzTmV4dFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UoKSA8IHRoaXMudG90YWxQYWdlcygpLFxuICAgICAgICBoYXNQcmV2aW91c1BhZ2U6IHRoaXMuY3VycmVudFBhZ2UoKSA+IDEsXG4gICAgICB9LFxuICAgICAgaGFzUmVzdWx0czogdGhpcy50b3RhbEl0ZW1zKCkgPiAwLFxuICAgICAgaXNIaXN0b3J5VmlzaWJsZTogdGhpcy5pc0hpc3RvcnlWaXNpYmxlKCksXG4gICAgICBoaXN0b3J5Q291bnQ6IHRoaXMuaGlzdG9yeUxpc3QoKS5sZW5ndGgsXG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xuICAgIGlmIChxdWVyeS5sZW5ndGggPj0gKHRoaXMuY29uZmlnLm1pblNlYXJjaExlbmd0aCB8fCAyKSkge1xuICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTtcbiAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zLnNldChbXSk7XG4gICAgICBpZiAocXVlcnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWFyY2hDaGFuZ2VkLmVtaXQocXVlcnkpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQoKT8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFjcC1hdXRvY29tcGxldGUtd3JhcHBlclwiIFtjbGFzcy5hY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXItYWN0aXZlXT1cIm92ZXJsYXlPcGVuKClcIj5cbiAgPCEtLSBJbnB1dCBDb250YWluZXIgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFjcC1hdXRvY29tcGxldGUtd3JhcHBlci1pbnB1dC1jb250YWluZXJcIlxuICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAjb3ZlcmxheVBvc2l0aW9uPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYWNwLWF1dG9jb21wbGV0ZS13cmFwcGVyLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFjcC1hdXRvY29tcGxldGUtd3JhcHBlci1zZWFyY2gtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXItaW5wdXQtZmllbGRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeVwiXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwic2hvd092ZXJsYXkoKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAvPlxuICAgICAgQGlmIChxdWVyeSAmJiBxdWVyeS5sZW5ndGggPiAwICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYWNwLWF1dG9jb21wbGV0ZS13cmFwcGVyLWNsZWFyLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXItbG9hZGluZy1zcGlubmVyXCI+XG4gICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjIwXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPCEtLSBPdmVybGF5IC0tPlxuICA8bmctdGVtcGxhdGVcbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3ZlcmxheVBvc2l0aW9uXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwib3ZlcmxheU9wZW4oKVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJvdmVybGF5V2lkdGgoKVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHRdPVwib3ZlcmxheU1heEhlaWdodCgpXCJcbiAgICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJoaWRlT3ZlcmxheSgpXCJcbiAgICAoYmFja2Ryb3BDbGljayk9XCJoaWRlT3ZlcmxheSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1kcm9wZG93blwiIFtjbGFzcy5hdXRvY29tcGxldGUtd3JhcHBlci1hY3RpdmVdPVwib3ZlcmxheU9wZW4oKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWRyb3Bkb3duLWNvbnRlbnRcIj5cbiAgICAgICAgPCEtLSBIaXN0b3J5IFNlY3Rpb24gLS0+XG4gICAgICAgIEBpZiAoaXNIaXN0b3J5VmlzaWJsZSgpICYmIGhpc3RvcnlMaXN0KCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+QsO6c3F1ZWRhcyByZWNpZW50ZXM8L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJIaXN0b3J5KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItY2xlYXItaGlzdG9yeS1idXR0b25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW1zLWxpc3QgYXV0b2NvbXBsZXRlLXdyYXBwZXItc2Nyb2xsYWJsZS1saXN0XCJcbiAgICAgICAgICAgICAgI2hpc3RvcnlMaXN0RWxlbWVudFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGhpc3RvcnlMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWxpc3QtaXRlbSBhdXRvY29tcGxldGUtd3JhcHBlci1oaXN0b3J5LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VsZWN0ZWRdPVwiJGluZGV4ID09PSBzZWxlY3RlZEluZGV4KClcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1oaXN0b3J5LWljb25cIj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW0tZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZSgpIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXJlbW92ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSGlzdG9yeUl0ZW0oJGluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFJlc3VsdHMgU2VjdGlvbiAtLT5cbiAgICAgICAgQGlmICghaXNIaXN0b3J5VmlzaWJsZSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGVyIHdpdGggZmlsdGVycyBhbmQgcGFnaW5hdGlvbiAtLT5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZUZpbHRlcnMgfHwgY29uZmlnLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvblRpdGxlKCkgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZpbHRlcnMgLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb25maWcuZW5hYmxlRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbmZpZy5zZWFyY2hGaWVsZHMgJiYgY29uZmlnLnNlYXJjaEZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLWxhYmVsXCIgZm9yPVwic2VhcmNoQnlTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+QnVzY2FyIHBvcjo8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoQnlTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlcnMuc2VhcmNoQnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBjb25maWcuc2VhcmNoRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJmaWVsZC52YWx1ZVwiPnt7IGZpZWxkLmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb25maWcuZW5hYmxlU3RvY2tGaWx0ZXIgJiYgY29uZmlnLnN0b2NrT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1maWx0ZXItZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZpbHRlci1sYWJlbFwiIGZvcj1cInN0b2NrU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlN0b2NrOjwvbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdG9ja1NlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVycy5zdG9ja0ZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBjb25maWcuc3RvY2tPcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gUGFnaW5hdGlvbiBDb250cm9scyAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVQYWdpbmF0aW9uICYmIHRvdGFsUGFnZXMoKSA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UMOhZ2luYSB7eyBjdXJyZW50UGFnZSgpIH19IGRlIHt7IHRvdGFsUGFnZXMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0ZpcnN0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Zmlyc3RfcGFnZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdlLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInRvdGFsUGFnZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImdvVG9QYWdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IHRvdGFsUGFnZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSB0b3RhbFBhZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5sYXN0X3BhZ2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvblRpdGxlKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIEl0ZW1zIExpc3QgLS0+XG4gICAgICAgICAgICBAaWYgKHRvdGFsSXRlbXMoKSkge1xuICAgICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW1zLWxpc3QgYXV0b2NvbXBsZXRlLXdyYXBwZXItc2Nyb2xsYWJsZS1saXN0XCJcbiAgICAgICAgICAgICAgICAjcmVzdWx0c0xpc3RFbGVtZW50XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGN1cnJlbnRQYWdlSXRlbXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1saXN0LWl0ZW0gYXV0b2NvbXBsZXRlLXdyYXBwZXItcmVzdWx0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbS1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VsZWN0ZWRdPVwiJGluZGV4ID09PSBzZWxlY3RlZEluZGV4KClcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW0taW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZSgpIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTm8gUmVzdWx0cyAtLT5cbiAgICAgICAgQGlmICghaXNMb2FkaW5nKCkgJiYgaXNOb1Jlc3VsdHMoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1uby1yZXN1bHRzXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1uby1yZXN1bHRzLWljb25cIj5zZWFyY2hfb2ZmPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1uby1yZXN1bHRzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBub3RGb3VuZFRlbXBsYXRlKCkgfHwgZGVmYXVsdE5vdEZvdW5kVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9SZXN1bHRzVGV4dCgpIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEZvb3RlciAtLT5cbiAgICAgICAgQGlmIChvdmVybGF5T3BlbigpICYmIHRvdGFsSXRlbXMoKSA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZm9vdGVyXCI+XG4gICAgICAgICAgICBAaWYgKCFpc0hpc3RvcnlWaXNpYmxlKCkgJiYgdG90YWxJdGVtcygpID4gMCAmJiBjb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1zdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgICBNb3N0cmFuZG8ge3sgc3RhcnRJdGVtKCkgfX0te3sgZW5kSXRlbSgpIH19IGRlIHt7IHRvdGFsQ291bnQoKSB9fSByZXN1bHRhZG9zXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tY29udHJvbHMtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdlLWluZGljYXRvclwiXG4gICAgICAgICAgICAgICAgICAgID57eyBjdXJyZW50UGFnZSgpIH19IC8ge3sgdG90YWxQYWdlcygpIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItcGFnaW5hdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UoKSA9PT0gdG90YWxQYWdlcygpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVGb290ZXJBY3Rpb25zKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1mb290ZXItYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZm9vdGVyLWJ1dHRvbiBhdXRvY29tcGxldGUtd3JhcHBlci1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNyZWF0ZU5ldygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItYnV0dG9uLXRleHRcIj5DcmVhcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZvb3Rlci1idXR0b24gYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VhcmNoLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BZHZhbmNlZFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+dHVuZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWJ1dHRvbi10ZXh0XCI+QXZhbnphZGE8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgQGlmICghaXNIaXN0b3J5VmlzaWJsZSgpICYmIHRvdGFsSXRlbXMoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1mb290ZXItYnV0dG9uIGF1dG9jb21wbGV0ZS13cmFwcGVyLXJlc3VsdHMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd0FsbFJlc3VsdHMoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5saXN0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1idXR0b24tdGV4dFwiPlRvZG9zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBEZWZhdWx0IFRlbXBsYXRlcyAtLT5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1kZWZhdWx0LWl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLW5hbWVcIj57eyBnZXRJdGVtRGlzcGxheVRleHQoaXRlbSkgfX08L2Rpdj5cbiAgICAgIEBpZiAoaXRlbS5kZXNjcmlwdGlvbiAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW0tZGVzY3JpcHRpb25cIj57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm90Rm91bmRUZW1wbGF0ZSBsZXQtdGV4dD5cbiAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZGVmYXVsdC1uby1yZXN1bHRzXCI+XG4gICAgICA8cD57eyB0ZXh0IH19PC9wPlxuICAgICAgPHA+SW50ZW50YSBjb24gb3Ryb3MgdMOpcm1pbm9zIGRlIGLDunNxdWVkYTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19","import { Directive, ElementRef, HostListener, inject, Renderer2 } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class ToUpperCaseDirective {\n el = inject(ElementRef);\n renderer = inject(Renderer2);\n onInput() {\n const value = this.el.nativeElement.value;\n this.el.nativeElement.value = value.toUpperCase();\n this.onChange(value.toUpperCase()); // Llamar a la función que actualiza el valor del modelo\n }\n // Funciones de ControlValueAccessor\n onChange = (_value) => {\n // ControlValueAccessor callback\n };\n onTouched = () => {\n // ControlValueAccessor callback\n };\n writeValue(value) {\n if (value) {\n this.el.nativeElement.value = value.toUpperCase();\n }\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ToUpperCaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.2\", type: ToUpperCaseDirective, isStandalone: true, selector: \"[acpToUpperCase]\", host: { listeners: { \"input\": \"onInput()\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToUpperCaseDirective,\n multi: true,\n },\n ], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ToUpperCaseDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[acpToUpperCase]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToUpperCaseDirective,\n multi: true,\n },\n ],\n }]\n }], propDecorators: { onInput: [{\n type: HostListener,\n args: ['input']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tdXBwZXItY2FzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy90by11cHBlci1jYXNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBWXpFLE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWQsT0FBTztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0RBQXdEO0lBQzlGLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsUUFBUSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7UUFDNUIsZ0NBQWdDO0lBQ2xDLENBQUMsQ0FBQztJQUNGLFNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDZixnQ0FBZ0M7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUEyQjtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO3VHQTlCVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiw4R0FScEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzJGQUVVLG9CQUFvQjtrQkFWaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxzQkFBc0I7NEJBQ2pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzhCQUt3QixPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjcFRvVXBwZXJDYXNlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFRvVXBwZXJDYXNlRGlyZWN0aXZlLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9VcHBlckNhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByaXZhdGUgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpIG9uSW5wdXQoKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLnRvVXBwZXJDYXNlKCkpOyAvLyBMbGFtYXIgYSBsYSBmdW5jacOzbiBxdWUgYWN0dWFsaXphIGVsIHZhbG9yIGRlbCBtb2RlbG9cbiAgfVxuXG4gIC8vIEZ1bmNpb25lcyBkZSBDb250cm9sVmFsdWVBY2Nlc3NvclxuICBvbkNoYW5nZSA9IChfdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNhbGxiYWNrXG4gIH07XG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBjYWxsYmFja1xuICB9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\n/*\n InjectionToken is a generic class provided by Angular for creating custom injection tokens.\n*/\nexport const DYNAMIC_INPUT = new InjectionToken('DYNAMIC_INPUT');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9pbnB1dHMvZHluYW1pYy1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DOztFQUVFO0FBQ0YsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLypcbiAgSW5qZWN0aW9uVG9rZW4gaXMgYSBnZW5lcmljIGNsYXNzIHByb3ZpZGVkIGJ5IEFuZ3VsYXIgZm9yIGNyZWF0aW5nIGN1c3RvbSBpbmplY3Rpb24gdG9rZW5zLlxuKi9cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0lOUFVUID0gbmV3IEluamVjdGlvblRva2VuKCdEWU5BTUlDX0lOUFVUJyk7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWNvbXBvbmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9hY29udHBsdXMtbmctY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2","i3","i4","i5"],"mappings":"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"}